分布式硬件框架指引

项目定位

本仓库对应 OpenHarmony foundation/distributedhardware/distributed_hardware_fwk,为分布式硬件子系统提供统一的硬件接入、查询和使能能力。按以下目录定位问题:

  • services/distributedhardwarefwkservice/:SA 服务实现,含 AccessManager、ComponentManager、ResourceManager、Task 等。
  • interfaces/inner_kits/:北向 SDK,供上层应用调用分布式硬件能力。
  • interfaces/kits/napi/:JS API 层,供应用层调用。
  • av_transport/:音视频传输引擎,含 ControlCenter、Sender、Receiver、Pipeline。
  • common/utils/:公共接口定义(DHType、错误码、IDistributedHardware 接口)。
  • utils/:工具类(日志、HiSysEvent、HiTrace)。

构建和验证

构建命令从 OpenHarmony 源码根目录执行:

./build.sh --product-name rk3568 --build-target distributedhardwarefwksvr --ccache
./build.sh --product-name rk3568 --build-target libdhfwk_sdk --ccache

单元测试:

./build.sh --product-name rk3568 --build-target test --ccache

涉及真实设备上下线、分布式硬件使能的行为,需板侧证据。提交使用 git commit -s

知识索引

场景 先读
设备上线/下线流程处理 docs/knowledge/dh-device-lifecycle.md
分布式硬件使能/去使能 docs/knowledge/dh-component-enable.md
任务执行顺序和并发控制 docs/knowledge/dh-task-pipeline.md
DHType 类型判断和配置差异 docs/knowledge/dh-type-taxonomy.md
IPC 调用链和 SA 交互(含 callingUid/userId 区分) docs/knowledge/dh-ipc-service.md

项目约束

  • 设备标识不可混用:networkId、uuid、udid、deviceId 含义不同,混用会导致数据查询失败。见 dh-device-lifecycle.md
  • 使能必须等上线完成:Enable 前必须确保 SendOnLineEvent 成功,否则 ResourceManager 无数据。见 dh-component-enable.md
  • Task 不可并行执行同 key:相同 networkId+dhId 的 Enable/Disable 任务会冲突,TaskBoard 会阻塞等待。见 dh-task-pipeline.md
  • 自动使能组件无 source_feature_filter:配置文件中无此字段的组件(如 MODEM)自动使能,有此字段(空字符串)的需主动使能。见 dh-component-enable.md
  • 错误码范围固定:DHFWK 错误码范围 [-10000, -19999],子模块按范围分配。新增错误码不可越界。见 common/utils/include/distributed_hardware_errno.h