123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /**
- * @file lv_task.c
- * An 'lv_task' is a void (*fp) (void* param) type function which will be called periodically.
- * A priority (5 levels + disable) can be assigned to lv_tasks.
- */
- #ifndef LV_TASK_H
- #define LV_TASK_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*********************
- * INCLUDES
- *********************/
- #include <stdint.h>
- #include <stdbool.h>
- #include "lv_mem.h"
- #include "lv_ll.h"
- /*********************
- * DEFINES
- *********************/
- #ifndef LV_ATTRIBUTE_TASK_HANDLER
- #define LV_ATTRIBUTE_TASK_HANDLER
- #endif
- /**********************
- * TYPEDEFS
- **********************/
- /**
- * Possible priorities for lv_tasks
- */
- typedef enum
- {
- LV_TASK_PRIO_OFF = 0,
- LV_TASK_PRIO_LOWEST,
- LV_TASK_PRIO_LOW,
- LV_TASK_PRIO_MID,
- LV_TASK_PRIO_HIGH,
- LV_TASK_PRIO_HIGHEST,
- LV_TASK_PRIO_NUM,
- }lv_task_prio_t;
- /**
- * Descriptor of a lv_task
- */
- typedef struct
- {
- uint32_t period;
- uint32_t last_run;
- void (*task) (void*);
- void * param;
- uint8_t prio:3;
- uint8_t once:1;
- }lv_task_t;
- /**********************
- * GLOBAL PROTOTYPES
- **********************/
- /**
- * Init the lv_task module
- */
- void lv_task_init(void);
- /**
- * Call it periodically to handle lv_tasks.
- */
- LV_ATTRIBUTE_TASK_HANDLER void lv_task_handler(void);
- /**
- * Create a new lv_task
- * @param task a function which is the task itself
- * @param period call period in ms unit
- * @param prio priority of the task (LV_TASK_PRIO_OFF means the task is stopped)
- * @param param free parameter
- * @return pointer to the new task
- */
- lv_task_t* lv_task_create(void (*task) (void *), uint32_t period, lv_task_prio_t prio, void * param);
- /**
- * Delete a lv_task
- * @param lv_task_p pointer to task created by lv_task_p
- */
- void lv_task_del(lv_task_t* lv_task_p);
- /**
- * Set new priority for a lv_task
- * @param lv_task_p pointer to a lv_task
- * @param prio the new priority
- */
- void lv_task_set_prio(lv_task_t* lv_task_p, lv_task_prio_t prio);
- /**
- * Set new period for a lv_task
- * @param lv_task_p pointer to a lv_task
- * @param period the new period
- */
- void lv_task_set_period(lv_task_t* lv_task_p, uint32_t period);
- /**
- * Make a lv_task ready. It will not wait its period.
- * @param lv_task_p pointer to a lv_task.
- */
- void lv_task_ready(lv_task_t* lv_task_p);
- /**
- * Delete the lv_task after one call
- * @param lv_task_p pointer to a lv_task.
- */
- void lv_task_once(lv_task_t * lv_task_p);
- /**
- * Reset a lv_task.
- * It will be called the previously set period milliseconds later.
- * @param lv_task_p pointer to a lv_task.
- */
- void lv_task_reset(lv_task_t* lv_task_p);
- /**
- * Enable or disable the whole lv_task handling
- * @param en: true: lv_task handling is running, false: lv_task handling is suspended
- */
- void lv_task_enable(bool en);
- /**
- * Get idle percentage
- * @return the lv_task idle in percentage
- */
- uint8_t lv_task_get_idle(void);
- /**********************
- * MACROS
- **********************/
- #ifdef __cplusplus
- } /* extern "C" */
- #endif
- #endif
|