chba
CHBA(Converged Home & Business Architecture)模块提供基于SLE协议的CHBA网络设备管理功能,包括网络设备的创建与销毁、链路的添加与删除、数据收发以及回调函数注册等接口,用于实现设备间的数据中继和传输。
头文件清单
#include "include/middleware/services/bts/sle_chba/sle_chba_manager.h"
#include "include/middleware/services/bts/sle_chba/sle_chba_transmition.h"
接口清单
| 接口名称 | 功能简述 |
|---|---|
| sle_chba_netdev_create | 创建CHBA网络设备模块 |
| sle_chba_netdev_destroy | 销毁CHBA网络设备模块 |
| sle_chba_netdev_add_link | 添加CHBA链路 |
| sle_chba_netdev_del_link | 删除CHBA链路 |
| sle_chba_netdev_get_linkinfo | 获取CHBA链路信息 |
| sle_chba_netdev_driver_send | 通过CHBA驱动发送数据 |
| sle_chba_netdev_register_callbacks | 注册CHBA回调函数 |
Functions
sle_chba_netdev_create
头文件清单
功能说明
- 创建CHBA网络设备模块,根据指定的设备角色和模式初始化CHBA网络设备
- chba_role参数指定设备角色:AP模式(设备作为无线网络中心,管理STA,提供数据中继,支持多设备连接)或STA模式(设备作为叶子节点,连接到无线网络进行数据传输)
- chba_mode参数指定是否开启ACHBA模式
- 该接口应在使用其他CHBA接口之前调用,作为模块初始化入口
前置条件
- SLE协议栈已初始化完成
- 当前设备未创建CHBA网络设备实例,或已调用sle_chba_netdev_destroy销毁已有实例
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| chba_role | uint8_t | 设备角色 | - CHBA_ROLE_AP - CHBA_ROLE_STA |
| chba_mode | uint8_t | CHBA模式,是否开启ACHBA | 0 ~ 255 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | CHBA网络设备创建成功 |
| Other | 其他错误码,参考errcode_sle_t | 执行失败 |
sle_chba_netdev_destroy
头文件清单
功能说明
- 销毁CHBA网络设备模块,释放相关资源
- 调用该接口后将停止CHBA网络设备的所有数据收发功能
- 该接口应在不再使用CHBA功能时调用,与sle_chba_netdev_create配对使用
前置条件
- CHBA网络设备已通过sle_chba_netdev_create创建完成
- 建议在销毁前先删除所有已添加的CHBA链路
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | CHBA网络设备销毁成功 |
| Other | 其他错误码,参考errcode_sle_t | 执行失败 |
sle_chba_netdev_add_link
头文件清单
功能说明
- 添加CHBA链路,将指定SLE连接加入CHBA网络设备进行管理
- conn_id参数指定SLE连接ID,remote_addr参数指定远端设备的SLE地址
- 添加链路后,该连接可通过CHBA网络设备进行数据收发
前置条件
- CHBA网络设备已通过sle_chba_netdev_create创建完成
- 指定的SLE连接已建立,conn_id和remote_addr为有效值
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| conn_id | uint16_t | SLE连接ID | 0 ~ 65535 |
| remote_addr | const sle_addr_t * | 远端设备SLE地址指针 | 非NULL,指向有效的sle_addr_t结构体 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | CHBA链路添加成功 |
| Other | 其他错误码,参考errcode_sle_t | 执行失败 |
sle_chba_netdev_del_link
头文件清单
功能说明
- 删除CHBA链路,将指定SLE连接从CHBA网络设备中移除
- 删除链路后,该连接将不再通过CHBA网络设备进行数据收发
- conn_id参数和remote_addr参数需与添加链路时使用的值对应
前置条件
- CHBA网络设备已通过sle_chba_netdev_create创建完成
- 指定的CHBA链路已通过sle_chba_netdev_add_link添加
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| conn_id | uint16_t | SLE连接ID | 0 ~ 65535 |
| remote_addr | const sle_addr_t * | 远端设备SLE地址指针 | 非NULL,指向有效的sle_addr_t结构体 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | CHBA链路删除成功 |
| Other | 其他错误码,参考errcode_sle_t | 执行失败 |
sle_chba_netdev_get_linkinfo
头文件清单
功能说明
- 获取CHBA链路信息,包括连接ID、远端地址、收发报文数量和字节数等统计信息
- conn_id参数指定待查询的连接ID,link参数为输出参数,用于接收链路信息
- 该接口可用于查询链路的实时数据传输统计
前置条件
- CHBA网络设备已通过sle_chba_netdev_create创建完成
- 指定的CHBA链路已通过sle_chba_netdev_add_link添加
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| conn_id | uint16_t | 连接ID | 0 ~ 65535 |
| link | sle_ip_link_info * | 待获取的链路信息指针 | 非NULL,指向有效的sle_ip_link_info结构体 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| link | sle_ip_link_info * | 填充链路信息,包含连接ID、远端地址、收发报文统计 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 链路信息获取成功 |
| Other | 其他错误码,参考errcode_sle_t | 执行失败 |
sle_chba_netdev_driver_send
头文件清单
功能说明
- 通过CHBA驱动发送数据
- data参数指向待发送的数据缓冲区,len参数指定数据长度
- 发送数据前需确保CHBA链路已建立且驱动缓存未满,否则可能返回失败
前置条件
- CHBA网络设备已通过sle_chba_netdev_create创建完成
- 至少一条CHBA链路已通过sle_chba_netdev_add_link添加
- 驱动发送缓存未满(可通过stop_queue_cb/wake_queue_cb回调判断缓存状态)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| data | uint8_t * | 待发送的数据指针 | 非NULL,指向有效的数据缓冲区 |
| len | uint16_t | 数据长度 | 1 ~ 65535 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 数据发送成功 |
| Other | 其他错误码,参考errcode_sle_t | 执行失败 |
sle_chba_netdev_register_callbacks
头文件清单
功能说明
- 注册CHBA回调函数集,包括停止发送队列、唤醒发送队列、链路启用、链路禁用和数据上报回调
- 回调函数集通过sle_chba_netdev_callbacks_t结构体传入
前置条件
- 调用时序约束:CHBA网络设备已通过sle_chba_netdev_create创建完成
- func指针非NULL,指向有效的sle_chba_netdev_callbacks_t结构体
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| func | sle_chba_netdev_callbacks_t * | 回调函数结构体指针 | 非NULL,指向有效的sle_chba_netdev_callbacks_t结构体 |
返回值
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 回调函数注册成功 |
| Other | 其他错误码,参考errcode_sle_t | 执行失败 |
Enumerations
sle_chba_role_t
typedef enum {
CHBA_ROLE_AP, /*!< AP模式下,设备作为无线网络中心,管理STA,提供数据中继,支持多设备连接。sle作为client端 */
CHBA_ROLE_STA, /*!< STA模式下,为叶子节点。终端设备连接到无线网络,进行数据传输。sle作为server端 */
} sle_chba_role_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| CHBA_ROLE_AP | 0 | AP模式,设备作为无线网络中心,管理STA,提供数据中继,支持多设备连接。SLE作为client端 |
| CHBA_ROLE_STA | 1 | STA模式,设备作为叶子节点,终端设备连接到无线网络进行数据传输。SLE作为server端 |
Structures
sle_ip_link_info
typedef struct {
uint8_t conn_id; /*!< 连接ID */
sle_addr_t remote_addr; /*!< 远端设备地址 */
uint32_t tx_pkts_cnt; /*!< 已发送报文数量 */
uint32_t tx_bytes; /*!< 已发送字节数 */
uint32_t rx_pkts_cnt; /*!< 已接收报文数量 */
uint32_t rx_bytes; /*!< 已接收字节数 */
} sle_ip_link_info;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| conn_id | uint8_t | 连接ID |
| remote_addr | sle_addr_t | 远端设备地址 |
| tx_pkts_cnt | uint32_t | 已发送报文数量 |
| tx_bytes | uint32_t | 已发送字节数 |
| rx_pkts_cnt | uint32_t | 已接收报文数量 |
| rx_bytes | uint32_t | 已接收字节数 |
sle_chba_netdev_callbacks_t
typedef struct {
sle_chba_netdev_stop_queue_callback stop_queue_cb; /*!< CHBA网络设备停止发送队列回调函数 */
sle_chba_netdev_wake_queue_callback wake_queue_cb; /*!< CHBA网络设备唤醒发送队列回调函数 */
sle_chba_netdev_set_link_up_callback set_link_up_cb; /*!< CHBA网络设备设置链路启用回调函数 */
sle_chba_netdev_set_link_down_callback set_link_down_cb; /*!< CHBA网络设备设置链路禁用回调函数 */
sle_chba_netdev_input_callback netdev_input_cb; /*!< CHBA网络设备数据上报回调函数 */
} sle_chba_netdev_callbacks_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| stop_queue_cb | sle_chba_netdev_stop_queue_callback | 停止发送队列回调函数 |
| wake_queue_cb | sle_chba_netdev_wake_queue_callback | 唤醒发送队列回调函数 |
| set_link_up_cb | sle_chba_netdev_set_link_up_callback | 链路启用回调函数 |
| set_link_down_cb | sle_chba_netdev_set_link_down_callback | 链路禁用回调函数 |
| netdev_input_cb | sle_chba_netdev_input_callback | 数据上报回调函数 |
sle_addr_t
typedef struct {
uint8_t type; /*!< SLE设备地址类型 */
unsigned char addr[SLE_ADDR_LEN]; /*!< SLE设备地址 */
} sle_addr_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| type | uint8_t | SLE设备地址类型 |
| addr | unsigned char[SLE_ADDR_LEN] | SLE设备地址 |
Type definitions
errcode_t
使用说明
作为本模块所有对外接口的返回值类型
sle_chba_netdev_stop_queue_callback
使用说明
作为sle_chba_netdev_callbacks_t结构体成员stop_queue_cb的类型
调用时机
当CHBA网络设备发送缓存已满时触发,通知上层停止向发送队列写入数据,避免数据丢失。
sle_chba_netdev_wake_queue_callback
使用说明
作为sle_chba_netdev_callbacks_t结构体成员wake_queue_cb的类型
调用时机
当CHBA网络设备发送缓存从满状态恢复为可用时触发,通知上层可以继续向发送队列写入数据。
sle_chba_netdev_set_link_up_callback
使用说明
作为sle_chba_netdev_callbacks_t结构体成员set_link_up_cb的类型
调用时机
当CHBA链路启用时触发,通知上层该链路已就绪可以进行数据收发。
sle_chba_netdev_set_link_down_callback
使用说明
作为sle_chba_netdev_callbacks_t结构体成员set_link_down_cb的类型
调用时机
当CHBA链路断开或禁用时触发,通知上层该链路已不可用,应停止相关数据操作。
sle_chba_netdev_input_callback
使用说明
作为sle_chba_netdev_callbacks_t结构体成员netdev_input_cb的类型
调用时机
当CHBA网络设备接收到数据时触发,将接收到的数据和长度通过回调参数上报给上层处理。