接口目录结构总览

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) 设置分布式数据库数据级别

接口层级关系总图

 

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐