XWOS API
4.0
XWOS C/C++ API参考手册
|
#define | XWSSC_VERSION ("1.0.0") |
#define | XWSSC_VERSION_MAJOR 1U |
#define | XWSSC_VERSION_MINOR 0U |
#define | XWSSC_VERSION_REVISION 0U |
#define | XWSSC_PRI_NUM (XWMDCFG_isc_xwssc_PRI_NUM) |
#define | XWSSC_INVALID_PRI (0xFFU) |
#define | XWSSC_MAX_PRI (XWSSC_PRI_NUM - 1U) |
#define | XWSSC_PORT_NUM (XWMDCFG_isc_xwssc_PORT_NUM) |
#define | XWSSC_RETRY_PERIOD (XWMDCFG_isc_xwssc_RETRY_PERIOD) |
#define | XWSSC_RETRY_NUM (XWMDCFG_isc_xwssc_RETRY_NUM) |
#define | XWSSC_MEMBLK_SIZE (XWMDCFG_isc_xwssc_MEMBLK_SIZE) |
#define | XWSSC_MEMBLK_ODR (XWMDCFG_isc_xwssc_MEMBLK_ODR) |
#define | XWSSC_MEMBLK_NUM (1U << XWSSC_MEMBLK_ODR) |
#define | XWSSC_MEMPOOL_SIZE (XWSSC_MEMBLK_SIZE * XWSSC_MEMBLK_NUM) |
#define | XWSSC_DEF_MEMPOOL(name) __xwcc_alignl1cache xwu8_t name[XWSSC_MEMPOOL_SIZE] |
定义内存池 | |
enum | xwssc_carrier_state_em { XWSSC_CRS_IDLE = 0U , XWSSC_CRS_READY = 1U , XWSSC_CRS_INPROGRESS = 2U , XWSSC_CRS_ABORT = 3U , XWSSC_CRS_FINISH = 4U } |
发送状态枚举 更多... | |
enum | xwssc_msg_qos_em { XWSSC_MSG_QOS_0 = 0U , XWSSC_MSG_QOS_1 = 1U , XWSSC_MSG_QOS_2 = 2U , XWSSC_MSG_QOS_3 = 3U , XWSSC_MSG_QOS_NUM , XWSSC_MSG_QOS_CHKSUM_MSK = (1U) , XWSSC_MSG_QOS_RELIABLE_MSK = (2U) , XWSSC_MSG_QOS_MSK } |
服务质量枚举 更多... | |
typedef struct xwssc_carrier * | xwssc_txh_t |
发送句柄 | |
typedef void(* | xwssc_ntf_f) (struct xwssc *, xwssc_txh_t, xwer_t, void *) |
通知发送结果的回调函数 | |
xwer_t | xwssc_start (struct xwssc *xwssc, const char *name, const struct xwssc_hwifal_operation *hwifops, void *hwifcb, xwu8_t *mem, xwsz_t memsize) |
XWSSC API: 启动XWSSC | |
xwer_t | xwssc_stop (struct xwssc *xwssc) |
XWSSC API: 停止XWSSC | |
bool | xwssc_tst_connected (struct xwssc *xwssc) |
XWSSC API: 测试XWSSC是否已经连接 | |
xwer_t | xwssc_tx (struct xwssc *xwssc, const xwu8_t data[], xwsz_t *size, xwu8_t pri, xwu8_t port, xwu8_t qos, xwtm_t to) |
XWSSC API: 将用户数据加入到XWSSC的发送队列中,并在限定的时间内等待发送结果 | |
xwer_t | xwssc_eq (struct xwssc *xwssc, const xwu8_t data[], xwsz_t *size, xwu8_t pri, xwu8_t port, xwu8_t qos, xwssc_ntf_f ntfcb, void *cbarg, xwssc_txh_t *txhbuf) |
XWSSC API: 将一条用户数据加入到XWSSC的发送队列中 | |
xwer_t | xwssc_abort (struct xwssc *xwssc, xwssc_txh_t txh) |
XWSSC API: 中断发送 | |
xwsq_t | xwssc_get_txstate (xwssc_txh_t txh) |
XWSSC API: 获取发送状态 | |
xwer_t | xwssc_rx (struct xwssc *xwssc, xwu8_t port, xwu8_t rxbuf[], xwsz_t *size, xwu8_t *qos, xwtm_t to) |
XWSSC API: 接收消息,若接收队列为空,就限时等待 | |
xwer_t | xwssc_try_rx (struct xwssc *xwssc, xwu8_t port, xwu8_t rxbuf[], xwsz_t *size, xwu8_t *qos) |
XWSSC API: 尝试接收消息,若接收队列为空,立即返回错误码 | |
#define XWSSC_DEF_MEMPOOL | ( | name | ) | __xwcc_alignl1cache xwu8_t name[XWSSC_MEMPOOL_SIZE] |
#define XWSSC_MAX_PRI (XWSSC_PRI_NUM - 1U) |
#define XWSSC_MEMBLK_NUM (1U << XWSSC_MEMBLK_ODR) |
#define XWSSC_MEMPOOL_SIZE (XWSSC_MEMBLK_SIZE * XWSSC_MEMBLK_NUM) |
typedef void(* xwssc_ntf_f) (struct xwssc *, xwssc_txh_t, xwer_t, void *) |
typedef struct xwssc_carrier* xwssc_txh_t |
发送状态枚举
枚举值 | |
---|---|
XWSSC_CRS_IDLE | |
XWSSC_CRS_READY | |
XWSSC_CRS_INPROGRESS | |
XWSSC_CRS_ABORT | |
XWSSC_CRS_FINISH |
enum xwssc_msg_qos_em |
服务质量枚举
xwer_t xwssc_abort | ( | struct xwssc * | xwssc, |
xwssc_txh_t | txh | ||
) |
XWSSC API: 中断发送
[in] | xwssc | XWSSC对象的指针 |
[in] | txh | 发送句柄 |
XWOK | 没有错误 |
-EFAULT | 空指针 |
-EACCES | 消息帧已经正在发送 |
如果消息已经被 XWSSC TX 线程选中,发送不可被中断; 仅当消息还在就绪队列中,未被选中发送时才可中断。
xwer_t xwssc_eq | ( | struct xwssc * | xwssc, |
const xwu8_t | data[], | ||
xwsz_t * | size, | ||
xwu8_t | pri, | ||
xwu8_t | port, | ||
xwu8_t | qos, | ||
xwssc_ntf_f | ntfcb, | ||
void * | cbarg, | ||
xwssc_txh_t * | txhbuf | ||
) |
XWSSC API: 将一条用户数据加入到XWSSC的发送队列中
[in] | xwssc | XWSSC对象的指针 |
[in] | data | 数据缓冲区的指针 |
[in,out] | size | 指向缓冲区的指针,此缓冲区:
|
[in] | pri | 优先级 |
[in] | port | 端口 |
[in] | qos | 服务质量 |
[in] | ntfcb | 通知发送结果的回调函数 |
[in] | cbarg | 调用回调函数时的用户数据 |
[out] | txhbuf | 指向缓冲区的指针,通过此缓冲区返回发送句柄 |
XWOK | 没有错误 |
-EFAULT | 空指针 |
-E2BIG | 数据太长 |
-ENODEV | 端口号超出范围 |
-EINVAL | qos错误 |
-ENOBUFS | 帧槽被使用完 |
-EPERM | XWSSC未启动 |
to
表示等待超时的时间点:to
通常是未来的时间,即 当前系统时间 + delta
, 可以使用 xwtm_ft(delta)
表示;to
是过去的时间点,将直接返回 -ETIMEDOUT
。 xwsq_t xwssc_get_txstate | ( | xwssc_txh_t | txh | ) |
xwer_t xwssc_rx | ( | struct xwssc * | xwssc, |
xwu8_t | port, | ||
xwu8_t | rxbuf[], | ||
xwsz_t * | size, | ||
xwu8_t * | qos, | ||
xwtm_t | to | ||
) |
XWSSC API: 接收消息,若接收队列为空,就限时等待
[in] | xwssc | XWSSC对象的指针 |
[in] | port | 接收消息的端口 |
[out] | rxbuf | 指向缓冲区的指针,此缓冲区用于接收消息 |
[in,out] | size | 指向缓冲区的指针,此缓冲区:
|
[out] | qos | 指向缓冲区的指针,此缓冲区用于返回消息的QoS,可为NULL表示不关心QoS |
[in] | to | 期望唤醒的时间点 |
XWOK | 没有错误 |
-EFAULT | 空指针 |
-ENODEV | 端口号超出范围 |
-EPERM | XWSSC未启动 |
-ETIMEDOUT | 超时 |
to
表示等待超时的时间点:
to
通常是未来的时间,即 当前系统时间 + delta
, 可以使用 xwtm_ft(delta)
表示;to
是过去的时间点,将直接返回 -ETIMEDOUT
。 xwer_t xwssc_start | ( | struct xwssc * | xwssc, |
const char * | name, | ||
const struct xwssc_hwifal_operation * | hwifops, | ||
void * | hwifcb, | ||
xwu8_t * | mem, | ||
xwsz_t | memsize | ||
) |
XWSSC API: 启动XWSSC
[in] | xwssc | XWSSC对象的指针 |
[in] | name | XWSSC实例的名字 |
[in] | hwifops | 硬件接口抽象层操作函数集合 |
[in] | hwifcb | 硬件接口控制块指针 |
[in] | mem | 连续的内存块 |
[in] | memsize | 连续的内存块大小,值必须为 XWSSC_MEMPOOL_SIZE |
XWOK | 没有错误 |
-EFAULT | 空指针 |
-ENOMEM | 内存池太小 |
-EPERM | XWSSC未初始化 |
mem
作为xwssc发送和接收缓冲区,用户可以使用 XWSSC_DEF_MEMPOOL 定义, XWSSC_DEF_MEMPOOL
增加修饰符 __xwcc_alignl1cache
,可提高内存的访问的效率。memsize
作用是提醒用户 mem
的大小必须为 XWSSC_MEMPOOL_SIZE , API内部也会做检查。 XWSSC API: 停止XWSSC
[in] | xwssc | XWSSC对象的指针 |
XWOK | 没有错误 |
-EFAULT | 空指针 |
xwer_t xwssc_try_rx | ( | struct xwssc * | xwssc, |
xwu8_t | port, | ||
xwu8_t | rxbuf[], | ||
xwsz_t * | size, | ||
xwu8_t * | qos | ||
) |
XWSSC API: 尝试接收消息,若接收队列为空,立即返回错误码
[in] | xwssc | XWSSC对象的指针 |
[in] | port | 接收消息的端口 |
[out] | rxbuf | 指向缓冲区的指针,此缓冲区用于接收消息 |
[in,out] | size | 指向缓冲区的指针,此缓冲区:
|
[out] | qos | 返回消息的QoS的缓冲区,可为 NULL 表示不关心QoS |
XWOK | 没有错误 |
-EFAULT | 空指针 |
-ENODEV | 端口号超出范围 |
-ENODATA | 接收队列为空 |
-EPERM | XWSSC未启动 |
bool xwssc_tst_connected | ( | struct xwssc * | xwssc | ) |
XWSSC API: 测试XWSSC是否已经连接
[in] | xwssc | XWSSC对象的指针 |
true | 已链接 |
false | 未链接 |
xwer_t xwssc_tx | ( | struct xwssc * | xwssc, |
const xwu8_t | data[], | ||
xwsz_t * | size, | ||
xwu8_t | pri, | ||
xwu8_t | port, | ||
xwu8_t | qos, | ||
xwtm_t | to | ||
) |
XWSSC API: 将用户数据加入到XWSSC的发送队列中,并在限定的时间内等待发送结果
[in] | xwssc | XWSSC对象的指针 |
[in] | data | 数据缓冲区的指针 |
[in,out] | size | 指向缓冲区的指针,此缓冲区:
|
[in] | pri | 用户数据的优先级 |
[in] | port | 端口 |
[in] | qos | 服务质量,取值范围: xwssc_msg_qos_em |
[in] | to | 期望唤醒的时间点 |
XWOK | 没有错误 |
-EFAULT | 空指针 |
-E2BIG | 数据太长 |
-ENODEV | 端口号超出范围 |
-EINVAL | qos错误 |
-ENOBUFS | 帧槽被使用完 |
-EPERM | XWSSC未启动 |
to
表示等待超时的时间点:
to
通常是未来的时间,即 当前系统时间 + delta
, 可以使用 xwtm_ft(delta)
表示;to
是过去的时间点,将直接返回 -ETIMEDOUT
。