From 30ca876d84d49e85c976465f42f632466c1b4eb4 Mon Sep 17 00:00:00 2001 From: su530201 <olivier.kaufmann@umons.ac.be> Date: Wed, 3 May 2023 10:07:40 +0200 Subject: [PATCH] Improves switching -> return a status --- hardware_system.py | 26 ++++++++++++++------------ ohmpi.py | 6 +++--- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/hardware_system.py b/hardware_system.py index 1a1bd479..431d1cdd 100644 --- a/hardware_system.py +++ b/hardware_system.py @@ -279,6 +279,7 @@ class OhmPiHardware: state : str, optional Either 'on' or 'off'. """ + status = True if roles is None: roles = ['A', 'B', 'M', 'N'] if len(electrodes) == len(roles): @@ -293,18 +294,19 @@ class OhmPiHardware: mux_workers.append(mux) except KeyError: self.exec_logger.debug(f'Unable to switch {state} ({elec}, {roles[idx]}): not in cabling and will be ignored...') - mux_workers = list(set(mux_workers)) - b = Barrier(len(mux_workers)+1) - self.mux_barrier = b - for idx, mux in enumerate(mux_workers): - # Create a new thread to perform some work - self.mux_boards[mux].barrier = b - mux_workers[idx] = Thread(target=self.mux_boards[mux].switch, kwargs={'elec_dict': elec_dict}) - mux_workers[idx].start() - self.mux_barrier.wait() - status = True - for mux_worker in mux_workers: - status &= mux_worker.join() + status = False + if status: + mux_workers = list(set(mux_workers)) + b = Barrier(len(mux_workers)+1) + self.mux_barrier = b + for idx, mux in enumerate(mux_workers): + # Create a new thread to perform some work + self.mux_boards[mux].barrier = b + mux_workers[idx] = Thread(target=self.mux_boards[mux].switch, kwargs={'elec_dict': elec_dict}) + mux_workers[idx].start() + self.mux_barrier.wait() + for mux_worker in mux_workers: + mux_worker.join() else: self.exec_logger.error( f'Unable to switch {state} electrodes: number of electrodes and number of roles do not match!') diff --git a/ohmpi.py b/ohmpi.py index 05b2837a..6f6a2e72 100644 --- a/ohmpi.py +++ b/ohmpi.py @@ -450,8 +450,8 @@ class OhmPi(object): injection_duration = self.settings['injection_duration'] tx_volt = float(tx_volt) - status = self.switch_mux_on(quad, cmd_id) - if status: + + if self.switch_mux_on(quad, cmd_id): self._hw.vab_square_wave(tx_volt, cycle_length=injection_duration*2, cycles=nb_stack) else: self.exec_logger.info('Skipping {quad}') @@ -772,7 +772,7 @@ class OhmPi(object): List of 4 integers representing the electrode numbers. """ assert len(quadrupole) == 4 - return self._hw.switch_mux(electrodes=quadrupole, state='on') + return self._hw.switch_mux(electrodes=quadrupole, state='on') def switch_mux_off(self, quadrupole, cmd_id=None): """Switches off multiplexer relays for given quadrupole. -- GitLab