-testing
This commit is contained in:
@@ -163,14 +163,12 @@ def is_headstage_device(info: cc2650.GapEvt_DeviceInformation) -> Optional[Devic
|
||||
version_info[3],
|
||||
version_info[4],
|
||||
version_info[5])
|
||||
|
||||
return DeviceResponseInfo(local_name.decode(), serial_number, info.address, battery=battery_percentage)
|
||||
|
||||
elif company_code[:2] == b'HS':
|
||||
# legacy device
|
||||
|
||||
serial_number = DeviceSerialNumber(0, 0, 0, 0, 0, 0)
|
||||
|
||||
return DeviceResponseInfo(local_name.decode(), serial_number, info.address)
|
||||
|
||||
else:
|
||||
@@ -200,7 +198,7 @@ def is_headstage_device_central_version(device_mac: ADDRESS = EMPTY_ADDRESS,
|
||||
version_info[3],
|
||||
version_info[4],
|
||||
version_info[5])
|
||||
|
||||
print('***********', version_info, device_mac)
|
||||
return DeviceResponseInfo(local_name,
|
||||
serial_number,
|
||||
device_mac,
|
||||
@@ -2147,7 +2145,6 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
|
||||
connected = False
|
||||
connect_response = None
|
||||
ins = bytearray()
|
||||
|
||||
ins.append(0x05)
|
||||
ins.append(0x08) #length
|
||||
ins.append(addr_type)
|
||||
@@ -2159,7 +2156,6 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
|
||||
ins.append(address[5])
|
||||
ins.append(0xF1)
|
||||
self._interface.flush_input()
|
||||
|
||||
for retry in range(5):
|
||||
try:
|
||||
self.log_verbose('[CC2650]', 'connect att_write', '0x'+str.upper(ins.hex()))
|
||||
@@ -2182,7 +2178,6 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
|
||||
|
||||
if connect_response is None:
|
||||
return False
|
||||
|
||||
pack_len = connect_response[0]
|
||||
connect_ack = connect_response[1:pack_len+1]
|
||||
|
||||
@@ -2574,15 +2569,15 @@ class CC2650MultiMasterCentralDevice(CC2650MasterDevice, Synchronized):
|
||||
|
||||
return ret
|
||||
|
||||
def connect(self, response: DeviceResponseInfo, direct_connect: bool = False) -> Device:
|
||||
def connect(self, response: DeviceResponseInfo, direct_connect: bool = True) -> Device:
|
||||
self.log_verbose('connect')
|
||||
|
||||
master = None
|
||||
|
||||
print('self._foreach_empty_master()', self._foreach_empty_master())
|
||||
for master in self._foreach_empty_master():
|
||||
m = self._cc2650[master]
|
||||
d = self._device[master]
|
||||
|
||||
print('master', master, d, m)
|
||||
if direct_connect is True and d is None:
|
||||
break
|
||||
|
||||
@@ -2593,22 +2588,27 @@ class CC2650MultiMasterCentralDevice(CC2650MasterDevice, Synchronized):
|
||||
if master is None:
|
||||
raise RuntimeError('cannot connect any more device')
|
||||
else:
|
||||
print('456')
|
||||
raise RuntimeError('rescan please')
|
||||
|
||||
#
|
||||
master = 4
|
||||
self.log_verbose('use', master)
|
||||
m = self._cc2650[master]
|
||||
d = self._device[master]
|
||||
print('4')
|
||||
|
||||
if d is not None:
|
||||
raise RuntimeError('cc2650 has connected a device')
|
||||
|
||||
with self:
|
||||
print('5')
|
||||
self._interface.flush()
|
||||
self._selector.select(master)
|
||||
|
||||
sleep(0.0001)
|
||||
d = m.connect(response, direct_connect)
|
||||
print('6')
|
||||
|
||||
if d is None:
|
||||
raise RuntimeError('connect failed, retry please')
|
||||
|
||||
@@ -683,12 +683,12 @@ class DeviceManager(MasterDevice, Synchronized):
|
||||
address = address_str(response.mac_address)
|
||||
self.log_info(DEVICE_CONNECTING, address)
|
||||
|
||||
response = self.found_device(response)
|
||||
# response = self.found_device(response)
|
||||
|
||||
''' device not found'''
|
||||
if response is None:
|
||||
self.log_warn(DEVICE_CONNECT_FAIL, address, DEVICE_NOT_FOUND)
|
||||
return None
|
||||
# ''' device not found'''
|
||||
# if response is None:
|
||||
# self.log_warn(DEVICE_CONNECT_FAIL, address, DEVICE_NOT_FOUND)
|
||||
# return None
|
||||
# raise RuntimeError(DEVICE_NOT_FOUND, address)
|
||||
|
||||
# get device library
|
||||
@@ -718,7 +718,9 @@ class DeviceManager(MasterDevice, Synchronized):
|
||||
serial_number=response.serial_number)
|
||||
else:
|
||||
try:
|
||||
print('here!!!!!!!!!!!!!!!!!!!!!!!', response)
|
||||
device = self._centralMaster.connect(response)
|
||||
print('connect', device)
|
||||
|
||||
device = CompletedDevice(self, library, device.device_id, device)
|
||||
except Exception as e:
|
||||
|
||||
@@ -532,6 +532,7 @@ class ComplexExpression(Expression[T]):
|
||||
@classmethod
|
||||
def parse(cls, json: JSON_OBJECT) -> Union['ComplexExpression', UndeterminedExpression]:
|
||||
expression = _get(json, 'expression', str, _truncate(json), nullable=True)
|
||||
print('expression parse', expression, json)
|
||||
|
||||
if expression is None:
|
||||
# un-determined expression
|
||||
@@ -879,9 +880,13 @@ class WhenExpression(ComplexExpression[T]):
|
||||
self._when: Dict[str, Expression[T]] = when
|
||||
|
||||
def value(self, context: Scope) -> Union[str, T]:
|
||||
print('value', context)
|
||||
value = super().value(context)
|
||||
|
||||
|
||||
key = str(value)
|
||||
print('value1', key,value)
|
||||
print('when', self._when)
|
||||
|
||||
if key in self._when:
|
||||
return self._when[key].value(context.child(VALUE=value))
|
||||
|
||||
@@ -404,7 +404,9 @@ class ListInstruction(Instruction, ImmutableListNode[Union[Instruction, Expressi
|
||||
ImmutableListNode.__init__(self, list(ins))
|
||||
|
||||
def eval_instruction(self, context: Scope) -> Iterable['SingleInstruction']:
|
||||
print('eval_instruction', context)
|
||||
for ins in self:
|
||||
print(ins)
|
||||
# foreach instructions
|
||||
|
||||
# ins type could be Union[str, Expression]
|
||||
|
||||
@@ -329,6 +329,30 @@ class ControlServer(SocketServer, ControlServerAPI):
|
||||
finally:
|
||||
self.led_thread.set_state(LED.AVAILABLE)
|
||||
|
||||
# version_info = [0, 2, 1, 7, 23, 2]
|
||||
# serial_number = DeviceSerialNumber(version_info[0],
|
||||
# version_info[1],
|
||||
# version_info[2],
|
||||
# version_info[3],
|
||||
# version_info[4],
|
||||
# version_info[5])
|
||||
# response = DeviceResponseInfo('Elite-EDC', serial_number, (164, 218, 50, 212, 231, 12), addr_type=0)
|
||||
# print('setup done', response)
|
||||
# ret = self.device_manager.connect(response)
|
||||
# print('ret', ret)
|
||||
|
||||
version_info = [0, 5, 1, 0, 23, 5]
|
||||
serial_number = DeviceSerialNumber(version_info[0],
|
||||
version_info[1],
|
||||
version_info[2],
|
||||
version_info[3],
|
||||
version_info[4],
|
||||
version_info[5])
|
||||
response = DeviceResponseInfo('Elite-EDC', serial_number, (164, 218, 50, 212, 238, 89), addr_type=0)
|
||||
print('setup done', response)
|
||||
ret = self.device_manager.connect(response)
|
||||
print('ret', ret)
|
||||
|
||||
def _setup_get_available_channel(self) -> Optional[List[int]]:
|
||||
client = self.data_server.client()
|
||||
|
||||
@@ -558,7 +582,6 @@ class ControlServer(SocketServer, ControlServerAPI):
|
||||
response = content
|
||||
else:
|
||||
response = to_device_info(content)
|
||||
|
||||
try:
|
||||
ret = self.device_manager.connect(response)
|
||||
except DeviceInstructionError as e:
|
||||
@@ -1398,7 +1421,6 @@ class ControlServer(SocketServer, ControlServerAPI):
|
||||
if client is not None:
|
||||
with client:
|
||||
client.show_data(device)
|
||||
|
||||
class _RandomCrashThread(ServerThread):
|
||||
def __init__(self):
|
||||
super().__init__('Crash')
|
||||
|
||||
Reference in New Issue
Block a user