22from _collections_abc import Callable
33
44class RevTouchSensor (Component ):
5+ def __init__ (self ):
6+ self .is_pressed = None
7+
58 # Required methods
69 def get_manufacturer (self ) -> str :
710 return "REV Robotics"
@@ -20,19 +23,27 @@ def reset(self) -> None:
2023 def get_connection_port_type (self ) -> list [PortType ]:
2124 return [PortType .SMART_IO_PORT ]
2225 def periodic (self ) -> None :
23- # This would poll the hardware and see if it needs to fire any events
26+ old = self .is_pressed
27+ self ._read_hardware ()
28+ if old != self .is_pressed :
29+ if self .is_pressed and self .pressed_callback :
30+ self .pressed_callback ()
31+ elif old and self .released_callback :
32+ self .released_callback ()
33+ def _read_hardware (self ):
34+ # here read hardware to get the current value of the sensor and set self.is_pressed
2435 pass
2536
26- # Methods
2737 def is_pressed (self ) -> bool :
28- # Code to communicate using WPILib would go here
29- return True
38+ '''Returns if the touch sensor is pressed or not'''
39+ return self . is_pressed
3040
3141 # Events
32- def register_when_pressed (callback : Callable [[], None ]) -> None :
33- # Code to register callback here
34- pass
42+ def register_when_pressed (self , callback : Callable [[], None ]) -> None :
43+ '''Event when touch sensor is first pressed'''
44+ self .pressed_callback = callback
45+
3546
36- def register_when_released (callback : Callable [[], None ]) -> None :
37- # Code to register callback here
38- pass
47+ def register_when_released (self , callback : Callable [[], None ]) -> None :
48+ '''Event when touch sensor is first released'''
49+ self . released_callback = callback
0 commit comments