Skip to content

Commit 68d5c7f

Browse files
committed
DigitalOutputProtol Drivers: add invert method
Adds the invert method to the various drivers implementing the DigitalOutputProtocol. Specifically DeditecRelaisDriver, FileDigitalOutputDriver, GpioDigitalOutputDriver, HttpDigitalOutputDriver, LXAIOBusPIODriver, ManualSwitchDriver, ModbusCoilDriver, OneWirePIODriver, SerialPortDigitalOutputDriver, HIDRelayDriver Adds the invert attribute to the GPIODigitalOutputDriver and the GpioDigitalOutput agent. Signed-off-by: Perry Melange <[email protected]>
1 parent dbd0b70 commit 68d5c7f

11 files changed

+70
-9
lines changed

labgrid/driver/deditecrelaisdriver.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,8 @@ def get(self):
4646
if self.relais.invert:
4747
status = not status
4848
return status
49+
50+
@Driver.check_active
51+
@step(result=True)
52+
def invert(self):
53+
self.set(not self.get())

labgrid/driver/filedigitaloutput.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,8 @@ def set(self, status):
4343
out = self.true_repr if status else self.false_repr
4444
with open(self.filepath, "w") as fdes:
4545
fdes.write(out)
46+
47+
@Driver.check_active
48+
@step(result=True)
49+
def invert(self):
50+
self.set(not self.get())

labgrid/driver/gpiodriver.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class GpioDigitalOutputDriver(Driver, DigitalOutputProtocol):
1616
bindings = {
1717
"gpio": {"SysfsGPIO", "NetworkSysfsGPIO"},
1818
}
19+
delay = attr.ib(default=1.0, validator=attr.validators.instance_of(float))
1920

2021
def __attrs_post_init__(self):
2122
super().__attrs_post_init__()
@@ -37,9 +38,14 @@ def on_deactivate(self):
3738
@Driver.check_active
3839
@step(args=['status'])
3940
def set(self, status):
40-
self.proxy.set(self.gpio.index, status)
41+
self.proxy.set(self.gpio.index, self.gpio.invert, status)
4142

4243
@Driver.check_active
4344
@step(result=True)
4445
def get(self):
45-
return self.proxy.get(self.gpio.index)
46+
return self.proxy.get(self.gpio.index, self.gpio.invert)
47+
48+
@Driver.check_active
49+
@step(result=True)
50+
def invert(self):
51+
self.set(not self.get())

labgrid/driver/httpdigitaloutput.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,8 @@ def get(self):
6969
raise ExecutionError(
7070
f'response does not match asserted or deasserted state: "{res.text}"'
7171
)
72+
73+
@Driver.check_active
74+
@step(result=True)
75+
def invert(self):
76+
self.set(not self.get())

labgrid/driver/lxaiobusdriver.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,8 @@ def get(self):
5353
if self.pio.invert:
5454
status = not status
5555
return status
56+
57+
@Driver.check_active
58+
@step(result=True)
59+
def invert(self):
60+
self.set(not self.get())

labgrid/driver/manualswitchdriver.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,8 @@ def set(self, status):
3535
@step(result=True)
3636
def get(self):
3737
return self.status
38+
39+
@Driver.check_active
40+
@step(result=True)
41+
def invert(self):
42+
self.set(not self.get())

labgrid/driver/modbusdriver.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,7 @@ def get(self):
6060
if self.coil.invert:
6161
status = not status
6262
return status
63+
64+
@Driver.check_active
65+
def invert(self):
66+
self.set(not self.get())

labgrid/driver/onewiredriver.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,8 @@ def get(self):
5757
if self.port.invert:
5858
status = not status
5959
return status
60+
61+
@Driver.check_active
62+
@step(result=True)
63+
def invert(self):
64+
self.set(not self.get())

labgrid/driver/serialdigitaloutput.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,8 @@ def set(self, value):
6060
self._p.dtr = value
6161
elif self.signal == "rts":
6262
self._p.rts = value
63+
64+
@Driver.check_active
65+
@step(result=True)
66+
def invert(self):
67+
self.set(not self.get())

labgrid/driver/usbhidrelay.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,8 @@ def get(self):
4646
if self.relay.invert:
4747
status = not status
4848
return status
49+
50+
@Driver.check_active
51+
@step(result=True)
52+
def invert(self):
53+
self.set(not self.get())

0 commit comments

Comments
 (0)