chba
头文件清单
接口清单
接口名称 功能简述 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 获取指定链路的统计信息 sle_chba_netdev_driver_send 通过CHBA网络设备发送数据 sle_chba_netdev_register_callbacks 注册CHBA网络设备回调函数
Functions
sle_chba_netdev_create
头文件清单
功能说明
- 创建CHBA网络设备,根据指定的角色和模式初始化CHBA网络设备实例
- 角色参数决定设备作为AP(无线网络中心,管理STA,提供数据中继,SLE作为client端)或STA(叶子节点,终端设备连接到无线网络进行数据传输,SLE作为server端)
- 创建后需调用sle_chba_netdev_register_callbacks注册回调函数以处理链路状态变更与数据上报
前置条件
- SLE协议栈已初始化完成,通过enable_sle()返回成功状态
- CHBA网络设备尚未创建,即未调用过sle_chba_netdev_create或已通过sle_chba_netdev_destroy销毁
入参
名称 参数类型 详细说明 约束取值范围 chba_role uint8_t CHBA设备角色 sle_chba_role枚举值:CHBA_ROLE_AP(0)、CHBA_ROLE_STA(1) chba_mode uint8_t CHBA工作模式 0:标准CHBA模式;其他值视平台支持
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 CHBA网络设备创建成功 Other 其他错误码,参考errcode_sle_t 执行失败
参考案例
src/application/samples/bt/sle_chba/src/sle_chba_server.c#sle_chba_sample_init
sle_chba_netdev_destroy
头文件清单
功能说明
- 销毁已创建的CHBA网络设备,释放相关资源
- 销毁后CHBA网络设备不可用,需重新调用sle_chba_netdev_create创建
- 销毁前需确保已断开所有链路连接
前置条件
- CHBA网络设备已通过sle_chba_netdev_create成功创建
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 CHBA网络设备销毁成功 Other 其他错误码,参考errcode_sle_t 执行失败
sle_chba_netdev_add_link
头文件清单
功能说明
- 向CHBA网络设备添加指定连接ID与对端地址的链路
- 链路添加后,CHBA网络设备可对该链路进行数据收发与状态管理
- AP模式下可添加多条链路,STA模式下通常添加一条链路
前置条件
- CHBA网络设备已通过sle_chba_netdev_create成功创建
- SLE连接已建立成功,conn_id与remote_addr有效
入参
名称 参数类型 详细说明 约束取值范围 conn_id uint16_t SLE连接ID 有效连接ID,非0xFFFF remote_addr const sle_addr_t * 对端设备地址指针 不为NULL,指向有效sle_addr_t结构体
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 链路添加成功 Other 其他错误码,参考errcode_sle_t 执行失败
参考案例
src/application/samples/bt/sle_chba/src/sle_chba_server.c#sle_chba_user_set_phy_cb
sle_chba_netdev_del_link
头文件清单
功能说明
- 从CHBA网络设备删除指定连接ID与对端地址的链路
- 链路删除后,CHBA网络设备不再对该链路进行数据收发与状态管理
- 通常在SLE连接断开时调用
前置条件
- CHBA网络设备已通过sle_chba_netdev_create成功创建
- 待删除的链路已通过sle_chba_netdev_add_link添加
入参
名称 参数类型 详细说明 约束取值范围 conn_id uint16_t SLE连接ID 有效连接ID,非0xFFFF remote_addr const sle_addr_t * 对端设备地址指针 不为NULL,指向有效sle_addr_t结构体
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 链路删除成功 Other 其他错误码,参考errcode_sle_t 执行失败
参考案例
src/application/samples/bt/sle_chba/src/sle_chba_server.c#sle_chba_user_conn_state_cb
sle_chba_netdev_get_linkinfo
头文件清单
功能说明
- 获取指定连接ID对应的链路统计信息,包括收发包计数与字节数
- 通过出参结构体返回链路的连接ID、对端地址、发送包数、发送字节数、接收包数、接收字节数
- 用于链路状态监控与流量统计
前置条件
- CHBA网络设备已通过sle_chba_netdev_create成功创建
- 待查询的链路已通过sle_chba_netdev_add_link添加
入参
名称 参数类型 详细说明 约束取值范围 conn_id uint16_t SLE连接ID 有效连接ID,非0xFFFF link sle_ip_link_info * 链路信息输出缓冲区指针 不为NULL,指向已分配的sle_ip_link_info结构体
出参
名称 数据类型 输出说明 link sle_ip_link_info * 填充指定链路的统计信息,包括conn_id、remote_addr、tx_pkts_cnt、tx_bytes、rx_pkts_cnt、rx_bytes
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 链路信息获取成功 Other 其他错误码,参考errcode_sle_t 执行失败
sle_chba_netdev_driver_send
头文件清单
功能说明
- 通过CHBA网络设备发送数据到对端设备
- 数据通过SLE链路发送,需确保链路已建立并处于可用状态
- 发送数据长度受SLE链路MTU约束
前置条件
- CHBA网络设备已通过sle_chba_netdev_create成功创建
- 至少有一条链路已通过sle_chba_netdev_add_link添加且链路状态正常
入参
名称 参数类型 详细说明 约束取值范围 data uint8_t * 待发送数据缓冲区指针 不为NULL,指向待发送数据 len uint16_t 待发送数据长度 大于0,不超过SLE链路MTU
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 数据发送成功 Other 其他错误码,参考errcode_sle_t 执行失败
参考案例
src/application/samples/bt/sle_chba/src/sle_chba_netif_mng.c#sle_chba_send_pktsrc/application/samples/bt/sle_chba/src/sle_chba_bridge.c#wifi_tx_sle_pbuf
sle_chba_netdev_register_callbacks
头文件清单
功能说明
- 注册CHBA网络设备回调函数集合,包括停止发送队列、唤醒发送队列、设置链路启用、设置链路禁用、数据上报回调
- 注册后,CHBA网络设备在链路状态变更与数据收发时触发对应回调
- 重复注册将覆盖先前注册的回调函数
前置条件
- CHBA网络设备已通过sle_chba_netdev_create成功创建
入参
名称 参数类型 详细说明 约束取值范围 func sle_chba_netdev_callbacks_t * 回调函数集合指针 不为NULL,各回调函数成员可为NULL
返回值
- 返回类型:errcode_t
返回值 文字含义 触发场景 ERRCODE_SUCC(0x00) 执行成功 回调函数注册成功 Other 其他错误码,参考errcode_sle_t 执行失败
参考案例
src/application/samples/bt/sle_chba/src/sle_chba_netif_mng.c#sle_chba_sample_netdev_register_callbacks
Type definitions
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网络设备接收数据上报时的回调通知。
Enumerations
sle_chba_role
enum sle_chba_role {
CHBA_ROLE_AP, // AP模式下,设备作为无线网络中心,管理STA,提供数据中继,支持多设备连接。sle作为client端
CHBA_ROLE_STA, // STA模式下,为叶子节点。终端设备连接到无线网络,进行数据传输。sle作为server端
};
枚举成员 取值 描述 CHBA_ROLE_AP 0 AP模式,设备作为无线网络中心,管理STA,提供数据中继,支持多设备连接,SLE作为client端 CHBA_ROLE_STA 1 STA模式,为叶子节点,终端设备连接到无线网络进行数据传输,SLE作为server端
errcode_sle_t
typedef enum {
ERRCODE_SLE_SUCCESS = 0,
ERRCODE_SLE_CONTINUE = ERRCODE_SLE_COMMON_BASE,
ERRCODE_SLE_DIRECT_RETURN,
ERRCODE_SLE_NO_ATTATION,
ERRCODE_SLE_PARAM_ERR,
ERRCODE_SLE_FAIL,
ERRCODE_SLE_TIMEOUT,
ERRCODE_SLE_UNSUPPORTED,
ERRCODE_SLE_GETRECORD_FAIL,
ERRCODE_SLE_POINTER_NULL,
ERRCODE_SLE_NO_RECORD,
ERRCODE_SLE_STATUS_ERR,
ERRCODE_SLE_NOMEM,
ERRCODE_SLE_AUTH_FAIL,
ERRCODE_SLE_AUTH_PKEY_MISS,
ERRCODE_SLE_RMT_DEV_DOWN,
ERRCODE_SLE_PAIRING_REJECT,
ERRCODE_SLE_BUSY,
ERRCODE_SLE_NOT_READY,
ERRCODE_SLE_CONN_FAIL,
ERRCODE_SLE_OUT_OF_RANGE,
ERRCODE_SLE_MEMCPY_FAIL,
ERRCODE_SLE_MALLOC_FAIL,
ERRCODE_SLE_MAX = ERRCODE_SLE_COMMON_END
} errcode_sle_t;
枚举成员 取值 描述 ERRCODE_SLE_SUCCESS 0 执行成功 ERRCODE_SLE_CONTINUE 0x80006000 继续执行 ERRCODE_SLE_DIRECT_RETURN 0x80006001 直接返回 ERRCODE_SLE_NO_ATTATION 0x80006002 无关注错误码 ERRCODE_SLE_PARAM_ERR 0x80006003 参数错误 ERRCODE_SLE_FAIL 0x80006004 配置失败 ERRCODE_SLE_TIMEOUT 0x80006005 配置超时 ERRCODE_SLE_UNSUPPORTED 0x80006006 参数不支持 ERRCODE_SLE_GETRECORD_FAIL 0x80006007 获取当前记录失败 ERRCODE_SLE_POINTER_NULL 0x80006008 指针为空 ERRCODE_SLE_NO_RECORD 0x80006009 无记录返回 ERRCODE_SLE_STATUS_ERR 0x8000600A 状态错误 ERRCODE_SLE_NOMEM 0x8000600B 内存不足 ERRCODE_SLE_AUTH_FAIL 0x8000600C 认证失败 ERRCODE_SLE_AUTH_PKEY_MISS 0x8000600D PIN码或密钥丢失致认证失败 ERRCODE_SLE_RMT_DEV_DOWN 0x8000600E 对端设备关闭 ERRCODE_SLE_PAIRING_REJECT 0x8000600F 配对拒绝 ERRCODE_SLE_BUSY 0x80006010 系统繁忙 ERRCODE_SLE_NOT_READY 0x80006011 系统未准备好 ERRCODE_SLE_CONN_FAIL 0x80006012 连接失败 ERRCODE_SLE_OUT_OF_RANGE 0x80006013 越界 ERRCODE_SLE_MEMCPY_FAIL 0x80006014 拷贝失败 ERRCODE_SLE_MALLOC_FAIL 0x80006015 内存申请失败 ERRCODE_SLE_MAX 0x800067FF SLE错误码最大值
sle_addr_type_t
枚举成员 取值 描述 SLE_ADDRESS_TYPE_PUBLIC 0 公有地址 SLE_ADDRESS_TYPE_RANDOM 6 随机地址
Structures
sle_ip_link_info
typedef struct {
uint8_t conn_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; /*!< @if Eng Chba net device stop queue callback.
@else CHBA网络设备停止发送队列回调函数。 @endif */
sle_chba_netdev_wake_queue_callback wake_queue_cb; /*!< @if Eng Chba net device wake queue callback.
@else CHBA网络设备唤醒发送队列回调函数。 @endif */
sle_chba_netdev_set_link_up_callback set_link_up_cb; /*!< @if Eng Chba net device set link up callback.
@else CHBA网络设备设置链路启用回调函数。 @endif */
sle_chba_netdev_set_link_down_callback set_link_down_cb; /*!< @if Eng Chba net device set link down callback.
@else CHBA网络设备设置链路禁用回调函数。 @endif */
sle_chba_netdev_input_callback netdev_input_cb; /*!< @if Eng Chba net device input callback.
@else CHBA网络设备数据上报回调函数。 @endif */
} sle_chba_netdev_callbacks_t;
成员说明:
成员名称 数据类型 描述 stop_queue_cb sle_chba_netdev_stop_queue_callback CHBA网络设备停止发送队列回调函数 wake_queue_cb sle_chba_netdev_wake_queue_callback CHBA网络设备唤醒发送队列回调函数 set_link_up_cb sle_chba_netdev_set_link_up_callback CHBA网络设备设置链路启用回调函数 set_link_down_cb sle_chba_netdev_set_link_down_callback CHBA网络设备设置链路禁用回调函数 netdev_input_cb sle_chba_netdev_input_callback CHBA网络设备数据上报回调函数
sle_addr_t
typedef struct {
uint8_t type; /*!< @if Eng SLE device address type { @ref sle_addr_type_t }
@else SLE设备地址类型 { @ref sle_addr_type_t } @endif */
unsigned char addr[SLE_ADDR_LEN]; /*!< @if Eng SLE device address
@else SLE设备地址 @endif */
} sle_addr_t;
成员说明:
成员名称 数据类型 描述 type uint8_t SLE设备地址类型,取值参考sle_addr_type_t addr unsigned char[6] SLE设备地址,长度为SLE_ADDR_LEN(6)