Skip to content

Commit 4b4990a

Browse files
committed
client: add client commands to SysfsGPIO
Add support for the button protocol for SysfsGPIO to labgrid-client Signed-off-by: Perry Melange <[email protected]>
1 parent ad7e875 commit 4b4990a

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

labgrid/remote/client.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,33 @@ def power(self):
919919
if action == "get":
920920
print(f"power{' ' + name if name else ''} for place {place.name} is {'on' if res else 'off'}")
921921

922+
def button(self):
923+
place = self.get_acquired_place()
924+
action = self.args.action
925+
delay = self.args.delay
926+
name = self.args.name
927+
target = self._get_target(place)
928+
from ..resource.remote import NetworkSysfsGPIO
929+
930+
drv = None
931+
try:
932+
drv = target.get_driver("ButtonProtocol", name=name)
933+
except NoDriverFoundError:
934+
for resource in target.resources:
935+
if isinstance(resource, NetworkSysfsGPIO):
936+
self._get_driver_or_new(target, "GpioDigitalOutputDriver", name=name)
937+
drv = self._get_driver_or_new(target, "DigitalOutputButtonDriver", name=name)
938+
if drv:
939+
break
940+
941+
if not drv:
942+
raise UserError("target has no compatible resource available")
943+
if delay is not None:
944+
drv.delay = delay
945+
res = getattr(drv, action)()
946+
if action == "get":
947+
print(f"button{' ' + name if name else ''} for place {place.name} is {'pressed' if res else 'released'}")
948+
922949
def digital_io(self):
923950
place = self.get_acquired_place()
924951
action = self.args.action
@@ -1868,6 +1895,14 @@ def main():
18681895
subparser.add_argument("--name", "-n", help="optional resource name")
18691896
subparser.set_defaults(func=ClientSession.power)
18701897

1898+
subparser = subparsers.add_parser("button", help="change (or get) a place's button status")
1899+
subparser.add_argument("action", choices=["press", "release", "press_for", "get"])
1900+
subparser.add_argument(
1901+
"-t", "--delay", type=float, default=None, help="wait time in seconds between the press and release during press_for"
1902+
)
1903+
subparser.add_argument("--name", "-n", help="optional resource name")
1904+
subparser.set_defaults(func=ClientSession.button)
1905+
18711906
subparser = subparsers.add_parser("io", help="change (or get) a digital IO status")
18721907
subparser.add_argument("action", choices=["high", "low", "get"], help="action")
18731908
subparser.add_argument("name", help="optional resource name", nargs="?")

0 commit comments

Comments
 (0)