跳转至

port

port 提供星闪 SLE (Star Flash Low Energy) 端口管理能力,支持端口的创建、销毁、连接、断开及数据收发,适用于服务端与客户端的端口通信场景。

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

接口清单

接口名称 功能简述
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

errcode_t bs_sle_port_enable(bs_sle_port_enable_callback cbk)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 使能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)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 创建本端端口,为指定应用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

errcode_t bs_sle_port_register_callbacks(uint16_t port, bs_sle_port_event_cbk_t cbk)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 注册端口管理回调函数,包括数据接收回调、连接状态变化回调和传输状态回调
  • 将回调函数与指定端口号绑定
  • 客户端和服务端均须注册回调

前置条件

  • 调用时序约束:须在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

errcode_t bs_sle_port_create_remote_port(sle_uuid_t uuid, uint16_t port)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 根据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)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 建立传输通道,连接对端设备
  • 支持自动发现对端端口服务和静态配置对端端口两种模式
  • 仅支持基础模式和可靠模式两种传输模式
  • 客户端使用接口

前置条件

  • 调用时序约束:若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)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 根据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)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 根据端口号向对端设备发送数据
  • 通过源端口和目的端口号定位传输通道进行数据发送
  • 须在传输通道已建立后调用

前置条件

  • 调用时序约束:须在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

errcode_t bs_sle_port_disconnect_by_uuid(uint16_t dev_id, sle_uuid_t *uuid)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 根据UUID断开传输通道
  • 断开后若需再次传输数据,须重新调用bs_sle_port_connect()建立连接
  • 不需要重新创建本端端口号

前置条件

  • 调用时序约束:须在传输通道已建立后调用
  • 依赖关系:依赖传输通道已连接

入参

名称 参数类型 详细说明 约束取值范围
dev_id uint16_t 设备ID 0 ~ 65535
uuid sle_uuid_t * 服务UUID指针 非NULL

bs_sle_port_disconnect_by_port

errcode_t bs_sle_port_disconnect_by_port(uint16_t dev_id, uint16_t src_port, uint16_t dst_port)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 根据本端端口号和对端端口号断开传输通道
  • 断开后若需再次传输数据,须重新调用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

errcode_t bs_sle_port_destroy_by_port(uint16_t port)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 根据端口号销毁端口,释放端口资源
  • 若指定的端口不存在返回error
  • 销毁后若需再次传输数据,须重新申请端口并建立连接

前置条件

  • 调用时序约束:须在bs_sle_port_create_local_port()成功后调用
  • 依赖关系:依赖本端端口已创建

入参

名称 参数类型 详细说明 约束取值范围
port uint16_t 本端端口号 0 ~ 65535

bs_sle_port_destroy_by_uuid

errcode_t bs_sle_port_destroy_by_uuid(sle_uuid_t *uuid)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 根据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)

头文件清单

#include "protocol/bt/host/include/sle/sle_service/ssf_port.h"

功能说明

  • 异步获取指定设备的远程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

typedef void (*bs_sle_port_enable_callback)(errcode_t status);

使用说明

  • 调用时机: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

typedef struct {
    uint16_t uuid_num;
    sle_uuid_t *uuid_info_list;
} 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

typedef struct {
    bs_sle_port_get_uuid_info_callback get_uuid_info_cbk;
} ssf_port_uuid_info_cbk_t;

成员说明

成员名称 数据类型 描述
get_uuid_info_cbk bs_sle_port_get_uuid_info_callback 获取UUID列表回调