def testTimeout(self):
     d = MyDongle([(0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0 ),
                   (),
                   ()])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
예제 #2
0
 def testTimeout(self):
     # the test will have to be re-writen if the scenario changes
     self.assertEqual(28, len(GOOD_SCENARIO))
     for i in range(len(GOOD_SCENARIO) + 1):
         d = MyDongleWithTimeout(GOOD_SCENARIO, i)
         c = FitbitClient(d)
         if i < 1:
             self.assertFalse(c.disconnect(), i)
             continue
         self.assertTrue(c.disconnect())
         if i < 4:
             self.assertFalse(c.getDongleInfo(), i)
             continue
         self.assertTrue(c.getDongleInfo())
         ts = [t for t in c.discover(MyUUID())]
         if i < 6:
             self.assertEqual([], ts, i)
             continue
         self.assertEqual(1, len(ts), i)
         self.assertEqual(ts[0].id, [0, 0, 42, 0, 0, 0])
         if i < 12:
             self.assertFalse(c.establishLink(ts[0]), i)
             continue
         self.assertTrue(c.establishLink(ts[0]), i)
         if i < 13:
             self.assertFalse(c.toggleTxPipe(True), i)
             continue
         self.assertTrue(c.toggleTxPipe(True))
         if i < 15:
             self.assertFalse(c.initializeAirlink(ts[0]))
             continue
         self.assertTrue(c.initializeAirlink(ts[0]))
         if i < 18:
             self.assertEqual(None, c.getDump())
             continue
         dump = c.getDump()
         self.assertFalse(dump is None)
         self.assertEqual(dump.data, [0x26, 2, 0, 0, 0, 0, 0])
         if i < 22:
             self.assertFalse(
                 c.uploadResponse((0x26, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                   0, 0, 0, 0, 0, 0, 0, 0)))
             continue
         self.assertTrue(
             c.uploadResponse((0x26, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                               0, 0, 0, 0, 0, 0, 0)))
         if i < 23:
             self.assertFalse(c.terminateAirlink())
             continue
         self.assertTrue(c.terminateAirlink())
         if i < 24:
             self.assertFalse(c.toggleTxPipe(False))
             continue
         self.assertTrue(c.toggleTxPipe(False))
         if i < 28:
             self.assertFalse(c.ceaseLink())
             continue
         self.assertTrue(c.ceaseLink())
         self.assertEqual(len(GOOD_SCENARIO), i)
예제 #3
0
 def testIssue96(self):
     """ Sometime, we don't get payload """
     global FitbitClient
     FitbitClient = type('FitbitClient', (MyDongle, ),
                         dict(FitbitClient.__dict__))
     c = FitbitClient([(2, 0xa), ()])
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
 def testNoTracker(self):
     d = MyDongle([(0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0 ),
                   (3, 2, 0),
                   (0x20, 1, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x44, 0x69, 0x73, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0),
                  ])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
 def testWrongParams(self):
     """ Sometime, we get the amount before the Status """
     d = MyDongle([(3, 2, 0),
                   (0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0 ),
                   (0x20, 1, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x44, 0x69, 0x73, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0),
                   ])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
예제 #6
0
 def testTimeout(self):
     global FitbitClient
     FitbitClient = type('FitbitClient', (MyDongle, ),
                         dict(FitbitClient.__dict__))
     c = FitbitClient([(0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44,
                        0x69, 0x73, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0),
                       (), ()])
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
 def testTimeout(self):
     # the test will have to be re-writen if the scenario changes
     self.assertEqual(28, len(GOOD_SCENARIO))
     for i in range(len(GOOD_SCENARIO) + 1):
         d = MyDongleWithTimeout(GOOD_SCENARIO, i)
         c = FitbitClient(d)
         if i < 1:
             self.assertFalse(c.disconnect(), i)
             continue
         self.assertTrue(c.disconnect())
         if i < 4:
             self.assertFalse(c.getDongleInfo(), i)
             continue
         self.assertTrue(c.getDongleInfo())
         ts = [t for t in c.discover(MyUUID())]
         if i < 6:
             self.assertEqual([], ts, i)
             continue
         self.assertEqual(1, len(ts), i)
         self.assertEqual(ts[0].id, [0,0,42,0,0,0])
         if i < 12:
             self.assertFalse(c.establishLink(ts[0]), i)
             continue
         self.assertTrue(c.establishLink(ts[0]), i)
         if i < 13:
             self.assertFalse(c.toggleTxPipe(True), i)
             continue
         self.assertTrue(c.toggleTxPipe(True))
         if i < 15:
             self.assertFalse(c.initializeAirlink(ts[0]))
             continue
         self.assertTrue(c.initializeAirlink(ts[0]))
         if i < 18:
             self.assertEqual(None, c.getDump())
             continue
         dump = c.getDump()
         self.assertFalse(dump is None)
         self.assertEqual(dump.data, [0x26, 2, 0,0,0,0,0])
         if i < 22:
             self.assertFalse(c.uploadResponse((0x26, 2, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)))
             continue
         self.assertTrue(c.uploadResponse((0x26, 2, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)))
         if i < 23:
             self.assertFalse(c.terminateAirlink())
             continue
         self.assertTrue(c.terminateAirlink())
         if i < 24:
             self.assertFalse(c.toggleTxPipe(False))
             continue
         self.assertTrue(c.toggleTxPipe(False))
         if i < 28:
             self.assertFalse(c.ceaseLink())
             continue
         self.assertTrue(c.ceaseLink())
         self.assertEqual(len(GOOD_SCENARIO), i)
예제 #8
0
 def testNoTracker(self):
     d = MyDongle([
         (0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63,
          0x6F, 0x76, 0x65, 0x72, 0x79, 0),
         (3, 2, 0),
         (0x20, 1, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x44, 0x69, 0x73,
          0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0),
     ])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
 def testOnetracker(self):
     d = MyDongle([(0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0 ),
                   (0x13, 3, 0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,1,-30, 2,6,4, 3,
                    0x2c, 0x31, 0xf6, 0xd8, 0x58),
                   (3, 2, 1),
                   (0x20, 1, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x44, 0x69, 0x73, 0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0),
                  ])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 1)
     t = ts[0]
     self.assertEqual(t.id, [0xaa] * 6)
예제 #10
0
 def testWrongParams(self):
     """ Sometime, we get the amount before the Status """
     d = MyDongle([
         (3, 2, 0),
         (0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63,
          0x6F, 0x76, 0x65, 0x72, 0x79, 0),
         (0x20, 1, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x44, 0x69, 0x73,
          0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0),
     ])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
예제 #11
0
 def testWrongParams(self):
     """ Sometime, we get the amount before the Status """
     global FitbitClient
     FitbitClient = type('FitbitClient', (MyDongle, ),
                         dict(FitbitClient.__dict__))
     c = FitbitClient([
         (3, 2, 0),
         (0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63,
          0x6F, 0x76, 0x65, 0x72, 0x79, 0),
         (0x20, 1, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x44, 0x69, 0x73,
          0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0),
     ])
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
예제 #12
0
 def testOnetracker(self):
     d = MyDongle([
         (0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63,
          0x6F, 0x76, 0x65, 0x72, 0x79, 0),
         (0x13, 3, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1, -30, 2, 6, 4, 3,
          0x2c, 0x31, 0xf6, 0xd8, 0x58),
         (3, 2, 1),
         (0x20, 1, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x44, 0x69, 0x73,
          0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0),
     ])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 1)
     t = ts[0]
     self.assertEqual(t.id, [0xaa] * 6)
예제 #13
0
 def testIssue231(self):
     """ Some weird Status Messages in the middle """
     global FitbitClient
     FitbitClient = type('FitbitClient', (MyDongle, ),
                         dict(FitbitClient.__dict__))
     c = FitbitClient([
         (0x20, 1, 0x45, 0x52, 0x52, 0x4F, 0x52, 0x3A, 0x20, 0x50, 0x31,
          0x5B, 0x37, 0x3A, 0x31, 0x5D, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C,
          0x64, 0x20, 0x62, 0x65, 0x20, 0x30), (0x20, 1, 0x33),
         (0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63,
          0x6F, 0x76, 0x65, 0x72, 0x79),
         (0x13, 0x03, 0xD2, 0xCD, 0x91, 0xC1, 0x01, 0xF8, 0x01, 0xB6, 0x02,
          0x07, 0x06, 0x3E, 0x00, 0x09, 0x4A, 0x00, 0xFB), (3, 2, 1), ()
     ])
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 1)
예제 #14
0
 def testOnetracker(self):
     global FitbitClient
     FitbitClient = type('FitbitClient', (MyDongle, ),
                         dict(FitbitClient.__dict__))
     c = FitbitClient([
         (0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73, 0x63,
          0x6F, 0x76, 0x65, 0x72, 0x79, 0),
         (0x13, 3, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 1, 0xe2, 2, 6, 4, 3,
          0x2c, 0x31, 0xf6, 0xd8, 0x58),
         (3, 2, 1),
         (0x20, 1, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x44, 0x69, 0x73,
          0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0),
     ])
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 1)
     t = ts[0]
     self.assertEqual(t.id, bytearray([0xaa] * 6))
 def testOk(self):
     d = MyDongle(GOOD_SCENARIO)
     c = FitbitClient(d)
     self.assertTrue(c.disconnect())
     self.assertTrue(c.getDongleInfo())
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(1, len(ts))
     self.assertEqual(ts[0].id, [0,0,42,0,0,0])
     self.assertTrue(c.establishLink(ts[0]))
     self.assertTrue(c.toggleTxPipe(True))
     self.assertTrue(c.initializeAirlink(ts[0]))
     dump = c.getDump()
     self.assertFalse(dump is None)
     self.assertEqual(dump.data, [0x26, 2, 0,0,0,0,0])
     self.assertTrue(c.uploadResponse((0x26, 2, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)))
     self.assertTrue(c.terminateAirlink())
     self.assertTrue(c.toggleTxPipe(False))
     self.assertTrue(c.ceaseLink())
예제 #16
0
def check_for_fitbit():
    '''This method will check if a FITBIT device of the ID given in the config file 
    is present in the vicinity. If so, it will write a True to the at_home pkl file'''
    dongle = FitBitDongle()
    dongle.setup()
    fitbit = FitbitClient(dongle)
    FitBitUUID = uuid.UUID('{ADAB0000-6E7D-4601-BDA2-BFFAA68956BA}')
    for tracker in fitbit.discover(FitBitUUID):
        tracker_id = a2x(tracker.id)
        if tracker_id == fitbit_tracker_id:
            check_buffer.append(True)
            check_buffer.pop(0)
            pkl.dump(check_buffer, open("/home/pi/sentinel/at_home.p", "wb"))
            return
        else:
            continue
    check_buffer.append(False)
    check_buffer.pop(0)
    pkl.dump(check_buffer, open("/home/pi/sentinel/at_home.p", "wb"))
예제 #17
0
 def testOk(self):
     d = MyDongle(GOOD_SCENARIO)
     c = FitbitClient(d)
     self.assertTrue(c.disconnect())
     self.assertTrue(c.getDongleInfo())
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(1, len(ts))
     self.assertEqual(ts[0].id, [0, 0, 42, 0, 0, 0])
     self.assertTrue(c.establishLink(ts[0]))
     self.assertTrue(c.toggleTxPipe(True))
     self.assertTrue(c.initializeAirlink(ts[0]))
     dump = c.getDump()
     self.assertFalse(dump is None)
     self.assertEqual(dump.data, [0x26, 2, 0, 0, 0, 0, 0])
     self.assertTrue(
         c.uploadResponse((0x26, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0)))
     self.assertTrue(c.terminateAirlink())
     self.assertTrue(c.toggleTxPipe(False))
     self.assertTrue(c.ceaseLink())
예제 #18
0
 def testOk(self):
     global FitbitClient
     FitbitClient = type('FitbitClient', (MyDongle, ),
                         dict(FitbitClient.__dict__))
     c = FitbitClient(GOOD_SCENARIO)
     self.assertTrue(c.disconnect())
     self.assertTrue(c.getDongleInfo())
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(1, len(ts))
     self.assertEqual(ts[0].id, bytearray([0, 0, 42, 0, 0, 0]))
     self.assertTrue(c.establishLink(ts[0]))
     self.assertTrue(c.toggleTxPipe(True))
     self.assertTrue(c.initializeAirlink(ts[0]))
     dump = c.getDump()
     self.assertFalse(dump is None)
     self.assertEqual(dump.data, bytearray([0x26, 2, 0, 0, 0, 0, 0]))
     self.assertTrue(
         c.uploadResponse((0x26, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                           0, 0, 0, 0, 0, 0)))
     self.assertTrue(c.terminateAirlink())
     self.assertTrue(c.toggleTxPipe(False))
     self.assertTrue(c.ceaseLink())
 def testIssue96(self):
     """ Sometime, we don't get payload """
     d = MyDongle([(2, 0xa), ()])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
예제 #20
0
 def testTimeout(self):
     d = MyDongle([(0x20, 1, 0x53, 0x74, 0x61, 0x72, 0x74, 0x44, 0x69, 0x73,
                    0x63, 0x6F, 0x76, 0x65, 0x72, 0x79, 0), (), ()])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)
예제 #21
0
 def testIssue96(self):
     """ Sometime, we don't get payload """
     d = MyDongle([(2, 0xa), ()])
     c = FitbitClient(d)
     ts = [t for t in c.discover(MyUUID())]
     self.assertEqual(len(ts), 0)