From f54e02003b0b68ba0eb89b7e89239f6c00100f65 Mon Sep 17 00:00:00 2001 From: su530201 <olivier.kaufmann@umons.ac.be> Date: Wed, 26 Apr 2023 18:48:59 +0200 Subject: [PATCH] Tries to implement switch_on in mux_2024 --- hardware_components/mux_2024_rev_0_0.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/hardware_components/mux_2024_rev_0_0.py b/hardware_components/mux_2024_rev_0_0.py index f4b5d169..d4412b4b 100644 --- a/hardware_components/mux_2024_rev_0_0.py +++ b/hardware_components/mux_2024_rev_0_0.py @@ -112,8 +112,8 @@ class Mux(MuxAbstract): kwargs.update({'board_name': os.path.basename(__file__).rstrip('.py')}) super().__init__(**kwargs) self.exec_logger.debug(f'configuration: {MUX_CONFIG}') - self._tca_address = kwargs.pop('tca_address', None) - self._tca_channel = kwargs.pop('tca_channel', 0) + tca_address = kwargs.pop('tca_address', None) + tca_channel = kwargs.pop('tca_channel', 0) self._roles = kwargs.pop('roles', None) if self._roles is None: self._roles = {'X': 'A', 'Y': 'B', 'XX': 'M', 'YY': 'N'} @@ -124,18 +124,23 @@ class Mux(MuxAbstract): else: self.exec_logger.error(f'Invalid role assignment for {self.board_name}: {self._roles} !') self._mode = '' + if tca_address is None: + self._tca = self.controller.bus + else: + self._tca = adafruit_tca9548a.TCA9548A(self.controller.bus, tca_address)[tca_channel] self._mcp = [0, 0] - self._mcp[0] = int(kwargs.pop('mcp_0', '0x22'), 16) # TODO add assert on valid addresses.. - self._mcp[1] = int(kwargs.pop('mcp_1', '0x23'), 16) + self._mcp[0] = MCP23017(self._tca, address=int(kwargs.pop('mcp_0', '0x22'), 16)) # TODO add assert on valid addresses.. + self._mcp[1] = MCP23017(self._tca, address=int(kwargs.pop('mcp_1', '0x23'), 16)) if self.addresses is None: self._get_addresses() self.exec_logger.debug(f'addresses: {self.addresses}') + def _get_addresses(self): d = inner_cabling[self._mode] self.addresses = {} for k, v in d.items(): - self.addresses.update({(k[0], self._roles[k[1]]): v.update({'MCP': self._mcp[v['MCP']]})}) + self.addresses.update({(k[0], self._roles[k[1]]): v}) print(f'addresses: {self.addresses}') # def _get_addresses(self, addresses_file): TODO : delete me @@ -164,17 +169,12 @@ class Mux(MuxAbstract): pin_enable.value = state d = self.addresses[elec, role] - if d['TCA_address'] is None: - tca = self.controller.bus - else: - tca = adafruit_tca9548a.TCA9548A(self.controller.bus, d['TCA_address'])[d['TCA_channel']] - mcp = MCP23017(tca, address=d['MCP_address']) self.exec_logger.debug(f'switching {state} electrode {elec} with role {role} on TCA {d["TCA_address"]}, channel ' f'{d["TCA_channel"]}, MCP {d["MCP_address"]}, gpio {d["MCP_GPIO"]}') if state == 'on': - set_relay_state(mcp, d['MCP_GPIO'], True) + set_relay_state(self._mcp[d['MCP']], d['MCP_GPIO'], True) if state == 'off': - set_relay_state(mcp, d['MCP_GPIO'], False) + set_relay_state(self._mcp[d['MCP']], d['MCP_GPIO'], False) def test(self, *args): MuxAbstract.test(self, *args) \ No newline at end of file -- GitLab