Skip to content
This repository was archived by the owner on Oct 28, 2023. It is now read-only.

Commit 1054802

Browse files
committed
Fix bug in timer_callback
1 parent 6ac2910 commit 1054802

File tree

2 files changed

+64
-12
lines changed

2 files changed

+64
-12
lines changed

esp32/modules/splash.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,6 @@ def splash_input_init():
268268

269269
scheduler = []
270270

271-
loopTimerPos = 0
272-
loopTimerTarget = 0
273-
drawTimerPos = 0
274-
drawTimerTarget = 0
275-
powerTimerPos = 0
276-
powerTimerTarget = 0
277-
278271
def scheduler_add(target, callback):
279272
global scheduler
280273
item = {"pos":0, "target":target, "cb":callback}
@@ -286,16 +279,13 @@ def timer_callback(tmr):
286279
for i in range(0, len(scheduler)):
287280
scheduler[i]["pos"] += 25
288281
if scheduler[i]["pos"] > scheduler[i]["target"]:
289-
print("Target reached "+str(i))
290282
newTarget = scheduler[i]["cb"]()
291283
if newTarget > 0:
292-
print("New target "+str(i))
293284
newScheduler[i]["pos"] = 0
294285
newScheduler[i]["target"] = newTarget
295286
else:
296-
print("Discard "+str(i))
297-
newScheduler[i]["pos"] = -1
298-
newScheduler[i]["target"] = -1
287+
newScheduler.pop(i)
288+
scheduler = newScheduler
299289

300290
### PROGRAM
301291

esp32/modules/virtualtimers.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# File: virtualtimers.py
2+
# Version: 1
3+
# Description: Uses one hardware timer to simulate timers
4+
# License: MIT
5+
# Authors: Renze Nicolai <renze@rnplus.nl>
6+
7+
scheduler = []
8+
timer = machine.Timer(0)
9+
period = 0
10+
11+
def new(target, callback):
12+
global scheduler
13+
item = {"pos":0, "target":target, "cb":callback}
14+
scheduler.append(item)
15+
16+
def delete(callback):
17+
global scheduler
18+
newScheduler = scheduler
19+
found = False
20+
for i in range(0, len(scheduler)):
21+
if (scheduler[i]["cb"]==callback):
22+
newScheduler.pop(i)
23+
found = True
24+
break
25+
scheduler = newScheduler
26+
return found
27+
28+
def update(target, callback):
29+
global scheduler
30+
found = False
31+
for i in range(0, len(scheduler)):
32+
if (scheduler[i]["cb"]==callback):
33+
scheduler[i]["target"] = target
34+
found = True
35+
return found
36+
37+
def activate(p):
38+
global timer
39+
global period
40+
if p<1:
41+
return
42+
period = p
43+
timer.init(period=p, mode=machine.Timer.PERIODIC, callback=timer_callback)
44+
45+
def stop():
46+
global timer
47+
timer.deinit()
48+
49+
def timer_callback(tmr):
50+
global scheduler
51+
global period
52+
newScheduler = scheduler
53+
for i in range(0, len(scheduler)):
54+
scheduler[i]["pos"] += period
55+
if scheduler[i]["pos"] > scheduler[i]["target"]:
56+
newTarget = scheduler[i]["cb"]()
57+
if newTarget > 0:
58+
newScheduler[i]["pos"] = 0
59+
newScheduler[i]["target"] = newTarget
60+
else:
61+
newScheduler.pop(i)
62+
scheduler = newScheduler

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy