Add New Tasking I/F and rework GPIO, UART, etc to support it
As with the last commit this rolls up the follwowing, but include the various
review comments on the PR.
- **Documentation changes**. I've added the taks FAQ as a stub new Extension
developer FAQ, and split the old FAQ into a Lua Developer FAQ and a Hardware
FAQ.
- **Tasking I/F**. New `app/task/Makefile`, `app/task/task.c`,
`app/include/task/task.h` and `app/Makefile` as per previous commit. Cascade
changes to `app/driver/uart.c`, `app/include/driver/uart.h`,
`app/user/user_main.c` and `app/modules/node.c`
- **GPIO Rework** to `app/modules/gpio.c` and `pin_map.[hc]`, `platform.[hc]`
in `app/platform`
- **Other Optimisations** Move the `platform_*_exists()` from
`app/platform/common.c` to static inline declarations in `platform.h` as
this generates faster, smaller code. Move lgc.a routines out of iram0.
2016-02-17 18:13:17 +01:00
|
|
|
#ifndef _TASK_H_
|
|
|
|
#define _TASK_H_
|
|
|
|
|
|
|
|
#include "ets_sys.h"
|
|
|
|
#include "osapi.h"
|
|
|
|
#include "os_type.h"
|
|
|
|
|
|
|
|
/* use LOW / MEDIUM / HIGH since it isn't clear from the docs which is higher */
|
|
|
|
|
|
|
|
#define TASK_PRIORITY_LOW 0
|
|
|
|
#define TASK_PRIORITY_MEDIUM 1
|
|
|
|
#define TASK_PRIORITY_HIGH 2
|
|
|
|
#define TASK_PRIORITY_COUNT 3
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Signals are a 32-bit number of the form header:14; count:16, priority:2. The header
|
|
|
|
* is just a fixed fingerprint and the count is allocated serially by the task get_id()
|
|
|
|
* function.
|
|
|
|
*/
|
2016-03-02 00:37:41 +01:00
|
|
|
#define task_post(priority,handle,param) system_os_post(priority, ((handle) | priority), param)
|
|
|
|
#define task_post_low(handle,param) task_post(TASK_PRIORITY_LOW, handle, param)
|
|
|
|
#define task_post_medium(handle,param) task_post(TASK_PRIORITY_MEDIUM, handle, param)
|
|
|
|
#define task_post_high(handle,param) task_post(TASK_PRIORITY_HIGH, handle, param)
|
Add New Tasking I/F and rework GPIO, UART, etc to support it
As with the last commit this rolls up the follwowing, but include the various
review comments on the PR.
- **Documentation changes**. I've added the taks FAQ as a stub new Extension
developer FAQ, and split the old FAQ into a Lua Developer FAQ and a Hardware
FAQ.
- **Tasking I/F**. New `app/task/Makefile`, `app/task/task.c`,
`app/include/task/task.h` and `app/Makefile` as per previous commit. Cascade
changes to `app/driver/uart.c`, `app/include/driver/uart.h`,
`app/user/user_main.c` and `app/modules/node.c`
- **GPIO Rework** to `app/modules/gpio.c` and `pin_map.[hc]`, `platform.[hc]`
in `app/platform`
- **Other Optimisations** Move the `platform_*_exists()` from
`app/platform/common.c` to static inline declarations in `platform.h` as
this generates faster, smaller code. Move lgc.a routines out of iram0.
2016-02-17 18:13:17 +01:00
|
|
|
|
|
|
|
#define task_handle_t os_signal_t
|
|
|
|
#define task_param_t os_param_t
|
|
|
|
|
|
|
|
typedef void (*task_callback_t)(task_param_t param, uint8 prio);
|
|
|
|
|
|
|
|
bool task_init_handler(uint8 priority, uint8 qlen);
|
|
|
|
task_handle_t task_get_id(task_callback_t t);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|