技术参考手册: 软件定时器
软件定时器的静态初始化、销毁
软件定时器的动态创建、删除
软件定时器的标志
软件定时器的启动与停止
软件定时器对象的生命周期管理
- 通过 对象指针 管理生命周期:
- 通过 对象描述符 管理生命周期:
对象描述符和对象标签
已知软件定时器对象的指针的情况下,可以通过 xwos_swt_get_d() 获取 xwos_swt_d , 或可以通过 xwos_swt_get_tik() 获取对象标签。
◆ XWOS_SWT_NILD
XWOS API:空的软件定时器对象描述符
在文件 swt.h 第 89 行定义.
◆ XWOS_SWT_FLAG_NULL
| #define XWOS_SWT_FLAG_NULL XWOSDL_SWT_FLAG_NULL |
XWOS API:软件定时器标志 —— 无标志(默认标志)
在文件 swt.h 第 94 行定义.
◆ XWOS_SWT_FLAG_RESTART
| #define XWOS_SWT_FLAG_RESTART XWOSDL_SWT_FLAG_RESTART |
XWOS API:软件定时器标志 —— 自动重启
在文件 swt.h 第 99 行定义.
◆ xwos_swt_f
| typedef void(* xwos_swt_f) (struct xwos_swt *, void *) |
XWOS API:软件定时器回调函数指针类型
在文件 swt.h 第 76 行定义.
◆ xwos_swt_init()
XWOS API:静态方式初始化软件定时器
- 参数
-
| [in] | swt | 软件定时器的指针 |
| [in] | flag | 软件定时器的标志 |
- 返回
- 错误码
- 返回值
-
- 注解
-
在文件 swt.h 第 112 行定义.
113{
114 return xwosdl_swt_init(&swt->
osswt, flag);
115}
◆ xwos_swt_fini()
XWOS API:销毁静态方式初始化的软件定时器
- 参数
-
- 返回
- 错误码
- 返回值
-
- 注解
-
在文件 swt.h 第 127 行定义.
128{
129 return xwosdl_swt_fini(&swt->
osswt);
130}
◆ xwos_swt_grab()
XWOS API:增加软件定时器对象的引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EOBJDEAD | 对象无效 |
- 注解
-
此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。
增加引用计数会导致 XWOS_SWT_FLAG_RESTART 的软件定时器无法停止, 停止操作 xwos_swt_stop() 不会取消,而是被挂起,直到引用计数减少回来后生效。
在文件 swt.h 第 150 行定义.
151{
152 return xwosdl_swt_grab(&swt->
osswt);
153}
◆ xwos_swt_put()
XWOS API:减少软件定时器对象的引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
| XWOK | 没有错误 |
| -EFAULT | 空指针 |
| -EOBJDEAD | 对象无效 |
- 注解
-
此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。
在文件 swt.h 第 169 行定义.
170{
171 return xwosdl_swt_put(&swt->
osswt);
172}
◆ xwos_swt_create()
XWOS API:动态方式创建软件定时器
- 参数
-
| [out] | swtd | 指向缓冲区的指针,通过此缓冲区返回软件定时器对象描述符 |
| [in] | flag | 软件定时器的标志 |
- 返回
- 错误码
- 注解
-
在文件 swt.h 第 183 行定义.
184{
185 return xwosdl_swt_create((xwosdl_swt_d *)swtd, flag);
186}
◆ xwos_swt_delete()
XWOS API:删除动态方式创建的软件定时器
- 参数
-
- 返回
- 错误码
- 注解
-
在文件 swt.h 第 196 行定义.
197{
198 return xwosdl_swt_delete(&swtd.
swt->
osswt, swtd.
tik);
199}
◆ xwos_swt_acquire()
XWOS API:检查软件定时器对象的标签并增加引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
| XWOK | 没有错误 |
| -ENILOBJD | 空的对象描述符 |
| -EOBJDEAD | 对象无效 |
| -EACCES | 对象标签检查失败 |
- 注解
-
增加引用计数会导致 XWOS_SWT_FLAG_RESTART 的软件定时器无法停止, 停止操作 xwos_swt_stop() 不会取消,而是被挂起,直到引用计数减少回来后生效。
在文件 swt.h 第 216 行定义.
217{
218 return xwosdl_swt_acquire(&swtd.
swt->
osswt, swtd.
tik);
219}
◆ xwos_swt_release()
XWOS API:检查对象的标签并减少引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
| XWOK | 没有错误 |
| -ENILOBJD | 空的对象描述符 |
| -EOBJDEAD | 对象无效 |
| -EACCES | 对象标签检查失败 |
- 注解
-
在文件 swt.h 第 233 行定义.
234{
235 return xwosdl_swt_release(&swtd.
swt->
osswt, swtd.
tik);
236}
◆ xwos_swt_get_tik()
XWOS API:获取软件定时器对象的标签
- 参数
-
- 返回
- 软件定时器对象的标签
- 注解
-
在文件 swt.h 第 246 行定义.
247{
248 return xwosdl_swt_get_tik(&swt->
osswt);
249}
◆ xwos_swt_get_d()
XWOS API:获取软件定时器对象描述符
- 参数
-
- 返回
- 软件定时器对象描述符
- 注解
-
在文件 swt.h 第 259 行定义.
260{
262
264 swtd.
tik = xwosdl_swt_get_tik(&swt->
osswt);
265 return swtd;
266}
◆ xwos_swt_start()
XWOS API:启动软件定时器
- 参数
-
| [in] | swt | 软件定时器的指针 |
| [in] | origin | 软件定时器的初始时间 |
| [in] | period | 软件定时器的周期时间 |
| [in] | callback | 软件定时器的回调函数 |
| [in] | arg | 回调函数的参数 |
- 返回
- 错误码
- 注解
-
在文件 swt.h 第 280 行定义.
282{
283 return xwosdl_swt_start(&swt->
osswt, origin, period,
284
285 (xwosdl_swt_f)callback,
286 arg);
287}
◆ xwos_swt_stop()
XWOS API:停止软件定时器
- 参数
-
- 返回
- 错误码
- 注解
-
在文件 swt.h 第 297 行定义.
298{
299 return xwosdl_swt_stop(&swt->
osswt);
300}