Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Side by Side Diff: appengine/third_party/python-adb/adb/common.py

Issue 1424923006: Small fixes as found in staging. (Closed) Base URL: git@github.com:luci/luci-py.git@4_more_functionality
Patch Set: . Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2014 Google Inc. All rights reserved. 1 # Copyright 2014 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 self._write_endpoint = None 86 self._write_endpoint = None
87 self._interface_number = None 87 self._interface_number = None
88 self._max_read_packet_len = None 88 self._max_read_packet_len = None
89 89
90 @property 90 @property
91 def usb_info(self): 91 def usb_info(self):
92 try: 92 try:
93 sn = self.serial_number 93 sn = self.serial_number
94 except libusb1.USBError: 94 except libusb1.USBError:
95 sn = '' 95 sn = ''
96 if sn and sn != self._usb_info: 96 if sn and sn != self._usb_info and self._usb_info:
97 return '%s %s' % (self._usb_info, sn) 97 return '%s %s' % (self._usb_info, sn)
98 return self._usb_info 98 return self._usb_info
99 99
100 def Open(self): 100 def Open(self):
101 """Opens the USB device for this setting, and claims the interface.""" 101 """Opens the USB device for this setting, and claims the interface."""
102 # Make sure we close any previous handle open to this usb device. 102 # Make sure we close any previous handle open to this usb device.
103 port_path = self.port_path 103 port_path = self.port_path
104 _LOG.info('%s.Open()', self.port_path_str) 104 _LOG.info('%s.Open()', self.port_path_str)
105 105
106 with self._HANDLE_CACHE_LOCK: 106 with self._HANDLE_CACHE_LOCK:
107 previous = self._HANDLE_CACHE.get(port_path) 107 previous = self._HANDLE_CACHE.get(port_path)
108 if previous: 108 if previous:
109 _LOG.error( 109 _LOG.error(
110 '%s.Open(): Found already opened port:\n%s', 110 '%s.Open(): Found already opened port:\n%s',
111 self.port_path_str, previous[1]) 111 self.port_path_str, previous[1])
112 previous[0].Close() 112 previous[0].Close()
113 113
114 for endpoint in self._setting.iterEndpoints(): 114 try:
115 address = endpoint.getAddress() 115 for endpoint in self._setting.iterEndpoints():
116 if address & libusb1.USB_ENDPOINT_DIR_MASK: 116 address = endpoint.getAddress()
117 self._read_endpoint = address 117 if address & libusb1.USB_ENDPOINT_DIR_MASK:
118 self._max_read_packet_len = endpoint.getMaxPacketSize() 118 self._read_endpoint = address
119 else: 119 self._max_read_packet_len = endpoint.getMaxPacketSize()
120 self._write_endpoint = address 120 else:
121 self._write_endpoint = address
121 122
122 assert self._read_endpoint is not None 123 assert self._read_endpoint is not None
123 assert self._write_endpoint is not None 124 assert self._write_endpoint is not None
124 125
125 handle = self._device.open() 126 self._handle = self._device.open()
126 iface_number = self._setting.getNumber() 127 self._interface_number = self._setting.getNumber()
127 try: 128 try:
128 if handle.kernelDriverActive(iface_number): 129 if self._handle.kernelDriverActive(self._interface_number):
129 handle.detachKernelDriver(iface_number) 130 self._handle.detachKernelDriver(self._interface_number)
130 except libusb1.USBError as e: 131 except libusb1.USBError as e:
131 if e.value == libusb1.LIBUSB_ERROR_NOT_FOUND: 132 if e.value == libusb1.LIBUSB_ERROR_NOT_FOUND:
132 _LOG.warning( 133 _LOG.warning(
133 '%s.Open(): Kernel driver not found for interface: %s.', 134 '%s.Open(): Kernel driver not found for interface: %s.',
134 self.port_path_str, iface_number) 135 self.port_path_str, self._interface_number)
135 else: 136 self.Close()
136 raise 137 else:
137 handle.claimInterface(iface_number) 138 raise
138 self._handle = handle 139 self._handle.claimInterface(self._interface_number)
139 self._interface_number = iface_number
140 140
141 stack = ''.join(traceback.format_stack()[:-2]) 141 stack = ''.join(traceback.format_stack()[:-2])
142 with self._HANDLE_CACHE_LOCK: 142 with self._HANDLE_CACHE_LOCK:
143 self._HANDLE_CACHE[port_path] = (self._handle, stack) 143 self._HANDLE_CACHE[port_path] = (self, stack)
ghost stip (do not use) 2015/11/03 18:50:46 that seems wrong, wouldn't you still want to add t
M-A Ruel 2015/11/04 18:39:10 It's wrong too, I'll get rid of this once I figure
144 except Exception as e:
145 self.Close()
146 raise
144 147
145 @property 148 @property
146 def is_open(self): 149 def is_open(self):
147 return bool(self._handle) 150 return bool(self._handle)
148 151
149 @property 152 @property
150 def serial_number(self): 153 def serial_number(self):
151 if not self._serial_number: 154 if not self._serial_number:
152 self._serial_number = self._device.getSerialNumber() 155 self._serial_number = self._device.getSerialNumber()
153 return self._serial_number 156 return self._serial_number
(...skipping 10 matching lines...) Expand all
164 return '/'.join(str(p) for p in self.port_path) 167 return '/'.join(str(p) for p in self.port_path)
165 168
166 def Close(self): 169 def Close(self):
167 port_path = self.port_path 170 port_path = self.port_path
168 _LOG.info('%s.Close()', self.port_path_str) 171 _LOG.info('%s.Close()', self.port_path_str)
169 with self._HANDLE_CACHE_LOCK: 172 with self._HANDLE_CACHE_LOCK:
170 self._HANDLE_CACHE.pop(port_path, None) 173 self._HANDLE_CACHE.pop(port_path, None)
171 if self._handle is None: 174 if self._handle is None:
172 return 175 return
173 try: 176 try:
174 self._handle.releaseInterface(self._interface_number) 177 if self._interface_number:
178 self._handle.releaseInterface(self._interface_number)
175 self._handle.close() 179 self._handle.close()
176 except libusb1.USBError as e: 180 except libusb1.USBError as e:
177 _LOG.info('%s.Close(): USBError: %s', self.port_path_str, e) 181 _LOG.info('%s.Close(): USBError: %s', self.port_path_str, e)
178 finally: 182 finally:
179 self._handle = None 183 self._handle = None
180 self._read_endpoint = None 184 self._read_endpoint = None
181 self._write_endpoint = None 185 self._write_endpoint = None
182 self._interface_number = None 186 self._interface_number = None
183 self._max_read_packet_len = None 187 self._max_read_packet_len = None
184 188
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 return self._connection.sendall(data) 360 return self._connection.sendall(data)
357 361
358 def BulkRead(self, numbytes, timeout=None): # pylint: disable=unused-argument 362 def BulkRead(self, numbytes, timeout=None): # pylint: disable=unused-argument
359 return self._connection.recv(numbytes) 363 return self._connection.recv(numbytes)
360 364
361 def Timeout(self, timeout_ms): 365 def Timeout(self, timeout_ms):
362 return timeout_ms 366 return timeout_ms
363 367
364 def Close(self): 368 def Close(self):
365 return self._connection.close() 369 return self._connection.close()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698