[update] fix connect & write function

This commit is contained in:
Roy
2023-07-10 13:00:06 +08:00
parent 200feead76
commit 25267411d8
2 changed files with 19 additions and 31 deletions
+18 -30
View File
@@ -2186,7 +2186,6 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
pack_len = connect_response[0]
connect_ack = connect_response[1:pack_len+1]
print('connect_ack:', connect_ack)
if pack_len == 1:
if connect_ack[0] == 3:
connected = True
@@ -2206,7 +2205,6 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
dont_care = 0
self._device = ret = CC2650Device(device_id=dont_care, master=self, response_info=response)
self.log_verbose('[CC2650]', DEVICE_CONNECTED, address_s)
sleep(2)
return ret
self.log_verbose('[CC2650]', 'connect fail')
@@ -2275,31 +2273,20 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
ins.append(0xF1)
self._interface.flush_input()
for _ in range(5):
try:
self.log_verbose('[CC2650]', 'write_characteristic', device, str(hex(handle).upper()))
self.log_verbose('[CC2650]', 'write_characteristic att_write','0x'+str.upper(ins.hex()))
self._cc2650.send("bytes", bytes(ins))
except SerialTimeoutException:
self.log_verbose('[CC2650]', 'write_characteristic send fail')
else:
try:
self.log_verbose('[CC2650]', 'write_characteristic', device, str(hex(handle).upper()))
self.log_verbose('[CC2650]', 'write_characteristic att_write','0x'+str.upper(ins.hex()))
self._cc2650.send("bytes", bytes(ins))
except SerialTimeoutException:
self.log_verbose('[CC2650]', 'write_characteristic send fail')
write_response = self._cc2650.recv_uart(0.5)
else:
try:
write_response = self._cc2650.recv_uart(0.1)
except RecvTimeout:
self.log_verbose('[CC2650]', 'write_characteristic response timeout, write retry')
continue
else:
pack_len = write_response[0]
write_ack = write_response[1:pack_len+1]
write_response_hex = ''.join(format(i, '02X') for i in write_response)
if write_ack == [255]:
self.log_verbose('[CC2650]', 'write_characteristic fail, write retry', '0x'+write_response_hex)
continue
else:
break
except RecvTimeout:
self.log_verbose('[CC2650]', 'write_characteristic response timeout')
if write_response is None:
self.log_verbose('[CC2650]', 'write_characteristic fail')
@@ -2307,13 +2294,14 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
pack_len = write_response[0]
write_ack = write_response[1:pack_len+1]
write_response_hex = ''.join(format(i, '02X') for i in write_response)
if write_ack == [3]:
write_response_hex = ''.join(format(i, '02X') for i in write_response)
self.log_verbose('[CC2650]', 'write_characteristic success', '0x'+write_response_hex)
return True
else:
self.log_verbose('[CC2650]', 'write_characteristic fail', '0x'+write_response_hex)
return False
self.log_verbose('[CC2650]', 'write_characteristic fail')
return False
@synchronized
def read_characteristic(self, device: int, handle: int) -> Optional[bytes]:
@@ -2336,7 +2324,7 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
else:
try:
read_response = self._cc2650.recv_uart(0.5)
read_response = self._cc2650.recv_uart(1)
except RecvTimeout:
self.log_verbose('[CC2650]', 'read_characteristic response timeout')
+1 -1
View File
@@ -734,7 +734,7 @@ class DeviceCommonInstruction:
# don't create DeviceCommonInstruction instance, just return tuple
def __new__(cls, instruction: str) -> Optional[Tuple[str, ...]]:
if instruction == cls.RESET:
return '_sync(False)', 'VIS_RST'
return '_sync(False)', '_notify(False)', 'VIS_RST'
elif instruction == cls.START:
return '_data_format("TDC4VAF2")', '_notify(True)', 'VIS_STI', '_sync(True)'
elif instruction == cls.INTERRUPT: