22
33#include < limits.h>
44
5- #include " nodes/Timer.h"
65#include " nodes/Thread.h"
6+ #include " nodes/Timer.h"
77#include " platform.h"
88
99#define LP_LIST_AMOUNT 2
@@ -26,14 +26,20 @@ void LooperClass::loop() {
2626 }
2727 if (_removed) _removed = false ;
2828 else _thisTask = _thisTask->getPrev ();
29+ #if LOOPER_USE_EVENTS
2930 while (_events.length ()) _sendEvent (_events.pop ());
31+ #endif
3032 }
33+ #if LOOPER_USE_EVENTS
3134 while (_events.length ()) _sendEvent (_events.pop ());
35+ #endif
3236 _thisState = tState::None;
3337}
3438
3539void LooperClass::onEvent (LooperCallback callback) {
40+ #if LOOPER_USE_EVENTS
3641 _event_cb = callback;
42+ #endif
3743}
3844
3945void LooperClass::restart () {
@@ -54,7 +60,11 @@ uint32_t LooperClass::nextTimerLeft() {
5460}
5561
5662uint16_t LooperClass::length () {
63+ #if LOOPER_USE_EVENTS
5764 return _tasks.length () + _lisns.length ();
65+ #else
66+ return _tasks.length ();
67+ #endif
5868}
5969
6070void LooperClass::delay (uint32_t ms) {
@@ -65,14 +75,26 @@ void LooperClass::delay(uint32_t ms) {
6575
6676void LooperClass::add (LoopTask* task) {
6777 if (!task) return ;
78+
79+ #if LOOPER_USE_EVENTS
6880 task->isListener () ? _lisns.add (task) : _tasks.add (task);
81+ #else
82+ if (!task->isListener ()) _tasks.add (task);
83+ #endif
84+
6985 if (!_setup) _tickState (task, tState::Setup);
7086}
7187
7288void LooperClass::remove (LoopTask* task) {
7389 if (!task) return ;
7490 _tickState (task, tState::Exit);
91+
92+ #if LOOPER_USE_EVENTS
7593 task->isListener () ? _lisns.remove (task) : _tasks.remove (task);
94+ #else
95+ if (!task->isListener ()) _tasks.remove (task);
96+ #endif
97+
7698 if (_thisTask == task) {
7799 _thisTask = _thisTask->getPrev ();
78100 _removed = true ;
@@ -95,8 +117,6 @@ void LooperClass::removeThis() {
95117 remove (thisTask ());
96118}
97119
98- bool LooperClass::eventBroadcast () { return _broadcast; }
99- LoopTask* LooperClass::eventSource () { return _source; }
100120LoopTask* LooperClass::thisTask () { return _removed ? nullptr : _thisTask; }
101121LoopTimer* LooperClass::thisTimer () { return thisTaskAs<LoopTimer>(); }
102122LoopThread* LooperClass::thisThread () { return thisTaskAs<LoopThread>(); }
@@ -106,15 +126,35 @@ bool LooperClass::thisExit() { return _thisState == tState::Exit; }
106126bool LooperClass::thisEvent () { return _thisState == tState::Event; }
107127bool LooperClass::thisLoop () { return _thisState == tState::Loop; }
108128
129+ bool LooperClass::eventBroadcast () {
130+ #if LOOPER_USE_EVENTS
131+ return _broadcast;
132+ #else
133+ return 0 ;
134+ #endif
135+ }
136+
137+ LoopTask* LooperClass::eventSource () {
138+ #if LOOPER_USE_EVENTS
139+ return _source;
140+ #else
141+ return nullptr ;
142+ #endif
143+ }
109144void * LooperClass::eventData () {
145+ #if LOOPER_USE_EVENTS
110146 return _thisState == tState::Event ? _data : nullptr ;
147+ #else
148+ return nullptr ;
149+ #endif
111150}
112151
113152void LooperClass::_sendEvent (EventData& evt) {
114153 sendEvent (evt.id , evt.data );
115154}
116155
117156void LooperClass::sendEvent (hash_t id, void * data) {
157+ #if LOOPER_USE_EVENTS
118158 LoopTask* source = _thisTask;
119159 tState stateTemp = _thisState;
120160 _thisState = tState::Event;
@@ -126,6 +166,7 @@ void LooperClass::sendEvent(hash_t id, void* data) {
126166 _event_cb (id);
127167 }
128168
169+ #if LOOPER_USE_ID
129170 for (uint8_t i = 0 ; i < LP_LIST_AMOUNT; i++) {
130171 _thisTask = _getList (i)->getLast ();
131172 while (_thisTask) {
@@ -140,26 +181,33 @@ void LooperClass::sendEvent(hash_t id, void* data) {
140181 else _thisTask = _thisTask->getPrev ();
141182 }
142183 }
184+ #endif
143185
144186 _broadcast = false ;
145187 _source = nullptr ;
146188 _thisTask = source;
147189 _thisState = stateTemp;
190+ #endif
148191}
149192
150193void LooperClass::sendEvent (const char * id, void * data) {
151194 sendEvent (LPHr (id), data);
152195}
153196
154197bool LooperClass::pushEvent (hash_t id, void * data) {
198+ #if LOOPER_USE_EVENTS
155199 return _events.push (EventData{id, data});
200+ #else
201+ return 0 ;
202+ #endif
156203}
157204
158205bool LooperClass::pushEvent (const char * id, void * data) {
159206 return pushEvent (LPHr (id), data);
160207}
161208
162209LoopTask* LooperClass::getTask (hash_t id) {
210+ #if LOOPER_USE_EVENTS
163211 if (!id) return nullptr ;
164212 for (uint8_t i = 0 ; i < LP_LIST_AMOUNT; i++) {
165213 LoopTask* p = _getList (i)->getLast ();
@@ -168,6 +216,7 @@ LoopTask* LooperClass::getTask(hash_t id) {
168216 p = p->getPrev ();
169217 }
170218 }
219+ #endif
171220 return nullptr ;
172221}
173222
@@ -190,6 +239,8 @@ LoopTimer* LooperClass::getTimer(const char* id) {
190239 return getTimer (LPHr (id));
191240}
192241
242+ #if LOOPER_USE_EVENTS
193243looper::List<LoopTask>* LooperClass::_getList (uint8_t idx) {
194244 return (looper::List<LoopTask>*[]){&_tasks, &_lisns}[idx];
195- }
245+ }
246+ #endif
0 commit comments