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() 获取对象标签。

C++

C++头文件: xwos/osal/swt.hxx

宏定义说明

◆ XWOS_SWT_FLAG_NULL

#define XWOS_SWT_FLAG_NULL   XWOSDL_SWT_FLAG_NULL

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

在文件 swt.h98 行定义.

◆ XWOS_SWT_FLAG_RESTART

#define XWOS_SWT_FLAG_RESTART   XWOSDL_SWT_FLAG_RESTART

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

在文件 swt.h103 行定义.

◆ XWOS_SWT_NILD

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

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

在文件 swt.h93 行定义.

类型定义说明

◆ xwos_swt_f

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

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

在文件 swt.h80 行定义.

函数说明

◆ 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.h220 行定义.

221{
222 return xwosdl_swt_acquire(&swtd.swt->osswt, swtd.tik);
223}
xwsq_t tik
Definition swt.h:87
struct xwos_swt * swt
Definition swt.h:86
struct xwmp_swt osswt
Definition swt.h:74
这是这个函数的调用关系图:

◆ xwos_swt_create()

static xwer_t xwos_swt_create ( xwos_swt_d swtd,
xwsq_t  flag 
)
inlinestatic

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

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

在文件 swt.h187 行定义.

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

◆ xwos_swt_delete()

static xwer_t xwos_swt_delete ( xwos_swt_d  swtd)
inlinestatic

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

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

在文件 swt.h200 行定义.

201{
202 return xwosdl_swt_delete(&swtd.swt->osswt, swtd.tik);
203}
这是这个函数的调用关系图:

◆ xwos_swt_fini()

static xwer_t xwos_swt_fini ( struct xwos_swt swt)
inlinestatic

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

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

在文件 swt.h131 行定义.

132{
133 return xwosdl_swt_fini(&swt->osswt);
134}

◆ xwos_swt_get_d()

static xwos_swt_d xwos_swt_get_d ( struct xwos_swt swt)
inlinestatic

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

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

在文件 swt.h263 行定义.

264{
265 xwos_swt_d swtd;
266
267 swtd.swt = swt;
268 swtd.tik = xwosdl_swt_get_tik(&swt->osswt);
269 return swtd;
270}
XWOS API:软件定时器对象描述符
Definition swt.h:85

◆ xwos_swt_get_tik()

static xwsq_t xwos_swt_get_tik ( struct xwos_swt swt)
inlinestatic

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

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

在文件 swt.h250 行定义.

251{
252 return xwosdl_swt_get_tik(&swt->osswt);
253}

◆ 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.h154 行定义.

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

◆ 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.h116 行定义.

117{
118 return xwosdl_swt_init(&swt->osswt, flag);
119}
这是这个函数的调用关系图:

◆ xwos_swt_put()

static xwer_t xwos_swt_put ( struct xwos_swt swt)
inlinestatic

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

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

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

在文件 swt.h173 行定义.

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

◆ xwos_swt_release()

static xwer_t xwos_swt_release ( xwos_swt_d  swtd)
inlinestatic

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

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

在文件 swt.h237 行定义.

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

◆ 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.h284 行定义.

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

◆ xwos_swt_stop()

static xwer_t xwos_swt_stop ( struct xwos_swt swt)
inlinestatic

XWOS API:停止软件定时器

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

在文件 swt.h301 行定义.

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