Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 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])
Пример #4
0
 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
Пример #5
0
    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)
Пример #6
0
  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())
Пример #7
0
    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])
Пример #8
0
    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())
Пример #9
0
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)
Пример #10
0
    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)