6
6
import uasyncio as asyncio
7
7
from . import Delay_ms
8
8
9
- # An Event-like class that can wait on an iterable of Event instances.
9
+ # An Event-like class that can wait on an iterable of Event-like instances.
10
10
# .wait pauses until any passed event is set.
11
11
class WaitAny :
12
12
def __init__ (self , events ):
@@ -32,7 +32,11 @@ async def wt(self, event):
32
32
def event (self ):
33
33
return self .trig_event
34
34
35
- # An Event-like class that can wait on an iterable of Event instances,
35
+ def clear (self ):
36
+ for evt in (x for x in self .events if hasattr (x , 'clear' )):
37
+ evt .clear ()
38
+
39
+ # An Event-like class that can wait on an iterable of Event-like instances,
36
40
# .wait pauses until all passed events have been set.
37
41
class WaitAll :
38
42
def __init__ (self , events ):
@@ -48,6 +52,10 @@ async def wt(event):
48
52
for task in tasks :
49
53
task .cancel ()
50
54
55
+ def clear (self ):
56
+ for evt in (x for x in self .events if hasattr (x , 'clear' )):
57
+ evt .clear ()
58
+
51
59
# Minimal switch class having an Event based interface
52
60
class ESwitch :
53
61
debounce_ms = 50
@@ -62,7 +70,7 @@ def __init__(self, pin, lopen=1): # Default is n/o switch returned to gnd
62
70
63
71
async def _poll (self , dt ): # Poll the button
64
72
while True :
65
- if (s := self ._pin () ^ self ._lopen ) != self ._state :
73
+ if (s := self ._pin () ^ self ._lopen ) != self ._state : # 15μs
66
74
self ._state = s
67
75
self ._of () if s else self ._cf ()
68
76
await asyncio .sleep_ms (dt ) # Wait out bounce
@@ -80,6 +88,8 @@ def __call__(self):
80
88
81
89
def deinit (self ):
82
90
self ._poll .cancel ()
91
+ self .open .clear ()
92
+ self .close .clear ()
83
93
84
94
# Minimal pushbutton class having an Event based interface
85
95
class EButton :
@@ -152,3 +162,5 @@ def __call__(self):
152
162
def deinit (self ):
153
163
for task in self ._tasks :
154
164
task .cancel ()
165
+ for evt in (self .press , self .double , self .long , self .release ):
166
+ evt .clear ()
0 commit comments