1# 扩展外部设备管理 2 3## 简介 4 5当前OpenHarmony HDF驱动框架已经支持板载标准外接设备驱动能力,在OpenHarmony外接设备生态拓展过程中,为解决设备厂商开发非标准协议的可插拔设备驱动接入OpenHarmony系统问题,扩展外部设备管理架构提供应用态扩展设备驱动包的开发、部署、安装、运行、能力开放全流程生命周期管理,为设备厂商开发者提供高效、安全、且低成本的扩展外部设备驱动开发解决方案,做到即插即用的用户体验。 6 7**图 1** 扩展外部设备管理架构图 8![](figures/architecture-of-the-ext-device-manager.png) 9 10扩展外部设备管理为应用提供外部设备的查询,绑定,解绑定接口能力。应用查询外部设备信息后,通过成功绑定设备驱动包并获取驱动包对象,完成与扩展设备驱动包交互。扩展设备驱动包开发者通过系统提供的USB C API接口能力,进行扩展设备驱动包开发、发布,更新,有扩展外部设备管理框架进行对应设备状态与扩展驱动包的管理。当开发者插入USB设备后,有驱动开发框架识别USB设备,并上报USB设备识别成功事件消息给USB总线扩展插件,完成与扩展驱动包的匹配。 11扩展外部设备管理框架主要功能模块介绍:<br> 121、扩展驱动管理服务,提供扩展驱动管理服务按需启动能力,负责设备管理,包信息管理,总线扩展核心模块生命周期管理。<br> 132、设备管理模块,提供外部设备的查询,绑定,解绑定接口能力,负责设备列表管理,设备与驱动匹配管理。<br> 143、包信息管理模块,负责扩展驱动包信息解析,存储,设备匹配能力,支持扩展驱动包的安装,更新,卸载。<br> 154、驱动元能力控制器模块,负责扩展驱动元能力生命周期管控,包括扩展驱动元能力的启动,停止。<br> 165、总线扩展核心模块,负责总线设备枚举、总线驱动包解析、包与设备匹配。<br> 176、USB总线扩展插件模块,负责USB设备热插拔监听,USB设备信息读取。<br> 18 19## 场景说明 20 21设备厂商开发者复用当前OpenHarmony应用开发环境,以驱动扩展Ability开发应用态扩展驱动包,并通过OpenHarmony系统安全认证后,为其他三方应用和系统服务提供定制化的设备驱动硬件功能接口能力。扩展外部设备管理框架基于驱动扩展Ability能力,构建应用态扩展驱动包的开发、部署、安装、更新、卸载、运行、能力开放全流程生命周期管理能力。三方设备厂商开发非标准协议的可插拔USB设备扩展驱动包,能够正常安装到OpenHarmony系统,插上USB设备后,能正常识别USB设备并与扩展驱动包匹配;三方应用通过扩展外部设备管理框架查询并绑定USB设备扩展驱动包,完成对扩展驱动包定制功能的操作。 22 23## 目录 24 25``` 26/drivers/external_device_manager 27├── frameworks # 无独立进程的桥接实现 28│ └── js # 对外提供应该js API需要 29│ └──-napi # napi代码实现 30│ ├── driver_ext_ability # ext ability桥接类 31│ ├── driver_ext_context # ext context桥接类 32│ └── driver_ext_manager # device ext manager桥接类 33├── interfaces # 对外提供.d.ts接口定义和capi实现 34│ ├── innerkits # 部件接口,系统内部件间接口 35│ └── kits # 提供应用的接口 36│ └── js # js接口 37├── sa_profile # SA定义 38├── services # 扩展设备管理系统服务实现 39│ ├── native 40│ │ ├── driver_extension # driver extension ability 和driver extension context定义和实现 41│ │ │ ├── include # driver extension接口定义 42│ │ │ └── src # driver extension接口实现 43│ │ └── driver_extension_manager #各子模块实现 44│ │ ├── include 45│ │ │ ├── bus_extension # 总线管理接口定义 46│ │ │ ├── device_manager # 设备管理接口定义 47│ │ │ ├── driver_ability_controller # ability生命周期管理接口定义 48│ │ │ └── driver_pkg_manager # 包管理接口定义 49│ │ └── src 50│ │ ├── bus_extension # 总线管理接口实现 51│ │ ├── device_manager # 设备管理接口实现 52│ │ ├── driver_ability_controller # ability生命周期管理接口实现 53│ │ └── driver_pkg_manager# 包管理接口实现 54│ └── zidl # js跨进程实现 55│ ├── include# js跨进程接口定义 56│ └── src # js跨进程接口实现 57└── utils # 通用接口实现和 hilog封装 58 └── include # 通用接口定义 59``` 60 61## 编译构建 62 63编译32位ARM系统external_device_manager部件 64``` 65./build.sh --product-name {product_name} --ccache --build-target external_device_manager 66``` 67 68编译64位ARM系统external_device_manager部件 69``` 70./build.sh --product-name {product_name} --ccache --target-cpu arm64 --build-target external_device_manager 71``` 72 73{product_name}为当前支持的平台,比如rk3568。 74 75## 相关仓 76 77[驱动子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E9%A9%B1%E5%8A%A8%E5%AD%90%E7%B3%BB%E7%BB%9F.md) 78 79[drivers\_hdf\_core](https://gitee.com/openharmony/drivers_hdf_core/blob/master/README_zh.md) 80 81[drivers\_interface](https://gitee.com/openharmony/drivers_interface/blob/master/README_ZH.md) 82 83[drivers\_peripheral](https://gitee.com/openharmony/drivers_peripheral/blob/master/README_zh.md) 84