OLD | NEW |
---|---|
1 # Copyright 2015 Google Inc. All rights reserved. | 1 # Copyright 2015 Google Inc. All rights reserved. |
2 # | 2 # |
3 # Licensed under the Apache License, Version 2.0 (the "License"); | 3 # Licensed under the Apache License, Version 2.0 (the "License"); |
4 # you may not use this file except in compliance with the License. | 4 # you may not use this file except in compliance with the License. |
5 # You may obtain a copy of the License at | 5 # You may obtain a copy of the License at |
6 # | 6 # |
7 # http://www.apache.org/licenses/LICENSE-2.0 | 7 # http://www.apache.org/licenses/LICENSE-2.0 |
8 # | 8 # |
9 # Unless required by applicable law or agreed to in writing, software | 9 # Unless required by applicable law or agreed to in writing, software |
10 # distributed under the License is distributed on an "AS IS" BASIS, | 10 # distributed under the License is distributed on an "AS IS" BASIS, |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
320 try: | 320 try: |
321 self._adb_cmd.Push(cStringIO.StringIO(content), dest, mtime) | 321 self._adb_cmd.Push(cStringIO.StringIO(content), dest, mtime) |
322 return True | 322 return True |
323 except usb_exceptions.AdbCommandFailureException: | 323 except usb_exceptions.AdbCommandFailureException: |
324 break | 324 break |
325 except self._ERRORS as e: | 325 except self._ERRORS as e: |
326 if not self._Reset('(%s, %s): %s', dest, content, e): | 326 if not self._Reset('(%s, %s): %s', dest, content, e): |
327 break | 327 break |
328 return False | 328 return False |
329 | 329 |
330 def Reboot(self): | 330 def Reboot(self, wait=True): |
331 """Reboots the device. Waits for it to be rebooted but not fully | 331 """Reboots the device. Waits for it to be rebooted but not fully |
332 operational. | 332 operational. |
333 | 333 |
334 This causes the USB device to disapear momentarily and get a new port_path. | 334 This causes the USB device to disapear momentarily and get a new port_path. |
335 If the phone just booted up, this function will cause the caller to sleep. | 335 If the phone just booted up, this function will cause the caller to sleep. |
336 | 336 |
337 The caller will likely want to call self.Root() to switch adbd to root | 337 The caller will likely want to call self.Root() to switch adbd to root |
338 context if desired. | 338 context if desired. |
339 | 339 |
340 Returns True on success. | 340 Returns True on success. |
341 """ | 341 """ |
342 if self._adb_cmd: | 342 if self._adb_cmd: |
343 if not wait: | |
344 return self._Reboot() | |
345 | |
343 # Get previous uptime to ensure the phone actually rebooted. | 346 # Get previous uptime to ensure the phone actually rebooted. |
344 previous_uptime = self.GetUptime() | 347 previous_uptime = self.GetUptime() |
345 if not previous_uptime: | 348 if not previous_uptime: |
346 return False | 349 return False |
347 if previous_uptime <= 30.: | 350 if previous_uptime <= 30.: |
348 # Wait for uptime to be high enough. Otherwise we can't know if the | 351 # Wait for uptime to be high enough. Otherwise we can't know if the |
349 # device rebooted or not. | 352 # device rebooted or not. |
350 time.sleep(31. - previous_uptime) | 353 time.sleep(31. - previous_uptime) |
351 previous_uptime = self.GetUptime() | 354 previous_uptime = self.GetUptime() |
352 if not previous_uptime: | 355 if not previous_uptime: |
(...skipping 27 matching lines...) Expand all Loading... | |
380 # TODO(maruel): Wait for the remount operation to be completed. | 383 # TODO(maruel): Wait for the remount operation to be completed. |
381 _LOG.info('%s.Remount(): %s', self.port_path, out) | 384 _LOG.info('%s.Remount(): %s', self.port_path, out) |
382 return True | 385 return True |
383 except usb_exceptions.AdbCommandFailureException: | 386 except usb_exceptions.AdbCommandFailureException: |
384 break | 387 break |
385 except self._ERRORS as e: | 388 except self._ERRORS as e: |
386 if not self._Reset('(): %s', e): | 389 if not self._Reset('(): %s', e): |
387 break | 390 break |
388 return False | 391 return False |
389 | 392 |
393 def ResetHandle(self, new_endpoint=None): | |
M-A Ruel
2016/07/23 00:58:44
Please add a docstring.
bpastene
2016/07/23 01:17:39
Done.
| |
394 if self._adb_cmd: | |
395 self._adb_cmd.Close() | |
396 self._adb_cmd = None | |
397 if new_endpoint: | |
398 self._serial = None | |
399 self._handle.Reset(new_endpoint=new_endpoint) | |
400 return self._Connect(False) | |
401 | |
390 def Shell(self, cmd, timeout_ms=None): | 402 def Shell(self, cmd, timeout_ms=None): |
391 """Runs a command on an Android device while swallowing exceptions. | 403 """Runs a command on an Android device while swallowing exceptions. |
392 | 404 |
393 Traps all kinds of USB errors so callers do not have to handle this. | 405 Traps all kinds of USB errors so callers do not have to handle this. |
394 | 406 |
395 Returns: | 407 Returns: |
396 tuple(stdout, exit_code) | 408 tuple(stdout, exit_code) |
397 - stdout is as unicode if it ran, None if an USB error occurred. | 409 - stdout is as unicode if it ran, None if an USB error occurred. |
398 - exit_code is set if ran. | 410 - exit_code is set if ran. |
399 """ | 411 """ |
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
850 self.Close() | 862 self.Close() |
851 if not self._WaitUntilFound(use_serial=use_serial, timeout=timeout): | 863 if not self._WaitUntilFound(use_serial=use_serial, timeout=timeout): |
852 return False | 864 return False |
853 if not self._OpenHandle(): | 865 if not self._OpenHandle(): |
854 return False | 866 return False |
855 return self._Connect(use_serial=use_serial) | 867 return self._Connect(use_serial=use_serial) |
856 | 868 |
857 def __repr__(self): | 869 def __repr__(self): |
858 return '<Device %s %s>' % ( | 870 return '<Device %s %s>' % ( |
859 self.port_path, self.serial if self.is_valid else '(broken)') | 871 self.port_path, self.serial if self.is_valid else '(broken)') |
OLD | NEW |