技术参考手册: 软件定时器
软件定时器的静态初始化、销毁
软件定时器的动态创建、删除
软件定时器的标志
软件定时器的启动与停止
软件定时器对象的生命周期管理
- 通过 对象指针 管理生命周期:
- 通过 对象描述符 管理生命周期:
对象描述符和对象标签
已知软件定时器对象的指针的情况下,可以通过 xwos_swt_get_d()
获取 xwos_swt_d , 或可以通过 xwos_swt_get_tik()
获取对象标签。
C++
C++头文件: xwos/osal/swt.hxx
◆ XWOS_SWT_FLAG_NULL
#define XWOS_SWT_FLAG_NULL XWOSDL_SWT_FLAG_NULL |
XWOS API:软件定时器标志 —— 无标志(默认标志)
在文件 swt.h 第 98 行定义.
◆ XWOS_SWT_FLAG_RESTART
#define XWOS_SWT_FLAG_RESTART XWOSDL_SWT_FLAG_RESTART |
XWOS API:软件定时器标志 —— 自动重启
在文件 swt.h 第 103 行定义.
◆ XWOS_SWT_NILD
XWOS API:空的软件定时器对象描述符
在文件 swt.h 第 93 行定义.
◆ xwos_swt_f
typedef void(* xwos_swt_f) (struct xwos_swt *, void *) |
XWOS API:软件定时器回调函数指针类型
在文件 swt.h 第 80 行定义.
◆ xwos_swt_acquire()
XWOS API:检查软件定时器对象的标签并增加引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-ENILOBJD | 空的对象描述符 |
-EOBJDEAD | 对象无效 |
-EACCES | 对象标签检查失败 |
- 注解
-
增加引用计数会导致 XWOS_SWT_FLAG_RESTART 的软件定时器无法停止, 停止操作 xwos_swt_stop() 不会取消,而是被挂起,直到引用计数减少回来后生效。
在文件 swt.h 第 220 行定义.
221{
222 return xwosdl_swt_acquire(&swtd.
swt->
osswt, swtd.
tik);
223}
◆ xwos_swt_create()
XWOS API:动态方式创建软件定时器
- 参数
-
[out] | swtd | 指向缓冲区的指针,通过此缓冲区返回软件定时器对象描述符 |
[in] | flag | 软件定时器的标志 |
- 返回
- 错误码
- 注解
-
在文件 swt.h 第 187 行定义.
188{
189 return xwosdl_swt_create((xwosdl_swt_d *)swtd, flag);
190}
◆ xwos_swt_delete()
XWOS API:删除动态方式创建的软件定时器
- 参数
-
- 返回
- 错误码
- 注解
-
在文件 swt.h 第 200 行定义.
201{
202 return xwosdl_swt_delete(&swtd.
swt->
osswt, swtd.
tik);
203}
◆ xwos_swt_fini()
XWOS API:销毁静态方式初始化的软件定时器
- 参数
-
- 返回
- 错误码
- 返回值
-
- 注解
-
在文件 swt.h 第 131 行定义.
132{
133 return xwosdl_swt_fini(&swt->
osswt);
134}
◆ xwos_swt_get_d()
XWOS API:获取软件定时器对象描述符
- 参数
-
- 返回
- 软件定时器对象描述符
- 注解
-
在文件 swt.h 第 263 行定义.
264{
266
268 swtd.
tik = xwosdl_swt_get_tik(&swt->
osswt);
269 return swtd;
270}
◆ xwos_swt_get_tik()
XWOS API:获取软件定时器对象的标签
- 参数
-
- 返回
- 软件定时器对象的标签
- 注解
-
在文件 swt.h 第 250 行定义.
251{
252 return xwosdl_swt_get_tik(&swt->
osswt);
253}
◆ xwos_swt_grab()
XWOS API:增加软件定时器对象的引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 空指针 |
-EOBJDEAD | 对象无效 |
- 注解
-
此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。
增加引用计数会导致 XWOS_SWT_FLAG_RESTART 的软件定时器无法停止, 停止操作 xwos_swt_stop() 不会取消,而是被挂起,直到引用计数减少回来后生效。
在文件 swt.h 第 154 行定义.
155{
156 return xwosdl_swt_grab(&swt->
osswt);
157}
◆ xwos_swt_init()
XWOS API:静态方式初始化软件定时器
- 参数
-
[in] | swt | 软件定时器的指针 |
[in] | flag | 软件定时器的标志 |
- 返回
- 错误码
- 返回值
-
- 注解
-
在文件 swt.h 第 116 行定义.
117{
118 return xwosdl_swt_init(&swt->
osswt, flag);
119}
◆ xwos_swt_put()
XWOS API:减少软件定时器对象的引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-EFAULT | 空指针 |
-EOBJDEAD | 对象无效 |
- 注解
-
此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。
在文件 swt.h 第 173 行定义.
174{
175 return xwosdl_swt_put(&swt->
osswt);
176}
◆ xwos_swt_release()
XWOS API:检查对象的标签并减少引用计数
- 参数
-
- 返回
- 错误码
- 返回值
-
XWOK | 没有错误 |
-ENILOBJD | 空的对象描述符 |
-EOBJDEAD | 对象无效 |
-EACCES | 对象标签检查失败 |
- 注解
-
在文件 swt.h 第 237 行定义.
238{
239 return xwosdl_swt_release(&swtd.
swt->
osswt, swtd.
tik);
240}
◆ xwos_swt_start()
XWOS API:启动软件定时器
- 参数
-
[in] | swt | 软件定时器的指针 |
[in] | origin | 软件定时器的初始时间 |
[in] | period | 软件定时器的周期时间 |
[in] | callback | 软件定时器的回调函数 |
[in] | arg | 回调函数的参数 |
- 返回
- 错误码
- 注解
-
在文件 swt.h 第 284 行定义.
286{
287 return xwosdl_swt_start(&swt->
osswt, origin, period,
288
289 (xwosdl_swt_f)callback,
290 arg);
291}
◆ xwos_swt_stop()
XWOS API:停止软件定时器
- 参数
-
- 返回
- 错误码
- 注解
-
在文件 swt.h 第 301 行定义.
302{
303 return xwosdl_swt_stop(&swt->
osswt);
304}