def testSorting(self): u1 = UID(0x4845, 0xfffffffe) u2 = UID(0x4845, 0x0000022e) u3 = UID(0x4844, 0x0000022e) u4 = UID(0x4846, 0x0000022e) uids = sorted([u1, u2, None, u3, u4]) self.assertEqual([None, u3, u2, u1, u4], uids)
def testSorting(self): u1 = UID(0x4845, 0xfffffffe) u2 = UID(0x4845, 0x0000022e) u3 = UID(0x4844, 0x0000022e) u4 = UID(0x4846, 0x0000022e) uids = [u1, u2, u3, u4] uids.sort() self.assertEquals([u3, u2, u1, u4], uids)
def Unpack(self, data): format_string = self._FormatString() try: values = struct.unpack(format_string, data) except struct.error as e: raise UnpackException(e) return UID(values[0], values[1])
def ProxiedDevices(self, uid, response_data): uids = [] for uid_data in response_data['uids']: uids.append(UID(uid_data['manufacturer_id'], uid_data['device_id'])) for uid in sorted(uids): print uid
def testNextAndPrevious(self): u1 = UID(0x4845, 0xfffffffe) u2 = UID.NextUID(u1) self.assertEqual('4845:ffffffff', str(u2)) u3 = UID.NextUID(u2) self.assertEqual('4846:00000000', str(u3)) u4 = UID.PreviousUID(u3) self.assertEqual(u2, u4) u5 = UID.PreviousUID(u4) self.assertEqual(u1, u5) first_uid = UID(0, 0) self.assertRaises(UIDOutOfRangeException, UID.PreviousUID, first_uid) all_uids = UID.AllDevices() self.assertRaises(UIDOutOfRangeException, UID.NextUID, all_uids)
def testBasic(self): uid = UID(0x707a, 0x12345678) self.assertEquals(0x707a, uid.manufacturer_id) self.assertEquals(0x12345678, uid.device_id) self.assertEquals('707a:12345678', str(uid)) self.assertTrue(uid > None) uid2 = UID(0x707a, 0x12345679) self.assertTrue(uid2 > uid) uid3 = UID(0x7079, 0x12345678) self.assertTrue(uid > uid3) uids = [uid, uid2, uid3] self.assertEquals([uid3, uid, uid2], sorted(uids)) vendorcast_uid = UID.VendorcastAddress(0x707a) self.assertTrue(vendorcast_uid.IsBroadcast()) broadcast_uid = UID.AllDevices() self.assertTrue(broadcast_uid.IsBroadcast())
def testCmp(self): u2 = UID(0x4845, 0x0000022e) u3 = UID(0x4844, 0x0000022e) u3a = UID(0x4844, 0x0000022e) u4 = UID(0x4844, 0x00000230) self.assertEqual(u3, u3a) self.assertEqual(hash(u3), hash(u3a)) self.assertTrue(u3 <= u3a) self.assertTrue(u3 >= u3a) self.assertTrue(u3 < u2) self.assertTrue(u2 > u3) self.assertTrue(u3 <= u2) self.assertTrue(u2 >= u3) self.assertTrue(u3 != u2) self.assertFalse(u3 > u2) self.assertFalse(u2 < u3) self.assertFalse(u3 >= u2) self.assertFalse(u2 <= u3) self.assertFalse(u3 == u2) self.assertNotEqual(u3, u4) self.assertNotEqual(hash(u3), hash(u4)) self.assertFalse(u3 == u4) self.assertTrue(u3 < u4) self.assertFalse(u4 < u3) self.assertEqual(u2.__lt__("hello"), NotImplemented) self.assertNotEqual(u2, "hello") # None case self.assertFalse(u3 < None) self.assertTrue(u3 > None) self.assertFalse(u3 <= None) self.assertTrue(u3 >= None) self.assertTrue(u3 is not None) self.assertFalse(u3 is None) allNotEqual(self, [u2, u3, u4]) allHashNotEqual(self, [u2, u3, u4])
def testBasic(self): uid = UID(0x707a, 0x12345678) self.assertEqual(0x707a, uid.manufacturer_id) self.assertEqual(0x12345678, uid.device_id) self.assertEqual('707a:12345678', str(uid)) # Python 3 does not allow sorting of incompatible types. # We don't use sys.version_info.major to support Python 2.6. if sys.version_info[0] == 2: self.assertTrue(uid > None) uid2 = UID(0x707a, 0x12345679) self.assertTrue(uid2 > uid) uid3 = UID(0x7079, 0x12345678) self.assertTrue(uid > uid3) uids = [uid, uid2, uid3] self.assertEqual([uid3, uid, uid2], sorted(uids)) vendorcast_uid = UID.VendorcastAddress(0x707a) self.assertTrue(vendorcast_uid.IsBroadcast()) broadcast_uid = UID.AllDevices() self.assertTrue(broadcast_uid.IsBroadcast())
def DecodeResponse(data): """Decode a DUB response. Args: data: an iterable of data like a bytearray Returns: The UID that responded, or None if the response wasn't valid. """ # min length is 18 bytes if len(data) < 18: return None # must start with 0xfe if data[0] != 0xfe: return None data = list(itertools.dropwhile(lambda x: x == 0xfe, data)) if len(data) < 17 or data[0] != 0xaa: return None data = data[1:] checksum = 0 for b in data[0:12]: checksum += b packet_checksum = ( (data[12] & data[13]) << 8 | (data[14] & data[15]) ) if checksum != packet_checksum: return None manufacturer_id = ( (data[0] & data[1]) << 8 | (data[2] & data[3]) ) device_id = ( (data[4] & data[5]) << 24 | (data[6] & data[7]) << 16 | (data[8] & data[9]) << 8 | (data[10] & data[11]) ) return UID(manufacturer_id, device_id)
def _FetchUIDsComplete(self, callback, controller, response): """Called when a FetchUIDList request completes. Args: callback: the callback to run controller: an RpcController response: an UIDListReply message. """ if not callback: return status = RequestStatus(controller) uids = [] if response: for uid in response.uid: uids.append(UID(uid.esta_id, uid.device_id)) uids.sort() callback(status, uids)