3333
3434
3535def pretty_hex (data ):
36- output = ""
36+ """
37+ >>> print(pretty_hex("abc123"))
38+ 61 62 63 31 32 33
39+ >>> print(pretty_hex(b"abc123"))
40+ 61 62 63 31 32 33
41+ >>> print(pretty_hex(u"abc123"))
42+ 61 62 63 31 32 33
43+ >>> print(pretty_hex("\\ x00a\\ x02"*12))
44+ 00 61 02 00 61 02 00 61 02 00 61 02 00 61 02 00
45+ 61 02 00 61 02 00 61 02 00 61 02 00 61 02 00 61
46+ 02 00 61 02
47+ """
48+ output = []
3749 for i in range (0 , len (data ), 16 ):
38- output += " " .join ([ "%02x" % ord (x ) for x in data [i :i + 16 ]]) + " \n "
39- return output
50+ output . append ( " " .join ("%02x" % to_int (x ) for x in data [i :i + 16 ]))
51+ return " \n " . join ( output )
4052
4153
4254def to_int (value ):
4355 """
4456 >>> to_int('A')
4557 65
4658 >>> to_int(0xff)
47- 256
59+ 255
4860 >>> list(to_int(i) for i in ['T', 'i', 'n', 'y', 0xff, 0, 0])
4961 [84, 105, 110, 121, 255, 0, 0]
5062 """
@@ -71,7 +83,8 @@ def get_ports(device_id):
7183 try :
7284 ports += [
7385 UsbPort (usb , d )
74- for d in usb .core .find (idVendor = vid , idProduct = pid , find_all = True )
86+ for d in usb .core .find (
87+ idVendor = vid , idProduct = pid , find_all = True )
7588 if not d .is_kernel_driver_active (1 )
7689 ]
7790 except usb .core .USBError as e :
@@ -90,6 +103,7 @@ def get_ports(device_id):
90103class PortError (Exception ):
91104 pass
92105
106+
93107class SerialPort (object ):
94108 def __init__ (self , port_name ):
95109 self .port_name = port_name
@@ -129,6 +143,7 @@ def read(self, length):
129143 except serial .SerialException as e :
130144 raise PortError ("Failed to read from serial port:\n %s" % str (e ))
131145
146+
132147class UsbPort (object ):
133148 def __init__ (self , usb , device ):
134149 self .usb = usb
@@ -166,6 +181,7 @@ def read(self, length):
166181 except self .usb .core .USBError as e :
167182 raise PortError ("Failed to read from USB:\n %s" % str (e ))
168183
184+
169185def _mirror_byte (b ):
170186 return bit_reverse_table [to_int (b )]
171187
@@ -185,7 +201,11 @@ def __init__(self, prog):
185201
186202 def _parse_json (self , data ):
187203 try :
188- return json .loads (bytes (data ).replace (b"\x00 " , b"" ).replace (b"\xff " , b"" ).decode ("utf-8" ))
204+ data = bytes (data )
205+ data = data .replace (b"\x00 " , b"" )
206+ data = data .replace (b"\xff " , b"" )
207+ data = data .decode ("utf-8" )
208+ return json .loads (data )
189209 except BaseException :
190210 return None
191211
@@ -239,7 +259,8 @@ def userdata_addr_range(self):
239259
240260 def _get_addr_range (self , name ):
241261 # get the bootmeta's addrmap or fallback to the root's addrmap.
242- addr_map = self .root .get (u"bootmeta" , {}).get (u"addrmap" , self .root .get (u"addrmap" , None ))
262+ addr_map = self .root .get (u"bootmeta" , {}).get (
263+ u"addrmap" , self .root .get (u"addrmap" , None ))
243264 if addr_map is None :
244265 raise Exception ("Missing address map from device metadata" )
245266 addr_str = addr_map .get (name , None )
0 commit comments