def connect_myo(self): ## stop everything from before self.end_scan() #self.disconnect(0) #self.disconnect(1) #self.disconnect(2) ## start scanning print('scanning...') self.discover() while True: packet = self.recv_packet(payme=True) payload = packet[-1] #print('scan response:', packet) print('scanning...') if payload.endswith( b'\x06\x42\x48\x12\x4A\x7F\x2C\x48\x47\xB9\xDE\x04\xA9\x01\x00\x06\xD5' ): addr = list(multiord(payload[2:8])) break self.end_scan() ## connect and wait for status event conn_pkt = self.connect(addr) self.conn = multiord(conn_pkt[-1])[-1] self.wait_event(3, 0) ## get firmware version fw = self.read_attr(0x17) _, _, _, _, v0, v1, v2, v3 = unpack('BHBBHHHH', fw[-1]) print('Connected!') print('Firmware version: %d.%d.%d.%d' % (v0, v1, v2, v3))
def fromBytes(klass, addr): """ Converts a standard 16-byte IPv6 address to a human-readable string. """ if len(addr) != klass.WIDTH: raise ValueError, "IPv6 address must have %s bytes: %s" % ( klass.WIDTH, repr(addr)) octets = [] for i in range(8): octets.append(hex(utils.multiord(addr[2 * i:2 * i + 2]))[2:]) start, finish = utils.findLongestSubsequence(octets, "0") if finish: return IP6Address(":".join(octets[0:start]) + "::" + ":".join(octets[finish + 1:])) else: return IP6Address(":".join(octets))
def fromBytes(klass, addr): """ Converts a standard 16-byte IPv6 address to a human-readable string. """ if len(addr) != klass.WIDTH: raise ValueError, "IPv6 address must have %s bytes: %s"%(klass.WIDTH, repr(addr)) octets = [] for i in range(8): octets.append(hex(utils.multiord(addr[2*i:2*i+2]))[2:]) start, finish = utils.findLongestSubsequence(octets, "0") if finish: return IP6Address( ":".join(octets[0:start]) + "::" + ":".join(octets[finish+1:]) ) else: return IP6Address(":".join(octets))
def integer(self): return utils.multiord(self.bytes)