XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
软件定时器
软件定时器 的协作图:

结构体

struct  xwos_swt
 XWOS API:软件定时器 更多...
 
struct  xwos_swt_d
 XWOS API:软件定时器对象描述符 更多...
 

宏定义

#define XWOS_SWT_NILD   ((xwos_swt_d){NULL, 0,})
 XWOS API:空的软件定时器对象描述符
 
#define XWOS_SWT_FLAG_NULL   XWOSDL_SWT_FLAG_NULL
 XWOS API:软件定时器标志 —— 无标志(默认标志)
 
#define XWOS_SWT_FLAG_RESTART   XWOSDL_SWT_FLAG_RESTART
 XWOS API:软件定时器标志 —— 自动重启
 

类型定义

typedef void(* xwos_swt_f) (struct xwos_swt *, void *)
 XWOS API:软件定时器回调函数指针类型
 

函数

static xwer_t xwos_swt_init (struct xwos_swt *swt, xwsq_t flag)
 XWOS API:静态方式初始化软件定时器
 
static xwer_t xwos_swt_fini (struct xwos_swt *swt)
 XWOS API:销毁静态方式初始化的软件定时器
 
static xwer_t xwos_swt_grab (struct xwos_swt *swt)
 XWOS API:增加软件定时器对象的引用计数
 
static xwer_t xwos_swt_put (struct xwos_swt *swt)
 XWOS API:减少软件定时器对象的引用计数
 
static xwer_t xwos_swt_create (xwos_swt_d *swtd, xwsq_t flag)
 XWOS API:动态方式创建软件定时器
 
static xwer_t xwos_swt_delete (xwos_swt_d swtd)
 XWOS API:删除动态方式创建的软件定时器
 
static xwer_t xwos_swt_acquire (xwos_swt_d swtd)
 XWOS API:检查软件定时器对象的标签并增加引用计数
 
static xwer_t xwos_swt_release (xwos_swt_d swtd)
 XWOS API:检查对象的标签并减少引用计数
 
static xwsq_t xwos_swt_get_tik (struct xwos_swt *swt)
 XWOS API:获取软件定时器对象的标签
 
static xwos_swt_d xwos_swt_get_d (struct xwos_swt *swt)
 XWOS API:获取软件定时器对象描述符
 
static xwer_t xwos_swt_start (struct xwos_swt *swt, xwtm_t origin, xwtm_t period, xwos_swt_f callback, void *arg)
 XWOS API:启动软件定时器
 
static xwer_t xwos_swt_stop (struct xwos_swt *swt)
 XWOS API:停止软件定时器
 

详细描述

技术参考手册: 软件定时器

软件定时器的静态初始化、销毁

软件定时器的动态创建、删除

软件定时器的标志

软件定时器的启动与停止

软件定时器对象的生命周期管理

对象描述符和对象标签

已知软件定时器对象的指针的情况下,可以通过 xwos_swt_get_d() 获取 xwos_swt_d , 或可以通过 xwos_swt_get_tik() 获取对象标签。

宏定义说明

◆ XWOS_SWT_NILD

#define XWOS_SWT_NILD   ((xwos_swt_d){NULL, 0,})

XWOS API:空的软件定时器对象描述符

在文件 swt.h89 行定义.

◆ XWOS_SWT_FLAG_NULL

#define XWOS_SWT_FLAG_NULL   XWOSDL_SWT_FLAG_NULL

XWOS API:软件定时器标志 —— 无标志(默认标志)

在文件 swt.h94 行定义.

◆ XWOS_SWT_FLAG_RESTART

#define XWOS_SWT_FLAG_RESTART   XWOSDL_SWT_FLAG_RESTART

XWOS API:软件定时器标志 —— 自动重启

在文件 swt.h99 行定义.

类型定义说明

◆ xwos_swt_f

typedef void(* xwos_swt_f) (struct xwos_swt *, void *)

XWOS API:软件定时器回调函数指针类型

在文件 swt.h76 行定义.

函数说明

◆ xwos_swt_init()

static xwer_t xwos_swt_init ( struct xwos_swt swt,
xwsq_t  flag 
)
inlinestatic

XWOS API:静态方式初始化软件定时器

参数
[in]swt软件定时器的指针
[in]flag软件定时器的标志
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
注解
  • 上下文:任意

在文件 swt.h112 行定义.

113{
114 return xwosdl_swt_init(&swt->osswt, flag);
115}
struct xwmp_swt osswt
Definition swt.h:70
这是这个函数的调用关系图:

◆ xwos_swt_fini()

static xwer_t xwos_swt_fini ( struct xwos_swt swt)
inlinestatic

XWOS API:销毁静态方式初始化的软件定时器

参数
[in]swt软件定时器的指针
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
注解
  • 上下文:任意

在文件 swt.h127 行定义.

128{
129 return xwosdl_swt_fini(&swt->osswt);
130}

◆ xwos_swt_grab()

static xwer_t xwos_swt_grab ( struct xwos_swt swt)
inlinestatic

XWOS API:增加软件定时器对象的引用计数

参数
[in]swt软件定时器对象的指针
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-EOBJDEAD对象无效
注解
  • 上下文:任意

此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。

增加引用计数会导致 XWOS_SWT_FLAG_RESTART 的软件定时器无法停止, 停止操作 xwos_swt_stop() 不会取消,而是被挂起,直到引用计数减少回来后生效。

在文件 swt.h150 行定义.

151{
152 return xwosdl_swt_grab(&swt->osswt);
153}
这是这个函数的调用关系图:

◆ xwos_swt_put()

static xwer_t xwos_swt_put ( struct xwos_swt swt)
inlinestatic

XWOS API:减少软件定时器对象的引用计数

参数
[in]swt软件定时器对象的指针
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-EOBJDEAD对象无效
注解
  • 上下文:任意

此函数主要用于管理 静态对象 的引用计数。 若用于 动态对象 ,需要确保对象的指针一定不是野指针。

在文件 swt.h169 行定义.

170{
171 return xwosdl_swt_put(&swt->osswt);
172}
这是这个函数的调用关系图:

◆ xwos_swt_create()

static xwer_t xwos_swt_create ( xwos_swt_d swtd,
xwsq_t  flag 
)
inlinestatic

XWOS API:动态方式创建软件定时器

参数
[out]swtd指向缓冲区的指针,通过此缓冲区返回软件定时器对象描述符
[in]flag软件定时器的标志
返回
错误码
注解
  • 上下文:任意

在文件 swt.h183 行定义.

184{
185 return xwosdl_swt_create((xwosdl_swt_d *)swtd, flag);
186}
这是这个函数的调用关系图:

◆ xwos_swt_delete()

static xwer_t xwos_swt_delete ( xwos_swt_d  swtd)
inlinestatic

XWOS API:删除动态方式创建的软件定时器

参数
[in]swtd软件定时器对象描述符
返回
错误码
注解
  • 上下文:任意

在文件 swt.h196 行定义.

197{
198 return xwosdl_swt_delete(&swtd.swt->osswt, swtd.tik);
199}
xwsq_t tik
Definition swt.h:83
struct xwos_swt * swt
Definition swt.h:82
这是这个函数的调用关系图:

◆ xwos_swt_acquire()

static xwer_t xwos_swt_acquire ( xwos_swt_d  swtd)
inlinestatic

XWOS API:检查软件定时器对象的标签并增加引用计数

参数
[in]swtd软件定时器对象描述符
返回
错误码
返回值
XWOK没有错误
-ENILOBJD空的对象描述符
-EOBJDEAD对象无效
-EACCES对象标签检查失败
注解
  • 上下文:任意

增加引用计数会导致 XWOS_SWT_FLAG_RESTART 的软件定时器无法停止, 停止操作 xwos_swt_stop() 不会取消,而是被挂起,直到引用计数减少回来后生效。

在文件 swt.h216 行定义.

217{
218 return xwosdl_swt_acquire(&swtd.swt->osswt, swtd.tik);
219}
这是这个函数的调用关系图:

◆ xwos_swt_release()

static xwer_t xwos_swt_release ( xwos_swt_d  swtd)
inlinestatic

XWOS API:检查对象的标签并减少引用计数

参数
[in]swtd软件定时器对象描述符
返回
错误码
返回值
XWOK没有错误
-ENILOBJD空的对象描述符
-EOBJDEAD对象无效
-EACCES对象标签检查失败
注解
  • 上下文:任意

在文件 swt.h233 行定义.

234{
235 return xwosdl_swt_release(&swtd.swt->osswt, swtd.tik);
236}
这是这个函数的调用关系图:

◆ xwos_swt_get_tik()

static xwsq_t xwos_swt_get_tik ( struct xwos_swt swt)
inlinestatic

XWOS API:获取软件定时器对象的标签

参数
[in]swt软件定时器对象的指针
返回
软件定时器对象的标签
注解
  • 上下文:任意

在文件 swt.h246 行定义.

247{
248 return xwosdl_swt_get_tik(&swt->osswt);
249}

◆ xwos_swt_get_d()

static xwos_swt_d xwos_swt_get_d ( struct xwos_swt swt)
inlinestatic

XWOS API:获取软件定时器对象描述符

参数
[in]swt软件定时器对象的指针
返回
软件定时器对象描述符
注解
  • 上下文:任意

在文件 swt.h259 行定义.

260{
261 xwos_swt_d swtd;
262
263 swtd.swt = swt;
264 swtd.tik = xwosdl_swt_get_tik(&swt->osswt);
265 return swtd;
266}
XWOS API:软件定时器对象描述符
Definition swt.h:81

◆ xwos_swt_start()

static xwer_t xwos_swt_start ( struct xwos_swt swt,
xwtm_t  origin,
xwtm_t  period,
xwos_swt_f  callback,
void *  arg 
)
inlinestatic

XWOS API:启动软件定时器

参数
[in]swt软件定时器的指针
[in]origin软件定时器的初始时间
[in]period软件定时器的周期时间
[in]callback软件定时器的回调函数
[in]arg回调函数的参数
返回
错误码
注解
  • 上下文:任意

在文件 swt.h280 行定义.

282{
283 return xwosdl_swt_start(&swt->osswt, origin, period,
284 // cppcheck-suppress [misra-c2012-11.1]
285 (xwosdl_swt_f)callback,
286 arg);
287}
这是这个函数的调用关系图:

◆ xwos_swt_stop()

static xwer_t xwos_swt_stop ( struct xwos_swt swt)
inlinestatic

XWOS API:停止软件定时器

参数
[in]swt软件定时器的指针
返回
错误码
注解
  • 上下文:任意

在文件 swt.h297 行定义.

298{
299 return xwosdl_swt_stop(&swt->osswt);
300}
这是这个函数的调用关系图: