open Harmony中分布式软总线的学习任务清单
·
前言
之前看带我的人写的博客,从分布式软总线的发布认证到组网,对分布式软总线有些写基础的认知,接下来打算进行一个深入的学习,这里将分布式软总线学习的任务清单列出来
项目概览
项目路径: foundation/communication/dsoftbus
分布式软总线实现近场设备间统一的分布式通信管理能力,提供不区分链路的设备间发现连接、组网和传输能力。核心三大功能:
- 发现连接:基于WiFi、蓝牙等通信方式的设备发现连接
- 设备组网:统一的设备组网和拓扑管理
- 数据传输:消息、字节、流、文件的数据传输通道
一、整体架构理解(⭐ 入门优先)
任务 1.1:理解分层架构
- SDK层 (
sdk/):运行业务进程代码,面向应用提供客户端能力 - Core层 (
core/):服务端核心实现,包含发现、连接、认证、组网、传输 - Adapter层 (
adapter/+core/adapter/):OS适配层,屏蔽平台差异 - Interfaces层 (
interfaces/):对外公开API(kits/公共接口 + inner_kits/内部接口) - DFX层 (
dfx/):诊断维护(日志、事件、打桩、trace、看门狗)
任务 1.2:理解 Client-Server 架构
- 服务端:core/frame/standard/ — SA服务(System Ability ID: 4700)
- 客户端:sdk/frame/standard/ — 通过IPC Proxy/Stub与Server通信
- IPC通信机制:
softbus_server_stub.cpp/softbus_client_stub.cpp/softbus_server_proxy.cpp
任务 1.3:阅读 README 和架构图
- README_zh.md
- 理解 mini / small / standard 三种系统级别的差异
二、对外接口层(⭐⭐ 重点掌握)
任务 2.1:公共接口
- softbus_common.h — 公共常量、初始化/去初始化接口
- softbus_error_code.h — 错误码定义
任务 2.2:发现接口
PublishLNN()/StopPublishLNN()— 服务发布RefreshLNN()/StopRefreshLNN()— 设备发现- 发布模式、媒介(WIFI/BR/BLE/COAP)、频率、能力等参数
任务 2.3:组网接口(Bus Center)
- softbus_bus_center.h — 组网核心API
JoinLNN()/LeaveLNN()— 加入/退出网络RegNodeDeviceStateCb()— 注册节点状态回调(上线/下线/信息变化)GetAllNodeDeviceInfo()/GetLocalNodeDeviceInfo()— 获取节点信息StartTimeSync()/StopTimeSync()— 时间同步- Meta Node(元节点)相关接口
任务 2.4:传输接口
- session.h — Session传输API(v1)
CreateSessionServer()/RemoveSessionServer()— 创建/移除会话服务OpenSession()/CloseSession()— 打开/关闭会话SendBytes()/SendMessage()/SendStream()/SendFile()— 数据发送- SessionType: TYPE_MESSAGE / TYPE_BYTES / TYPE_FILE / TYPE_STREAM
- socket.h — Socket传输API(v2)
Socket()/Listen()/Bind()/Connect()/SendBytes()等
任务 2.5:内部接口
- inner_kits/transport/ — 内部传输接口(dfs_session.h, inner_session.h, inner_socket.h)
- inner_kits/lnn/ — BLE测距、数据级别
三、发现模块(Discovery)(⭐⭐)
任务 3.1:发现管理框架
- core/discovery/manager/ —
disc_manager.c发现管理器,统一调度 - core/discovery/interface/ —
disc_interface.h内部接口定义
任务 3.2:BLE发现
- core/discovery/ble/ — BLE发现子模块
softbus_ble/— 基础BLE发现实现approach_ble/— 靠近发现share_ble/— 共享发现touch_ble/— 触碰发现oop_ble/— OOP BLE发现virtual_link_ble/— 虚拟链路BLEdispatcher/— BLE分发器
四、连接模块(Connection)(⭐⭐⭐ 核心重点)
任务 4.1:连接管理器
- core/connection/manager/ —
softbus_conn_manager.c连接管理器- 流控:
softbus_conn_flow_control.c
- 流控:
任务 4.3:BLE连接(低功耗蓝牙)
- core/connection/ble/
softbus_conn_ble_manager.c— BLE连接管理softbus_conn_ble_client.c/softbus_conn_ble_server.c— GATT客户端/服务端softbus_conn_ble_connection.c— BLE连接建立softbus_conn_ble_trans.c— BLE数据传输softbus_conn_ble_send_queue.c— BLE发送队列
任务 4.4:TCP连接
- core/connection/tcp/ — TCP连接管理
- core/connection/common/ — 基础监听器、Socket、Epoll事件
任务 4.5:WiFi Direct连接(P2P)
- core/connection/wifi_direct_cpp/ — C++实现的WiFi Direct
entity/— P2P实体状态机(Available/Connect/CreateGroup/DestroyGroup/Unavailable)command/— 命令模式(Connect/Disconnect/Negotiate命令)processor/— 处理器(P2P V1处理器)channel/— 协商通道(Auth/Proxy/Dummy)protocol/— 协议(JSON/TLV)data/— 数据模型(InnerLink/InterfaceInfo/LinkInfo/NegotiateMessage等)event/— 事件分发dfx/— 诊断
五、认证模块(Authentication)(⭐⭐⭐ 安全核心)
任务 5.1:认证管理器
- core/authentication/
auth_manager.c— 认证管理器,统一管理认证会话auth_interface.c— 认证对外接口auth_request.c— 认证请求处理auth_normalize_request.c— 认证规范化请求
任务 5.2:认证会话与状态机
auth_session_fsm.c— 认证会话有限状态机auth_session_json.c— 会话JSON消息处理auth_session_key.c— 会话密钥管理auth_session_message.c— 会话消息处理
任务 5.3:设备认证
auth_device.c— 设备认证核心逻辑auth_device_common_key.c— 设备公共密钥auth_deviceprofile.c— 设备Profile交互auth_device_profile_listener.cpp— 设备Profile监听
任务 5.4:HiChain安全认证
auth_hichain.c— HiChain认证协议实现auth_hichain_adapter.c— HiChain适配层
任务 5.5:认证连接
auth_connection.c— 认证连接管理auth_tcp_connection.c— TCP认证连接auth_lane.c— 认证通道选择auth_pre_link.c— 预连接
六、组网模块(Bus Center / LNN)(⭐⭐⭐ 核心重点)
任务 6.1:组网管理框架
- core/bus_center/interface/ —
bus_center_manager.h组网管理器接口 - core/bus_center/ipc/ — 组网IPC通信
任务 6.2:网络构建器(Net Builder)
- core/bus_center/lnn/net_builder/
lnn_net_builder.c— 网络构建核心lnn_connection_fsm.c— 连接有限状态机lnn_connection_fsm_process.c— 连接FSM处理lnn_sync_info_manager.c— 信息同步管理lnn_topo_manager.c— 拓扑管理lnn_cipherkey_manager.c— 密钥管理lnn_fast_offline.c— 快速离线lnn_device_info_recovery.c— 设备信息恢复lnn_data_cloud_sync.c— 数据云同步
任务 6.3:网络账本(Net Ledger)
- core/bus_center/lnn/net_ledger/
local_ledger/— 本地账本(本机设备信息)distributed_ledger/— 分布式账本(在线设备信息)decision_db/— 决策数据库common/— 节点信息、设备信息、网络能力、特性能力
任务 6.4:网络管理(Net BusCenter)
- core/bus_center/lnn/net_buscenter/
lnn_network_manager.c— 网络管理器lnn_physical_subnet_manager.c— 物理子网管理lnn_bt_network_impl.c— 蓝牙网络实现lnn_ip_network_impl.c— IP网络实现
任务 6.5:通道枢纽(Lane Hub)
- core/bus_center/lnn/lane_hub/
common/— 通道枢纽核心lane_manager/— 通道管理器(重点)lnn_lane.c— 通道分配与选择lnn_lane_select.c— 通道选择算法lnn_lane_score.c— 通道评分lnn_lane_link.c— 通道链路管理lnn_lane_link_p2p.c— P2P链路lnn_lane_link_wifi_direct.c— WiFi Direct链路lnn_lane_link_conflict.c— 链路冲突处理lnn_lane_reliability.c— 通道可靠性lnn_trans_lane.c/lnn_trans_free_lane.c— 传输通道/空闲通道lnn_ctrl_lane.c— 控制通道lnn_lane_prelink.c— 通道预连接lnn_lane_communication_capability.c— 通信能力
heartbeat/— 心跳机制lnn_heartbeat_fsm.c— 心跳有限状态机lnn_heartbeat_strategy.c— 心跳策略lnn_ble_heartbeat.c— BLE心跳lnn_ble_lpdevice.c— BLE低功耗设备
lane_qos/— 通道QoStime_sync/— 时间同步
任务 6.6:发现管理(组网内)
- core/bus_center/lnn/disc_mgr/ — 组网内CoAP发现管理
任务 6.7:决策中心与元节点
- core/bus_center/lnn/decision_center/ — 决策中心
- core/bus_center/lnn/meta_node/ — 元节点管理
七、传输模块(Transmission)(⭐⭐⭐ 核心重点)
任务 7.1:会话管理
- core/transmission/session/
trans_session_service.c— 会话服务trans_session_manager.c— 会话管理器softbus_scenario_manager.c— 场景管理器
任务 7.2:通道管理
- core/transmission/trans_channel/manager/
trans_channel_manager.c— 通道管理器trans_channel_callback.c— 通道回调trans_lane_manager.c— 传输通道管理trans_link_listener.c— 链路监听trans_auth_negotiation.c— 认证协商trans_bind_request_manager.c— 绑定请求管理
任务 7.4:TCP Direct通道
- core/transmission/trans_channel/tcp_direct/
trans_tcp_direct_manager.c— TCP直连管理trans_tcp_direct_listener.c— TCP直连监听trans_tcp_direct_message.c— TCP直连消息trans_tcp_direct_p2p.c— P2P直连trans_tcp_direct_wifi.c— WiFi直连trans_tcp_direct_auth.c— TCP直连认证
任务 7.6:Auth通道
- core/transmission/trans_channel/auth/ — 认证通道
任务 7.9:SDK端传输实现
- sdk/transmission/ — 客户端传输实现
- Session管理、通道管理、Proxy/TCP/UDP/Stream/File各通道客户端
- Stream传输:VTP(Video Transport Protocol)实例、流打包/解包
八、特性配置与编译(⭐)
任务 11.1:特性开关
- adapter/feature_config/
inner_feature/— 内部特性开关(conn/disc/lnn/trans/t2stack)public_feature/— 公共特性开关external_deps_feature/— 外部依赖特性
任务 11.2:默认配置
- adapter/default_config/ — mini/small/standard默认配置
任务 11.3:编译构建
- 理解 BUILD.gn 编译体系
- 理解
.gni文件中的模块化编译配置
学习路线
| 阶段 | 内容 | 预计时间 |
|---|---|---|
| 第一阶段 | 项目概览 + 整体架构 + 对外接口层 | 1-2周 |
| 第二阶段 | 发现模块 + 连接模块 | 2-3周 |
| 第三阶段 | 认证模块 + 组网模块 | 3-4周 |
| 第四阶段 | 传输模块 | 2-3周 |
核心重点:连接模块 → 认证模块 → 组网模块 → 传输模块,这四大模块是分布式软总线的核心实现,建议深入阅读源码,理解其状态机、通道选择算法、会话管理等关键机制。
更多推荐
所有评论(0)