Skip to content

Commit 3361bf8

Browse files
committed
delay_ms.py: Add set method.
1 parent df90862 commit 3361bf8

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

v3/docs/TUTORIAL.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1249,6 +1249,7 @@ Synchronous methods:
12491249
be assigned, reassigned or disabled at run time.
12501250
7. `deinit` No args. Cancels the running task. See [Object scope](./TUTORIAL.md#44-object-scope).
12511251
8. `clear` No args. Clears the `Event` described in `wait` below.
1252+
9. `set` No args. Sets the `Event` described in `wait` below.
12521253

12531254
Asynchronous method:
12541255
1. `wait` One or more tasks may wait on a `Delay_ms` instance. Pause until the

v3/primitives/delay_ms.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def __init__(self, func=None, args=(), duration=1000):
2727
self._tout = asyncio.Event() # Timeout event
2828
self.wait = self._tout.wait # Allow: await wait_ms.wait()
2929
self.clear = self._tout.clear
30+
self.set = self._tout.set
3031
self._ttask = self._fake # Timer task
3132
self._mtask = asyncio.create_task(self._run()) #Main task
3233

v3/primitives/events.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import uasyncio as asyncio
77
from . import Delay_ms
88

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.
1010
# .wait pauses until any passed event is set.
1111
class WaitAny:
1212
def __init__(self, events):
@@ -32,7 +32,11 @@ async def wt(self, event):
3232
def event(self):
3333
return self.trig_event
3434

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,
3640
# .wait pauses until all passed events have been set.
3741
class WaitAll:
3842
def __init__(self, events):
@@ -48,6 +52,10 @@ async def wt(event):
4852
for task in tasks:
4953
task.cancel()
5054

55+
def clear(self):
56+
for evt in (x for x in self.events if hasattr(x, 'clear')):
57+
evt.clear()
58+
5159
# Minimal switch class having an Event based interface
5260
class ESwitch:
5361
debounce_ms = 50
@@ -62,7 +70,7 @@ def __init__(self, pin, lopen=1): # Default is n/o switch returned to gnd
6270

6371
async def _poll(self, dt): # Poll the button
6472
while True:
65-
if (s := self._pin() ^ self._lopen) != self._state:
73+
if (s := self._pin() ^ self._lopen) != self._state: # 15μs
6674
self._state = s
6775
self._of() if s else self._cf()
6876
await asyncio.sleep_ms(dt) # Wait out bounce
@@ -80,6 +88,8 @@ def __call__(self):
8088

8189
def deinit(self):
8290
self._poll.cancel()
91+
self.open.clear()
92+
self.close.clear()
8393

8494
# Minimal pushbutton class having an Event based interface
8595
class EButton:
@@ -152,3 +162,5 @@ def __call__(self):
152162
def deinit(self):
153163
for task in self._tasks:
154164
task.cancel()
165+
for evt in (self.press, self.double, self.long, self.release):
166+
evt.clear()

0 commit comments

Comments
 (0)