From 87fc36d6069efaaab60a5f717fdb1eb58a4f68c7 Mon Sep 17 00:00:00 2001
From: su530201 <olivier.kaufmann@umons.ac.be>
Date: Tue, 16 May 2023 10:56:44 +0200
Subject: [PATCH] Reverts to tx.polarity

---
 .../abstract_hardware_components.py           | 12 ++++++++-
 hardware_components/ohmpi_card_3_15.py        | 27 ++++++++++++-------
 hardware_system.py                            |  4 +--
 3 files changed, 30 insertions(+), 13 deletions(-)

diff --git a/hardware_components/abstract_hardware_components.py b/hardware_components/abstract_hardware_components.py
index 125cb188..e4f9e207 100644
--- a/hardware_components/abstract_hardware_components.py
+++ b/hardware_components/abstract_hardware_components.py
@@ -220,6 +220,7 @@ class TxAbstract(ABC):
             self.soh_logger = create_stdout_logger('soh_tx')
         self.ctl = kwargs.pop('ctl', None)
         self.pwr = kwargs.pop('pwr', None)
+        self._polarity = 0
         self._inj_time = None
         self._adc_gain = 1.
         self.inj_time = inj_time
@@ -264,12 +265,21 @@ class TxAbstract(ABC):
         assert isinstance(value, float)
         self._inj_time = value
 
+    @property
+    def polarity(self):
+        return self._polarity
+
+    @polarity.setter
+    @abstractmethod
+    def polarity(self, polarity):
+        assert polarity in [-1, 0, 1]
+        self._polarity = polarity
+
     @property
     @abstractmethod
     def tx_bat(self):
         pass
 
-
     def voltage_pulse(self, voltage=0., length=None, polarity=1):
         """ Generates a square voltage pulse
 
diff --git a/hardware_components/ohmpi_card_3_15.py b/hardware_components/ohmpi_card_3_15.py
index 86feb65d..46e1240f 100644
--- a/hardware_components/ohmpi_card_3_15.py
+++ b/hardware_components/ohmpi_card_3_15.py
@@ -95,8 +95,7 @@ class Tx(TxAbstract):
         self.pin0.direction = Direction.OUTPUT
         self.pin1 = self.mcp_board.get_pin(1)
         self.pin1.direction = Direction.OUTPUT
-        # self.polarity = 0
-
+        self.polarity = 0
         self.adc_gain = 2 / 3
 
         self.pwr = None
@@ -141,21 +140,29 @@ class Tx(TxAbstract):
         self.exec_logger.warning(f'Current pulse is not implemented for the {TX_CONFIG["model"]} board')
 
     def inject(self, polarity=1, inj_time=None):
-        assert polarity in [-1,0,1]
-        if polarity==1:
+        self.polarity = polarity
+        TxAbstract.inject(self, polarity=polarity, inj_time=None)
+
+    @property
+    def polarity(self):
+        return self._polarity
+
+    @polarity.setter
+    def polarity(self, polarity):
+        assert polarity in [-1, 0, 1]
+        self._polarity = polarity
+        if polarity == 1:
             self.pin0.value = True
             self.pin1.value = False
-            time.sleep(0.005) # Max turn on time of 211EH relays = 5ms
-        elif polarity==-1:
+            time.sleep(0.005)  # Max turn on time of 211EH relays = 5ms
+        elif polarity == -1:
             self.pin0.value = False
             self.pin1.value = True
-            time.sleep(0.005) # Max turn on time of 211EH relays = 5ms
+            time.sleep(0.005)  # Max turn on time of 211EH relays = 5ms
         else:
             self.pin0.value = False
             self.pin1.value = False
-            time.sleep(0.001) # Max turn off time of 211EH relays = 1ms
-        TxAbstract.inject(self, polarity=polarity, inj_time=None)
-
+            time.sleep(0.001)  # Max turn off time of 211EH relays = 1ms
 
     def turn_off(self):
         self.pwr.turn_off(self)
diff --git a/hardware_system.py b/hardware_system.py
index 33b2f78d..077bf954 100644
--- a/hardware_system.py
+++ b/hardware_system.py
@@ -241,7 +241,7 @@ class OhmPiHardware:
     def _vab_pulse(self, vab, length, sampling_rate=None, polarity=1, append=False):
         """ Gets VMN and IAB from a single voltage pulse
         """
-
+        self.tx.polarity = polarity
         if sampling_rate is None:
             sampling_rate = RX_CONFIG['sampling_rate']
         if self.tx.pwr.voltage_adjustable:
@@ -268,7 +268,7 @@ class OhmPiHardware:
         if polarities is not None:
             assert len(polarities)==n_pulses
         else:
-            polarities = [-1 * np.heaviside(i % 2, -1.) for i in range(n_pulses)]
+            polarities = [-self.tx.polarity * np.heaviside(i % 2, -1.) for i in range(n_pulses)]
         if not append:
             self._clear_values()
         for i in range(n_pulses):
-- 
GitLab