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
         """Toggles the GiveBack flag in the configuration buffer"""
142
         """Toggles the GiveBack flag in the configuration buffer"""
143
         self.send_command("toggle_giveback")
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
     def set_v(self, mv):
149
     def set_v(self, mv):
146
         """Sets the voltage of the configuration buffer, in millivolts"""
150
         """Sets the voltage of the configuration buffer, in millivolts"""
147
         out = self.send_command("set_v {}".format(mv))
151
         out = self.send_command("set_v {}".format(mv))
150
         if len(out):
154
         if len(out):
151
             raise ValueError(out[0])
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
     def set_i(self, ma):
169
     def set_i(self, ma):
154
         """Sets the current of the configuration buffer, in milliamperes"""
170
         """Sets the current of the configuration buffer, in milliamperes"""
155
         out = self.send_command("set_i {}".format(ma))
171
         out = self.send_command("set_i {}".format(ma))
200
         self.clear_flags()
216
         self.clear_flags()
201
         if sc.flags & SinkFlags.GIVEBACK:
217
         if sc.flags & SinkFlags.GIVEBACK:
202
             self.toggle_giveback()
218
             self.toggle_giveback()
219
+        if sc.flags & SinkFlags.HV_PREFERRED:
220
+            self.toggle_hv_preferred()
203
 
221
 
204
         # Set voltage
222
         # Set voltage
205
         self.set_v(sc.v)
223
         self.set_v(sc.v)
224
+
225
+        # Set voltage range
226
+        self.set_vrange(sc.vmin, sc.vmax)
206
         
227
         
207
         # Set current
228
         # Set current
208
         self.set_i(sc.i)
229
         self.set_i(sc.i)

+ 15
- 0
test_pdbuddy/__init__.py View File

22
         self.obj_valid_gb = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
22
         self.obj_valid_gb = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
23
                 flags=pdbuddy.SinkFlags.GIVEBACK, v=15000, vmin=None,
23
                 flags=pdbuddy.SinkFlags.GIVEBACK, v=15000, vmin=None,
24
                 vmax=None, i=3000)
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
         self.obj_huge_v = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
29
         self.obj_huge_v = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
27
                 flags=pdbuddy.SinkFlags.NONE, v=65536, vmin=None, vmax=None,
30
                 flags=pdbuddy.SinkFlags.NONE, v=65536, vmin=None, vmax=None,
33
                 flags=pdbuddy.SinkFlags.NONE, v=-1, vmin=None, vmax=None,
36
                 flags=pdbuddy.SinkFlags.NONE, v=-1, vmin=None, vmax=None,
34
                 i=1000)
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
         self.obj_huge_i = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
43
         self.obj_huge_i = pdbuddy.SinkConfig(status=pdbuddy.SinkStatus.VALID,
37
                 flags=pdbuddy.SinkFlags.NONE, v=5000, vmin=None, vmax=None,
44
                 flags=pdbuddy.SinkFlags.NONE, v=5000, vmin=None, vmax=None,
38
                 i=65536)
45
                 i=65536)
68
         self.pdbs.set_tmpcfg(self.obj_valid_gb)
75
         self.pdbs.set_tmpcfg(self.obj_valid_gb)
69
         self.assertEqual(self.pdbs.get_tmpcfg(), self.obj_valid_gb)
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
     def test_set_tmpcfg_huge_v(self):
82
     def test_set_tmpcfg_huge_v(self):
72
         with self.assertRaises(ValueError):
83
         with self.assertRaises(ValueError):
73
             self.pdbs.set_tmpcfg(self.obj_huge_v)
84
             self.pdbs.set_tmpcfg(self.obj_huge_v)
80
         with self.assertRaises(ValueError):
91
         with self.assertRaises(ValueError):
81
             self.pdbs.set_tmpcfg(self.obj_neg_v)
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
     def test_set_tmpcfg_huge_i(self):
98
     def test_set_tmpcfg_huge_i(self):
84
         with self.assertRaises(ValueError):
99
         with self.assertRaises(ValueError):
85
             self.pdbs.set_tmpcfg(self.obj_huge_i)
100
             self.pdbs.set_tmpcfg(self.obj_huge_i)

Loading…
Cancel
Save