port
port 提供星闪 SLE (Star Flash Low Energy) 端口管理能力,支持端口的创建、销毁、连接、断开及数据收发,适用于服务端与客户端的端口通信场景。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| bs_sle_port_enable | 使能port能力,注册使能结果回调 |
| bs_sle_port_create_local_port | 创建本端端口,分配端口号 |
| bs_sle_port_register_callbacks | 注册端口管理回调函数 |
| bs_sle_port_create_remote_port | 根据UUID创建对端端口 |
| bs_sle_port_connect | 建立传输通道,连接对端设备 |
| bs_sle_port_write_data_by_uuid | 根据UUID发送数据 |
| bs_sle_port_write_data_by_port | 根据端口号发送数据 |
| bs_sle_port_disconnect_by_uuid | 根据UUID断开传输通道 |
| bs_sle_port_disconnect_by_port | 根据端口号断开传输通道 |
| bs_sle_port_destroy_by_port | 根据端口号销毁端口 |
| bs_sle_port_destroy_by_uuid | 根据UUID销毁端口 |
| bs_sle_port_get_remote_uuid_info_by_conn_id | 获取远程设备的UUID列表 |
Functions
bs_sle_port_enable
头文件清单
功能说明
- 使能port能力,初始化port协议栈
- 注册port使能结果回调函数,通过回调获取使能操作结果
- 服务端和客户端均须调用此接口
前置条件
- 调用时序约束:须在SLE协议栈初始化完成后调用
- 依赖关系:依赖SLE底层连接能力已就绪
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| cbk | bs_sle_port_enable_callback | port使能结果回调函数 | 非NULL |
bs_sle_port_create_local_port
errcode_t bs_sle_port_create_local_port(sle_uuid_t uuid, uint16_t manufacturer_id, uint8_t auto_generate_port_flag, uint16_t *port)
头文件清单
功能说明
- 创建本端端口,为指定应用UUID分配端口号
- 支持静态指定端口号或动态协商生成端口号两种模式
- 服务端和客户端使用端口传输数据前必须调用此接口
前置条件
- 调用时序约束:须在bs_sle_port_enable()成功返回后调用
- 依赖关系:依赖port能力已使能
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| uuid | sle_uuid_t | 应用UUID | - |
| manufacturer_id | uint16_t | 厂商标识 | 0 ~ 65535 |
| auto_generate_port_flag | uint8_t | 端口分配模式标志 | BS_SLE_PORT_STATIC_GENERATE(0) / BS_SLE_PORT_AUTO_GENERATE(1) |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| port | uint16_t * | 分配的本端端口号 |
bs_sle_port_register_callbacks
头文件清单
功能说明
- 注册端口管理回调函数,包括数据接收回调、连接状态变化回调和传输状态回调
- 将回调函数与指定端口号绑定
- 客户端和服务端均须注册回调
前置条件
- 调用时序约束:须在bs_sle_port_create_local_port()成功返回后调用
- 依赖关系:依赖本端端口已创建
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| port | uint16_t | 与回调绑定的本端端口号 | 0 ~ 65535 |
| cbk | bs_sle_port_event_cbk_t | 端口管理回调函数结构体 | 非NULL |
bs_sle_port_create_remote_port
头文件清单
功能说明
- 根据UUID创建对端端口,配置远端端口号
- 用于静态分配模式下指定对端端口号
- 服务端和客户端均可使用
前置条件
- 调用时序约束:须先通过bs_sle_port_create_local_port()以静态模式创建本端端口
- 依赖关系:依赖本端端口已通过静态模式创建
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| uuid | sle_uuid_t | 查询输入的UUID | - |
| port | uint16_t | 远端端口号 | 0 ~ 65535 |
bs_sle_port_connect
errcode_t bs_sle_port_connect(uint16_t dev_id, sle_uuid_t uuid, uint8_t find_remote_flag, bs_sle_channel_trans_mode_t trans_mode)
头文件清单
功能说明
- 建立传输通道,连接对端设备
- 支持自动发现对端端口服务和静态配置对端端口两种模式
- 仅支持基础模式和可靠模式两种传输模式
- 客户端使用接口
前置条件
- 调用时序约束:若find_remote_flag为静态模式,须先通过bs_sle_port_create_remote_port()完成对端端口号配置
- 依赖关系:依赖本端端口已创建且回调已注册
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 设备ID | 0 ~ 65535 |
| uuid | sle_uuid_t | 应用UUID | - |
| find_remote_flag | uint8_t | 对端端口发现模式标志 | BS_SLE_PORT_STATIC_REMOTE(0) / BS_SLE_PORT_AUTO_REMOTE(1) |
| trans_mode | bs_sle_channel_trans_mode_t | 传输模式 | SLE_CHANNEL_BASIC_MODE(0) / SLE_CHANNEL_STREAM_MODE(1) / SLE_CHANNEL_TRANSPARENT_MODE(2) / SLE_CHANNEL_RELIABLE_MODE(3) |
bs_sle_port_write_data_by_uuid
errcode_t bs_sle_port_write_data_by_uuid(uint16_t dev_id, sle_uuid_t *uuid, uint16_t data_len, uint8_t *data)
头文件清单
功能说明
- 根据UUID向对端设备发送数据
- 通过应用标识定位传输通道进行数据发送
- 须在传输通道已建立后调用
前置条件
- 调用时序约束:须在bs_sle_port_connect()成功建立传输通道后调用
- 依赖关系:依赖传输通道已连接
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 设备ID | 0 ~ 65535 |
| uuid | sle_uuid_t * | 应用标识UUID指针 | 非NULL |
| data_len | uint16_t | 发送数据长度 | 0 ~ 65535 |
| data | uint8_t * | 发送数据缓冲区指针 | 非NULL |
bs_sle_port_write_data_by_port
errcode_t bs_sle_port_write_data_by_port(uint16_t dev_id, uint16_t src_port, uint16_t dst_port, uint16_t data_len, uint8_t *data)
头文件清单
功能说明
- 根据端口号向对端设备发送数据
- 通过源端口和目的端口号定位传输通道进行数据发送
- 须在传输通道已建立后调用
前置条件
- 调用时序约束:须在bs_sle_port_connect()成功建立传输通道后调用
- 依赖关系:依赖传输通道已连接
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 设备ID | 0 ~ 65535 |
| src_port | uint16_t | 本端端口号 | 0 ~ 65535 |
| dst_port | uint16_t | 对端端口号 | 0 ~ 65535 |
| data_len | uint16_t | 发送数据长度 | 0 ~ 65535 |
| data | uint8_t * | 发送数据缓冲区指针 | 非NULL |
bs_sle_port_disconnect_by_uuid
头文件清单
功能说明
- 根据UUID断开传输通道
- 断开后若需再次传输数据,须重新调用bs_sle_port_connect()建立连接
- 不需要重新创建本端端口号
前置条件
- 调用时序约束:须在传输通道已建立后调用
- 依赖关系:依赖传输通道已连接
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 设备ID | 0 ~ 65535 |
| uuid | sle_uuid_t * | 服务UUID指针 | 非NULL |
bs_sle_port_disconnect_by_port
头文件清单
功能说明
- 根据本端端口号和对端端口号断开传输通道
- 断开后若需再次传输数据,须重新调用bs_sle_port_connect()建立连接
- 不需要重新创建本端端口号
前置条件
- 调用时序约束:须在传输通道已建立后调用
- 依赖关系:依赖传输通道已连接
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 设备ID | 0 ~ 65535 |
| src_port | uint16_t | 本端端口号 | 0 ~ 65535 |
| dst_port | uint16_t | 对端端口号 | 0 ~ 65535 |
bs_sle_port_destroy_by_port
头文件清单
功能说明
- 根据端口号销毁端口,释放端口资源
- 若指定的端口不存在返回error
- 销毁后若需再次传输数据,须重新申请端口并建立连接
前置条件
- 调用时序约束:须在bs_sle_port_create_local_port()成功后调用
- 依赖关系:依赖本端端口已创建
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| port | uint16_t | 本端端口号 | 0 ~ 65535 |
bs_sle_port_destroy_by_uuid
头文件清单
功能说明
- 根据UUID销毁端口,释放端口资源
- 若指定的UUID不存在返回error
- 销毁后若需再次传输数据,须重新申请端口并建立连接
前置条件
- 调用时序约束:须在bs_sle_port_create_local_port()成功后调用
- 依赖关系:依赖本端端口已创建
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| uuid | sle_uuid_t * | 应用UUID指针 | 非NULL |
bs_sle_port_get_remote_uuid_info_by_conn_id
errcode_t bs_sle_port_get_remote_uuid_info_by_conn_id(uint16_t dev_id, ssf_port_uuid_info_cbk_t *uuid_cbk)
头文件清单
功能说明
- 异步获取指定设备的远程UUID列表
- 通过回调函数返回UUID列表获取结果
- 用于发现对端设备支持的UUID信息
前置条件
- 调用时序约束:须在SLE连接已建立后调用
- 依赖关系:回调函数必须有效且非空
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 远程设备ID | 0 ~ 65535 |
| uuid_cbk | ssf_port_uuid_info_cbk_t * | UUID列表获取结果回调函数指针 | 非NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SLE_SUCCESS(0) | UUID获取请求成功 | 请求成功发起 |
| ERRCODE_SLE_POINTER_NULL(0x80006009) | 回调函数为空 | uuid_cbk指针为NULL |
| ERRCODE_SLE_FAIL(0x80006004) | UUID获取请求失败 | 请求失败 |
Type definitions
bs_sle_port_conn_state_changed_callback
typedef void (*bs_sle_port_conn_state_changed_callback)(
uint16_t dev_id, uint16_t src_port, uint16_t dst_port, uint8_t state);
使用说明
- 调用时机:传输通道连接状态变化时由协议栈调用
- 参数 dev_id:设备ID
- 参数 src_port:本端端口号
- 参数 dst_port:对端端口号
- 参数 state:通道状态,参考bs_sle_port_channel_status_t
bs_sle_port_receive_data_callback
typedef void (*bs_sle_port_receive_data_callback)(
uint16_t dev_id, uint16_t src_port, int16_t dst_port, const uint8_t *data, uint32_t data_len);
使用说明
- 调用时机:传输通道接收到数据时由协议栈调用
- 参数 dev_id:设备ID
- 参数 src_port:发送端端口号
- 参数 dst_port:接收端端口号
- 参数 data:数据缓冲区
- 参数 data_len:数据长度
bs_sle_port_dynamic_trans_status_callback
typedef void (*bs_sle_port_dynamic_trans_status_callback)(uint8_t tc_handle,
const bs_sle_port_conn_param_t *data_header, const uint8_t *data, uint16_t data_len);
使用说明
- 调用时机:动态传输状态变化时由协议栈调用
- 参数 tc_handle:通道handle
- 参数 data_header:传输通道的连接参数
- 参数 data:数据缓冲区
- 参数 data_len:数据缓冲区长度
bs_sle_port_get_uuid_info_callback
typedef void (*bs_sle_port_get_uuid_info_callback)(uint16_t dev_id,
errcode_t reason, const bs_sle_port_remote_uuid_info_t* uuid_info);
使用说明
- 调用时机:UUID列表获取完成时由协议栈调用
- 参数 dev_id:设备ID
- 参数 reason:UUID获取操作结果
- 参数 uuid_info:UUID信息,包括UUID列表
bs_sle_port_enable_callback
使用说明
- 调用时机:port使能操作完成时由协议栈调用
- 参数 status:使能结果
Enumerations
bs_sle_port_channel_status_t
typedef enum {
BS_SLE_PORT_CONN_SUCC = 0,
BS_SLE_PORT_CONN_FAIL,
BS_SLE_PORT_DISCONN_SUCC,
BS_SLE_PORT_DISCONN_FAIL,
} bs_sle_port_channel_status_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BS_SLE_PORT_CONN_SUCC | 0 | 传输通道连接建立成功 |
| BS_SLE_PORT_CONN_FAIL | 1 | 传输通道连接建立失败 |
| BS_SLE_PORT_DISCONN_SUCC | 2 | 传输通道连接释放成功 |
| BS_SLE_PORT_DISCONN_FAIL | 3 | 传输通道连接释放失败 |
bs_sle_port_auto_generate_port_flag
typedef enum {
BS_SLE_PORT_STATIC_GENERATE = 0,
BS_SLE_PORT_AUTO_GENERATE,
} bs_sle_port_auto_generate_port_flag;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BS_SLE_PORT_STATIC_GENERATE | 0 | 静态指定端口号 |
| BS_SLE_PORT_AUTO_GENERATE | 1 | 动态协商生成端口号 |
bs_sle_port_find_remote_flag
typedef enum {
BS_SLE_PORT_STATIC_REMOTE = 0,
BS_SLE_PORT_AUTO_REMOTE,
} bs_sle_port_find_remote_flag;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BS_SLE_PORT_STATIC_REMOTE | 0 | 对端端口号已固定分配 |
| BS_SLE_PORT_AUTO_REMOTE | 1 | 通过服务发现获取对端端口号 |
bs_sle_channel_trans_mode_t
typedef enum {
SLE_CHANNEL_BASIC_MODE = 0,
SLE_CHANNEL_STREAM_MODE,
SLE_CHANNEL_TRANSPARENT_MODE,
SLE_CHANNEL_RELIABLE_MODE,
} bs_sle_channel_trans_mode_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| SLE_CHANNEL_BASIC_MODE | 0 | 基础模式 |
| SLE_CHANNEL_STREAM_MODE | 1 | 流模式(暂不支持) |
| SLE_CHANNEL_TRANSPARENT_MODE | 2 | 透传模式(暂不支持) |
| SLE_CHANNEL_RELIABLE_MODE | 3 | 可靠模式 |
Structures
bs_sle_port_remote_uuid_info_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| uuid_num | uint16_t | UUID数量 |
| uuid_info_list | sle_uuid_t * | UUID信息列表指针 |
bs_sle_port_conn_param_t
typedef struct {
uint16_t conn_id;
uint16_t src_port;
uint16_t dst_port;
} bs_sle_port_conn_param_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| conn_id | uint16_t | 链路ID |
| src_port | uint16_t | 源端口 |
| dst_port | uint16_t | 目的端口 |
bs_sle_port_event_cbk_t
typedef struct {
bs_sle_port_receive_data_callback receive_data_cbk;
bs_sle_port_conn_state_changed_callback channel_status_cbk;
bs_sle_port_dynamic_trans_status_callback trans_data_status_cbk;
} bs_sle_port_event_cbk_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| receive_data_cbk | bs_sle_port_receive_data_callback | 接收数据回调 |
| channel_status_cbk | bs_sle_port_conn_state_changed_callback | 连接状态变化回调 |
| trans_data_status_cbk | bs_sle_port_dynamic_trans_status_callback | 有连接发送结果通知回调 |
ssf_port_uuid_info_cbk_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| get_uuid_info_cbk | bs_sle_port_get_uuid_info_callback | 获取UUID列表回调 |