diff --git a/hardware_system.py b/hardware_system.py index 1a1bd47987450004c7a4dc18e4f8b6a21f24cd4c..431d1cdde1f95f6367632dcbb52427a278790ab2 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 05b2837ac6b2fed6a3e85c66f6be49611be8f772..6f6a2e725bcec3740eb97e1c01a0d3f1d9af6fe2 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.