Commit 88396587 authored by Arnaud WATLET's avatar Arnaud WATLET
Browse files

tests new cabling config

Showing with 619 additions and 9 deletions
+619 -9
...@@ -141,7 +141,7 @@ class MuxAbstract(ABC): ...@@ -141,7 +141,7 @@ class MuxAbstract(ABC):
if cabling is not None: if cabling is not None:
for k, v in cabling.items(): for k, v in cabling.items():
if v[0] == self.board_id: if v[0] == self.board_id:
self.cabling.update({k: (v[1], k[1])}) self.cabling.update({k: (v, k[1])})
self.exec_logger.debug(f'{self.board_id} cabling: {self.cabling}') self.exec_logger.debug(f'{self.board_id} cabling: {self.cabling}')
self.addresses = kwargs.pop('addresses', None) self.addresses = kwargs.pop('addresses', None)
self._barrier = kwargs.pop('barrier', Barrier(1)) self._barrier = kwargs.pop('barrier', Barrier(1))
......
...@@ -73,14 +73,23 @@ class Mux(MuxAbstract): ...@@ -73,14 +73,23 @@ class Mux(MuxAbstract):
self.exec_logger.event(f'{self.model}: {self.board_id}\tmux_init\tbegin\t{datetime.datetime.utcnow()}') self.exec_logger.event(f'{self.model}: {self.board_id}\tmux_init\tbegin\t{datetime.datetime.utcnow()}')
assert isinstance(self.connection, I2C) assert isinstance(self.connection, I2C)
self.exec_logger.debug(f'configuration: {kwargs}') self.exec_logger.debug(f'configuration: {kwargs}')
self._roles = kwargs.pop('roles', None) roles = kwargs.pop('roles', None)
if self._roles is None: if isinstance(roles, str):
self._roles = {'A': 'X'} # NOTE: defaults to 1-role roles = [roles]
if roles is None:
roles = ['A'] # NOTE: defaults to 1-role
else:
self._roles = {roles[0]:'X'}
if np.alltrue([j in self._roles.values() for j in set([i[1] for i in list(inner_cabling['1_role'].keys())])]): if np.alltrue([j in self._roles.values() for j in set([i[1] for i in list(inner_cabling['1_role'].keys())])]):
self._mode = '1_role' self._mode = '1_role'
else: else:
self.exec_logger.error(f'Invalid role assignment for {self.model}: {self._roles} !') self.exec_logger.error(f'Invalid role assignment for {self.model}: {self._roles} !')
self._mode = '' self._mode = ''
cabling = kwargs.pop('cabling', None)
electrodes = kwargs.pop('electrodes', None)
self.cabling = {}
if cabling is None:
cabling = {(e, r): i + 1 for r in roles for i, e in enumerate(electrodes)}
self._tca = [adafruit_tca9548a.TCA9548A(self.connection, kwargs['mux_tca_address'])[i] for i in np.arange(7, 3, -1)] self._tca = [adafruit_tca9548a.TCA9548A(self.connection, kwargs['mux_tca_address'])[i] for i in np.arange(7, 3, -1)]
# self._mcp_addresses = (kwargs.pop('mcp', '0x20')) # TODO: add assert on valid addresses.. # self._mcp_addresses = (kwargs.pop('mcp', '0x20')) # TODO: add assert on valid addresses..
self._mcp = [None, None, None, None] self._mcp = [None, None, None, None]
...@@ -97,7 +106,7 @@ class Mux(MuxAbstract): ...@@ -97,7 +106,7 @@ class Mux(MuxAbstract):
self.addresses = {} self.addresses = {}
d = {} d = {}
for k, v in self.cabling.items(): for k, v in self.cabling.items():
d.update({k: ic[(v[0], self._roles[k[1]])]}) d.update({k: ic[(v[0], self._roles[k])]})
self.addresses = d self.addresses = d
def reset(self): def reset(self):
......
...@@ -69,9 +69,12 @@ class Mux(MuxAbstract): ...@@ -69,9 +69,12 @@ class Mux(MuxAbstract):
self.exec_logger.event(f'{self.model}: {self.board_id}\tmux_init\tbegin\t{datetime.datetime.utcnow()}') self.exec_logger.event(f'{self.model}: {self.board_id}\tmux_init\tbegin\t{datetime.datetime.utcnow()}')
assert isinstance(self.connection, I2C) assert isinstance(self.connection, I2C)
self.exec_logger.debug(f'configuration: {kwargs}') self.exec_logger.debug(f'configuration: {kwargs}')
self._roles = kwargs.pop('roles', None) roles = kwargs.pop('roles', None)
if self._roles is None: if roles is None:
self._roles = {'A': 'X', 'B': 'Y', 'M': 'XX', 'N': 'YY'} # NOTE: defaults to 4-roles roles = ['A','B','M','N'] # NOTE: defaults to 4-roles
else:
roles_board = ['X', 'Y', 'XX', 'YY']
self._roles = {roles[i]: roles_board[i] for i in range(len(roles))}
if np.all([j in self._roles.values() for j in set([i[1] for i in list(inner_cabling['4_roles'].keys())])]): if np.all([j in self._roles.values() for j in set([i[1] for i in list(inner_cabling['4_roles'].keys())])]):
self._mode = '4_roles' self._mode = '4_roles'
elif np.all([j in self._roles.values() for j in set([i[1] for i in list(inner_cabling['2_roles'].keys())])]): elif np.all([j in self._roles.values() for j in set([i[1] for i in list(inner_cabling['2_roles'].keys())])]):
......
...@@ -163,7 +163,7 @@ class OhmPiHardware: ...@@ -163,7 +163,7 @@ class OhmPiHardware:
for mux_id, mux in self.mux_boards.items(): for mux_id, mux in self.mux_boards.items():
mux.barrier = self.mux_barrier mux.barrier = self.mux_barrier
for k, v in mux.cabling.items(): for k, v in mux.cabling.items():
update_dict(self._cabling, {k: (mux_id, k[0])}) update_dict(self._cabling, {k: (mux_id, k[0])}) #TODO: in theory k[0] is not needed in values
# Complete OhmPiHardware initialization # Complete OhmPiHardware initialization
self.readings = np.array([]) # time series of acquired data self.readings = np.array([]) # time series of acquired data
......
2023-06-16 10:04:54 UTC | 5786 | INFO: ****************************
2023-06-16 10:04:54 UTC | 5786 | INFO: *** NEW SESSION STARTING ***
2023-06-16 10:04:54 UTC | 5786 | INFO: ****************************
2023-06-16 10:04:54 UTC | 5786 | INFO:
2023-06-16 10:04:54 UTC | 5786 | INFO: Remaining disk space : 19883.7 MB
2023-06-16 10:04:54 UTC | 5786 | INFO: Saving data log to /home/pi/OhmPi/ohmpi/data/data.log
2023-06-16 10:04:54 UTC | 5786 | EVENT: ohmpi_card_3_15 Init_RX begin 2023-06-16 10:04:54.222336
2023-06-16 10:04:54 UTC | 5786 | EVENT: ohmpi_card_3_15 Init_RX end 2023-06-16 10:04:59.226964
2023-06-16 10:04:54 UTC | 5786 | INFO: Hardware configured...
2023-06-16 10:04:54 UTC | 5786 | WARNING: Voltage cannot be set on pwr_batt...
2023-06-16 10:04:55 UTC | 5786 | WARNING: Voltage cannot be set on pwr_batt...
2023-06-16 10:04:55 UTC | 5786 | INFO: values when starting pulse 0 : 0.10351878414258248 mA, -0.015625476851710562 mV
2023-06-16 10:04:56 UTC | 5786 | WARNING: pulse 0: elapsed time 0.963789 s
2023-06-16 10:04:56 UTC | 5786 | WARNING: pulse 0: total samples 20
2023-06-16 10:04:56 UTC | 5786 | WARNING: Voltage cannot be set on pwr_batt...
2023-06-16 10:04:56 UTC | 5786 | INFO: values when starting pulse 1 : 2.56 mA, 24.196050904873804 mV
2023-06-16 10:04:57 UTC | 5786 | WARNING: pulse 1: elapsed time 2.062349 s
2023-06-16 10:04:57 UTC | 5786 | WARNING: pulse 1: total samples 42
2023-06-16 10:04:57 UTC | 5786 | WARNING: Voltage cannot be set on pwr_batt...
2023-06-16 10:04:57 UTC | 5786 | INFO: values when starting pulse 2 : 0.1029718924527726 mA, 1.2344126712851344 mV
2023-06-16 10:04:58 UTC | 5786 | WARNING: pulse 2: elapsed time 3.16233 s
2023-06-16 10:04:58 UTC | 5786 | WARNING: pulse 2: total samples 64
2023-06-16 10:04:58 UTC | 5786 | WARNING: Voltage cannot be set on pwr_batt...
2023-06-16 10:04:58 UTC | 5786 | INFO: values when starting pulse 3 : 2.56 mA, 24.094485305337688 mV
2023-06-16 10:04:59 UTC | 5786 | WARNING: pulse 3: elapsed time 4.262339 s
2023-06-16 10:04:59 UTC | 5786 | WARNING: pulse 3: total samples 86
2023-06-16 10:04:59 UTC | 5786 | WARNING: Voltage cannot be set on pwr_batt...
2023-06-16 10:04:59 UTC | 5786 | INFO: values when starting pulse 4 : 0.10281563768425551 mA, 1.2578508865627003 mV
2023-06-16 10:05:00 UTC | 5786 | WARNING: pulse 4: elapsed time 5.36226 s
2023-06-16 10:05:00 UTC | 5786 | WARNING: pulse 4: total samples 108
2023-06-16 10:05:00 UTC | 5786 | WARNING: Voltage cannot be set on pwr_batt...
2023-06-16 10:05:00 UTC | 5786 | INFO: values when starting pulse 5 : 2.56 mA, 24.28980376598407 mV
2023-06-16 10:05:01 UTC | 5786 | WARNING: pulse 5: elapsed time 6.462261 s
2023-06-16 10:05:01 UTC | 5786 | WARNING: pulse 5: total samples 130
This diff is collapsed.
This diff is collapsed.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment