Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3118e6f

Browse files
committed
updates tack handler
1 parent321cabd commit3118e6f

File tree

1 file changed

+80
-7
lines changed

1 file changed

+80
-7
lines changed

‎api_drivers/common_api_drivers/frozen/other/task_handler.py‎

Lines changed: 80 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
importlvglaslv# NOQA
22
importmicropython# NOQA
33
importsys
4+
importtime
45

56
try:
67
frommachineimportTimer# NOQA
@@ -11,12 +12,19 @@
1112
raiseRuntimeError("Missing machine.Timer implementation!")
1213

1314

15+
TASK_HANDLER_STARTED=0x00
16+
TASK_HANDLER_FINISHED=0x01
17+
1418
_default_timer_id=0
1519

1620
ifsys.platformin ('pyboard','rp2'):
1721
_default_timer_id=-1
1822

1923

24+
class_DefaultUserData(object):
25+
pass
26+
27+
2028
def_default_exception_hook(e):
2129
sys.print_exception(e)
2230
TaskHandler._current_instance.deinit()# NOQA
@@ -30,7 +38,6 @@ def __init__(
3038
duration=33,
3139
timer_id=_default_timer_id,
3240
max_scheduled=2,
33-
refresh_cb=None,
3441
exception_hook=_default_exception_hook
3542
):
3643
ifTaskHandler._current_instanceisnotNone:
@@ -41,8 +48,9 @@ def __init__(
4148

4249
TaskHandler._current_instance=self
4350

51+
self._callbacks= []
52+
4453
self.duration=duration
45-
self.refresh_cb=refresh_cb
4654
self.exception_hook=exception_hook
4755

4856
self._timer=Timer(timer_id)
@@ -58,6 +66,27 @@ def __init__(
5866
)
5967
self._scheduled=0
6068

69+
defadd_event_cb(self,callback,event,user_data=_DefaultUserData):
70+
fori, (cb,evt,data)inenumerate(self._callbacks):
71+
ifcb==callback:
72+
evt=event
73+
ifuser_data!=_DefaultUserData:
74+
data=user_data
75+
76+
self._callbacks[i]= (cb,evt,data)
77+
break
78+
else:
79+
ifuser_data==_DefaultUserData:
80+
user_data=None
81+
82+
self._callbacks.append((callback,event,user_data))
83+
84+
defremove_event_cb(self,callback):
85+
fori,objinself._callbacks:
86+
ifobj[0]==callback:
87+
self._callbacks.remove(obj)
88+
break
89+
6190
defdeinit(self):
6291
self._timer.deinit()
6392
TaskHandler._current_instance=None
@@ -74,13 +103,57 @@ def is_running(cls):
74103

75104
def_task_handler(self,_):
76105
try:
77-
iflv._nesting.value==0:
78-
lv.task_handler()
106+
self._scheduled-=1
79107

80-
ifself.refresh_cb:
81-
self.refresh_cb()
108+
iflv._nesting.value==0:
109+
start_time=time.ticks_ms()
110+
111+
run_update=True
112+
forcb,evt,datainself._callbacks:
113+
ifnotevt^TASK_HANDLER_STARTED:
114+
continue
115+
116+
try:
117+
ifcb(TASK_HANDLER_STARTED,data)isFalse:
118+
run_update=False
119+
120+
exceptExceptionaserr:# NOQA
121+
if (
122+
self.exception_hookand
123+
self.exception_hook!=_default_exception_hook
124+
):
125+
self.exception_hook(err)
126+
else:
127+
sys.print_exception(err)
128+
129+
stop_time=time.ticks_ms()
130+
131+
ticks_diff=time.ticks_diff(stop_time,start_time)
132+
lv.tick_inc(ticks_diff)
133+
134+
ifrun_update:
135+
lv.task_handler()
136+
start_time=time.ticks_ms()
137+
138+
forcb,evt,datainself._callbacks:
139+
ifnotevt^TASK_HANDLER_FINISHED:
140+
continue
141+
142+
try:
143+
cb(TASK_HANDLER_FINISHED,data)
144+
exceptExceptionaserr:# NOQA
145+
if (
146+
self.exception_hookand
147+
self.exception_hook!=_default_exception_hook
148+
):
149+
self.exception_hook(err)
150+
else:
151+
sys.print_exception(err)
152+
153+
stop_time=time.ticks_ms()
154+
ticks_diff=time.ticks_diff(stop_time,start_time)
155+
lv.tick_inc(ticks_diff)
82156

83-
self._scheduled-=1
84157
exceptExceptionase:
85158
ifself.exception_hook:
86159
self.exception_hook(e)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp