@@ -919,6 +919,33 @@ def power(self):
919
919
if action == "get" :
920
920
print (f"power{ ' ' + name if name else '' } for place { place .name } is { 'on' if res else 'off' } " )
921
921
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
+
922
949
def digital_io (self ):
923
950
place = self .get_acquired_place ()
924
951
action = self .args .action
@@ -1868,6 +1895,14 @@ def main():
1868
1895
subparser .add_argument ("--name" , "-n" , help = "optional resource name" )
1869
1896
subparser .set_defaults (func = ClientSession .power )
1870
1897
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
+
1871
1906
subparser = subparsers .add_parser ("io" , help = "change (or get) a digital IO status" )
1872
1907
subparser .add_argument ("action" , choices = ["high" , "low" , "get" ], help = "action" )
1873
1908
subparser .add_argument ("name" , help = "optional resource name" , nargs = "?" )
0 commit comments