[update] update write gatt and fix read value of dev tool
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user