16#include "../kernel/xf_task_base.h"
17#include "../port/xf_task_port_internal.h"
102 return *(
float *)args;
130 *(
int *)args = value;
151 *(
float *)args = value;
207 if (item->
name == name) {
245 task->compare = NULL;
267 int32_t timeout = time_ticks - handle->
base.
wake_up;
354 if (item->
name == name) {
407 if (item->
name == name) {
uint32_t xf_ntask_get_lc(xf_task_t *task, const char *name)
获取上下文位置 (给宏调用)
enum _xf_ntask_status_t xf_ntask_status_t
xf_err_t xf_ntask_args_set_float(xf_task_t *task, const char *name, float value)
保存浮点变量
void xf_ntask_set_compare(xf_task_t task, xf_ntask_compare_func_t compare)
设置比较函数,回调函数返回 0,则任务继续进行,单次有效
xf_err_t xf_ntask_args_set_array(xf_task_t *task, const char *name, void *value, unsigned int size, unsigned int len)
保存数组
xf_ntask_status_t xf_ntask_get_exit_status(xf_task_t *task)
获取退出状态 (给宏调用)
int(* xf_ntask_compare_func_t)(xf_task_t task)
xf_err_t xf_ntask_set_lc(xf_task_t *task, const char *name, uint32_t lc)
设置上下文位置 (给宏调用)
xf_err_t xf_ntask_args_set_int(xf_task_t *task, const char *name, int value)
保存整数变量
bool xf_ntask_lc_is_first(xf_task_t *task, const char *name)
获取是否是最外层函数
void * xf_ntask_args_get_array(xf_task_t *task, const char *name)
获取保存的数组
#define XF_TASK_TYPE_NTASK
ntask 类型值。 XF_TASK_TYPE_ntask 通过 xf_task_reg.inc 拼接而来。
xf_err_t xf_ntask_set_exit_status(xf_task_t *task, xf_ntask_status_t status)
设置退出状态 (给宏调用)
int xf_ntask_args_get_int(xf_task_t *task, const char *name)
获取保存的整数变量
float xf_ntask_args_get_float(xf_task_t *task, const char *name)
获取保存的浮点变量
#define BITS_SET0(var, bits_mask)
设置 32 位变量 var 的对应位掩码 bits_mask 为 1 的地方为 0。
#define BITS_SET1(var, bits_mask)
设置 32 位变量 var 的对应位掩码 bits_mask 为 1 的地方为 1。
#define BITS_CHECK(src, bits_mask)
检查变量 var 在 bits_mask 的位置上是否存在 1。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
static void xf_list_init(xf_list_t *list)
动态初始化链表.
static void xf_list_add_tail(xf_list_t *new_node, xf_list_t *head)
xf_list_add_tail - 在指定节点之前添加一个 new_node.
static void xf_list_del_init(xf_list_t *entry)
xf_list_del_init - 从链表中删除节点, 并重新初始化.
#define xf_list_first_entry(ptr, type, member)
xf_list_first_entry - 获取链表中的第一个元素.
#define xf_list_for_each_entry_safe(pos, n, head, type, member)
list_for_each_entry_safe - 安全地迭代给定类型的链表,可删除链表节点。
#define xf_list_for_each_entry(pos, head, type, member)
list_for_each_entry - 迭代给定类型的链表。
#define xf_strcmp(dest, src)
#define xf_memcpy(dest, src, n)
xf_ntask_compare_func_t compare
task 的父对象,保存了 task 的公共属性。
虚函数表,不在 base 对象实现,由子对象完成实现。
const xf_task_create_t constructor
static void task(xf_task_t task)
#define XF_LOGE(tag, format,...)
static void xf_ntask_event_handle(xf_task_t task)
static void xf_ntask_time_handle(xf_task_t task, uint32_t time_ticks)
static void xf_ntask_args_remove_all(xf_list_t *head)
static void xf_ntask_reset(xf_task_t task)
static xf_err_t xf_ntask_args_set(xf_list_t *head, const char *name, void *args)
struct _xf_ntask_lc_t xf_ntask_lc_t
static xf_ntask_lc_t * xf_ntask_lc_find(xf_list_t *head, const char *name)
static void xf_ntask_exec(xf_task_manager_t manager)
static void * xf_ntask_args_find(xf_list_t *head, const char *name)
void xf_ntask_vfunc_register(void)
static void * xf_ntask_args_create(xf_list_t *head, const char *name, unsigned int size, unsigned int len)
struct _xf_ntask_handle_t xf_ntask_handle_t
static const xf_task_vfunc_t _ntask_vfunc
static void xf_ntask_lc_remove_all(xf_list_t *head)
static xf_task_time_t xf_ntask_update(xf_task_t task)
static xf_task_t xf_ntask_constructor(xf_task_manager_t manager, xf_task_func_t func, void *func_arg, uint16_t priority, void *config)
struct _xf_ntask_args_t xf_ntask_args_t
static xf_ntask_lc_t * xf_ntask_lc_create(xf_list_t *head, const char *name)
void xf_task_base_init(xf_task_base_t *task_base, xf_task_manager_t manager, xf_task_type_t type, uint16_t priority, xf_task_func_t func, void *arg)
task 初始化。
xf_err_t xf_task_base_set_state(xf_task_t task, xf_task_state_t state)
task 设置状态。
void xf_task_base_reset(xf_task_base_t *task_base)
重置 task base 部分内容
xf_err_t xf_task_vfunc_register(xf_task_type_t type, const xf_task_vfunc_t *vfunc)
task 的虚函数注册。
#define XF_TASK_SIGNAL_EVENT
#define XF_TASK_SIGNAL_TIMEOUT
#define XF_TASK_SIGNAL_READY
XF_TASK_TIME_TYPE xf_task_time_t
xf_task 时间戳类型。
void xf_task_delete(xf_task_t task)
任务删除函数。将任务加入销毁队列,并设置任务为删除态。
void(* xf_task_func_t)(xf_task_t task)
任务调用函数原型。
xf_task_t xf_task_manager_get_current_task(xf_task_manager_t manager)
获取管理器运行的任务。
void * xf_task_manager_t
任务管理器句柄。
xf_task_time_t xf_task_get_ticks(void)
int32_t xf_task_ticks_to_msec(int32_t ticks)