示例#1
0
 def _check_tx_response(self, maxtries=16):
     for msgs in range(maxtries):
         status = self._receive_message()
         if len(status) > 5 and status[2] == 0x40:
             if status[5] == 0x0a:  # TX Start
                 continue
             if status[5] == 0x05:  # TX successful
                 return
             if status[5] == 0x06:  # TX failed
                 raise ANTReceiveException("Transmission Failed")
     raise ANTReceiveException("No Transmission Ack Seen")
示例#2
0
 def _check_burst_response(self):
     response = []
     for tries in range(128):
         status = self._receive_message()
         if len(status) > 5 and status[2] == 0x40 and status[5] == 0x4:
             raise ANTReceiveException("Burst receive failed by event!")
         elif len(status) > 4 and status[2] == 0x4f:
             response = response + status[4:-1]
             return response
         elif len(status) > 4 and status[2] == 0x50:
             response = response + status[4:-1]
             if status[3] & 0x80:
                 return response
     raise ANTReceiveException("Burst receive failed to detect end")
示例#3
0
 def send_acknowledged_data(self, l):
     for tries in range(8):
         try:
             self._send_message(0x4f, self._chan, l)
             self._check_tx_response()
         except ANTReceiveException:
             continue
         return
     raise ANTReceiveException("Failed to send Acknowledged Data")
示例#4
0
 def get_data_bank(self):
     data = []
     cmd = 0x70  # Send 0x70 on first burst
     for parts in range(2000):
         bank = self.check_tracker_data_bank(self.current_bank_id, cmd)
         self.current_bank_id += 1
         cmd = 0x60  # Send 0x60 on subsequent bursts
         if len(bank) == 0:
             return data
         data = data + bank
     raise ANTReceiveException("Cannot complete data bank")
示例#5
0
 def wait_for_beacon(self):
     # FitBit device initialization
     print "Waiting for receive"
     for tries in range(75):
         try:
             d = self.base._receive_message()
             if d[2] == 0x4E:
                 return
         except Exception:
             pass
     raise ANTReceiveException("Failed to see tracker beacon")
示例#6
0
 def _send_burst_data(self, data, sleep=None):
     for tries in range(2):
         for l in range(0, len(data), 9):
             self._send_message(0x50, data[l:l + 9])
             # TODO: Should probably base this on channel timing
             if sleep != None:
                 time.sleep(sleep)
         try:
             self._check_tx_response()
         except ANTReceiveException:
             continue
         return
     raise ANTReceiveException("Failed to send burst data")
示例#7
0
 def receive_acknowledged_reply(self, size=13):
     for tries in range(30):
         status = self._receive_message(size)
         if len(status) > 4 and status[2] == 0x4F:
             return status[4:-1]
     raise ANTReceiveException("Failed to receive acknowledged reply")