对外接口层
📅 2026/7/15 23:42:00
👁️ 阅读次数
📝 编程学习
接口目录结构总览
1. 公共接口(Common)
头文件: softbus_common.h | softbus_error_code.h
常量定义
| 常量 | 值 | 说明 |
|---|---|---|
NETWORK_ID_BUF_LEN | 65 | 网络ID长度 |
UDID_BUF_LEN | 65 | UDID长度 |
UUID_BUF_LEN | 65 | UUID长度 |
BT_MAC_LEN | 18 | 蓝牙MAC地址长度 |
IP_STR_MAX_LEN | 46 | IP地址最大长度(支持IPv6) |
MAX_CAPABILITYDATA_LEN | 513 | 能力数据最大长度 |
DISC_MAX_CUST_DATA_LEN | 513 | 发现自定义数据最大长度 |
DISC_MAX_DEVICE_NAME_LEN | 65 | 设备名最大长度 |
DISC_MAX_DEVICE_ID_LEN | 96 | 设备ID最大长度 |
核心枚举类型
| 枚举 | 说明 |
|---|---|
ConnectionAddrType | 连接地址类型 (WLAN/BR/BLE/ETH/SESSION/USB) |
BleProtocolType | BLE协议类型 (GATT/COC) |
DiscoverMode | 发现模式 (PASSIVE=0x55 / ACTIVE=0xAA) |
ExchangeMedium | 传输介质 (AUTO/BLE/COAP/USB) |
ExchangeFreq | 交换频率 (LOW/MID/HIGH/SUPER_HIGH/EXTREME_HIGH) |
DataBitMap | 能力位图 (hicall/profile/castPlus/dvKit/ddmp等) |
DeviceType | 设备类型 (手机/平板/手表/TV/PC/音箱/车机等) |
StrategyForBle | BLE策略 (抑制/恢复发现) |
核心结构体
| 结构体 | 说明 |
|---|---|
ConnectionAddr | 设备连接地址(含BR/BLE/IP/Session地址联合体) |
PublishInfo | 服务发布信息(publishId/mode/medium/freq/capability等) |
SubscribeInfo | 服务订阅信息(subscribeId/mode/medium/freq/capability等) |
DeviceInfo | 发现设备信息(devId/devType/devName/addr/capability等) |
AuthHandle | 认证句柄(authId/type) |
错误码模块
| 模块 | 编号 | 说明 |
|---|---|---|
DISC_SUB_MODULE_CODE | 1 | 发现模块 |
CONN_SUB_MODULE_CODE | 2 | 连接模块 |
AUTH_SUB_MODULE_CODE | 3 | 认证模块 |
LNN_SUB_MODULE_CODE | 4 | 组网模块 |
TRANS_SUB_MODULE_CODE | 5 | 传输模块 |
IPCRPC_SUB_MODULE_CODE | 6 | IPC/RPC模块 |
PUBLIC_SUB_MODULE_CODE | 10 | 公共模块 |
2. 发现接口(Discovery)
头文件: softbus_bus_center.h (发现相关部分)
注意:dsoftbus 的发现接口与组网接口合并在
softbus_bus_center.h中,没有独立的发现头文件。
发现相关函数
| 函数 | 说明 |
|---|---|
int32_t PublishLNN(const char *pkgName, const PublishInfo *info, const IPublishCb *cb) | 发布服务,同一局域网的设备可发现该服务 |
int32_t StopPublishLNN(const char *pkgName, int32_t publishId) | 停止发布服务 |
| 函数 | 说明 |
|---|---|
int32_t RefreshLNN(const char *pkgName, const SubscribeInfo *info, const IRefreshCallback *cb) | 订阅服务(发现设备),发布该服务的设备信息将被上报 |
int32_t StopRefreshLNN(const char *pkgName, int32_t refreshId) | 停止订阅服务 |
发现相关回调
| 回调/结构体 | 说明 |
|---|---|
IPublishCb.OnPublishResult(int publishId, PublishResult reason) | 发布结果回调 |
IRefreshCallback.OnDeviceFound(const DeviceInfo *device) | 发现设备回调 |
IRefreshCallback.OnDiscoverResult(int32_t refreshId, RefreshResult reason) | 订阅结果回调 |
PublishResult | 发布结果枚举 (SUCCESS/NOT_SUPPORT_MEDIUM/INTERNAL/UNKNOWN) |
RefreshResult | 订阅结果枚举 (SUCCESS/NOT_SUPPORT_MEDIUM/INTERNAL/UNKNOWN) |
发现流程
发布端: PublishLNN() → IPublishCb.OnPublishResult() ↓ 订阅端: RefreshLNN() → IRefreshCallback.OnDeviceFound() → IRefreshCallback.OnDiscoverResult()3. 组网接口(Networking / Bus Center)
头文件: softbus_bus_center.h (组网相关部分)
组网核心函数
| 函数 | 说明 |
|---|---|
int32_t JoinLNN(const char *pkgName, ConnectionAddr *target, OnJoinLNNResult cb, bool isForceJoin) | 加入局域网网络,将当前设备加入指定设备所在的LNN |
int32_t LeaveLNN(const char *pkgName, const char *networkId, OnLeaveLNNResult cb) | 离开局域网网络 |
节点状态监听
| 函数 | 说明 |
|---|---|
int32_t RegNodeDeviceStateCb(const char *pkgName, INodeStateCb *callback) | 注册节点状态变化回调 |
int32_t UnregNodeDeviceStateCb(INodeStateCb *callback) | 注销节点状态变化回调 |
INodeStateCb 回调事件:
| 事件掩码 | 回调 | 说明 |
|---|---|---|
EVENT_NODE_STATE_ONLINE (0x1) | onNodeOnline | 设备上线 |
EVENT_NODE_STATE_OFFLINE (0x02) | onNodeOffline | 设备下线 |
EVENT_NODE_STATE_INFO_CHANGED (0x04) | onNodeBasicInfoChanged | 设备信息变化 |
EVENT_NODE_STATUS_CHANGED (0x08) | onNodeStatusChanged | 运行状态变化 |
EVENT_NODE_STATE_NETWORK_CHANGED (0x10) | onLocalNetworkIdChanged | 本地网络ID变化 |
EVENT_NODE_HICHAIN_PROOF_EXCEPTION (0x20) | onHichainProofException | Hichain证明异常 |
| - | onNodeDeviceTrustedChange | 信任关系变化 |
节点信息查询
| 函数 | 说明 |
|---|---|
int32_t GetAllNodeDeviceInfo(const char *pkgName, NodeBasicInfo **info, int32_t *infoNum) | 获取所有在线设备基本信息 |
void FreeNodeInfo(NodeBasicInfo *info) | 释放设备信息内存 |
int32_t GetLocalNodeDeviceInfo(const char *pkgName, NodeBasicInfo *info) | 获取本设备基本信息 |
int32_t GetNodeKeyInfo(const char *pkgName, const char *networkId, NodeDeviceInfoKey key, uint8_t *info, int32_t infoLen) | 获取指定设备关键信息 |
int32_t SetNodeDataChangeFlag(const char *pkgName, const char *networkId, uint16_t dataChangeFlag) | 设置节点数据变化标志 |
NodeDeviceInfoKey 枚举: UDID/UUID/MASTER_UDID/BR_MAC/IP_ADDRESS/DEV_NAME/NETWORK_CAPABILITY/NETWORK_TYPE/BLE_OFFLINE_CODE/NODE_ADDRESS/P2P_IP_ADDRESS/DEVICE_SECURITY_LEVEL/DEVICE_SCREEN_STATUS/STATIC_NETWORK_CAP
时间同步
| 函数 | 说明 |
|---|---|
int32_t StartTimeSync(const char *pkgName, const char *targetNetworkId, TimeSyncAccuracy accuracy, TimeSyncPeriod period, ITimeSyncCb *cb) | 启动时间同步 |
int32_t StopTimeSync(const char *pkgName, const char *targetNetworkId) | 停止时间同步 |
Meta Node 管理
| 函数 | 说明 |
|---|---|
int32_t ActiveMetaNode(const char *pkgName, const MetaNodeConfigInfo *info, char *metaNodeId) | 激活元节点 |
int32_t DeactiveMetaNode(const char *pkgName, const char *metaNodeId) | 去激活元节点 |
int32_t GetAllMetaNodeInfo(const char *pkgName, MetaNodeInfo *infos, int32_t *infoNum) | 获取所有元节点信息 |
心跳与辅助
| 函数 | 说明 |
|---|---|
int32_t ShiftLNNGear(const char *pkgName, const char *callerId, const char *targetNetworkId, const GearMode *mode) | 修改心跳参数并触发临时心跳 |
int32_t SetBleUuidLNN(uint16_t uuid) | 设置BLE UUID |
int32_t SyncTrustedRelationShip(const char *pkgName, const char *msg, uint32_t msgLen) | 同步信任关系(仅DM使用) |
int32_t SetDisplayName(const char *pkgName, const char *nameData, uint32_t len) | 设置本地设备显示名 |
4. 传输接口(Transport)
4.1 Session 接口 (v1)
头文件: session.h | trans_type.h
会话管理
| 函数 | 说明 |
|---|---|
int CreateSessionServer(const char *pkgName, const char *sessionName, const ISessionListener *listener) | 创建会话服务端(最多32个) |
int RemoveSessionServer(const char *pkgName, const char *sessionName) | 移除会话服务端 |
int OpenSession(const char *mySessionName, const char *peerSessionName, const char *peerNetworkId, const char *groupId, const SessionAttribute* attr) | 打开会话(异步) |
void CloseSession(int sessionId) | 关闭会话 |
数据发送
| 函数 | 说明 |
|---|---|
int SendBytes(int sessionId, const void *data, unsigned int len) | 发送字节数据 |
int SendMessage(int sessionId, const void *data, unsigned int len) | 发送消息 |
int SendStream(int sessionId, const StreamData *data, const StreamData *ext, const StreamFrameInfo *param) | 发送流数据 |
int SendFile(int sessionId, const char *sFileList[], const char *dFileList[], uint32_t fileCnt) | 发送文件 |
会话信息查询
| 函数 | 说明 |
|---|---|
int GetMySessionName(int sessionId, char *sessionName, unsigned int len) | 获取本端会话名 |
int GetPeerSessionName(int sessionId, char *sessionName, unsigned int len) | 获取对端会话名 |
int GetPeerDeviceId(int sessionId, char *networkId, unsigned int len) | 获取对端设备ID |
int GetSessionSide(int sessionId) | 获取会话角色(0=服务端,1=客户端) |
int GetSessionOption(int sessionId, SessionOption option, void* optionValue, uint32_t valueSize) | 获取会话选项 |
文件监听
| 函数 | 说明 |
|---|---|
int SetFileReceiveListener(const char *pkgName, const char *sessionName, const IFileReceiveListener *recvListener, const char *rootDir) | 设置文件接收监听 |
int SetFileSendListener(const char *pkgName, const char *sessionName, const IFileSendListener *sendListener) | 设置文件发送监听 |
核心回调结构体
| 回调 | 方法 | 说明 |
|---|---|---|
ISessionListener | OnSessionOpened | 会话打开 |
OnSessionClosed | 会话关闭 | |
OnBytesReceived | 接收字节数据 | |
OnMessageReceived | 接收消息 | |
OnStreamReceived | 接收流数据 | |
OnQosEvent | QoS事件 | |
IFileReceiveListener | OnReceiveFileStarted/OnReceiveFileProcess/OnReceiveFileFinished/OnFileTransError | 文件接收回调 |
IFileSendListener | OnSendFileProcess/OnSendFileFinished/OnFileTransError | 文件发送回调 |
核心类型
| 类型 | 说明 |
|---|---|
SessionType | TYPE_MESSAGE / TYPE_BYTES / TYPE_FILE / TYPE_STREAM |
StreamType | RAW_STREAM / COMMON_VIDEO_STREAM / COMMON_AUDIO_STREAM / VIDEO_SLICE_STREAM |
LinkType | WIFI_5G / WIFI_2G / P2P / BR / BLE / COC / HML 等 |
SessionAttribute | 会话属性(dataType/linkType/streamAttr/fastTransData) |
4.2 Socket 接口 (v2)
头文件: socket.h | trans_type.h
Socket 生命周期
| 函数 | 说明 |
|---|---|
int32_t Socket(SocketInfo info) | 创建Socket(最多15个) |
int32_t Listen(int32_t socket, const QosTV qos[], uint32_t qosCount, const ISocketListener *listener) | 服务端监听 |
int32_t Bind(int32_t socket, const QosTV qos[], uint32_t qosCount, const ISocketListener *listener) | 客户端绑定(同步) |
int32_t BindAsync(int32_t socket, const QosTV qos[], uint32_t qosCount, const ISocketListener *listener) | 客户端绑定(异步) |
void Shutdown(int32_t socket) | 关闭Socket |
数据发送
| 函数 | 说明 |
|---|---|
int32_t SendBytes(int32_t socket, const void *data, uint32_t len) | 发送字节数据 |
int32_t SendBytesAsync(int32_t socket, uint32_t dataSeq, const void *data, uint32_t len) | 异步发送字节数据 |
int32_t SendMessage(int32_t socket, const void *data, uint32_t len) | 发送消息 |
int32_t SendStream(int32_t socket, const StreamData *data, const StreamData *ext, const StreamFrameInfo *param) | 发送流数据 |
int32_t SendFile(int32_t socket, const char *sFileList[], const char *dFileList[], uint32_t fileCnt) | 发送文件 |
QoS
| 函数 | 说明 |
|---|---|
int32_t EvaluateQos(const char *peerNetworkId, TransDataType dataType, const QosTV *qos, uint32_t qosCount) | 评估QoS质量 |
核心回调结构体
| 回调 | 方法 | 说明 |
|---|---|---|
ISocketListener | OnBind | Socket绑定成功 |
OnShutdown | Socket关闭 | |
OnBytes | 接收字节数据 | |
OnMessage | 接收消息 | |
OnStream | 接收流数据 | |
OnFile | 接收文件事件 | |
OnQos | QoS状态变化 | |
OnError | 异步绑定错误 | |
OnNegotiate | 协商回调 | |
OnBytesSent | 数据发送完成 |
核心类型
| 类型 | 说明 |
|---|---|
TransDataType | MESSAGE / BYTES / FILE / RAW_STREAM / VIDEO_STREAM / AUDIO_STREAM / SLICE_STREAM / RAW_STREAM_ENCRYPED |
SocketInfo | Socket描述(name/peerName/peerNetworkId/pkgName/dataType) |
QosType | MIN_BW / MAX_LATENCY / MIN_LATENCY / RTT_LEVEL / MAX_BUFFER / MAX_IDLE_TIMEOUT / TRANS_RELIABILITY / TRANS_CONTINUOUS / REUSE_BE |
ShutdownReason | UNKNOWN / LOCAL / PEER / LNN_CHANGED / CONN_CHANGED / TIMEOUT / SEND_FILE_ERR / RECV_FILE_ERR 等 |
FileEvent | 文件事件(发送/接收进度、完成、错误、路径更新等) |
5. 内部接口(Inner Kits)
5.1 内部认证会话接口
头文件: inner_session.h
| 函数 | 说明 |
|---|---|
int OpenAuthSession(const char *sessionName, const ConnectionAddr *addrInfo, int num, const char *mixAddr) | 打开身份认证会话 |
void NotifyAuthSuccess(int sessionId) | 通知身份认证成功 |
5.2 内部 Socket 扩展接口
头文件: inner_socket.h
| 函数 | 说明 |
|---|---|
int32_t GetMtuSize(int32_t socket, uint32_t *mtuSize) | 获取Socket最大传输单元 |
int32_t DBinderGrantPermission(int32_t uid, int32_t pid, const char *socketName) | 授予Socket权限(DBinder) |
int32_t DBinderRemovePermission(const char *socketName) | 移除Socket权限 |
int32_t DfsBind(int32_t socket, const ISocketListener *listener) | DFS专用绑定 |
int32_t SetSocketOpt(int32_t socket, OptLevel level, OptType optType, void *optValue, int32_t optValueSize) | 设置Socket选项 |
int32_t GetSocketOpt(int32_t socket, OptLevel level, OptType optType, void *optValue, int32_t *optValueSize) | 获取Socket选项 |
int32_t PrivilegeShutdown(uint64_t tokenId, int32_t pid, const char *peerNetworkId) | 特权关闭会话(仅DMS可用) |
int32_t RegisterRelationChecker(IFeatureAbilityRelationChecker *relationChecker) | 注册特性能力关系检查器 |
5.3 分布式文件服务接口
头文件: dfs_session.h
| 函数 | 说明 |
|---|---|
int32_t GetSessionKey(int32_t sessionId, char *key, unsigned int len) | 获取会话密钥 |
int32_t GetSessionHandle(int32_t sessionId, int *handle) | 获取会话句柄 |
int32_t DisableSessionListener(int32_t sessionId) | 禁用会话监听 |
5.4 BLE 测距接口
头文件: ble_range.h
| 函数 | 说明 |
|---|---|
int32_t RegBleRangeCb(const char *pkgName, IBleRangeCb *callback) | 注册BLE测距回调 |
int32_t UnregBleRangeCb(const char *pkgName) | 注销BLE测距回调 |
int32_t TriggerHbForMeasureDistance(const char *pkgName, const char *callerId, const HbMode *mode) | 触发心跳测量距离 |
5.5 数据级别接口
头文件: data_level.h
| 函数 | 说明 |
|---|---|
int32_t RegDataLevelChangeCb(const char *pkgName, IDataLevelCb *callback) | 注册数据级别变化回调 |
int32_t UnregDataLevelChangeCb(const char *pkgName) | 注销数据级别变化回调 |
int32_t SetDataLevel(const DataLevel *dataLevel) | 设置分布式数据库数据级别 |
接口层级关系总图
编程学习
技术分享
实战经验