[update] update write gatt and fix read value of dev tool

This commit is contained in:
Roy
2023-06-29 13:39:17 +08:00
parent dfbbfe4e07
commit f445550b4e
3 changed files with 33 additions and 19 deletions
+31 -18
View File
@@ -2186,6 +2186,7 @@ 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
@@ -2205,6 +2206,7 @@ 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')
@@ -2273,34 +2275,45 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
ins.append(0xF1)
self._interface.flush_input()
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:
for _ in range(5):
try:
write_response = self._cc2650.recv_uart(0.5)
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')
except RecvTimeout:
self.log_verbose('[CC2650]', 'write_characteristic response timeout')
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
if write_response is None:
self.log_verbose('[CC2650]', 'write_characteristic fail')
return False
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
self.log_verbose('[CC2650]', 'write_characteristic fail')
return False
else:
self.log_verbose('[CC2650]', 'write_characteristic fail', '0x'+write_response_hex)
return False
@synchronized
def read_characteristic(self, device: int, handle: int) -> Optional[bytes]:
@@ -2323,7 +2336,7 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
else:
try:
read_response = self._cc2650.recv_uart(1)
read_response = self._cc2650.recv_uart(0.5)
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)', '_notify(False)', 'VIS_RST'
return '_sync(False)', 'VIS_RST'
elif instruction == cls.START:
return '_data_format("TDC4VAF2")', '_notify(True)', 'VIS_STI', '_sync(True)'
elif instruction == cls.INTERRUPT:
+1
View File
@@ -794,6 +794,7 @@ class InstructionDataContent(InstructionContent):
offset += 1
else:
buffer.extend([0]*(self._width.size-len(buffer)))
for i in range(self._width.size):
if self._width.little_endian:
value |= (buffer[offset] << (1 * i))