├── .development ├── TaskManager Quickly.docx ├── extras ├── Basic TaskManager.docx └── TaskManager Quickly.docx ├── doc ├── html │ ├── search │ │ ├── groups_10.js │ │ ├── groups_12.js │ │ ├── groups_f.js │ │ ├── classes_3.js │ │ ├── classes_1.js │ │ ├── groups_0.js │ │ ├── groups_4.js │ │ ├── functions_4.js │ │ ├── pages_0.js │ │ ├── groups_2.js │ │ ├── groups_7.js │ │ ├── pages_2.js │ │ ├── defines_0.js │ │ ├── enums_1.js │ │ ├── pages_4.js │ │ ├── all_b.js │ │ ├── groups_11.js │ │ ├── groups_13.js │ │ ├── groups_6.js │ │ ├── enums_0.js │ │ ├── pages_3.js │ │ ├── variables_1.js │ │ ├── groups_3.js │ │ ├── all_11.js │ │ ├── functions_f.js │ │ ├── pages_1.js │ │ ├── pages_5.js │ │ ├── classes_2.js │ │ ├── enumvalues_1.js │ │ ├── enumvalues_2.js │ │ ├── groups_a.js │ │ ├── groups_b.js │ │ ├── functions_2.js │ │ ├── all_16.js │ │ ├── all_4.js │ │ ├── functions_5.js │ │ ├── all_5.js │ │ ├── functions_3.js │ │ ├── all_9.js │ │ ├── functions_8.js │ │ ├── all_2.js │ │ ├── functions_0.js │ │ ├── groups_8.js │ │ ├── enumvalues_3.js │ │ ├── enumvalues_0.js │ │ ├── all_14.js │ │ ├── all_15.js │ │ ├── functions_11.js │ │ ├── groups_e.js │ │ ├── groups_1.js │ │ ├── all_12.js │ │ ├── all_6.js │ │ ├── typedefs_0.js │ │ ├── classes_0.js │ │ ├── all_c.js │ │ ├── functions_a.js │ │ ├── all_13.js │ │ ├── functions_10.js │ │ ├── nomatches.html │ │ ├── all_d.js │ │ ├── functions_b.js │ │ ├── all_7.js │ │ ├── functions_6.js │ │ ├── files_0.js │ │ ├── groups_c.js │ │ ├── all_0.js │ │ ├── groups_9.js │ │ ├── groups_5.js │ │ ├── all_3.js │ │ ├── functions_7.js │ │ ├── functions_9.js │ │ ├── searchdata.js │ │ ├── all_8.js │ │ ├── mag.svg │ │ ├── mag_d.svg │ │ ├── close.svg │ │ ├── enums_0.html │ │ ├── enums_1.html │ │ ├── enumvalues_0.html │ │ ├── enumvalues_1.html │ │ ├── enumvalues_2.html │ │ ├── enumvalues_3.html │ │ ├── enumvalues_4.html │ │ ├── functions_11.html │ │ ├── variables_1.html │ │ ├── mag_sel.svg │ │ ├── mag_seld.svg │ │ ├── functions_1.js │ │ ├── groups_d.js │ │ ├── enumvalues_4.js │ │ ├── functions_c.js │ │ ├── functions_e.js │ │ ├── all_0.html │ │ ├── all_1.html │ │ ├── all_2.html │ │ ├── all_3.html │ │ ├── all_4.html │ │ ├── all_5.html │ │ ├── all_6.html │ │ ├── all_7.html │ │ ├── all_8.html │ │ ├── all_9.html │ │ ├── all_a.html │ │ ├── all_b.html │ │ ├── all_c.html │ │ ├── all_d.html │ │ ├── all_e.html │ │ ├── all_f.html │ │ ├── all_10.html │ │ ├── all_11.html │ │ ├── all_12.html │ │ ├── files_0.html │ │ ├── groups_0.html │ │ ├── groups_1.html │ │ ├── groups_2.html │ │ ├── groups_3.html │ │ ├── groups_4.html │ │ ├── groups_5.html │ │ ├── groups_6.html │ │ ├── groups_7.html │ │ ├── groups_8.html │ │ ├── groups_9.html │ │ ├── groups_a.html │ │ ├── groups_b.html │ │ ├── groups_c.html │ │ ├── pages_0.html │ │ ├── classes_0.html │ │ ├── classes_1.html │ │ ├── classes_2.html │ │ ├── defines_0.html │ │ ├── functions_0.html │ │ ├── functions_1.html │ │ ├── functions_10.html │ │ ├── functions_2.html │ │ ├── functions_3.html │ │ ├── functions_4.html │ │ ├── functions_5.html │ │ ├── functions_6.html │ │ ├── functions_7.html │ │ ├── functions_8.html │ │ ├── functions_9.html │ │ ├── functions_a.html │ │ ├── functions_b.html │ │ ├── functions_c.html │ │ ├── functions_d.html │ │ ├── functions_e.html │ │ ├── functions_f.html │ │ ├── variables_0.html │ │ ├── all_1.js │ │ └── all_e.js │ ├── minus.svg │ ├── minusd.svg │ ├── plus.svg │ ├── plusd.svg │ ├── doc.svg │ ├── docd.svg │ ├── folderclosed.svg │ └── folderclosedd.svg └── docbook │ ├── group___task_manager_task.xml │ ├── annotated.xml │ ├── group___ring.xml │ ├── _task_manager_sub__2_8h_source.xml │ ├── class__ring.xml │ └── index.xml ├── examples ├── ex01_01 02 03 ESP32 layout.fzz ├── ex01_01 02 03 Nano layout.fzz ├── old │ ├── ex03_02_2_buttons_2_LEDs │ │ └── ex03_02_2_buttons_2_switches.fzz │ ├── ex03_01_timer │ │ ├── workerSub.cpp │ │ └── ex03_01_timer.ino │ ├── TaskManager Book │ │ └── 01 TaskManager Basics │ │ │ ├── 02 Fun Example │ │ │ └── RGB_LED_2 │ │ │ │ └── rgb_hsv.h │ │ │ └── 01 Why TaskManager │ │ │ ├── ch1_blink_1 │ │ │ └── ch1_blink_1.ino │ │ │ └── ch1_blink_2_tm │ │ │ └── ch1_blink_2_tm.ino │ ├── ex04_01_tm_macro │ │ └── ex04_01_tm_macro.ino │ ├── ex04_02_tm_macro_loop │ │ └── ex04_02_tm_macro_loop.ino │ ├── ex01_01_one_LED_blinking │ │ └── ex01_01_one_LED_blinking.ino │ ├── ex01_03_two_LEDs_blinking_TM │ │ └── ex01_03_two_LEDs_blinking_TM.ino │ └── ex01_02_two_LEDs_blinking_no_TM │ │ └── ex01_02_two_LEDs_blinking_no_TM.ino ├── SimpleRxTM │ └── SimpleRxTM.ino ├── ex01_01_one_LED_blinking │ └── ex01_01_one_LED_blinking.ino ├── SimpleTxTM │ └── SimpleTxTM.ino ├── ex02_buttons_leds_single │ └── ex02_buttons_leds_single.ino ├── ex01_02_two_LEDs_blinking_no_TM │ └── ex01_02_two_LEDs_blinking_no_TM.ino ├── ex01_03_two_LEDs_blinking_TM │ └── ex01_03_two_LEDs_blinking_TM.ino ├── ex03_01b_simple_receive │ └── ex03_01b_simple_receive.ino ├── ex03_01a_simple_send │ └── ex03_01a_simple_send.ino └── RF_tests │ └── test1_receiver │ └── test1_receiver.ino ├── src ├── TaskManagerSub.h └── TaskManager.h ├── template IF.txt ├── test └── old │ ├── TMRadioTest1 │ ├── TMRadioTest1.layout │ └── TMRadioTest1.ino │ ├── TaskMgrTest_1 │ ├── TaskMgrTest_1.layout │ └── TaskMgrTest_1.ino │ ├── TaskSwapTimer │ ├── TaskSwapTimer.ino │ └── TaskSwapTimer.layout │ ├── AutoDelayTest │ ├── AutoDelayTest.ino │ └── AutoDelayTest.layout │ ├── TaskMgrTest_2 │ └── TaskMgrTest_2.layout │ ├── TaskMgrTest_3a │ └── TaskMgrTest_3a.layout │ ├── TaskMgrTest_4 │ └── TaskMgrTest_4.layout │ ├── TaskMgrTest_3 │ └── TaskMgrTest_3l.layout │ └── TestSuspendResume │ └── TestSuspendResume.ino ├── test TM 1.x ├── TMRadioTest1 │ ├── TMRadioTest1.layout │ └── TMRadioTest1.ino ├── TaskMgrTest_1 │ ├── TaskMgrTest_1.layout │ └── TaskMgrTest_1.ino ├── AutoDelayTest │ ├── AutoDelayTest.ino │ └── AutoDelayTest.layout ├── TaskSwapTimer │ ├── TaskSwapTimer.ino │ └── TaskSwapTimer.layout ├── TaskMgrTest_3a │ └── TaskMgrTest_3a.layout ├── TaskMgrTest_2 │ └── TaskMgrTest_2.layout ├── TaskMgrTest_4 │ └── TaskMgrTest_4.layout ├── TaskMgrTest_3 │ └── TaskMgrTest_3l.layout └── TestSuspendResume │ └── TestSuspendResume.ino ├── .gitattributes ├── library.properties ├── keywords.txt └── .gitignore /.development: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /TaskManager Quickly.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drsteveplatt/TaskManager/HEAD/TaskManager Quickly.docx -------------------------------------------------------------------------------- /extras/Basic TaskManager.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drsteveplatt/TaskManager/HEAD/extras/Basic TaskManager.docx -------------------------------------------------------------------------------- /extras/TaskManager Quickly.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drsteveplatt/TaskManager/HEAD/extras/TaskManager Quickly.docx -------------------------------------------------------------------------------- /doc/html/search/groups_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['yielding_0',['Yielding',['../group___yield.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/groups_12.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['values_0',['Global Values',['../group___globals.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/groups_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['values_0',['Global Values',['../group___globals.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/classes_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['taskmanager_0',['TaskManager',['../class_task_manager.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /examples/ex01_01 02 03 ESP32 layout.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drsteveplatt/TaskManager/HEAD/examples/ex01_01 02 03 ESP32 layout.fzz -------------------------------------------------------------------------------- /examples/ex01_01 02 03 Nano layout.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drsteveplatt/TaskManager/HEAD/examples/ex01_01 02 03 Nano layout.fzz -------------------------------------------------------------------------------- /doc/html/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['messagequeue_0',['MessageQueue',['../class_message_queue.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/groups_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['basic_20tm_20macros_0',['Basic TM Macros',['../group__primary.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/groups_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['internal_20components_0',['Internal components',['../group__internal.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['empty_0',['empty',['../classring.html#a1800422d7f49e93354e0f8e7730bdcb6',1,'ring']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['arduino_0',['TaskManger - Cooperative Multitasking System for Arduino',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/groups_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['drivers_0',['TaskManager ESP Network/Mesh Drivers',['../group___task_manager_radio_e_s_p.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/groups_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['reentrant_20task_20code_0',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/pages_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['for_20arduino_0',['TaskManger - Cooperative Multitasking System for Arduino',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/defines_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['debug_0',['DEBUG',['../_task_manager_8cpp.html#ad72dbcf6d0153db1b8d8a58001feed83',1,'TaskManager.cpp']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/enums_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['yieldtypes',['YieldTypes',['../class_task_manager.html#a36210e786c8b94e0858c0df948521318',1,'TaskManager']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/pages_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['system_20for_20arduino_0',['TaskManger - Cooperative Multitasking System for Arduino',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['network_20mesh_20drivers_0',['TaskManager ESP Network/Mesh Drivers',['../group___task_manager_radio_e_s_p.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/groups_11.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['yield_0',['Yield',['../group__ingroup.html',1,'']]], 4 | ['yielding_1',['Yielding',['../group___yield.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/groups_13.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['yield_0',['Yield',['../group__ingroup.html',1,'']]], 4 | ['yielding_1',['Yielding',['../group___yield.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/groups_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['network_20mesh_20drivers_0',['TaskManager ESP Network/Mesh Drivers',['../group___task_manager_radio_e_s_p.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/enums_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['taskstates_0',['TaskStates',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1c',1,'_TaskManagerTask']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/pages_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['multitasking_20system_20for_20arduino_0',['TaskManger - Cooperative Multitasking System for Arduino',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/variables_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['tmclockoffset_0',['TmClockOffset',['../_task_manager_8cpp.html#aebb388b1351b7057d136941b3e51cdd8',1,'TaskManager.cpp']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/groups_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['esp_20network_20mesh_20drivers_0',['TaskManager ESP Network/Mesh Drivers',['../group___task_manager_radio_e_s_p.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/all_11.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['unregisterpeer_0',['unRegisterPeer',['../group___task_manager_radio_e_s_p.html#gaa94433d55bbcb0093c7c842e037cd171',1,'TaskManager']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /examples/old/ex03_02_2_buttons_2_LEDs/ex03_02_2_buttons_2_switches.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drsteveplatt/TaskManager/HEAD/examples/old/ex03_02_2_buttons_2_LEDs/ex03_02_2_buttons_2_switches.fzz -------------------------------------------------------------------------------- /doc/html/search/functions_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['unregisterpeer_0',['unRegisterPeer',['../group___task_manager_radio_e_s_p.html#gaa94433d55bbcb0093c7c842e037cd171',1,'TaskManager']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/pages_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cooperative_20multitasking_20system_20for_20arduino_0',['TaskManger - Cooperative Multitasking System for Arduino',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/pages_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['taskmanger_20cooperative_20multitasking_20system_20for_20arduino_0',['TaskManger - Cooperative Multitasking System for Arduino',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/classes_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ring_0',['ring',['../classring.html',1,'']]], 4 | ['ring_3c_20_5ftaskmanagertask_20_3e_1',['ring< _TaskManagerTask >',['../classring.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['suspended_0',['Suspended',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1ca63fc27ad643a3c7a2277e028be885fe6',1,'_TaskManagerTask']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['timedout_0',['TimedOut',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1cac792a0a13ffb72cbf93e337c99b2ffb6',1,'_TaskManagerTask']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/html/search/groups_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['other_20tasks_0',['Messaging Other Tasks',['../group___message.html',1,'']]], 4 | ['other_20useful_20modules_1',['Other Useful Modules',['../group___modules.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/groups_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['reentrant_20task_20code_0',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]], 4 | ['ring_20class_1',['The ring class',['../group___ring.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /src/TaskManagerSub.h: -------------------------------------------------------------------------------- 1 | #ifndef TASKMANAGER_H_INCLUDED 2 | #define TASKMANAGER_H_INCLUDED 3 | 4 | #include 5 | #include 6 | extern TaskManager TaskMgr; 7 | #endif // TASKMANAGER_H_INCLUDED 8 | 9 | 10 | -------------------------------------------------------------------------------- /examples/old/ex03_01_timer/workerSub.cpp: -------------------------------------------------------------------------------- 1 | // workerSub -- a subroutine to call 2 | // By calling an external subroutine, we can prevent optimizers from optimizing loops 3 | // out of existence 4 | 5 | void workerSub(byte* param) { 6 | param++; 7 | } 8 | -------------------------------------------------------------------------------- /doc/html/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['back_0',['back',['../classring.html#afc322bf07d7bdcc65888e604581202d0',1,'ring']]], 4 | ['begin_1',['begin',['../class_task_manager.html#a761fac56986635de2125f9b45441bcd3',1,'TaskManager']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/all_16.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_7ering_0',['~ring',['../classring.html#aa208bdbd13da76233bfb0edb3e460fa5',1,'ring']]], 4 | ['_7etaskmanager_1',['~TaskManager',['../group___task_manager.html#ga6ecdd2b8a6b7545eae64da180ba80c53',1,'TaskManager']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['debug_0',['DEBUG',['../_task_manager_8cpp.html#ad72dbcf6d0153db1b8d8a58001feed83',1,'TaskManager.cpp']]], 4 | ['drivers_1',['TaskManager ESP Network/Mesh Drivers',['../group___task_manager_radio_e_s_p.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['findtaskbyid_0',['findTaskById',['../class_task_manager.html#a9968aa8e895bfc0bbb0cd4e06ee14e6d',1,'TaskManager']]], 4 | ['front_1',['front',['../classring.html#a18c99d7c346c2ac99a91e49c28f8a7af',1,'ring']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['empty_0',['empty',['../classring.html#a1800422d7f49e93354e0f8e7730bdcb6',1,'ring']]], 4 | ['esp_20network_20mesh_20drivers_1',['TaskManager ESP Network/Mesh Drivers',['../group___task_manager_radio_e_s_p.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['clear_0',['clear',['../classring.html#a65033722386b6afe9d7cd03e5dc95bb5',1,'ring']]], 4 | ['clearsuspended_1',['clearSuspended',['../class___task_manager_task.html#ad29695b6fd1daf8fb52613814a9e3c8e',1,'_TaskManagerTask']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lastesperror_0',['lastESPError',['../group___task_manager_radio_e_s_p.html#gaa187de5f5ff98accacae03bf08653969',1,'TaskManager']]], 4 | ['loop_1',['loop',['../class_task_manager.html#a2b88a62f061cbc8159a101844d8e5469',1,'TaskManager']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/functions_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lastesperror_0',['lastESPError',['../group___task_manager_radio_e_s_p.html#gaa187de5f5ff98accacae03bf08653969',1,'TaskManager']]], 4 | ['loop_1',['loop',['../class_task_manager.html#a2b88a62f061cbc8159a101844d8e5469',1,'TaskManager']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /template IF.txt: -------------------------------------------------------------------------------- 1 | #if defined(ARDUINO_ARCH_AVR) 2 | 3 | #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 4 | 5 | #else 6 | #endif 7 | 8 | #if (defined(ARDUINO_ARCH_AVR) && defined(TASKMGR_AVR_RF24)) || defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 9 | #endif 10 | -------------------------------------------------------------------------------- /doc/html/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['back_0',['back',['../classring.html#afc322bf07d7bdcc65888e604581202d0',1,'ring']]], 4 | ['basic_20tm_20macros_1',['Basic TM Macros',['../group__primary.html',1,'']]], 5 | ['begin_2',['begin',['../class_task_manager.html#a761fac56986635de2125f9b45441bcd3',1,'TaskManager']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /examples/old/TaskManager Book/01 TaskManager Basics/02 Fun Example/RGB_LED_2/rgb_hsv.h: -------------------------------------------------------------------------------- 1 | #ifndef RGB_HSV_H_INCLUDED 2 | #define RGB_HSV_H_INCLUDED 3 | 4 | void hsv_to_rgb(byte h, byte s, byte v, byte& r, byte& g, byte& b); 5 | 6 | void rgb_to_hsv(byte r, byte g, byte b, byte& h, byte& s, byte& v); 7 | 8 | #endif // RGB_HSV_H_INCLUDED 9 | -------------------------------------------------------------------------------- /doc/html/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5ftaskmanagertask_0',['_TaskManagerTask',['../class___task_manager_task.html#a7987a18e9eebbee5c7f399a6702151c0',1,'_TaskManagerTask::_TaskManagerTask()'],['../class___task_manager_task.html#a915d779a211c32f16bffe7bf9833960f',1,'_TaskManagerTask::_TaskManagerTask(tm_taskId_t, void(*)())']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/docbook/group___task_manager_task.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 | TaskManagerTask 4 | TaskManagerTask 5 |
6 | -------------------------------------------------------------------------------- /doc/html/search/groups_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['subtasks_0',['Task Manager Callable Subtasks',['../group__subtask_macros.html',1,'']]], 4 | ['support_20reentrant_20task_20code_1',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]], 5 | ['synchronization_2',['Mesh Clock Synchronization',['../group___clock_sync.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['waitmessage_0',['WaitMessage',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1ca4df9285226d4fef10c8ef63b5aed0b13',1,'_TaskManagerTask']]], 4 | ['waituntil_1',['WaitUntil',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1ca23b1817dae80c1e2a1ff75ede60228de',1,'_TaskManagerTask']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['autorewaitmessage_0',['AutoReWaitMessage',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1ca2f8283cbe157f583c41d07c075b7d106',1,'_TaskManagerTask']]], 4 | ['autorewaituntil_1',['AutoReWaitUntil',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1cafbfe131f0c1b8626e0902881073a8220',1,'_TaskManagerTask']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /test/old/TMRadioTest1/TMRadioTest1.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test TM 1.x/TMRadioTest1/TMRadioTest1.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /doc/html/search/all_14.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_7e_5ftaskmanagertask_0',['~_TaskManagerTask',['../class___task_manager_task.html#a7c70bd436b4a51463678a07295e13f21',1,'_TaskManagerTask']]], 4 | ['_7ering_1',['~ring',['../classring.html#aa208bdbd13da76233bfb0edb3e460fa5',1,'ring']]], 5 | ['_7etaskmanager_2',['~TaskManager',['../class_task_manager.html#a6ecdd2b8a6b7545eae64da180ba80c53',1,'TaskManager']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /doc/html/search/all_15.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_7e_5ftaskmanagertask_0',['~_TaskManagerTask',['../class___task_manager_task.html#a7c70bd436b4a51463678a07295e13f21',1,'_TaskManagerTask']]], 4 | ['_7ering_1',['~ring',['../classring.html#aa208bdbd13da76233bfb0edb3e460fa5',1,'ring']]], 5 | ['_7etaskmanager_2',['~TaskManager',['../class_task_manager.html#a6ecdd2b8a6b7545eae64da180ba80c53',1,'TaskManager']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /test/old/TaskMgrTest_1/TaskMgrTest_1.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /doc/html/search/functions_11.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_7e_5ftaskmanagertask_0',['~_TaskManagerTask',['../class___task_manager_task.html#a7c70bd436b4a51463678a07295e13f21',1,'_TaskManagerTask']]], 4 | ['_7ering_1',['~ring',['../classring.html#aa208bdbd13da76233bfb0edb3e460fa5',1,'ring']]], 5 | ['_7etaskmanager_2',['~TaskManager',['../class_task_manager.html#a6ecdd2b8a6b7545eae64da180ba80c53',1,'TaskManager']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /test TM 1.x/TaskMgrTest_1/TaskMgrTest_1.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /doc/html/search/groups_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ui_20command_20line_20shell_0',['A UI Command Line Shell',['../group___shell.html',1,'']]], 4 | ['up_20a_20mesh_20networking_1',['Setting up a Mesh Networking',['../group___network.html',1,'']]], 5 | ['up_20taskmanager_2',['Setting up TaskManager',['../group___setup.html',1,'']]], 6 | ['useful_20modules_3',['Other Useful Modules',['../group___modules.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/html/search/groups_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['callable_20subtasks_0',['Task Manager Callable Subtasks',['../group__subtask_macros.html',1,'']]], 4 | ['clock_20synchronization_1',['Mesh Clock Synchronization',['../group___clock_sync.html',1,'']]], 5 | ['code_2',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]], 6 | ['components_3',['Internal components',['../group__internal.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/html/search/all_12.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['waitmessage_0',['WaitMessage',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1ca4df9285226d4fef10c8ef63b5aed0b13',1,'_TaskManagerTask']]], 4 | ['waituntil_1',['WaitUntil',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1ca23b1817dae80c1e2a1ff75ede60228de',1,'_TaskManagerTask']]], 5 | ['work_2',['Future Work',['../index.html#future',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /doc/html/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['findtaskbyid_0',['findTaskById',['../class_task_manager.html#a9968aa8e895bfc0bbb0cd4e06ee14e6d',1,'TaskManager']]], 4 | ['for_20arduino_1',['TaskManger - Cooperative Multitasking System for Arduino',['../index.html',1,'']]], 5 | ['front_2',['front',['../classring.html#a18c99d7c346c2ac99a91e49c28f8a7af',1,'ring']]], 6 | ['future_20work_3',['Future Work',['../index.html#future',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/html/search/typedefs_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['tm_5fnetid_5ft_0',['tm_netId_t',['../_task_manager_core_8h.html#a59be867f4dd9e13dca218d6b1528880f',1,'TaskManagerCore.h']]], 4 | ['tm_5fnodeid_5ft_1',['tm_nodeId_t',['../_task_manager_core_8h.html#a171e372bd267b282cf5a55106f4d18d2',1,'TaskManagerCore.h']]], 5 | ['tm_5ftaskid_5ft_2',['tm_taskId_t',['../_task_manager_core_8h.html#ac48b510cb8d291c64c8beec07747b15a',1,'TaskManagerCore.h']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /doc/html/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5fringnode_0',['_ringNode',['../class__ring_node.html',1,'']]], 4 | ['_5fringnode_3c_20_5ftaskmanagertask_20_3e_1',['_ringNode< _TaskManagerTask >',['../class__ring_node.html',1,'']]], 5 | ['_5ftaskmanagerclocksyncinfo_2',['_TaskManagerClockSyncInfo',['../class___task_manager_clock_sync_info.html',1,'']]], 6 | ['_5ftaskmanagertask_3',['_TaskManagerTask',['../class___task_manager_task.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /test/old/TaskMgrTest_1/TaskMgrTest_1.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | 6 | /* 7 | TaskManager test 1 8 | Should output alternating 'a' and 'b' 9 | */ 10 | 11 | void task1() { 12 | Serial << "a"; 13 | } 14 | void task2() { 15 | Serial << "b"; 16 | } 17 | 18 | void setup() 19 | { 20 | Serial.begin(9600); 21 | TaskMgr.add(1, task1); 22 | TaskMgr.add(2, task2); 23 | } 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /test TM 1.x/TaskMgrTest_1/TaskMgrTest_1.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | 6 | /* 7 | TaskManager test 1 8 | Should output alternating 'a' and 'b' 9 | */ 10 | 11 | void task1() { 12 | Serial << "a"; 13 | } 14 | void task2() { 15 | Serial << "b"; 16 | } 17 | 18 | void setup() 19 | { 20 | Serial.begin(9600); 21 | TaskMgr.add(1, task1); 22 | TaskMgr.add(2, task2); 23 | } 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/html/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['operator_3d_0',['operator=',['../classring.html#a52e785fb89c3e8ca7f4c5824f51f3532',1,'ring::operator=()'],['../class___task_manager_task.html#acac8df0944dfb33513bffd6f6420d416',1,'_TaskManagerTask::operator=()']]], 4 | ['operator_3d_3d_1',['operator==',['../classring.html#ab47d8aac67ce284fc004bb88da21862f',1,'ring::operator==()'],['../class___task_manager_task.html#a0f326c610c0798ab719c133614c70097',1,'_TaskManagerTask::operator==()']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/html/search/functions_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['operator_3d_0',['operator=',['../classring.html#a52e785fb89c3e8ca7f4c5824f51f3532',1,'ring::operator=()'],['../class___task_manager_task.html#acac8df0944dfb33513bffd6f6420d416',1,'_TaskManagerTask::operator=()']]], 4 | ['operator_3d_3d_1',['operator==',['../classring.html#ab47d8aac67ce284fc004bb88da21862f',1,'ring::operator==()'],['../class___task_manager_task.html#a0f326c610c0798ab719c133614c70097',1,'_TaskManagerTask::operator==()']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /examples/old/TaskManager Book/01 TaskManager Basics/01 Why TaskManager/ch1_blink_1/ch1_blink_1.ino: -------------------------------------------------------------------------------- 1 | // 2 | // Standard "blink" program (slightly rewritten) 3 | 4 | #define LED_1_PORT 2 5 | bool led_1_state; 6 | 7 | void setup() { 8 | pinMode(LED_1_PORT, OUTPUT); 9 | led_1_state = LOW; 10 | digitalWrite(LED_1_PORT, led_1_state); 11 | } 12 | 13 | void loop() { 14 | led_1_state = (led_1_state==LOW) ? HIGH : LOW; 15 | digitalWrite(LED_1_PORT, led_1_state); 16 | delay(500); 17 | } 18 | 19 | -------------------------------------------------------------------------------- /doc/html/search/all_13.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['yield_0',['yield',['../class_task_manager.html#abc4f2e57cdc1fd1d3051b58dc816de98',1,'TaskManager']]], 4 | ['yielddelay_1',['yieldDelay',['../class_task_manager.html#a2123fa0af84c3a1373b9437e2157e872',1,'TaskManager']]], 5 | ['yieldformessage_2',['yieldForMessage',['../class_task_manager.html#a4f368a9141c55b085aefdc8833aeaeec',1,'TaskManager']]], 6 | ['yielduntil_3',['yieldUntil',['../class_task_manager.html#aa3f827ee35d80bc4faa2f7d438163e78',1,'TaskManager']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/html/search/functions_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['yield_0',['yield',['../class_task_manager.html#abc4f2e57cdc1fd1d3051b58dc816de98',1,'TaskManager']]], 4 | ['yielddelay_1',['yieldDelay',['../class_task_manager.html#a2123fa0af84c3a1373b9437e2157e872',1,'TaskManager']]], 5 | ['yieldformessage_2',['yieldForMessage',['../class_task_manager.html#a4f368a9141c55b085aefdc8833aeaeec',1,'TaskManager']]], 6 | ['yielduntil_3',['yieldUntil',['../class_task_manager.html#aa3f827ee35d80bc4faa2f7d438163e78',1,'TaskManager']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /examples/old/ex04_01_tm_macro/ex04_01_tm_macro.ino: -------------------------------------------------------------------------------- 1 | // Example program demonstrating TM macros 2 | // Blinks an LED once (1000ms) 3 | #include 4 | #define LED 13 5 | 6 | void setup() { 7 | // put your setup code here, to run once: 8 | pinMode(LED, OUTPUT); 9 | digitalWrite(LED, LOW); 10 | TaskMgr.add(1, ledTask); 11 | } 12 | 13 | void ledTask() { 14 | TM_BEGIN(); 15 | digitalWrite(LED, HIGH); 16 | TM_YIELDDELAY(1, 1000); 17 | digitalWrite(LED, LOW); 18 | TM_YIELDDELAY(2, 1000); 19 | TM_END(); 20 | } 21 | -------------------------------------------------------------------------------- /doc/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 |
No Matches
11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /doc/html/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['pop_5fback_0',['pop_back',['../classring.html#ad000e92398391abc8958e0fc5595c329',1,'ring']]], 4 | ['pop_5ffront_1',['pop_front',['../classring.html#a8bd49b76e56686927dcfd78cb5172690',1,'ring']]], 5 | ['push_5fback_2',['push_back',['../classring.html#ab13c5ad32f0ccd338400dd16c3259f9b',1,'ring']]], 6 | ['push_5ffront_3',['push_front',['../classring.html#ad9de090ad384e32e39337c85a9a21549',1,'ring']]], 7 | ['putmessage_4',['putMessage',['../class___task_manager_task.html#a78ccfc67e4ba03998d3287035dd1d134',1,'_TaskManagerTask']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /doc/html/search/functions_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['pop_5fback_0',['pop_back',['../classring.html#ad000e92398391abc8958e0fc5595c329',1,'ring']]], 4 | ['pop_5ffront_1',['pop_front',['../classring.html#a8bd49b76e56686927dcfd78cb5172690',1,'ring']]], 5 | ['push_5fback_2',['push_back',['../classring.html#ab13c5ad32f0ccd338400dd16c3259f9b',1,'ring']]], 6 | ['push_5ffront_3',['push_front',['../classring.html#ad9de090ad384e32e39337c85a9a21549',1,'ring']]], 7 | ['putmessage_4',['putMessage',['../class___task_manager_task.html#a78ccfc67e4ba03998d3287035dd1d134',1,'_TaskManagerTask']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /doc/html/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['getmessage_0',['getMessage',['../class_task_manager.html#ab7a70749690f57b64c4db036abf1fa9d',1,'TaskManager']]], 4 | ['getmessagelength_1',['getMessageLength',['../class_task_manager.html#a2512563ba937a3542cbe564830ce1ae0',1,'TaskManager']]], 5 | ['getsource_2',['getSource',['../class_task_manager.html#a0f4e11619ef42339d1a20fa2d31b2b72',1,'TaskManager::getSource(tm_taskId_t &fromTaskId)'],['../class_task_manager.html#a1d7883ae6d432125c5bdf3e354a1696b',1,'TaskManager::getSource(tm_nodeId_t &fromNodeId, tm_taskId_t &fromTaskId)']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /doc/html/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['getmessage_0',['getMessage',['../class_task_manager.html#ab7a70749690f57b64c4db036abf1fa9d',1,'TaskManager']]], 4 | ['getmessagelength_1',['getMessageLength',['../class_task_manager.html#a2512563ba937a3542cbe564830ce1ae0',1,'TaskManager']]], 5 | ['getsource_2',['getSource',['../class_task_manager.html#a0f4e11619ef42339d1a20fa2d31b2b72',1,'TaskManager::getSource(tm_taskId_t &fromTaskId)'],['../class_task_manager.html#a1d7883ae6d432125c5bdf3e354a1696b',1,'TaskManager::getSource(tm_nodeId_t &fromNodeId, tm_taskId_t &fromTaskId)']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /doc/html/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /doc/html/minusd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /doc/html/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['taskmanager_2ecpp_0',['TaskManager.cpp',['../_task_manager_8cpp.html',1,'']]], 4 | ['taskmanagerclocksync_2eh_1',['TaskManagerClockSync.h',['../_task_manager_clock_sync_8h.html',1,'']]], 5 | ['taskmanagercore_2eh_2',['TaskManagerCore.h',['../_task_manager_core_8h.html',1,'']]], 6 | ['taskmanagermacros_2eh_3',['TaskManagerMacros.h',['../_task_manager_macros_8h.html',1,'']]], 7 | ['taskmanagermainpage_2eh_4',['TaskManagerMainpage.h',['../_task_manager_mainpage_8h.html',1,'']]], 8 | ['taskmanagerreadline_2eh_5',['TaskManagerReadline.h',['../_task_manager_readline_8h.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /doc/docbook/annotated.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 | Class List 4 | Here are the classes, structs, unions and interfaces with brief descriptions:_ring 5 | Implements a templated ring data structure 6 | ring< T > 7 | An STL-style class that implements rings 8 | TaskManager 9 | A cooperative multitasking manager 10 |
11 | -------------------------------------------------------------------------------- /doc/html/search/groups_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['setting_20up_20a_20mesh_20networking_0',['Setting up a Mesh Networking',['../group___network.html',1,'']]], 4 | ['setting_20up_20taskmanager_1',['Setting up TaskManager',['../group___setup.html',1,'']]], 5 | ['shell_2',['A UI Command Line Shell',['../group___shell.html',1,'']]], 6 | ['subtasks_3',['Task Manager Callable Subtasks',['../group__subtask_macros.html',1,'']]], 7 | ['support_20reentrant_20task_20code_4',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]], 8 | ['synchronizing_20millis_20clocks_20in_20a_20mesh_5',['Synchronizing millis() Clocks in a Mesh',['../group___clock_sync.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=TaskManager 2 | version=2.0.0 3 | author=Steve Platt 4 | maintainer=Steve Platt 5 | sentence=A lightweight cooperative multitasking system for Arduino systems. 6 | paragraph=The library replaces loop() with the ability to define multiple loop()-like procedures. These are executed by a simple round-robin scheduler. Built-in management allows a task to delay (passing control to other tasks) as well as pass messages between tasks. Extensions allow tasks to run on a mesh of Arduino nodes that communicate using RF24 (Atmel) or WiFi (ESP-NOW on ESP-32) protocols. 7 | category=Other 8 | url=https://github.com/drsteveplatt/TaskManager 9 | architectures=AVR,ESP-32,avr,esp32 10 | 11 | -------------------------------------------------------------------------------- /keywords.txt: -------------------------------------------------------------------------------- 1 | # Keywords for TaskManager library 2 | 3 | # Datatypes 4 | TaskManager KEYWORD1 5 | 6 | # Instances 7 | TaskMgr KEYWORD1 8 | 9 | # Constants 10 | 11 | # Methods 12 | add KEYWORD2 13 | addWaitDelay KEYWORD2 14 | addWaitUntil KEYWORD2 15 | addWaitMessage KEYWORD2 16 | addAutoWaitDelay KEYWORD2 17 | addAutoWaitMessage KEYWORD2 18 | 19 | yield KEYWORD2 20 | yieldDelay KEYWORD2 21 | yieldUntil KEYWORD2 22 | yieldForMessage KEYWORD2 23 | 24 | sendMessage KEYWORD2 25 | 26 | getSource KEYWORD2 27 | timedOut KEYWORD2 28 | getMessage KEYWORD2 29 | sendMessage KEYWORD2 30 | runtime KEYWORD2 31 | printTo KEYWORD2 32 | 33 | myId KEYWORD2 34 | myNodeId KEYWORD2 35 | radioBegin KEYWORD2 36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['_5fringnode_0',['_ringNode',['../class__ring_node.html',1,'']]], 4 | ['_5fringnode_3c_20_5ftaskmanagertask_20_3e_1',['_ringNode< _TaskManagerTask >',['../class__ring_node.html',1,'']]], 5 | ['_5ftaskmanagerclocksyncinfo_2',['_TaskManagerClockSyncInfo',['../class___task_manager_clock_sync_info.html',1,'']]], 6 | ['_5ftaskmanagertask_3',['_TaskManagerTask',['../class___task_manager_task.html',1,'_TaskManagerTask'],['../class___task_manager_task.html#a7987a18e9eebbee5c7f399a6702151c0',1,'_TaskManagerTask::_TaskManagerTask()'],['../class___task_manager_task.html#a915d779a211c32f16bffe7bf9833960f',1,'_TaskManagerTask::_TaskManagerTask(tm_taskId_t, void(*)())']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/html/search/groups_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['task_20code_0',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]], 4 | ['task_20manager_20callable_20subtasks_1',['Task Manager Callable Subtasks',['../group__subtask_macros.html',1,'']]], 5 | ['task_20manager_20macros_2',['Task Manager Macros',['../group__macros.html',1,'']]], 6 | ['taskmanager_20esp_20network_20mesh_20drivers_3',['TaskManager ESP Network/Mesh Drivers',['../group___task_manager_radio_e_s_p.html',1,'']]], 7 | ['tm_20macros_4',['Basic TM Macros',['../group__primary.html',1,'']]], 8 | ['to_20support_20reentrant_20task_20code_5',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /src/TaskManager.h: -------------------------------------------------------------------------------- 1 | // Main program include for TaskManagerRF 2 | // Note this file should only be #include'd from the main program. 3 | // Other C++ files in the program should #include TaskManagerSub.h 4 | #ifndef TASKMANAGER_H_INCLUDED 5 | #define TASKMANAGER_H_INCLUDED 6 | 7 | //#define TASKMANAGER_DEBUG 8 | #include 9 | #include 10 | // These need to be here to ensure these are declared. 11 | // Note that each main-file include in the TaskManager family has one of these. 12 | // This ensures that the correct TaskMgr is used. 13 | //#if false 14 | TaskManager TaskMgr; 15 | void loop() { 16 | TaskMgr.loop(); 17 | } 18 | #endif // TASKMANAGER_H_INCLUDED 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /doc/html/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /doc/html/plusd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /doc/html/search/groups_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['macros_0',['Macros',['../group__primary.html',1,'Basic TM Macros'],['../group__macros.html',1,'Task Manager Macros']]], 4 | ['macros_20to_20support_20reentrant_20task_20code_1',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]], 5 | ['manager_20callable_20subtasks_2',['Task Manager Callable Subtasks',['../group__subtask_macros.html',1,'']]], 6 | ['manager_20macros_3',['Task Manager Macros',['../group__macros.html',1,'']]], 7 | ['mesh_20clock_20synchronization_4',['Mesh Clock Synchronization',['../group___clock_sync.html',1,'']]], 8 | ['mesh_20drivers_5',['TaskManager ESP Network/Mesh Drivers',['../group___task_manager_radio_e_s_p.html',1,'']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /test TM 1.x/TMRadioTest1/TMRadioTest1.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | /* 6 | Turns on an LED on for one second, then off for one second, repeatedly. 7 | */ 8 | 9 | void loopx(); 10 | 11 | void setup() 12 | { 13 | Serial.begin(9600); 14 | 15 | // initialize the digital pin as an output. 16 | // Pin 13 has an LED connected on most Arduino boards: 17 | pinMode(13, OUTPUT); 18 | TaskMgr.add(1, loopx); 19 | } 20 | 21 | void loopx() 22 | { 23 | Serial.println("Hello world!"); 24 | 25 | delay(1000); // wait for a second 26 | digitalWrite(13, HIGH); // set the LED on 27 | delay(1000); // wait for a second 28 | digitalWrite(13, LOW); // set the LED off 29 | } 30 | -------------------------------------------------------------------------------- /test/old/TMRadioTest1/TMRadioTest1.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | /* 6 | Turns on an LED on for one second, then off for one second, repeatedly. 7 | */ 8 | 9 | void loopx(); 10 | 11 | void setup() 12 | { 13 | Serial.begin(9600); 14 | 15 | // initialize the digital pin as an output. 16 | // Pin 13 has an LED connected on most Arduino boards: 17 | pinMode(13, OUTPUT); 18 | TaskMgr.add(1, loopx); 19 | } 20 | 21 | void loopx() 22 | { 23 | Serial.println("Hello world!"); 24 | 25 | delay(1000); // wait for a second 26 | digitalWrite(13, HIGH); // set the LED on 27 | delay(1000); // wait for a second 28 | digitalWrite(13, LOW); // set the LED off 29 | } 30 | -------------------------------------------------------------------------------- /test/old/TaskSwapTimer/TaskSwapTimer.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | /* 6 | Turns on an LED on for one second, then off for one second, repeatedly. 7 | */ 8 | 9 | void task1(), task2(), task3(); 10 | void setup() 11 | { 12 | Serial.begin(9600); 13 | TaskMgr.add(1, task1); 14 | TaskMgr.add(2, task2); 15 | TaskMgr.add(3, task3); 16 | } 17 | 18 | unsigned long int t0, t1; // used to track task swap times 19 | 20 | void task1() 21 | { 22 | Serial.println("task 1"); 23 | t0 = micros(); 24 | } 25 | void task2() 26 | { 27 | t1 = micros(); 28 | Serial.print(t1-t0); 29 | Serial.println(" task 2"); 30 | } 31 | void task3() 32 | { 33 | Serial.println("task 3"); 34 | } 35 | -------------------------------------------------------------------------------- /test TM 1.x/AutoDelayTest/AutoDelayTest.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include "../../TaskManager.h" 3 | 4 | /* 5 | Turns on an LED on for one second, then off for one second, repeatedly. 6 | */ 7 | 8 | void delayLoop(); 9 | 10 | long startMs; 11 | 12 | void setup() 13 | { 14 | Serial.begin(9600); 15 | startMs = millis(); 16 | TaskMgr.addAutoWaitDelay(1, delayLoop, 1000, false); 17 | Serial.println("Start"); 18 | } 19 | 20 | void delayLoop() 21 | { 22 | // print now and then amount of work time 23 | // Since we run every 1 seconds, we "work" 300 to 1500ms 24 | int work = 100*random(3, 15); 25 | Serial.print("now: "); 26 | Serial.print(millis()-startMs); 27 | Serial.print(" work: "); 28 | Serial.println(work); 29 | delay(work); 30 | } 31 | -------------------------------------------------------------------------------- /test TM 1.x/TaskSwapTimer/TaskSwapTimer.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | 5 | /* 6 | Turns on an LED on for one second, then off for one second, repeatedly. 7 | */ 8 | 9 | void task1(), task2(), task3(); 10 | void setup() 11 | { 12 | Serial.begin(9600); 13 | TaskMgr.add(1, task1); 14 | TaskMgr.add(2, task2); 15 | TaskMgr.add(3, task3); 16 | } 17 | 18 | unsigned long int t0, t1; // used to track task swap times 19 | 20 | void task1() 21 | { 22 | Serial.println("task 1"); 23 | t0 = micros(); 24 | } 25 | void task2() 26 | { 27 | t1 = micros(); 28 | Serial.print(t1-t0); 29 | Serial.println(" task 2"); 30 | } 31 | void task3() 32 | { 33 | Serial.println("task 3"); 34 | } 35 | -------------------------------------------------------------------------------- /test/old/AutoDelayTest/AutoDelayTest.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include "../../TaskManager.h" 3 | 4 | /* 5 | Turns on an LED on for one second, then off for one second, repeatedly. 6 | */ 7 | 8 | void delayLoop(); 9 | 10 | long startMs; 11 | 12 | void setup() 13 | { 14 | Serial.begin(9600); 15 | startMs = millis(); 16 | TaskMgr.addAutoWaitDelay(1, delayLoop, 1000, false); 17 | Serial.println("Start"); 18 | } 19 | 20 | void delayLoop() 21 | { 22 | // print now and then amount of work time 23 | // Since we run every 1 seconds, we "work" 300 to 1500ms 24 | int work = 100*random(3, 15); 25 | Serial.print("now: "); 26 | Serial.print(millis()-startMs); 27 | Serial.print(" work: "); 28 | Serial.println(work); 29 | delay(work); 30 | } 31 | -------------------------------------------------------------------------------- /examples/old/ex04_02_tm_macro_loop/ex04_02_tm_macro_loop.ino: -------------------------------------------------------------------------------- 1 | // Example program demonstrating the use of TM macros and loops 2 | // Blinks an LED once (1000ms), then four times (100ms) 3 | #include 4 | #define LED 13 5 | 6 | void setup() { 7 | // put your setup code here, to run once: 8 | pinMode(LED, OUTPUT); 9 | digitalWrite(LED, LOW); 10 | TaskMgr.add(1, ledTask); 11 | } 12 | 13 | void ledTask() { 14 | static int i; 15 | TM_BEGIN(); 16 | digitalWrite(LED, HIGH); 17 | TM_YIELDDELAY(1, 1000); 18 | digitalWrite(LED, LOW); 19 | TM_YIELDDELAY(2, 1000); 20 | 21 | for(i=0; i<5; i++) { 22 | digitalWrite(LED, HIGH); 23 | TM_YIELDDELAY(3, 100); 24 | digitalWrite(LED, LOW); 25 | TM_YIELDDELAY(4, 100); 26 | } 27 | TM_END(); 28 | } 29 | -------------------------------------------------------------------------------- /doc/html/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['callable_20subtasks_0',['Task Manager Callable Subtasks',['../group__subtask_macros.html',1,'']]], 4 | ['clear_1',['clear',['../classring.html#a65033722386b6afe9d7cd03e5dc95bb5',1,'ring']]], 5 | ['clearsuspended_2',['clearSuspended',['../class___task_manager_task.html#ad29695b6fd1daf8fb52613814a9e3c8e',1,'_TaskManagerTask']]], 6 | ['clock_20synchronization_3',['Mesh Clock Synchronization',['../group___clock_sync.html',1,'']]], 7 | ['code_4',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]], 8 | ['components_5',['Internal components',['../group__internal.html',1,'']]], 9 | ['cooperative_20multitasking_20system_20for_20arduino_6',['TaskManger - Cooperative Multitasking System for Arduino',['../index.html',1,'']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /doc/html/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['internalsendmessage_0',['internalSendMessage',['../class_task_manager.html#a09bb6c7863e8d8f3744b8d6da95a56bf',1,'TaskManager::internalSendMessage(tm_nodeId_t fromNodeId, tm_taskId_t fromTaskId, tm_taskId_t taskId, char *message)'],['../class_task_manager.html#a1b702e8ce9d59865dcc6b58742b8254b',1,'TaskManager::internalSendMessage(tm_nodeId_t fromNodeId, tm_taskId_t fromTaskId, tm_taskId_t taskId, void *buf, int len)']]], 4 | ['isempty_1',['isEmpty',['../class_message_queue.html#aca7e45700a795dba7183a82173285d29',1,'MessageQueue']]], 5 | ['isnull_2',['isNull',['../classring.html#aba26f46f1c9ce92caa5413a898d91022',1,'ring']]], 6 | ['isrunnable_3',['isRunnable',['../class___task_manager_task.html#a6dda6805a4a11dc48de4c107909c8e72',1,'_TaskManagerTask']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/html/search/functions_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['map_0',['map',['../classring.html#aada527f64532b1710d200953bfbabf2a',1,'ring::map(void(*fn)(T &))'],['../classring.html#ac47cf27eccf2ffdbcc102e16b139c459',1,'ring::map(void(*fn)(T &, void *), void *)']]], 4 | ['millis_1',['millis',['../class_task_manager.html#a2d05cc9618f108007073ebcab05a61f7',1,'TaskManager']]], 5 | ['move_5fnext_2',['move_next',['../classring.html#af16864a4bd729a9b91e4a2fcdec8f737',1,'ring']]], 6 | ['move_5fprev_3',['move_prev',['../classring.html#ad682fc47814540b7c492dfb3a65123b3',1,'ring']]], 7 | ['myid_4',['myId',['../class_task_manager.html#a087a0368a1dc5670757f56000b906e22',1,'TaskManager']]], 8 | ['mynodeid_5',['myNodeId',['../class_task_manager.html#ab797d73ccb1b1a13c797bd1262249dea',1,'TaskManager']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /test/old/TaskSwapTimer/TaskSwapTimer.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /doc/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "_abcdefgilmnoprstuwy~", 4 | 1: "_mrt", 5 | 2: "t", 6 | 3: "_abcefgilmoprstuy~", 7 | 4: "mt", 8 | 5: "t", 9 | 6: "t", 10 | 7: "astw", 11 | 8: "dt", 12 | 9: "bcdeimnrst", 13 | 10: "acfmst" 14 | }; 15 | 16 | var indexSectionNames = 17 | { 18 | 0: "all", 19 | 1: "classes", 20 | 2: "files", 21 | 3: "functions", 22 | 4: "variables", 23 | 5: "typedefs", 24 | 6: "enums", 25 | 7: "enumvalues", 26 | 8: "defines", 27 | 9: "groups", 28 | 10: "pages" 29 | }; 30 | 31 | var indexSectionLabels = 32 | { 33 | 0: "All", 34 | 1: "Classes", 35 | 2: "Files", 36 | 3: "Functions", 37 | 4: "Variables", 38 | 5: "Typedefs", 39 | 6: "Enumerations", 40 | 7: "Enumerator", 41 | 8: "Macros", 42 | 9: "Modules", 43 | 10: "Pages" 44 | }; 45 | 46 | -------------------------------------------------------------------------------- /test TM 1.x/TaskMgrTest_3a/TaskMgrTest_3a.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test TM 1.x/TaskSwapTimer/TaskSwapTimer.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/old/AutoDelayTest/AutoDelayTest.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/old/TaskMgrTest_2/TaskMgrTest_2.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/old/TaskMgrTest_3a/TaskMgrTest_3a.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test TM 1.x/AutoDelayTest/AutoDelayTest.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test TM 1.x/TaskMgrTest_2/TaskMgrTest_2.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /doc/docbook/group___ring.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 | Ring 4 | Ring 5 | 6 | Classes 7 | 8 | class ring< T > 9 | 10 | An STL-style class that implements rings. 11 | 12 | class _ring 13 | 14 | Implements a templated ring data structure. 15 | 16 | 17 | 18 |
19 | Detailed Description 20 |
21 |
22 | -------------------------------------------------------------------------------- /examples/old/ex01_01_one_LED_blinking/ex01_01_one_LED_blinking.ino: -------------------------------------------------------------------------------- 1 | // Example 01.01 2 | // Simple blink 3 | // One LED blinking 4 | // 5 | // This is similar to blinky; just modified to make the transition to simple TaskManager programs 6 | // clearer. 7 | 8 | #define LED_RED 3 9 | 10 | void setup() { 11 | // initialize digital pin LED_BUILTIN as an output. 12 | pinMode(LED_RED, OUTPUT); 13 | digitalWrite(LED_RED, LOW); 14 | } 15 | 16 | // the loop function runs over and over again forever 17 | // LEDTIME is how long the LED stays on (or off). 18 | #define LEDDTIME 1000 19 | void loop() { 20 | static bool isLow = true; 21 | digitalWrite(LED_RED, isLow ? HIGH : LOW); // turn the LED on or off, depending on previous state 22 | isLow = !isLow; // set the new state 23 | delay(LEDTIME); // wait for a bit 24 | } 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | 45 | # Arduino binary stuff 46 | *.hex 47 | *.a 48 | *.o 49 | *.elf 50 | *.exe 51 | 52 | -------------------------------------------------------------------------------- /doc/html/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['internal_20components_0',['Internal components',['../group__internal.html',1,'']]], 4 | ['internalsendmessage_1',['internalSendMessage',['../class_task_manager.html#a09bb6c7863e8d8f3744b8d6da95a56bf',1,'TaskManager::internalSendMessage(tm_nodeId_t fromNodeId, tm_taskId_t fromTaskId, tm_taskId_t taskId, char *message)'],['../class_task_manager.html#a1b702e8ce9d59865dcc6b58742b8254b',1,'TaskManager::internalSendMessage(tm_nodeId_t fromNodeId, tm_taskId_t fromTaskId, tm_taskId_t taskId, void *buf, int len)']]], 5 | ['isempty_2',['isEmpty',['../class_message_queue.html#aca7e45700a795dba7183a82173285d29',1,'MessageQueue']]], 6 | ['isnull_3',['isNull',['../classring.html#aba26f46f1c9ce92caa5413a898d91022',1,'ring']]], 7 | ['isrunnable_4',['isRunnable',['../class___task_manager_task.html#a6dda6805a4a11dc48de4c107909c8e72',1,'_TaskManagerTask']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /test/old/TaskMgrTest_4/TaskMgrTest_4.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /test TM 1.x/TaskMgrTest_4/TaskMgrTest_4.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /doc/html/search/mag.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 14 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /doc/html/search/mag_d.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 14 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /examples/SimpleRxTM/SimpleRxTM.ino: -------------------------------------------------------------------------------- 1 | // A rewrite of SimpleRX from https://forum.arduino.cc/t/simple-nrf24l01-2-4ghz-transceiver-demo/405123 2 | // Uses TaskManager instead of raw RF24 calls 3 | 4 | #if defined(ARDUINO_ARCH_AVR) 5 | #include 6 | #include 7 | #define CE_PIN 9 8 | #define CSN_PIN 10 9 | #else 10 | #include 11 | #endif 12 | 13 | char dataReceived[10]; 14 | 15 | void setup() { 16 | Serial.begin(9600); 17 | 18 | Serial.println("SimpleRxTM Starting"); Serial.flush(); 19 | #if defined(ARDUINO_ARCH_AVR) 20 | TaskMgr.radioBegin(2, CE_PIN, CSN_PIN); 21 | #else 22 | TaskMgr.radioBegin(2); 23 | #endif 24 | 25 | TaskMgr.addAutoWaitMessage(1, receiveMessage); 26 | 27 | } 28 | 29 | void receiveMessage() { 30 | // put your main code here, to run repeatedly: 31 | strcpy(dataReceived, (char*)TaskMgr.getMessage()); 32 | Serial.println(dataReceived); Serial.flush(); 33 | } 34 | -------------------------------------------------------------------------------- /doc/docbook/_task_manager_sub__2_8h_source.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 | TaskManagerSub_2.h 4 | 1 #ifndef TASKMANAGER_H_INCLUDED 5 | 2 #define TASKMANAGER_H_INCLUDED 6 | 3 7 | 4 #include <TaskManagerMacros_2.h> 8 | 5 #include <TaskManagerCore_2.h> 9 | 6 extern TaskManager TaskMgr; 10 | 7 #endif // TASKMANAGER_H_INCLUDED 11 | 8 12 | 9 13 |
14 | -------------------------------------------------------------------------------- /doc/html/search/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /examples/old/ex01_03_two_LEDs_blinking_TM/ex01_03_two_LEDs_blinking_TM.ino: -------------------------------------------------------------------------------- 1 | // Example 01_03 2 | // More complex blinking 3 | // Two LEDs blinking at different rates 4 | // Written with TaskManager 5 | 6 | #include 7 | 8 | #define LED1 3 9 | #define LED2 4 10 | 11 | void setup() { 12 | pinMode(LED_1, OUTPUT); 13 | pinMode(LED_2, OUTPUT); 14 | digitalWrite(LED_1, LOW); 15 | digitalWrite(LED_2, LOW); 16 | TaskMgr.add(1, led1Loop); // Tell TaskManager about the two loop-like procedure tasks 17 | TaskMgr.add(2, led2Loop); 18 | } 19 | // 20 | // note what is missing: void loop() {} 21 | // 22 | 23 | // Task for the first LED 24 | #define LED1TIME 1000 25 | void led1Loop() { 26 | static bool isLow = true; 27 | digitalWrite(LED1, isLow ? HIGH : LOW); 28 | isLow = !isLow; 29 | TaskMgr.yieldDelay(LED1TIME); 30 | } 31 | 32 | // Task for the second LED 33 | #define LED2TIME 700 34 | void led2Loop() { 35 | static bool isLow = true; 36 | digitalWrite(LED2, isLow ? HIGH : LOW); 37 | isLow = !isLow; 38 | TaskMgr.yieldDelay(LED2TIME); 39 | } 40 | -------------------------------------------------------------------------------- /test/old/TaskMgrTest_3/TaskMgrTest_3l.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /examples/ex01_01_one_LED_blinking/ex01_01_one_LED_blinking.ino: -------------------------------------------------------------------------------- 1 | // Example 01.01 2 | // Simple blink 3 | // One LED blinking 4 | // 5 | // This is similar to blinky; just modified to make the transition to simple TaskManager programs 6 | // clearer. 7 | 8 | #if defined(ARDUINO_ARCH_AVR) 9 | #define LED1 3 10 | #define LED2 5 11 | #define SW1 9 12 | #define SW2 10 13 | #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 14 | #define LED1 19 15 | #define LED2 21 16 | #endif 17 | 18 | void setup() { 19 | // initialize digital pin LED_BUILTIN as an output. 20 | pinMode(LED1, OUTPUT); 21 | digitalWrite(LED1, LOW); 22 | } 23 | 24 | // the loop function runs over and over again forever 25 | // LEDTIME is how long the LED stays on (or off). 26 | #define LEDTIME 1000 27 | void loop() { 28 | static bool isLow = true; 29 | digitalWrite(LED1, isLow ? HIGH : LOW); // turn the LED on or off, depending on previous state 30 | isLow = !isLow; // set the new state 31 | delay(LEDTIME); // wait for a bit 32 | } 33 | -------------------------------------------------------------------------------- /test TM 1.x/TaskMgrTest_3/TaskMgrTest_3l.layout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /doc/html/search/enums_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/html/search/enums_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/docbook/class__ring.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 | _ring Class Reference 4 | _ring 5 | 6 | 7 | Implements a templated ring data structure. 8 | 9 | 10 | 11 | #include <TaskManagerCore_2.h> 12 | 13 |
14 | Detailed Description 15 | 16 | Implements a templated ring data structure. 17 | 18 | 19 | 20 | This is a templated class that implements a ring of arbitrary objects. Each object must have a constructor and a destructor as well as operator=. It should also have the printTo member function if any form of serialization is to be done. 21 | 22 | This implements ring traversal (move to next/prev), insertion/deletion, etc. 23 | 24 | The documentation for this class was generated from the following file: 25 | TaskManagerCore_2.h
26 |
27 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/html/search/functions_11.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/html/search/variables_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 |
Loading...
12 |
13 | 16 |
Searching...
17 |
No Matches
18 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /examples/SimpleTxTM/SimpleTxTM.ino: -------------------------------------------------------------------------------- 1 | // A rewrite of SimpleTX from https://forum.arduino.cc/t/simple-nrf24l01-2-4ghz-transceiver-demo/405123 2 | // Uses TaskManager instead of raw RF24 calls 3 | 4 | 5 | 6 | #if defined(ARDUINO_ARCH_AVR) 7 | #include 8 | #include 9 | #define CE_PIN 9 10 | #define CSN_PIN 10 11 | #else 12 | #include 13 | #endif 14 | 15 | char dataToSend[10] = "Message 0"; 16 | char txNum = '0'; 17 | 18 | void setup() { 19 | Serial.begin(9600); 20 | 21 | Serial.println("SimpleTxTM Starting"); Serial.flush(); 22 | 23 | #if defined(ARDUINO_ARCH_AVR) 24 | TaskMgr.radioBegin(1, CE_PIN, CSN_PIN); 25 | #else 26 | TaskMgr.radioBegin(1); 27 | TaskMgr.registerPeer(2); 28 | #endif 29 | TaskMgr.addAutoWaitDelay(1, sendMessage, 2500); 30 | 31 | } 32 | 33 | void sendMessage() { 34 | // put your main code here, to run repeatedly: 35 | txNum += 1; 36 | if (txNum > '9') { 37 | txNum = '0'; 38 | } 39 | dataToSend[8] = txNum; 40 | Serial.print("Data sent "); Serial.println(dataToSend); Serial.flush(); 41 | TaskMgr.sendMessage(2, 1, dataToSend); 42 | } 43 | -------------------------------------------------------------------------------- /doc/html/search/mag_sel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 13 | 15 | 21 | 26 | 31 | 32 | -------------------------------------------------------------------------------- /doc/html/search/mag_seld.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 13 | 15 | 21 | 26 | 31 | 32 | -------------------------------------------------------------------------------- /test/old/TestSuspendResume/TestSuspendResume.ino: -------------------------------------------------------------------------------- 1 | // testing out suspend and resume 2 | // three tasks: one prints a message every 2 seconds. 3 | // The other pauses/resumes the first every 10 seconds 4 | // And a third that prints every 3 seconds. 5 | #include 6 | #include 7 | 8 | long startTime; 9 | 10 | void setup() { 11 | // put your setup code here, to run once: 12 | TaskMgr.addAutoDelay(1, oneThatIsPaused, 2000); 13 | TaskMgr.addAutoDelay(2, oneThatPauses, 10000); 14 | TaskMgr.addAutoDelay(3, oneThatPrints, 3000); 15 | startTime = millis(); 16 | } 17 | 18 | void oneThatIsPaused() { 19 | const int nCalls = 0; 20 | Serial << "oneThatIsPaused, nCalls=" << nCalls++ << " t=" << millis() << endl; 21 | } 22 | 23 | void oneThatPauses() { 24 | const int nCalls = 0; 25 | const bool otherIsRunning = true; 26 | Serial << "oneThatPauses, nCalls=" << nCalls++ << nCalls << " t=" << millis() << endl; 27 | if(otherIsRunning) TaskMgr.suspend(1); 28 | else TaskMgr.resume(1); 29 | } 30 | 31 | void oneThatPrints() { 32 | const int nCalls = 0; 33 | Serial << "oneThatPrints, nCalls=" << nCalls++ << " t=" << millis() << endl; 34 | } 35 | -------------------------------------------------------------------------------- /test TM 1.x/TestSuspendResume/TestSuspendResume.ino: -------------------------------------------------------------------------------- 1 | // testing out suspend and resume 2 | // three tasks: one prints a message every 2 seconds. 3 | // The other pauses/resumes the first every 10 seconds 4 | // And a third that prints every 3 seconds. 5 | #include 6 | #include 7 | 8 | long startTime; 9 | 10 | void setup() { 11 | // put your setup code here, to run once: 12 | TaskMgr.addAutoDelay(1, oneThatIsPaused, 2000); 13 | TaskMgr.addAutoDelay(2, oneThatPauses, 10000); 14 | TaskMgr.addAutoDelay(3, oneThatPrints, 3000); 15 | startTime = millis(); 16 | } 17 | 18 | void oneThatIsPaused() { 19 | const int nCalls = 0; 20 | Serial << "oneThatIsPaused, nCalls=" << nCalls++ << " t=" << millis() << endl; 21 | } 22 | 23 | void oneThatPauses() { 24 | const int nCalls = 0; 25 | const bool otherIsRunning = true; 26 | Serial << "oneThatPauses, nCalls=" << nCalls++ << nCalls << " t=" << millis() << endl; 27 | if(otherIsRunning) TaskMgr.suspend(1); 28 | else TaskMgr.resume(1); 29 | } 30 | 31 | void oneThatPrints() { 32 | const int nCalls = 0; 33 | Serial << "oneThatPrints, nCalls=" << nCalls++ << " t=" << millis() << endl; 34 | } 35 | -------------------------------------------------------------------------------- /examples/old/ex03_01_timer/ex03_01_timer.ino: -------------------------------------------------------------------------------- 1 | // TimerTest 2 | // Tests the time needed for various operations 3 | 4 | #include 5 | #include 6 | 7 | void workerSub(byte*); // our external routine 8 | 9 | void setup() { 10 | // timer variables 11 | long tStart, tEnd; 12 | long tLoop1000, tLoop10000, tfLoop1000, tfLoop10000; 13 | // 14 | int i; 15 | byte b; 16 | 17 | Serial.begin(115200); 18 | 19 | tStart=micros(); 20 | for(i=0; i<1000; i++) continue; 21 | tEnd=micros(); 22 | tLoop1000 = tEnd-tStart; 23 | 24 | tStsart=micros(); 25 | for(i=0; i<10000; i++) continue; 26 | tEnd=micros(); 27 | tLoop10000 = tEnd-tStart; 28 | 29 | b=0; 30 | tStart=micros(); 31 | for(i=0; i<1000; i++) workerSub(b); 32 | tEnd=micros(); 33 | tfLoop1000 = tEnd-tStart; 34 | 35 | b=0; 36 | tStart=micros(); 37 | for(i=0; i<10000; i++) workerSub(b); 38 | tEnd=micros(); 39 | tfLoop10000 = tEnd-tStart; 40 | 41 | Serial << "No fn: " << tLoop1000 << " " << tLoop10000 42 | << " fn: " << tfLoop1000 << " " << tfLoop10000 << endl; 43 | 44 | } 45 | 46 | void loop() { 47 | // put your main code here, to run repeatedly: 48 | 49 | } 50 | -------------------------------------------------------------------------------- /doc/html/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['add_0',['add',['../group___task_manager_radio_e_s_p.html#ga322c8fb4e8f0ff38acb9389021e3c174',1,'MessageQueue::add()'],['../class_task_manager.html#a3b61b260f5ddd9676f7a6899da40ad9e',1,'TaskManager::add(tm_taskId_t taskId, void(*fn)())']]], 4 | ['addautowaitdelay_1',['addAutoWaitDelay',['../class_task_manager.html#a41d58e9b9e596b19264bb2cbf7c02878',1,'TaskManager']]], 5 | ['addautowaitmessage_2',['addAutoWaitMessage',['../class_task_manager.html#a2c4cd56685a46a66bb3b5a25c1ba8685',1,'TaskManager']]], 6 | ['addwaitdelay_3',['addWaitDelay',['../class_task_manager.html#ad0d87e94ca41ece59e98adba02ba8103',1,'TaskManager']]], 7 | ['addwaitmessage_4',['addWaitMessage',['../class_task_manager.html#a51b5017ee459e0d54a0995c084bd273f',1,'TaskManager']]], 8 | ['addwaituntil_5',['addWaitUntil',['../class_task_manager.html#aef8ccd8e7753e35a483dd8d9203ef8ca',1,'TaskManager']]], 9 | ['allstateset_6',['allStateSet',['../class___task_manager_task.html#a9ef01008d769876d2ded417d10499dfb',1,'_TaskManagerTask']]], 10 | ['anystateset_7',['anyStateSet',['../class___task_manager_task.html#aca15dfc232b5fec15a5b52382f272b92',1,'_TaskManagerTask']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /doc/html/search/groups_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['task_20code_0',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]], 4 | ['task_20manager_20callable_20subtasks_1',['Task Manager Callable Subtasks',['../group__subtask_macros.html',1,'']]], 5 | ['task_20manager_20macros_2',['Task Manager Macros',['../group__macros.html',1,'']]], 6 | ['taskmanager_3',['TaskManager',['../group___setup.html',1,'Setting up TaskManager'],['../group___task_manager.html',1,'TaskManager']]], 7 | ['taskmanager_20core_20tasks_4',['TaskManager Core Tasks',['../group___task_manager_task.html',1,'']]], 8 | ['taskmanager_20macros_5',['TaskManager Macros',['../group___macros.html',1,'']]], 9 | ['tasks_6',['Tasks',['../group___add.html',1,'Adding Tasks'],['../group___control.html',1,'Controlling Tasks'],['../group___message.html',1,'Messaging Other Tasks'],['../group___task_manager_task.html',1,'TaskManager Core Tasks']]], 10 | ['the_20ring_20class_7',['The ring class',['../group___ring.html',1,'']]], 11 | ['tm_20macros_8',['Basic TM Macros',['../group__primary.html',1,'']]], 12 | ['to_20support_20reentrant_20task_20code_9',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /examples/ex02_buttons_leds_single/ex02_buttons_leds_single.ino: -------------------------------------------------------------------------------- 1 | // Example 01_03 2 | // More complex blinking 3 | // Two LEDs blinking at different rates 4 | // Written with TaskManager 5 | 6 | #include 7 | 8 | #if defined(ARDUINO_ARCH_AVR) 9 | #define LED1 3 10 | #define LED2 5 11 | #define SW1 9 12 | #define SW2 10 13 | #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 14 | #define LED1 19 15 | #define LED2 21 16 | #endif 17 | 18 | void setup() { 19 | pinMode(LED1, OUTPUT); 20 | pinMode(LED2, OUTPUT); 21 | digitalWrite(LED1, LOW); 22 | digitalWrite(LED2, LOW); 23 | TaskMgr.add(1, led1Loop); // Tell TaskManager about the two loop-like procedure tasks 24 | TaskMgr.add(2, led2Loop); 25 | } 26 | // 27 | // note what is missing: void loop() {} 28 | // 29 | 30 | // Task for the first LED 31 | #define LED1TIME 1000 32 | void led1Loop() { 33 | static bool isLow = true; 34 | digitalWrite(LED1, isLow ? HIGH : LOW); 35 | isLow = !isLow; 36 | TaskMgr.yieldDelay(LED1TIME); 37 | } 38 | 39 | // Task for the second LED 40 | #define LED2TIME 700 41 | void led2Loop() { 42 | static bool isLow = true; 43 | digitalWrite(LED2, isLow ? HIGH : LOW); 44 | isLow = !isLow; 45 | TaskMgr.yieldDelay(LED2TIME); 46 | } 47 | -------------------------------------------------------------------------------- /doc/html/search/enumvalues_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ytyield',['YtYield',['../class_task_manager.html#a36210e786c8b94e0858c0df948521318aaa83b744b431450c40569fb787a9cc62',1,'TaskManager']]], 4 | ['ytyieldkill',['YtYieldKill',['../class_task_manager.html#a36210e786c8b94e0858c0df948521318a5c95246258ae22a052d55e6effc4f8dc',1,'TaskManager']]], 5 | ['ytyieldmessage',['YtYieldMessage',['../class_task_manager.html#a36210e786c8b94e0858c0df948521318a021639087baa77a364842df6e78d66fb',1,'TaskManager']]], 6 | ['ytyieldmessagetimeout',['YtYieldMessageTimeout',['../class_task_manager.html#a36210e786c8b94e0858c0df948521318ab3132706adb88e8931bcf3caf9c90182',1,'TaskManager']]], 7 | ['ytyieldsignal',['YtYieldSignal',['../class_task_manager.html#a36210e786c8b94e0858c0df948521318a5520a5cc62f59a79ac9df855695b2aee',1,'TaskManager']]], 8 | ['ytyieldsignaltimeout',['YtYieldSignalTimeout',['../class_task_manager.html#a36210e786c8b94e0858c0df948521318a8ba72bfec1db82ac312c46a4db617e0e',1,'TaskManager']]], 9 | ['ytyieldsuspend',['YtYieldSuspend',['../class_task_manager.html#a36210e786c8b94e0858c0df948521318a7e2896dba2a019465d5f08dc5216d5eb',1,'TaskManager']]], 10 | ['ytyielduntil',['YtYieldUntil',['../class_task_manager.html#a36210e786c8b94e0858c0df948521318a89e00019d0ccda9139d6599e4c9c83c5',1,'TaskManager']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /examples/old/ex01_02_two_LEDs_blinking_no_TM/ex01_02_two_LEDs_blinking_no_TM.ino: -------------------------------------------------------------------------------- 1 | // Example 01_01 2 | // More complex blinking 3 | // Two LEDs blinking at different rates 4 | // Written without TaskManager 5 | 6 | #define LED_1 3 7 | #define LED_2 9 8 | 9 | void setup() { 10 | pinMode(LED_1, OUTPUT); 11 | pinMode(LED_2, OUTPUT); 12 | digitalWrite(LED_1, LOW); 13 | digitalWrite(LED_2, LOW); 14 | } 15 | 16 | // LEDxTIME is how long the LED stays on (or off) 17 | #define LED1TIME 1000 18 | #define LED2TIME 700 19 | void loop() { 20 | static bool led1LOW = true; 21 | static bool led2LOW = true; 22 | static long led1LastTime = millis(); 23 | static long led2LastTime = millis(); 24 | // See if LED1 needs to be flipped, and if so, do it 25 | if(millis()>led1LastTime+LED1TIME) { 26 | digitalWrite(LED1, LED1Low ? HIGH : LOW); // turn the LED on or off, depending on previous state 27 | LED1Low = !LED1Low; // set the new state 28 | led1LastTime = millis(); 29 | } 30 | // see if LED2 needs to be flipped, and if so, do it 31 | if(millis()>led2LastTime+LED2TIME) { 32 | digitalWrite(LED2, LED2Low ? HIGH : LOW); // turn the LED on or off, depending on previous state 33 | LED2Low = !LED2Low; // set the new state 34 | led2LastTime = millis(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /doc/html/search/functions_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['radiobegin_0',['radioBegin',['../class_task_manager.html#a379de9acea847cd98206bb82376a65bc',1,'TaskManager::radioBegin(tm_nodeId_t nodeId, byte cePin, byte csPin)'],['../group___task_manager_radio_e_s_p.html#gac745dd2b71d0d19a30f1fcfc486ae6bd',1,'TaskManager::radioBegin(tm_nodeId_t nodeId, const char *ssid=NULL, const char *pw=NULL)']]], 4 | ['registerpeer_1',['registerPeer',['../group___task_manager_radio_e_s_p.html#ga9123028970afdce95b07e76adcd4b4ce',1,'TaskManager']]], 5 | ['remove_2',['remove',['../group___task_manager_radio_e_s_p.html#ga5b60fbcfd212a38804dbbe4f33dfc756',1,'MessageQueue']]], 6 | ['resetcurrentstatebits_3',['resetCurrentStateBits',['../class___task_manager_task.html#a724cc92b19d6ff576e228343fe608bd9',1,'_TaskManagerTask']]], 7 | ['resume_4',['resume',['../class_task_manager.html#a1bf8c3e66349d6a15a3fe04f555c0480',1,'TaskManager::resume(tm_taskId_t taskId)'],['../class_task_manager.html#a6ffabf2edb1ba7bc18785fc4217a3505',1,'TaskManager::resume(tm_nodeId_t nodeId, tm_taskId_t taskId)']]], 8 | ['resync_5',['resync',['../class_task_manager.html#a4a15939190c8b370c1391963f5445d41',1,'TaskManager']]], 9 | ['ring_6',['ring',['../classring.html#a289cfd3a4d5885e43351277b1d3fb9d9',1,'ring']]], 10 | ['runtime_7',['runtime',['../class_task_manager.html#a966e7f218ea93bfb36020814ed489517',1,'TaskManager']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /doc/html/search/functions_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['taskmanager_0',['TaskManager',['../class_task_manager.html#a491dc7a77a5381675f614a411755ef64',1,'TaskManager']]], 4 | ['timedout_1',['timedOut',['../class_task_manager.html#ae7641b79a5efb0a5e640daa8f623fa5c',1,'TaskManager']]], 5 | ['tmadjustclockoffset_2',['TmAdjustClockOffset',['../_task_manager_8cpp.html#aafcfdd69c11e8baab083ab151fa7d5e9',1,'TmAdjustClockOffset(unsigned long offsetDelta): TaskManager.cpp'],['../_task_manager_core_8h.html#aafcfdd69c11e8baab083ab151fa7d5e9',1,'TmAdjustClockOffset(unsigned long offsetDelta): TaskManager.cpp']]], 6 | ['tmclocksyncclienttask_3',['TmClockSyncClientTask',['../group___clock_sync.html#gabf0243bd85e43fb580e28dc36706923e',1,'TmClockSyncClientTask(): TaskManagerClockSync.cpp'],['../group___clock_sync.html#gabf0243bd85e43fb580e28dc36706923e',1,'TmClockSyncClientTask(): TaskManagerClockSync.cpp']]], 7 | ['tmclocksyncservertask_4',['TmClockSyncServerTask',['../group___clock_sync.html#ga7b4f2cbddc57346a39a0cae178f64ea7',1,'TaskManagerClockSync.cpp']]], 8 | ['tmmillis_5',['TmMillis',['../_task_manager_8cpp.html#a981a8f1703a1e966c32dc7543b2fe19a',1,'TmMillis(): TaskManager.cpp'],['../_task_manager_core_8h.html#a981a8f1703a1e966c32dc7543b2fe19a',1,'TmMillis(): TaskManager.cpp']]], 9 | ['tmradioreceivertask_6',['tmRadioReceiverTask',['../group___task_manager_radio_e_s_p.html#ga0189a1b17878cb115126da8dcf7822ae',1,'TaskManager']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /examples/ex01_02_two_LEDs_blinking_no_TM/ex01_02_two_LEDs_blinking_no_TM.ino: -------------------------------------------------------------------------------- 1 | // Example 01_01 2 | // More complex blinking 3 | // Two LEDs blinking at different rates 4 | // Written without TaskManager 5 | 6 | #if defined(ARDUINO_ARCH_AVR) 7 | #define LED1 3 8 | #define LED2 5 9 | #define SW1 9 10 | #define SW2 10 11 | #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 12 | #define LED1 19 13 | #define LED2 21 14 | #endif 15 | 16 | void setup() { 17 | pinMode(LED1, OUTPUT); 18 | pinMode(LED2, OUTPUT); 19 | digitalWrite(LED1, LOW); 20 | digitalWrite(LED2, LOW); 21 | } 22 | 23 | // LEDxTIME is how long the LED stays on (or off) 24 | #define LED1TIME 1000 25 | #define LED2TIME 150 26 | void loop() { 27 | static bool led1Low = true; 28 | static bool led2Low = true; 29 | static long led1LastTime = millis(); 30 | static long led2LastTime = millis(); 31 | // See if LED1 needs to be flipped, and if so, do it 32 | if(millis()>led1LastTime+LED1TIME) { 33 | digitalWrite(LED1, led1Low ? HIGH : LOW); // turn the LED on or off, depending on previous state 34 | led1Low = !led1Low; // set the new state 35 | led1LastTime = millis(); 36 | } 37 | // see if LED2 needs to be flipped, and if so, do it 38 | if(millis()>led2LastTime+LED2TIME) { 39 | digitalWrite(LED2, led2Low ? HIGH : LOW); // turn the LED on or off, depending on previous state 40 | led2Low = !led2Low; // set the new state 41 | led2LastTime = millis(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /doc/html/doc.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /doc/html/docd.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /doc/html/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_e.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_f.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_11.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_12.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/groups_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/classes_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/classes_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/defines_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_10.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_e.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/functions_f.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/variables_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 |
Loading...
13 |
14 | 19 |
Searching...
20 |
No Matches
21 | 35 |
36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/html/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['add_0',['add',['../group___task_manager_radio_e_s_p.html#ga322c8fb4e8f0ff38acb9389021e3c174',1,'MessageQueue::add()'],['../class_task_manager.html#a3b61b260f5ddd9676f7a6899da40ad9e',1,'TaskManager::add(tm_taskId_t taskId, void(*fn)())']]], 4 | ['addautowaitdelay_1',['addAutoWaitDelay',['../class_task_manager.html#a41d58e9b9e596b19264bb2cbf7c02878',1,'TaskManager']]], 5 | ['addautowaitmessage_2',['addAutoWaitMessage',['../class_task_manager.html#a2c4cd56685a46a66bb3b5a25c1ba8685',1,'TaskManager']]], 6 | ['addwaitdelay_3',['addWaitDelay',['../class_task_manager.html#ad0d87e94ca41ece59e98adba02ba8103',1,'TaskManager']]], 7 | ['addwaitmessage_4',['addWaitMessage',['../class_task_manager.html#a51b5017ee459e0d54a0995c084bd273f',1,'TaskManager']]], 8 | ['addwaituntil_5',['addWaitUntil',['../class_task_manager.html#aef8ccd8e7753e35a483dd8d9203ef8ca',1,'TaskManager']]], 9 | ['allstateset_6',['allStateSet',['../class___task_manager_task.html#a9ef01008d769876d2ded417d10499dfb',1,'_TaskManagerTask']]], 10 | ['anystateset_7',['anyStateSet',['../class___task_manager_task.html#aca15dfc232b5fec15a5b52382f272b92',1,'_TaskManagerTask']]], 11 | ['arduino_8',['TaskManger - Cooperative Multitasking System for Arduino',['../index.html',1,'']]], 12 | ['autorewaitmessage_9',['AutoReWaitMessage',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1ca2f8283cbe157f583c41d07c075b7d106',1,'_TaskManagerTask']]], 13 | ['autorewaituntil_10',['AutoReWaitUntil',['../class___task_manager_task.html#a78e7f482a01af21bc297690062a90f1cafbfe131f0c1b8626e0902881073a8220',1,'_TaskManagerTask']]] 14 | ]; 15 | -------------------------------------------------------------------------------- /doc/html/search/all_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['radiobegin_0',['radioBegin',['../class_task_manager.html#a379de9acea847cd98206bb82376a65bc',1,'TaskManager::radioBegin(tm_nodeId_t nodeId, byte cePin, byte csPin)'],['../group___task_manager_radio_e_s_p.html#gac745dd2b71d0d19a30f1fcfc486ae6bd',1,'TaskManager::radioBegin(tm_nodeId_t nodeId, const char *ssid=NULL, const char *pw=NULL)']]], 4 | ['reentrant_20task_20code_1',['Macros to support reentrant task code',['../group__reentrant.html',1,'']]], 5 | ['registerpeer_2',['registerPeer',['../group___task_manager_radio_e_s_p.html#ga9123028970afdce95b07e76adcd4b4ce',1,'TaskManager']]], 6 | ['remove_3',['remove',['../group___task_manager_radio_e_s_p.html#ga5b60fbcfd212a38804dbbe4f33dfc756',1,'MessageQueue']]], 7 | ['resetcurrentstatebits_4',['resetCurrentStateBits',['../class___task_manager_task.html#a724cc92b19d6ff576e228343fe608bd9',1,'_TaskManagerTask']]], 8 | ['resume_5',['resume',['../class_task_manager.html#a1bf8c3e66349d6a15a3fe04f555c0480',1,'TaskManager::resume(tm_taskId_t taskId)'],['../class_task_manager.html#a6ffabf2edb1ba7bc18785fc4217a3505',1,'TaskManager::resume(tm_nodeId_t nodeId, tm_taskId_t taskId)']]], 9 | ['resync_6',['resync',['../class_task_manager.html#a4a15939190c8b370c1391963f5445d41',1,'TaskManager']]], 10 | ['ring_7',['ring',['../classring.html',1,'ring< T >'],['../classring.html#a289cfd3a4d5885e43351277b1d3fb9d9',1,'ring::ring()']]], 11 | ['ring_3c_20_5ftaskmanagertask_20_3e_8',['ring< _TaskManagerTask >',['../classring.html',1,'']]], 12 | ['runtime_9',['runtime',['../class_task_manager.html#a966e7f218ea93bfb36020814ed489517',1,'TaskManager']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /examples/ex01_03_two_LEDs_blinking_TM/ex01_03_two_LEDs_blinking_TM.ino: -------------------------------------------------------------------------------- 1 | // Example 01_03 2 | // More complex blinking 3 | // Two LEDs blinking at different rates 4 | // Written with TaskManager 5 | 6 | #include 7 | 8 | #if defined(ARDUINO_ARCH_AVR) 9 | #define LED1 3 10 | #define LED2 5 11 | #define SW1 9 12 | #define SW2 10 13 | #define HEARTBEATLED 6 14 | #define BOARDSEL 4 15 | #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 16 | #define LED1 22 17 | #define LED2 23 18 | #define SW1 5 19 | #define SW2 18 20 | #define HEARTBEATLED 32 21 | #define BOARDSEL 33 22 | #endif 23 | 24 | void setup() { 25 | pinMode(LED1, OUTPUT); 26 | pinMode(LED2, OUTPUT); 27 | pinMode(HEARTBEATLED, OUTPUT); 28 | digitalWrite(LED1, LOW); 29 | digitalWrite(LED2, LOW); 30 | digitalWrite(HEARTBEATLED, LOW); 31 | TaskMgr.add(1, led1Loop); // Tell TaskManager about the two loop-like procedure tasks 32 | TaskMgr.add(2, led2Loop); 33 | TaskMgr.addAutoWaitDelay(3, heartbeatTask, 500); 34 | } 35 | // 36 | // note what is missing: void loop() {} 37 | // 38 | 39 | // Task for the first LED 40 | #define LED1TIME 1000 41 | void led1Loop() { 42 | static bool isLow = true; 43 | digitalWrite(LED1, isLow ? HIGH : LOW); 44 | isLow = !isLow; 45 | TaskMgr.yieldDelay(LED1TIME); 46 | } 47 | 48 | // Task for the second LED 49 | #define LED2TIME 700 50 | void led2Loop() { 51 | static bool isLow = true; 52 | digitalWrite(LED2, isLow ? HIGH : LOW); 53 | isLow = !isLow; 54 | TaskMgr.yieldDelay(LED2TIME); 55 | } 56 | 57 | // Heartbeat task 58 | void heartbeatTask() { 59 | static bool isLow = true; 60 | digitalWrite(HEARTBEATLED, isLow ? HIGH : LOW); 61 | isLow = !isLow; 62 | } 63 | -------------------------------------------------------------------------------- /examples/ex03_01b_simple_receive/ex03_01b_simple_receive.ino: -------------------------------------------------------------------------------- 1 | // TaskManager 2.0 test 3 2 | // Simple receive, a partner of simple send 3 | // During basic testing, be sure to set the ESP/AVR _RF flag appropriately 4 | 5 | #if defined(ARDUINO_ARCH_AVR) 6 | #include 7 | #include 8 | #define CE_PIN 9 9 | #define CSN_PIN 10 10 | #else 11 | #include 12 | #endif 13 | 14 | #if defined(ARDUINO_ARCH_AVR) 15 | #define LED1 3 16 | #define LED2 5 17 | #define SW1 7 18 | #define SW2 8 19 | #define CE_PIN 9 20 | #define CSN_PIN 10 21 | // Note: D14 is also A0 on Nano, Uno. 22 | #define HEARTBEATLED 14 23 | #define BOARDSEL 4 24 | #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 25 | #define LED1 22 26 | #define LED2 23 27 | #define LED2PWMCHANNEL 0 28 | #define SW1 5 29 | #define SW2 18 30 | #define HEARTBEATLED 32 31 | #define BOARDSEL 33 32 | #endif 33 | 34 | void setup() { 35 | // put your setup code here, to run once: 36 | Serial.begin(115200); 37 | Serial.println("Receiver starting."); 38 | pinMode(HEARTBEATLED, OUTPUT); 39 | 40 | #if defined(ARDUINO_ARCH_AVR) 41 | TaskMgr.radioBegin(2, CE_PIN, CSN_PIN); 42 | #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 43 | TaskMgr.radioBegin(2); 44 | #endif 45 | 46 | TaskMgr.addAutoWaitDelay(1, heartbeatTask, 500); 47 | TaskMgr.addAutoWaitMessage(2, receiverTask); 48 | } 49 | 50 | // Heartbeat task 51 | void heartbeatTask() { 52 | static bool isLow = true; 53 | digitalWrite(HEARTBEATLED, isLow ? HIGH : LOW); 54 | isLow = !isLow; 55 | } 56 | 57 | void receiverTask() { 58 | char* theMsg; 59 | theMsg = (char*)TaskMgr.getMessage(); 60 | Serial.print("Received ["); Serial.print(theMsg); Serial.println("]"); 61 | } 62 | -------------------------------------------------------------------------------- /doc/docbook/index.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TaskManager 5 | 6 | 7 | TaskManger - Cooperative Multitasking System for Arduino 8 | 9 | 10 | 11 | Module Documentation 12 | 13 | 14 | 15 | 16 | 17 | Class Documentation 18 | 19 | 20 | 21 | 22 | 23 | File Documentation 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /examples/ex03_01a_simple_send/ex03_01a_simple_send.ino: -------------------------------------------------------------------------------- 1 | // TaskManager 2.0 test 3 2 | // Simple send, a partner of simple receive 3 | // During basic testing, be sure to set the ESP/AVR _RF flag appropriately 4 | 5 | #if defined(ARDUINO_ARCH_AVR) 6 | #include 7 | #include 8 | #define CE_PIN 9 9 | #define CSN_PIN 10 10 | #else 11 | #include 12 | #endif 13 | 14 | #if defined(ARDUINO_ARCH_AVR) 15 | #define LED1 3 16 | #define LED2 5 17 | #define SW1 7 18 | #define SW2 8 19 | #define CE_PIN 9 20 | #define CSN_PIN 10 21 | // Note: D14 is also A0 on Nano, Uno. 22 | #define HEARTBEATLED 14 23 | #define BOARDSEL 4 24 | #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 25 | #define LED1 22 26 | #define LED2 23 27 | #define LED2PWMCHANNEL 0 28 | #define SW1 5 29 | #define SW2 18 30 | #define HEARTBEATLED 32 31 | #define BOARDSEL 33 32 | #endif 33 | 34 | void setup() { 35 | // put your setup code here, to run once: 36 | Serial.begin(115200); 37 | Serial.println("Sender starting."); 38 | pinMode(HEARTBEATLED, OUTPUT); 39 | 40 | #if defined(ARDUINO_ARCH_AVR) 41 | TaskMgr.radioBegin(1, CE_PIN, CSN_PIN); 42 | #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) 43 | TaskMgr.radioBegin(1); 44 | TaskMgr.registerPeer(2); 45 | #endif 46 | 47 | TaskMgr.addAutoWaitDelay(1, heartbeatTask,500); 48 | TaskMgr.addAutoWaitDelay(2, senderTask, 2500); 49 | } 50 | 51 | // Heartbeat task 52 | void heartbeatTask() { 53 | static bool isLow = true; 54 | digitalWrite(HEARTBEATLED, isLow ? HIGH : LOW); 55 | isLow = !isLow; 56 | } 57 | 58 | void senderTask() { 59 | char buf[25]; 60 | static int msgID = 1; 61 | sprintf(buf, "This is message %d", msgID++); 62 | Serial.print("Sending ["); Serial.print(buf); Serial.println("]"); 63 | TaskMgr.sendMessage(2, 2, buf); 64 | } 65 | -------------------------------------------------------------------------------- /examples/old/TaskManager Book/01 TaskManager Basics/01 Why TaskManager/ch1_blink_2_tm/ch1_blink_2_tm.ino: -------------------------------------------------------------------------------- 1 | // 2 | // Blink two LEDs at different rates 3 | // Respond to a switch on the third LED 4 | // 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | #define LED_1_PORT 2 11 | bool led_1_state; 12 | 13 | #define LED_2_PORT 3 14 | bool led_2_state; 15 | 16 | #define LED_3_PORT 4 17 | #define SWITCH_PORT 5 18 | bool led_3_state; 19 | bool switchIsPressed; 20 | 21 | void setup() { 22 | pinMode(LED_1_PORT, OUTPUT); 23 | digitalWrite(LED_1_PORT, LOW); 24 | led_1_state = LOW; 25 | 26 | pinMode(LED_2_PORT, OUTPUT); 27 | digitalWrite(LED_2_PORT, LOW); 28 | led_2_state = LOW; 29 | 30 | pinMode(LED_3_PORT, OUTPUT); 31 | pinMode(SWITCH_PORT, INPUT_PULLUP); 32 | digitalWrite(LED_3_PORT, LOW); 33 | led_3_state = LOW; 34 | switchIsPressed = false; 35 | 36 | TaskMgr.add(1, loop_led_1); 37 | TaskMgr.add(2, loop_led_2); 38 | TaskMgr.add(3, loop_led_3); 39 | } 40 | 41 | void loop_led_1() { 42 | led_1_state = (led_1_state==LOW) ? HIGH : LOW; 43 | digitalWrite(LED_1_PORT, led_1_state); 44 | TaskMgr.yieldDelay(500); 45 | } 46 | 47 | void loop_led_2() { 48 | led_2_state = (led_2_state==LOW) ? HIGH : LOW; 49 | digitalWrite(LED_2_PORT, led_2_state); 50 | TaskMgr.yieldDelay(100); 51 | } 52 | 53 | void loop_led_3() { 54 | if(digitalRead(SWITCH_PORT)==LOW/*==pressed/closed*/) { 55 | if(!switchIsPressed) { 56 | // someone pressed the switch 57 | led_3_state = (led_3_state==LOW) ? HIGH : LOW; 58 | digitalWrite(LED_3_PORT, led_3_state); 59 | switchIsPressed = true; 60 | TaskMgr.yieldDelay(50); // debounce 61 | } 62 | } else if(switchIsPressed /* we know switchPort==HIGH/open */) { 63 | switchIsPressed = false; 64 | TaskMgr.yieldDelay(50); // debounce 65 | } 66 | } 67 | 68 | -------------------------------------------------------------------------------- /examples/RF_tests/test1_receiver/test1_receiver.ino: -------------------------------------------------------------------------------- 1 | // RF24 TEST1 receiver 2 | // SMP 3 | // 2015-1003 Ver. 1.0 4 | // 2019-1018 Nano/Mega version 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | // Pick a board -- uncomment ONE of these 11 | #define NANO 12 | //#define MEGA 13 | 14 | #define PRINTING 1 15 | 16 | // which pin the LED is on 17 | #if defined(NANO) 18 | #define LED 3 19 | #elif defined(MEGA) 20 | #define LED 13 21 | #endif 22 | 23 | // and where the radio is 24 | #if defined(NANO) 25 | #define RF24_CE 7 26 | #define RF24_CSN 8 27 | #elif defined(MEGA) 28 | #define RF24_CE 31 29 | #define RF24_CSN 30 30 | #endif 31 | #define PIPE_ID "TEST1\0\0\0" 32 | 33 | RF24 radio(RF24_CE, RF24_CSN); 34 | 35 | int count; // how many radio reads 36 | 37 | struct Packet { 38 | int count; 39 | int val; 40 | }; 41 | 42 | Packet packet; 43 | 44 | void setup() { 45 | // put your setup code here, to run once: 46 | #if PRINTING>0 47 | Serial.begin(115200); 48 | Serial.println("v1.2 Receiver starting"); 49 | #endif 50 | 51 | pinMode(LED, OUTPUT); 52 | digitalWrite(LED, HIGH); 53 | delay(1000); 54 | digitalWrite(LED, LOW); 55 | 56 | long realPipeID; 57 | memcpy(&realPipeID, PIPE_ID, sizeof(long)); 58 | radio.begin(); 59 | //radio.setDataRate( RF24_250KBPS ); 60 | radio.openReadingPipe(1, realPipeID); 61 | radio.startListening(); 62 | 63 | count = 0; 64 | } 65 | 66 | void loop() { 67 | //Serial.println("hello"); 68 | int radioData; 69 | if(radio.available()) { 70 | Serial.println("Data received"); 71 | radio.read(&packet, sizeof(Packet)); 72 | radioData = packet.val; 73 | digitalWrite(LED, radioData==0?LOW:HIGH); 74 | 75 | #if PRINTING>0 76 | Serial.print(count++); 77 | Serial.print(" -> ["); 78 | Serial.print(packet.count); 79 | Serial.print(", "); 80 | Serial.print(packet.val); 81 | Serial.println("]"); 82 | #endif 83 | } 84 | 85 | } 86 | -------------------------------------------------------------------------------- /doc/html/folderclosed.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /doc/html/folderclosedd.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | --------------------------------------------------------------------------------