跳转至

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

errcode_t sle_chba_netdev_create(uint8_t chba_role, uint8_t chba_mode)

头文件清单

#include "include/middleware/services/bts/sle_chba/sle_chba_manager.h"

功能说明

  • 创建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

errcode_t sle_chba_netdev_destroy(void)

头文件清单

#include "include/middleware/services/bts/sle_chba/sle_chba_manager.h"

功能说明

  • 销毁CHBA网络设备模块,释放相关资源
  • 调用该接口后将停止CHBA网络设备的所有数据收发功能
  • 该接口应在不再使用CHBA功能时调用,与sle_chba_netdev_create配对使用

前置条件

  • CHBA网络设备已通过sle_chba_netdev_create创建完成
  • 建议在销毁前先删除所有已添加的CHBA链路

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 CHBA网络设备销毁成功
Other 其他错误码,参考errcode_sle_t 执行失败
errcode_t sle_chba_netdev_add_link(uint16_t conn_id, const sle_addr_t *remote_addr)

头文件清单

#include "include/middleware/services/bts/sle_chba/sle_chba_manager.h"

功能说明

  • 添加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 执行失败
errcode_t sle_chba_netdev_del_link(uint16_t conn_id, const sle_addr_t *remote_addr)

头文件清单

#include "include/middleware/services/bts/sle_chba/sle_chba_manager.h"

功能说明

  • 删除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

errcode_t sle_chba_netdev_get_linkinfo(uint16_t conn_id, sle_ip_link_info *link)

头文件清单

#include "include/middleware/services/bts/sle_chba/sle_chba_transmition.h"

功能说明

  • 获取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

errcode_t sle_chba_netdev_driver_send(uint8_t *data, uint16_t len)

头文件清单

#include "include/middleware/services/bts/sle_chba/sle_chba_transmition.h"

功能说明

  • 通过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

errcode_t sle_chba_netdev_register_callbacks(sle_chba_netdev_callbacks_t *func)

头文件清单

#include "include/middleware/services/bts/sle_chba/sle_chba_transmition.h"

功能说明

  • 注册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

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

typedef uint32_t errcode_t;

使用说明

作为本模块所有对外接口的返回值类型

sle_chba_netdev_stop_queue_callback

typedef errcode_t (*sle_chba_netdev_stop_queue_callback)(void);

使用说明

作为sle_chba_netdev_callbacks_t结构体成员stop_queue_cb的类型

调用时机

当CHBA网络设备发送缓存已满时触发,通知上层停止向发送队列写入数据,避免数据丢失。

sle_chba_netdev_wake_queue_callback

typedef errcode_t (*sle_chba_netdev_wake_queue_callback)(void);

使用说明

作为sle_chba_netdev_callbacks_t结构体成员wake_queue_cb的类型

调用时机

当CHBA网络设备发送缓存从满状态恢复为可用时触发,通知上层可以继续向发送队列写入数据。

typedef errcode_t (*sle_chba_netdev_set_link_up_callback)(void);

使用说明

作为sle_chba_netdev_callbacks_t结构体成员set_link_up_cb的类型

调用时机

当CHBA链路启用时触发,通知上层该链路已就绪可以进行数据收发。

typedef errcode_t (*sle_chba_netdev_set_link_down_callback)(void);

使用说明

作为sle_chba_netdev_callbacks_t结构体成员set_link_down_cb的类型

调用时机

当CHBA链路断开或禁用时触发,通知上层该链路已不可用,应停止相关数据操作。

sle_chba_netdev_input_callback

typedef errcode_t (*sle_chba_netdev_input_callback)(uint8_t *data, uint16_t len);

使用说明

作为sle_chba_netdev_callbacks_t结构体成员netdev_input_cb的类型

调用时机

当CHBA网络设备接收到数据时触发,将接收到的数据和长度通过回调参数上报给上层处理。