XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到

XWSSC端口代理 更多...

#include <XwsscPortProxy.hxx>

xwisc::XwsscPortProxy 的协作图:

Public 成员函数

 XwsscPortProxy (struct xwssc *xwssc, xwu8_t port, xwu8_t default_priority, xwu8_t default_qos)
 
 XwsscPortProxy ()=delete
 
 ~XwsscPortProxy ()
 
xwer_t write (const xwu8_t data[], xwsz_t *size)
 发送数据,并同步等待发送结果
 
xwer_t write (const xwu8_t data[], xwsz_t *size, xwu8_t pri, xwu8_t qos)
 发送数据,并同步等待发送结果
 
xwer_t write (const xwu8_t data[], xwsz_t *size, xwtm_t to)
 发送数据,并等待发送结果
 
xwer_t write (const xwu8_t data[], xwsz_t *size, xwu8_t pri, xwu8_t qos, xwtm_t to)
 发送数据,并在限定的时间内等待发送结果
 
xwer_t asyncWrite (const xwu8_t data[], xwsz_t *size, xwssc_txh_t *txhbuf)
 异步发送数据
 
xwer_t asyncWrite (const xwu8_t data[], xwsz_t *size, xwu8_t pri, xwu8_t qos, xwssc_txh_t *txhbuf)
 异步发送数据
 
xwer_t abortAsyncWrite (xwssc_txh_t txh)
 中断异步发送
 
enum xwssc_carrier_state_em getAsyncWriteState (xwssc_txh_t txh)
 获取异步发送状态
 
xwer_t read (xwu8_t rxbuf[], xwsz_t *size)
 接收数据,若数据为空,就无限等待
 
xwer_t read (xwu8_t rxbuf[], xwsz_t *size, xwu8_t *qos, xwtm_t to)
 接收数据,若数据为空,就限时等待
 
xwer_t tryRead (xwu8_t rxbuf[], xwsz_t *size)
 尝试接收消息,若接收队列为空,立即返回错误码
 
xwer_t tryRead (xwu8_t rxbuf[], xwsz_t *size, xwu8_t *qos)
 尝试接收消息,若接收队列为空,立即返回错误码
 

Protected 成员函数

virtual void onAsyncWrited (xwssc_txh_t txh, xwer_t rc)
 

静态 Private 成员函数

static void sOnAsyncWrited (struct xwssc *xwssc, xwssc_txh_t txh, xwer_t rc, void *arg)
 

Private 属性

struct xwsscmProxy
 
xwu8_t mPort
 
xwu8_t mDefaultPriority
 
xwu8_t mDefaultQos
 

详细描述

XWSSC端口代理

在文件 XwsscPortProxy.hxx32 行定义.

构造及析构函数说明

◆ XwsscPortProxy() [1/2]

xwisc::XwsscPortProxy::XwsscPortProxy ( struct xwssc xwssc,
xwu8_t  port,
xwu8_t  default_priority,
xwu8_t  default_qos 
)

在文件 XwsscPortProxy.cxx23 行定义.

25 : mProxy(xwssc)
26 , mPort(port)
27 , mDefaultPriority(default_priority)
28 , mDefaultQos(default_qos)
29{
30}
XWSSC对象
Definition protocol.h:160

◆ XwsscPortProxy() [2/2]

xwisc::XwsscPortProxy::XwsscPortProxy ( )
delete

◆ ~XwsscPortProxy()

xwisc::XwsscPortProxy::~XwsscPortProxy ( )
inline

在文件 XwsscPortProxy.hxx44 行定义.

44{}

成员函数说明

◆ abortAsyncWrite()

xwer_t xwisc::XwsscPortProxy::abortAsyncWrite ( xwssc_txh_t  txh)

中断异步发送

参数
[in]txh发送句柄
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-EACCES消息帧已经正在发送
注解
  • 上下文:中断、中断底半部、线程
  • 异步函数

如果消息已经被 XWSSC TX 线程选中,发送不可被中断; 仅当消息还在就绪队列中,未被选中发送时才可中断。

在文件 XwsscPortProxy.cxx69 行定义.

70{
71 return xwssc_abort(mProxy, txh);
72}
xwer_t xwssc_abort(struct xwssc *xwssc, xwssc_txh_t txh)
XWSSC API: 中断发送
函数调用图:

◆ asyncWrite() [1/2]

xwer_t xwisc::XwsscPortProxy::asyncWrite ( const xwu8_t  data[],
xwsz_t size,
xwssc_txh_t txhbuf 
)

异步发送数据

参数
[in]data数据缓冲区的指针
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示数据长度
  • (O) 作为输出时,返回实际缓存的数据长度
[out]txhbuf指向缓冲区的指针,通过此缓冲区返回发送句柄

发送结果通过虚函数 onAsyncWrited() 进行通知。用户需要继承本类, 重新定义此虚函数来获取发送结果。

在文件 XwsscPortProxy.cxx54 行定义.

56{
57 return xwssc_eq(mProxy, data, size, mDefaultPriority, mPort, mDefaultQos,
58 sOnAsyncWrited, this, txhbuf);
59}
static void sOnAsyncWrited(struct xwssc *xwssc, xwssc_txh_t txh, xwer_t rc, void *arg)
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的发送队列中
函数调用图:

◆ asyncWrite() [2/2]

xwer_t xwisc::XwsscPortProxy::asyncWrite ( const xwu8_t  data[],
xwsz_t size,
xwu8_t  pri,
xwu8_t  qos,
xwssc_txh_t txhbuf 
)

异步发送数据

参数
[in]data数据缓冲区的指针
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示数据长度
  • (O) 作为输出时,返回实际缓存的数据长度
[in]pri用户数据的优先级
[in]qos服务质量,取值范围: xwssc_msg_qos_em
[out]txhbuf指向缓冲区的指针,通过此缓冲区返回发送句柄

发送结果通过虚函数 onAsyncWrited() 进行通知。用户需要继承本类, 重新定义此虚函数来获取发送结果。

在文件 XwsscPortProxy.cxx61 行定义.

64{
65 return xwssc_eq(mProxy, data, size, pri, mPort, qos,
66 sOnAsyncWrited, this, txhbuf);
67}
函数调用图:

◆ getAsyncWriteState()

enum xwssc_carrier_state_em xwisc::XwsscPortProxy::getAsyncWriteState ( xwssc_txh_t  txh)
inline

获取异步发送状态

参数
[in]txh发送句柄
返回
发送状态,取值: xwssc_carrier_state_em
注解
  • 上下文:中断、中断底半部、线程

在文件 XwsscPortProxy.hxx190 行定义.

190 {
192 }
xwssc_carrier_state_em
发送状态枚举
Definition mif.h:72
xwsq_t xwssc_get_txstate(xwssc_txh_t txh)
XWSSC API: 获取发送状态
函数调用图:

◆ onAsyncWrited()

void xwisc::XwsscPortProxy::onAsyncWrited ( xwssc_txh_t  txh,
xwer_t  rc 
)
protectedvirtual

< 去除未使用变量的警告

< 去除未使用变量的警告

在文件 XwsscPortProxy.cxx94 行定义.

95{
96 XWOS_UNUSED(txh);
97 XWOS_UNUSED(rc);
98}
#define XWOS_UNUSED(x)
Definition standard.h:66
这是这个函数的调用关系图:

◆ read() [1/2]

xwer_t xwisc::XwsscPortProxy::read ( xwu8_t  rxbuf[],
xwsz_t size 
)

接收数据,若数据为空,就无限等待

参数
[out]rxbuf指向缓冲区的指针,此缓冲区用于接收消息
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示接收缓冲区的大小
  • (O) 作为输出时,返回实际接收的消息大小
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-ENODEV端口号超出范围
-EPERMXWSSC未启动
-ETIMEDOUT超时
注解
  • 上下文:线程

在文件 XwsscPortProxy.cxx74 行定义.

75{
76 return xwssc_rx(mProxy, mPort, rxbuf, size, nullptr, XWTM_MAX);
77}
xwer_t xwssc_rx(struct xwssc *xwssc, xwu8_t port, xwu8_t rxbuf[], xwsz_t *size, xwu8_t *qos, xwtm_t to)
XWSSC API: 接收消息,若接收队列为空,就限时等待
#define XWTM_MAX
xwtm_t 的最大值
Definition type.h:755
函数调用图:

◆ read() [2/2]

xwer_t xwisc::XwsscPortProxy::read ( xwu8_t  rxbuf[],
xwsz_t size,
xwu8_t qos,
xwtm_t  to 
)

接收数据,若数据为空,就限时等待

参数
[out]rxbuf指向缓冲区的指针,此缓冲区用于接收消息
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示接收缓冲区的大小
  • (O) 作为输出时,返回实际接收的消息大小
[out]qos返回消息的QoS的缓冲区,可为 nullptr 表示不关心QoS
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-ENODEV端口号超出范围
-EPERMXWSSC未启动
-ETIMEDOUT超时
注解
  • 上下文:线程

to 表示等待超时的时间点:

  • to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;
  • 如果 to 是过去的时间点,将直接返回 -ETIMEDOUT

在文件 XwsscPortProxy.cxx79 行定义.

80{
81 return xwssc_rx(mProxy, mPort, rxbuf, size, qos, to);
82}
函数调用图:

◆ sOnAsyncWrited()

void xwisc::XwsscPortProxy::sOnAsyncWrited ( struct xwssc xwssc,
xwssc_txh_t  txh,
xwer_t  rc,
void *  arg 
)
staticprivate

< 去除未使用变量的警告

在文件 XwsscPortProxy.cxx101 行定义.

103{
104 XwsscPortProxy * proxy = reinterpret_cast<XwsscPortProxy *>(arg);
106 proxy->onAsyncWrited(txh, rc);
107}
函数调用图:
这是这个函数的调用关系图:

◆ tryRead() [1/2]

xwer_t xwisc::XwsscPortProxy::tryRead ( xwu8_t  rxbuf[],
xwsz_t size 
)

尝试接收消息,若接收队列为空,立即返回错误码

参数
[out]rxbuf指向缓冲区的指针,此缓冲区用于接收消息
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示接收缓冲区的大小
  • (O) 作为输出时,返回实际接收的消息大小
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-ENODEV端口号超出范围
-ENODATA接收队列为空
-EPERMXWSSC未启动
注解
  • 上下文:中断、中断底半部、线程

在文件 XwsscPortProxy.cxx84 行定义.

85{
86 return xwssc_try_rx(mProxy, mPort, rxbuf, size, nullptr);
87}
xwer_t xwssc_try_rx(struct xwssc *xwssc, xwu8_t port, xwu8_t rxbuf[], xwsz_t *size, xwu8_t *qos)
XWSSC API: 尝试接收消息,若接收队列为空,立即返回错误码
函数调用图:

◆ tryRead() [2/2]

xwer_t xwisc::XwsscPortProxy::tryRead ( xwu8_t  rxbuf[],
xwsz_t size,
xwu8_t qos 
)

尝试接收消息,若接收队列为空,立即返回错误码

参数
[out]rxbuf指向缓冲区的指针,此缓冲区用于接收消息
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示接收缓冲区的大小
  • (O) 作为输出时,返回实际接收的消息大小
[out]qos返回消息的QoS的缓冲区,可为 nullptr 表示不关心QoS
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-ENODEV端口号超出范围
-ENODATA接收队列为空
-EPERMXWSSC未启动
注解
  • 上下文:中断、中断底半部、线程

在文件 XwsscPortProxy.cxx89 行定义.

90{
91 return xwssc_try_rx(mProxy, mPort, rxbuf, size, qos);
92}
函数调用图:

◆ write() [1/4]

xwer_t xwisc::XwsscPortProxy::write ( const xwu8_t  data[],
xwsz_t size 
)

发送数据,并同步等待发送结果

参数
[in]data数据缓冲区的指针
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示数据长度
  • (O) 作为输出时,返回实际发送的数据长度
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-E2BIG数据太长
-ENODEV端口号超出范围
-EINVALqos错误
-ENOBUFS帧槽被使用完
-EPERMXWSSC未启动
注解
  • 上下文:线程

在文件 XwsscPortProxy.cxx32 行定义.

33{
35}
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的发送队列中,并在限定的时间内等待发送结果
函数调用图:

◆ write() [2/4]

xwer_t xwisc::XwsscPortProxy::write ( const xwu8_t  data[],
xwsz_t size,
xwtm_t  to 
)

发送数据,并等待发送结果

参数
[in]data数据缓冲区的指针
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示数据长度
  • (O) 作为输出时,返回实际发送的数据长度
[in]to期望唤醒的时间点
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-E2BIG数据太长
-ENODEV端口号超出范围
-EINVALqos错误
-ENOBUFS帧槽被使用完
-EPERMXWSSC未启动
注解
  • 上下文:线程

to 表示等待超时的时间点:

  • to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;
  • 如果 to 是过去的时间点,将直接返回 -ETIMEDOUT

在文件 XwsscPortProxy.cxx43 行定义.

44{
45 return xwssc_tx(mProxy, data, size, mDefaultPriority, mPort, mDefaultQos, to);
46}
函数调用图:

◆ write() [3/4]

xwer_t xwisc::XwsscPortProxy::write ( const xwu8_t  data[],
xwsz_t size,
xwu8_t  pri,
xwu8_t  qos 
)

发送数据,并同步等待发送结果

参数
[in]data数据缓冲区的指针
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示数据长度
  • (O) 作为输出时,返回实际发送的数据长度
[in]pri用户数据的优先级
[in]qos服务质量,取值范围: xwssc_msg_qos_em
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-E2BIG数据太长
-ENODEV端口号超出范围
-EINVALqos错误
-ENOBUFS帧槽被使用完
-EPERMXWSSC未启动
注解
  • 上下文:线程

在文件 XwsscPortProxy.cxx37 行定义.

39{
40 return xwssc_tx(mProxy, data, size, pri, mPort, qos, XWTM_MAX);
41}
函数调用图:

◆ write() [4/4]

xwer_t xwisc::XwsscPortProxy::write ( const xwu8_t  data[],
xwsz_t size,
xwu8_t  pri,
xwu8_t  qos,
xwtm_t  to 
)

发送数据,并在限定的时间内等待发送结果

参数
[in]data数据缓冲区的指针
[in,out]size指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示数据长度
  • (O) 作为输出时,返回实际发送的数据长度
[in]pri用户数据的优先级
[in]qos服务质量,取值范围: xwssc_msg_qos_em
[in]to期望唤醒的时间点
返回
错误码
返回值
XWOK没有错误
-EFAULT空指针
-E2BIG数据太长
-ENODEV端口号超出范围
-EINVALqos错误
-ENOBUFS帧槽被使用完
-EPERMXWSSC未启动
注解
  • 上下文:线程

to 表示等待超时的时间点:

  • to 通常是未来的时间,即 当前系统时间 + delta , 可以使用 xwtm_ft(delta) 表示;
  • 如果 to 是过去的时间点,将直接返回 -ETIMEDOUT

在文件 XwsscPortProxy.cxx48 行定义.

50{
51 return xwssc_tx(mProxy, data, size, pri, mPort, qos, to);
52}
函数调用图:

结构体成员变量说明

◆ mDefaultPriority

xwu8_t xwisc::XwsscPortProxy::mDefaultPriority
private

默认发送优先级

在文件 XwsscPortProxy.hxx37 行定义.

◆ mDefaultQos

xwu8_t xwisc::XwsscPortProxy::mDefaultQos
private

默认Qos

在文件 XwsscPortProxy.hxx38 行定义.

◆ mPort

xwu8_t xwisc::XwsscPortProxy::mPort
private

端口

在文件 XwsscPortProxy.hxx36 行定义.

◆ mProxy

struct xwssc* xwisc::XwsscPortProxy::mProxy
private

在文件 XwsscPortProxy.hxx35 行定义.


该类的文档由以下文件生成: