|
2 | 2 |
|
3 | 3 | ## Summary and what's supports: |
4 | 4 |
|
5 | | -TaskManagerIO is an evolution of the task management class that was originally situated in IoAbstraction. It has been broken out, improved to support events, and threaded access. We are in a new era of embedded development, where RTOS, multiple threads (and even cores) have become a relatity. To make task manager viable going forward, it needed to be capable in these environment, while still protecting tasks from multithreaded concerns. We are pleased to say, this version meets both goals. |
| 5 | +TaskManagerIO is an evolution of the task management class that was originally situated in IoAbstraction. It is backed by a simple queue that supports, immediate queuing, scheduled tasks, and events. It is safe to add tasks from another thread, and safe to trigger events from interrupts. However, your tasks are shielded from threads and interrupts making your code simpler. |
6 | 6 |
|
7 | | -Importantly, any sketch that worked on IoAbstraction task manager will work with this library unaffected. Below, we list the main features of TaskManagerIO: |
| 7 | +We are in a new era of embedded development, where RTOS, multiple threads (and even cores) have become a relatity. Any viable task manager needs to be capable in these environments, while still protecting tasks from multithreaded concerns. We are pleased to say, this version meets both goals. Importantly, any sketch that worked on IoAbstraction task manager will work with this library unaffected. |
| 8 | + |
| 9 | +Below, we list the main features of TaskManagerIO: |
8 | 10 |
|
9 | 11 | * Simple coroutines style task management, execute now, at a point in time, or on a schedule. |
10 | 12 | * Your tasks do not need to be thread or interrupt safe, they will only be called from task manager. |
11 | 13 | * Ability to add events that can be triggered from different threads or interrupts, for either delayed or ASAP execution. Again, always called on the task manager thread. |
12 | 14 | * Polled event based programming where you set a schedule to be asked if your event is ready to fire. |
13 | 15 | * Marshalled interrupt support, where task manager handles the raw interrupt ISR, and then calls your interrupt task. |
14 | 16 |
|
15 | | -## Further documentation and getting help |
16 | | - |
17 | | -* [TaskManagerIO documentation pages](https://www.thecoderscorner.com/products/arduino-libraries/taskmanager-io/) |
18 | | -* [TaskManagerIO reference documentation](https://www.thecoderscorner.com/ref-docs/taskmanagerio/html) |
19 | | -* [TCC Libraries community discussion forum](https://www.thecoderscorner.com/jforum/) |
20 | | -* I also monitor the Arduino forum [https://forum.arduino.cc/], Arduino related questions can be asked there too. |
21 | | - |
22 | | -### Known working and supported boards: |
23 | | - |
24 | | -| CPU / OS | Boards using CPU | Status | Threading | |
25 | | -| --------- | ----------------- | --------- | ---------- | |
26 | | -| ARM mbed | STM32, nRF. | Supported | CAS locking| |
27 | | -| ESP8266 | Node MCU, Huzzah | Supported | Interrupt | |
28 | | -| ESP32 | Wifi32, Huzzah32 | Supported | CAS locking| |
29 | | -| SAMD ARM | MKR, IoT, Zero. | Supported | Interrupt | |
30 | | -| AVR | Uno, Mega Mighty | Supported | Interrupt | |
31 | | -| nRF52840 | Nano BLE | Supported | CAS locking| |
32 | | -| Particle | Photon | Supported | Interrupt | |
33 | | - |
34 | | -Note: if you are using a bare-metal mbed build (non-RTOS) on platformIO, for the moment please add an extra build flag: `PIO_NEEDS_RTOS_WORKAROUND` as a short term fix while a long term solution is determined. See issue [#17](https://github.com/davetcc/TaskManagerIO/issues/17). |
35 | | - |
36 | | -Many thanks to contributors for helping us to confirm that this software runs on a wide range of hardware. |
37 | | - |
38 | | -### Threading key: |
39 | | - |
40 | | -* CAS locking: Protected against access even by multiple cores by using CAS task locking |
41 | | -* Interrupt: Single core device that is protected by an atomic noInterrupt block |
42 | | - |
43 | 17 | ## Getting started with taskManager |
44 | 18 |
|
45 | 19 | Here we just demonstrate the most basic usage. Take a look at the examples for more complex cases, or the reference documentation that's built from the source. |
@@ -91,6 +65,34 @@ Then in the loop method you need to call: |
91 | 65 | } |
92 | 66 | ``` |
93 | 67 |
|
| 68 | +## Further documentation and getting help |
| 69 | + |
| 70 | +* [TaskManagerIO documentation pages](https://www.thecoderscorner.com/products/arduino-libraries/taskmanager-io/) |
| 71 | +* [TaskManagerIO reference documentation](https://www.thecoderscorner.com/ref-docs/taskmanagerio/html) |
| 72 | +* [TCC Libraries community discussion forum](https://www.thecoderscorner.com/jforum/) |
| 73 | +* I also monitor the Arduino forum [https://forum.arduino.cc/], Arduino related questions can be asked there too. |
| 74 | + |
| 75 | +### Known working and supported boards: |
| 76 | + |
| 77 | +| CPU / OS | Boards using CPU | Status | Threading | |
| 78 | +| --------- | ----------------- | --------- | ---------- | |
| 79 | +| ARM mbed | STM32, nRF. | Supported | CAS locking| |
| 80 | +| ESP8266 | Node MCU, Huzzah | Supported | Interrupt | |
| 81 | +| ESP32 | Wifi32, Huzzah32 | Supported | CAS locking| |
| 82 | +| SAMD ARM | MKR, IoT, Zero. | Supported | Interrupt | |
| 83 | +| AVR | Uno, Mega Mighty | Supported | Interrupt | |
| 84 | +| nRF52840 | Nano BLE | Supported | CAS locking| |
| 85 | +| Particle | Photon | Supported | Interrupt | |
| 86 | + |
| 87 | +Note: if you are using a bare-metal mbed build (non-RTOS) on platformIO, for the moment please add an extra build flag: `PIO_NEEDS_RTOS_WORKAROUND` as a short term fix while a long term solution is determined. See issue [#17](https://github.com/davetcc/TaskManagerIO/issues/17). |
| 88 | + |
| 89 | +Many thanks to contributors for helping us to confirm that this software runs on a wide range of hardware. |
| 90 | + |
| 91 | +### Threading key: |
| 92 | + |
| 93 | +* CAS locking: Protected against access even by multiple cores by using CAS task locking |
| 94 | +* Interrupt: Single core device that is protected by an atomic noInterrupt block |
| 95 | + |
94 | 96 | ## What is TaskManagerIO? |
95 | 97 |
|
96 | 98 | TaskManagerIO library is not a full RTOS, rather it can be used on top of FreeRTOS via ESP32 or mbed RTOS. It is a complimentary technology that can assist with certain types of work-load. It has a major advantage, that the same code runs on many platforms as listed above. It is a core building block of [IoAbstraction](https://github.com/davetcc/IoAbstraction) and [tcMenu framework](https://github.com/davetcc/IoAbstraction) |
|
0 commit comments