Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

修改API内核文档 #395

Merged
merged 5 commits into from
Aug 17, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 49 additions & 10 deletions doc/05.SDK_Manual.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ k_err_t tos_knl_sched_lock(void);
K_ERR_KNL_NOT_RUNNING 内核并未处于运行状态。

K_ERR_LOCK_NESTING_OVERFLOW 调度锁溢出。

K_ERR_IN_IRQ 在中断服务程序ISR中上锁

### tos_knl_sched_unlock

Expand All @@ -145,6 +147,8 @@ k_err_t tos_knl_sched_unlock(void);
K_ERR_KNL_NOT_RUNNING 内核并未处于运行状态。

K_ERR_SCHED_NOT_LOCKED 内核调度并未处于锁定状态。

K_ERR_IN_IRQ 在中断服务程序ISR中卸锁

## 任务管理

Expand Down Expand Up @@ -316,6 +320,14 @@ k_err_t tos_task_delay(k_tick_t delay);

K_ERR_DELAY_ZERO delay 值为零(非法)。

K_ERR_IN_IRQ 试图在中断服务程序ISR延时

K_ERR_SCHED_LOCKED 已经上锁( 上锁后不能延时当前任务 否则导致无法调度)

K_ERR_DELAY_FOREVER 使用suspend 代替这个forever 的delay



### tos_task_delay_abort

```c
Expand All @@ -340,6 +352,15 @@ k_err_t tos_task_delay_abort(k_task_t *task);

K_ERR_TASK_SUSPENDED task 被挂起(suspend)。

K_ERR_IN_IRQ 试图在中断服务程序ISR取消延时

K_ERR_OBJ_PTR_NULL 传入的task任务为Null Ptr

K_ERR_OBJ_INVALID 传入的task任务不是一个Kernel对象




### tos_task_suspend

```c
Expand All @@ -362,6 +383,12 @@ k_err_t tos_task_suspend(k_task_t *task);

K_ERR_TASK_SUSPEND_IDLE 试图挂起 idle 任务(非法)。

K_ERR_OBJ_INVALID 传入的task任务不是一个Kernel对象

K_ERR_SCHED_LOCKED 上锁了同时要挂起自己



### tos_task_resume

```c
Expand All @@ -383,6 +410,12 @@ k_err_t tos_task_resume(k_task_t *task);
TOS_ERR_NONE 恢复任务运行成功。

K_ERR_TASK_RESUME_SELF 试图恢复当前任务(非法)。

K_ERR_OBJ_PTR_NULL 传入的task是一个Null ptr

K_ERR_OBJ_INVALID 传入的task不是一个kernel 对象



### tos_task_prio_change

Expand All @@ -406,6 +439,12 @@ k_err_t tos_task_prio_change(k_task_t *task, k_prio_t prio_new);
K_ERR_NONE 任务优先级更新成功。

K_ERR_TASK_PRIO_INVALID 优先级非法。

K_ERR_OBJ_PTR_NULL 传入的task是一个Null ptr

K_ERR_OBJ_INVALID 传入的task不是一个kernel 对象

K_ERR_IN_IRQ 试图在中断服务程序ISR中改变某个任务的优先级

### tos_task_yield

Expand Down Expand Up @@ -1095,25 +1134,25 @@ k_err_t tos_event_pend(k_event_t *event, k_event_flag_t flag_expect, k_event_fla

1、TOS_OPT_EVENT_PEND_ANY

尝试从事件中获取一组旗标,并且这一组旗标包含 flag_expect 中标识的任意一个旗标,如果在此场景下视作 event 获取成功,则 opt 传递此参数。
尝试从事件中获取一组旗标,并且这一组旗标包含 flag_expect 中标识的任意一个旗标,如果在此场景下视作 event 获取成功,则 opt 传递此参数。

举例来说,如果传入的 flag_expect 为 0x9(0x8 | 0x1),且 opt 为 TOS_OPT_EVENT_PEND_ANY,则 event 包含的旗标包含 0x8 或者 0x1 即视为事件获取成功,也就是说,event 包含的旗标为 (0x8 | X, X 为整数,且 X∈(0, 0xFFFFFFFF]),或者 (0x1 | X, X 为整数,且 X∈(0, 0xFFFFFFFF])。
举例来说,如果传入的 flag_expect 为 0x9(0x8 | 0x1),且 opt 为 TOS_OPT_EVENT_PEND_ANY,则 event 包含的旗标包含 0x8 或者 0x1 即视为事件获取成功,也就是说,event 包含的旗标为 (0x8 | X, X 为整数,且 X∈(0, 0xFFFFFFFF]),或者 (0x1 | X, X 为整数,且 X∈(0, 0xFFFFFFFF])。

2、TOS_OPT_EVENT_PEND_ALL

尝试从事件中获取一组旗标,并且这一组旗标必须至少包含 flag_expect 中标识的所有旗标,如果只在此种场景下视作 event 获取成功,则 opt 传递此参数。
尝试从事件中获取一组旗标,并且这一组旗标必须至少包含 flag_expect 中标识的所有旗标,如果只在此种场景下视作 event 获取成功,则 opt 传递此参数。

举例来说,如果传入的 flag_expect 为 0x9(0x8 | 0x1),且 opt 为 TOS_OPT_EVENT_PEND_ALL,则 event 包含的旗标至少为 0x9 的最小全集才视为事件获取成功,也就是说,event 包含的旗标应为 (0x9 | X, X 为整数,且 X∈(0, 0xFFFFFFFF])。
举例来说,如果传入的 flag_expect 为 0x9(0x8 | 0x1),且 opt 为 TOS_OPT_EVENT_PEND_ALL,则 event 包含的旗标至少为 0x9 的最小全集才视为事件获取成功,也就是说,event 包含的旗标应为 (0x9 | X, X 为整数,且 X∈(0, 0xFFFFFFFF])。

3、TOS_OPT_EVENT_PEND_CLR

如果希望读取完事件后,直接复位清空 event 的所有旗标,则 opt 传递此参数。
如果希望读取完事件后,直接复位清空 event 的所有旗标,则 opt 传递此参数。

举例来说,原 event 包含旗标为 0x9,在传递 TOS_OPT_EVENT_PEND_CLR 参数并成功获取 event 中的旗标后,event 包含的旗标会复位为 0x0。
举例来说,原 event 包含旗标为 0x9,在传递 TOS_OPT_EVENT_PEND_CLR 参数并成功获取 event 中的旗标后,event 包含的旗标会复位为 0x0。

如果希望一次传入多个选项,可以用逻辑“或”将多个参数连接传入,譬如同时希望采用 TOS_OPT_EVENT_PEND_ANY 语义及 TOS_OPT_EVENT_PEND_CLR,可以传入(TOS_OPT_EVENT_PEND_ANY | TOS_OPT_EVENT_PEND_CLR)。
如果希望一次传入多个选项,可以用逻辑“或”将多个参数连接传入,譬如同时希望采用 TOS_OPT_EVENT_PEND_ANY 语义及 TOS_OPT_EVENT_PEND_CLR,可以传入(TOS_OPT_EVENT_PEND_ANY | TOS_OPT_EVENT_PEND_CLR)。

需要注意的是,不可以同时传入 TOS_OPT_EVENT_PEND_ANY 与 TOS_OPT_EVENT_PEND_ALL。
需要注意的是,不可以同时传入 TOS_OPT_EVENT_PEND_ANY 与 TOS_OPT_EVENT_PEND_ALL。

- **返回值**

Expand Down Expand Up @@ -3608,11 +3647,11 @@ k_err_t tos_timer_create(k_timer_t *tmr,

1、TOS_OPT_TIMER_ONESHOT

一次性定时器,创建定时器时传入此参数,表示该定时器是一次性的,只会执行一次。
一次性定时器,创建定时器时传入此参数,表示该定时器是一次性的,只会执行一次。

2、TOS_OPT_TIMER_PERIODIC

周期性定时器,创建定时器时传入此参数,表示该定时器是周期性的,定时器到期后,会按 period 参数开启下一个周期。
周期性定时器,创建定时器时传入此参数,表示该定时器是周期性的,定时器到期后,会按 period 参数开启下一个周期。

- **返回值**

Expand Down