add event-driven framework
see examples/event_driven_at_module and examples/event_driven_hello_world, demo project: TencentOS-tiny\board\TencentOS_tiny_EVB_MX\KEIL\event_driven_hello_world
This commit is contained in:
82
kernel/evtdrv/include/tos_evtdrv_timer.h
Normal file
82
kernel/evtdrv/include/tos_evtdrv_timer.h
Normal file
@@ -0,0 +1,82 @@
|
||||
#ifndef _TOS_EVTDRV_TIMER_H_
|
||||
#define _TOS_EVTDRV_TIMER_H_
|
||||
|
||||
#define EVTDRV_TIME_MILLISEC_PER_SEC (1000u)
|
||||
|
||||
typedef enum evtdrv_timer_option_en {
|
||||
EVTDRV_TIMER_OPT_ONESHOT,
|
||||
EVTDRV_TIMER_OPT_PERIODIC,
|
||||
} evtdrv_timer_opt_t;
|
||||
|
||||
typedef void (*evtdrv_timer_callback_t)(void *arg);
|
||||
|
||||
typedef struct evtdrv_timer_st {
|
||||
evtdrv_timer_callback_t cb;
|
||||
void *cb_arg;
|
||||
|
||||
k_list_t list;
|
||||
evtdrv_tick_t expires;
|
||||
evtdrv_tick_t period;
|
||||
|
||||
evtdrv_timer_opt_t opt;
|
||||
} evtdrv_timer_t;
|
||||
|
||||
typedef struct evtdrv_timer_control_st {
|
||||
evtdrv_tick_t next_expires;
|
||||
evtdrv_tick_t list;
|
||||
} evtdrv_timer_ctl_t;
|
||||
|
||||
/**
|
||||
* @brief Create a timer.
|
||||
* Create a timer.
|
||||
*
|
||||
* @attention
|
||||
*
|
||||
* @param[in] tmr pointer to the handler of the timer.
|
||||
* @param[in] callback callback function called when the timer expires.
|
||||
* @param[in] cb_arg argument for the callback.
|
||||
* @param[in] opt option for the function call.
|
||||
*
|
||||
* @return errcode
|
||||
* @retval #EVTDRV_ERR_PTR_NULL task_id is invalid.
|
||||
* @retval #EVTDRV_ERR_NONE event_flags is not valid for user use.
|
||||
*/
|
||||
__API__ evtdrv_err_t tos_evtdrv_timer_create(evtdrv_timer_t *tmr,
|
||||
evtdrv_timer_callback_t callback,
|
||||
void *cb_arg,
|
||||
evtdrv_timer_opt_t opt);
|
||||
|
||||
/**
|
||||
* @brief Start a timer.
|
||||
* Start the timer to run.
|
||||
*
|
||||
* @attention None
|
||||
*
|
||||
* @param[in] tmr pointer to the handler of the timer.
|
||||
*
|
||||
* @return errcode
|
||||
* @retval #EVTDRV_ERR_PTR_NULL tmr is a NULL pointer.
|
||||
* @retval #EVTDRV_ERR_TIMER_ALREADY_EXIST tmr is already exist.
|
||||
* @retval #EVTDRV_ERR_NONE return successfully.
|
||||
*/
|
||||
__API__ evtdrv_err_t tos_evtdrv_timer_start(evtdrv_timer_t *tmr, evtdrv_tick_t timeout);
|
||||
|
||||
/**
|
||||
* @brief Stop a timer.
|
||||
* Stop the timer from running.
|
||||
*
|
||||
* @attention None
|
||||
*
|
||||
* @param[in] tmr pointer to the handler of the timer.
|
||||
*
|
||||
* @return errcode
|
||||
* @retval #EVTDRV_ERR_PTR_NULL tmr is a NULL pointer.
|
||||
* @retval #EVTDRV_ERR_TIMER_INACTIVE the timer is not active yet.
|
||||
* @retval #EVTDRV_ERR_NONE return successfully.
|
||||
*/
|
||||
__API__ evtdrv_err_t tos_evtdrv_timer_stop(evtdrv_timer_t *tmr);
|
||||
|
||||
__KERNEL__ void evtdrv_timer_update(void);
|
||||
|
||||
#endif /* _TOS_EVTDRV_TIMER_H_ */
|
||||
|
Reference in New Issue
Block a user