Browse Source

Added toggle_hv_preferred and set_vrange methods

And test cases for them, too.  Huzzah!
Clara Hobbs 6 years ago
parent
commit
5f37a7b360
2 changed files with 36 additions and 0 deletions
  1. 21
    0
      pdbuddy/__init__.py
  2. 15
    0
      test_pdbuddy/__init__.py

+ 21
- 0
pdbuddy/__init__.py View File

@@ -142,6 +142,10 @@ class Sink:
142 142
         """Toggles the GiveBack flag in the configuration buffer"""
143 143
         self.send_command("toggle_giveback")
144 144
 
145
+    def toggle_hv_preferred(self):
146
+        """Toggles the HV_Preferred flag in the configuration buffer"""
147
+        self.send_command("toggle_hv_preferred")
148
+
145 149
     def set_v(self, mv):
146 150
         """Sets the voltage of the configuration buffer, in millivolts"""
147 151
         out = self.send_command("set_v {}".format(mv))
@@ -150,6 +154,18 @@ class Sink:
150 154
         if len(out):
151 155
             raise ValueError(out[0])
152 156
 
157
+    def set_vrange(self, vmin, vmax):
158
+        """Sets the min and max voltage of the configuration buffer, in millivolts"""
159
+        # First, make sure we're sending numbers to the Sink in all valid cases
160
+        if vmin is None and vmax is None:
161
+            vmin = 0
162
+            vmax = 0
163
+        out = self.send_command("set_vrange {} {}".format(vmin, vmax))
164
+        # If that command gave any output, that indicates an error.  Raise an
165
+        # exception to make that clear.
166
+        if len(out):
167
+            raise ValueError(out[0])
168
+
153 169
     def set_i(self, ma):
154 170
         """Sets the current of the configuration buffer, in milliamperes"""
155 171
         out = self.send_command("set_i {}".format(ma))
@@ -200,9 +216,14 @@ class Sink:
200 216
         self.clear_flags()
201 217
         if sc.flags & SinkFlags.GIVEBACK:
202 218
             self.toggle_giveback()
219
+        if sc.flags & SinkFlags.HV_PREFERRED:
220
+            self.toggle_hv_preferred()
203 221
 
204 222
         # Set voltage
205 223
         self.set_v(sc.v)
224
+
225
+        # Set voltage range
226
+        self.set_vrange(sc.vmin, sc.vmax)
206 227
         
207 228
         # Set current
208 229
         self.set_i(sc.i)

+ 15
- 0
test_pdbuddy/__init__.py View File

@@ -22,6 +22,9 @@ class SinkTestCase(unittest.TestCase):
22 22
         self.obj_valid_gb = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
23 23
                 flags=pdbuddy.SinkFlags.GIVEBACK, v=15000, vmin=None,
24 24
                 vmax=None, i=3000)
25
+        self.obj_range = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
26
+                flags=pdbuddy.SinkFlags.HV_PREFERRED, v=13800, vmin=12000,
27
+                vmax=16000, i=2000)
25 28
 
26 29
         self.obj_huge_v = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
27 30
                 flags=pdbuddy.SinkFlags.NONE, v=65536, vmin=None, vmax=None,
@@ -33,6 +36,10 @@ class SinkTestCase(unittest.TestCase):
33 36
                 flags=pdbuddy.SinkFlags.NONE, v=-1, vmin=None, vmax=None,
34 37
                 i=1000)
35 38
 
39
+        self.obj_inv_range = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
40
+                flags=pdbuddy.SinkFlags.HV_PREFERRED, v=13800, vmin=16000,
41
+                vmax=12000, i=2000)
42
+
36 43
         self.obj_huge_i = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
37 44
                 flags=pdbuddy.SinkFlags.NONE, v=5000, vmin=None, vmax=None,
38 45
                 i=65536)
@@ -68,6 +75,10 @@ class SinkTestCase(unittest.TestCase):
68 75
         self.pdbs.set_tmpcfg(self.obj_valid_gb)
69 76
         self.assertEqual(self.pdbs.get_tmpcfg(), self.obj_valid_gb)
70 77
 
78
+    def test_set_tmpcfg_range(self):
79
+        self.pdbs.set_tmpcfg(self.obj_range)
80
+        self.assertEqual(self.pdbs.get_tmpcfg(), self.obj_range)
81
+
71 82
     def test_set_tmpcfg_huge_v(self):
72 83
         with self.assertRaises(ValueError):
73 84
             self.pdbs.set_tmpcfg(self.obj_huge_v)
@@ -80,6 +91,10 @@ class SinkTestCase(unittest.TestCase):
80 91
         with self.assertRaises(ValueError):
81 92
             self.pdbs.set_tmpcfg(self.obj_neg_v)
82 93
 
94
+    def test_set_tmpcfg_inv_range(self):
95
+        with self.assertRaises(ValueError):
96
+            self.pdbs.set_tmpcfg(self.obj_inv_range)
97
+
83 98
     def test_set_tmpcfg_huge_i(self):
84 99
         with self.assertRaises(ValueError):
85 100
             self.pdbs.set_tmpcfg(self.obj_huge_i)

Loading…
Cancel
Save