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)
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)
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)
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)
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)
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)
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)
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)
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)
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())
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"))
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())
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)
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)