From 01d5d883a56acbc8e7a640b0d9155caeb417a6bf Mon Sep 17 00:00:00 2001
From: Arnaud Watlet <arnaud.watlet@umons.ac.be>
Date: Tue, 12 Dec 2023 15:17:27 +0100
Subject: [PATCH] Tries enabling switch_pwr during injection for polarity 0 on
 pwr_batt and pwr_dps5005_fixed

---
 ohmpi/hardware_components/mb_2024_0_2.py      | 27 +++++++++++++++++++
 ohmpi/hardware_components/pwr_batt.py         |  7 -----
 .../hardware_components/pwr_dps5005_fixed.py  |  1 -
 3 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/ohmpi/hardware_components/mb_2024_0_2.py b/ohmpi/hardware_components/mb_2024_0_2.py
index 2c756dfa..9aa25e89 100644
--- a/ohmpi/hardware_components/mb_2024_0_2.py
+++ b/ohmpi/hardware_components/mb_2024_0_2.py
@@ -129,6 +129,33 @@ class Tx(Tx_mb_2023):
             self.exec_logger.debug(f'Switching DPS off')
             self._pwr_state = 'off'
 
+    @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:
+            if self.pwr.voltage_adjustable:
+                self.pwr_state = 'on'
+            self.pin0.value = True
+            self.pin1.value = False
+            time.sleep(self._activation_delay)
+        elif polarity == -1:
+            if self.pwr.voltage_adjustable:
+                self.pwr_state = 'on'
+            self.pin0.value = False
+            self.pin1.value = True
+            time.sleep(self._activation_delay)
+        else:
+            if self.pwr.voltage_adjustable:
+                self.pwr_state = 'off'
+            self.pin0.value = False
+            self.pin1.value = False
+            time.sleep(self._release_delay)
+
 
 class Rx(Rx_mb_2023):
     def __init__(self, **kwargs):
diff --git a/ohmpi/hardware_components/pwr_batt.py b/ohmpi/hardware_components/pwr_batt.py
index e9d819eb..c66ad8e3 100644
--- a/ohmpi/hardware_components/pwr_batt.py
+++ b/ohmpi/hardware_components/pwr_batt.py
@@ -26,7 +26,6 @@ class Pwr(PwrAbstract):
             self.exec_logger.event(f'{self.model}\tpwr_init\tbegin\t{datetime.datetime.utcnow()}')
         self._voltage = kwargs['voltage']
         self._current = np.nan
-        self._switch_pwr_on_zero = True
         # self._state = 'on'
         if not subclass_init:
             self.exec_logger.event(f'{self.model}\tpwr_init\tend\t{datetime.datetime.utcnow()}')
@@ -46,9 +45,3 @@ class Pwr(PwrAbstract):
     @voltage.setter
     def voltage(self, value):
         PwrAbstract.voltage.fset(self, value)
-
-    def voltage_pulse(self, voltage=0., length=None, polarity=1):
-        self.voltage_pulse(voltage=voltage, length=length, polarity=polarity, switch_pwr=self._switch_pwr_on_zero)
-
-    def inject(self, polarity=1, injection_duration=None):
-        self.inject(polarity=polarity, injection_duration=injection_duration, switch_pwr=self._switch_pwr_on_zero)
diff --git a/ohmpi/hardware_components/pwr_dps5005_fixed.py b/ohmpi/hardware_components/pwr_dps5005_fixed.py
index 1aba1ec7..0bdbe072 100644
--- a/ohmpi/hardware_components/pwr_dps5005_fixed.py
+++ b/ohmpi/hardware_components/pwr_dps5005_fixed.py
@@ -32,7 +32,6 @@ class Pwr(Pwr_batt):
             self.exec_logger.event(f'{self.model}\tpwr_init\tbegin\t{datetime.datetime.utcnow()}')
         self._voltage = kwargs['voltage']
         self._current = np.nan
-        self._switch_pwr_on_zero = True
         # self._state = 'on'
         if not subclass_init:
             self.exec_logger.event(f'{self.model}\tpwr_init\tend\t{datetime.datetime.utcnow()}')
-- 
GitLab