66#include " TaskPlatformDeps.h"
77#include " TaskManagerIO.h"
88#include " ExecWithParameter.h"
9+ #include < IoLogging.h>
910
1011#ifdef BUILD_FOR_PICO_CMAKE
1112critical_section_t * tm_internal::tmLock;
@@ -20,22 +21,10 @@ void tm_internal::initPicoTmLock() {
2021void yield () {
2122 sleep_us (1 );
2223}
23-
24- unsigned long millis () {
25- return to_ms_since_boot (get_absolute_time ());
26- }
27-
28- unsigned long micros () {
29- return to_us_since_boot (get_absolute_time ());
30- }
31-
3224#endif
3325
3426#ifdef IOA_USE_MBED
3527
36- volatile bool timingStarted = false ;
37- Timer ioaTimer;
38-
3928void yield () {
4029
4130# if !defined(PIO_NEEDS_RTOS_WORKAROUND)
@@ -44,36 +33,11 @@ void yield() {
4433 wait (0.0000001 );
4534#endif
4635}
47-
48- unsigned long millis () {
49- if (!timingStarted) {
50- timingStarted = true ;
51- ioaTimer.start ();
52- }
53- return ioaTimer.read_ms ();
54- }
55-
56- unsigned long micros () {
57- if (!timingStarted) {
58- timingStarted = true ;
59- ioaTimer.start ();
60- }
61- return (unsigned long ) ioaTimer.read_high_resolution_us ();
62- }
63-
6436#endif
6537
6638
6739TaskManager taskManager;
6840
69- namespace tm_internal {
70- LoggingDelegate loggingDelegate = nullptr ;
71-
72- void setLoggingDelegate (LoggingDelegate delegate) {
73- loggingDelegate = delegate;
74- }
75- }
76-
7741class TmSpinLock {
7842private:
7943 tm_internal::TmAtomicBool* lockObject;
@@ -85,14 +49,14 @@ class TmSpinLock {
8549 locked = tm_internal::atomicSwapBool (lockObject, false , true );
8650 if (!locked) {
8751 yield (); // something else has the lock, let it get control to finish up!
88- if (++count == 1000 ) tm_internal::tmNotification (tm_internal::TM_WARN_HIGH_SPINCOUNT, TASKMGR_INVALIDID );
52+ if (++count == 1000 ) serlogF (SER_WARNING, " TM spin>1000 " );
8953 }
9054 } while (!locked);
9155 }
9256
9357 ~TmSpinLock () {
9458 if (!tm_internal::atomicSwapBool (lockObject, true , false )) {
95- tm_internal::tmNotification (tm_internal::TM_ERROR_LOCK_FAILURE, TASKMGR_INVALIDID );
59+ serlogF (SER_ERROR, " TM lock fail " );
9660 }
9761 }
9862};
@@ -129,14 +93,14 @@ taskid_t TaskManager::findFreeTask() {
12993 for (taskid_t i=0 ; i<numberOfBlocks;i++) {
13094 auto taskId = taskBlocks[i]->allocateTask ();
13195 if (taskId != TASKMGR_INVALIDID) {
132- tm_internal::tmNotification (tm_internal::TM_INFO_TASK_ALLOC , taskId);
96+ serlogF2 (SER_IOA_DEBUG, " TM alloc " , taskId);
13397 return taskId;
13498 }
13599 }
136100
137101 // already full, cannot allocate further.
138102 if (numberOfBlocks == DEFAULT_TASK_BLOCKS) {
139- tm_internal::tmNotification (tm_internal::TM_ERROR_FULL, TASKMGR_INVALIDID );
103+ serlogF (SER_ERROR, " TM full " );
140104 return TASKMGR_INVALIDID;
141105 }
142106
@@ -148,11 +112,11 @@ taskid_t TaskManager::findFreeTask() {
148112 auto nextIdSpace = taskBlocks[numberOfBlocks - 1 ]->lastSlot () + 1 ;
149113 taskBlocks[numberOfBlocks] = new TaskBlock (nextIdSpace);
150114 if (taskBlocks[numberOfBlocks] != nullptr ) {
151- tm_internal::tmNotification (tm_internal::TM_INFO_REALLOC , numberOfBlocks);
115+ serlogF2 (SER_IOA_DEBUG, " TM alloc: " , numberOfBlocks);
152116 numberOfBlocks++;
153117 }
154118 else {
155- tm_internal::tmNotification (tm_internal::TM_ERROR_FULL, numberOfBlocks );
119+ serlogF (SER_ERROR, " TM full " );
156120 break ; // no point to continue here, new has failed.
157121 }
158122 }
@@ -229,7 +193,7 @@ void TaskManager::cancelTask(taskid_t taskId) {
229193 if (task) {
230194 taskManager.execute (new ExecWith2Parameters<TimerTask*, TaskManager*>([](TimerTask* task, TaskManager* tm) {
231195 tm->removeFromQueue (task);
232- tm_internal::tmNotification (tm_internal::TM_INFO_TASK_FREE, TASKMGR_INVALIDID );
196+ serlogF (SER_IOA_DEBUG, " TM free " );
233197 task->clear ();
234198 }, task, this ), true );
235199 }
@@ -278,7 +242,7 @@ void TaskManager::dealWithInterrupt() {
278242 }
279243 else {
280244 task->clear ();
281- tm_internal::tmNotification (tm_internal::TM_INFO_TASK_FREE, TASKMGR_INVALIDID );
245+ serlogF (SER_IOA_DEBUG, " TM free int " );
282246 }
283247 }
284248 else {
@@ -309,7 +273,7 @@ void TaskManager::runLoop() {
309273 putItemIntoQueue (tm);
310274 } else {
311275 tm->clear ();
312- tm_internal::tmNotification (tm_internal::TM_INFO_TASK_FREE, TASKMGR_INVALIDID );
276+ serlogF (SER_IOA_DEBUG, " TM free loop " );
313277 }
314278 }
315279 tm = tm->getNext ();
@@ -485,7 +449,7 @@ void TaskManager::setInterruptCallback(InterruptFn handler) {
485449}
486450
487451char * TaskManager::checkAvailableSlots (char * data, size_t dataSize) const {
488- auto maxLen = min (taskid_t (dataSize - 1 ), taskBlocks[numberOfBlocks - 1 ]->lastSlot ());
452+ auto maxLen = internal_min (taskid_t (dataSize - 1 ), taskBlocks[numberOfBlocks - 1 ]->lastSlot ());
489453 size_t position = 0 ;
490454
491455 for (taskid_t i=0 ; i<numberOfBlocks;i++) {
0 commit comments