提交 4a513c2f 编写于 作者: W wu-chengwen

feat: update subsys-usb-service.md

Signed-off-by: Nwu-chengwen <wuchengwen4@huawei.com>
上级 03685f36
......@@ -3,6 +3,7 @@
- [概述](#section175431838101617)
- [USB服务架构](#section350923483241)
- [架构说明](#section350923485516)
- [生命周期](#section894546131154)
- [主要功能介绍](#section951321854211)
......@@ -30,6 +31,99 @@
![](figure/USB服务架构图.png "USB服务架构图")
## 架构说明<a name="section350923485516"></a>
### 架构原则
- ### 结构性原则
1. 可伸缩性:
保证可维护性、灵活性,比如当需求发生变化时,只需要修改软件的一部分,不会影响到其他部分的代码,降低了层 与层之间的耦合度.
2. 可扩展性:
在对现有系统影响最小的情况下,同时能保持可持续扩展和稳定提升的能力.
按照可扩展性的定义,一个具备良好可扩展性的架构设计应当符合开闭原则:对扩展开发,对修改关闭.
3. 组件化:
把重复的代码提取出来合并成为一个个组件,方便调用和复用,减少代码量.
4. 模块化:
将Host、Device、Port的功能按模块进行设计和开发,可独立管理.
5. 配置化:
将每个模块放入配置文件中进行配置管理,通过配置文件的修改来实现模块的增删.
- ### 结构性原则
1. 分层设计:
将将功能进行有序的分组:层间关系的形成要遵循一定的规则。通过分层,可以限制子系统间的依赖关系,使系统以更松散的方式耦合,从而更易于维护。
### 外部接口描述
- ### USBDevice:
此类表示连接 鸿蒙设备的USB设备.
- ### USBInterface:
表示 USBDevice上的接口的类.
- ### USBEndpoint:
表示 USBInterface上的端点的类.
- ### USBConfig:
表示USBDevice的配置说明类,是对Device信息的补充.
- ### UsbDevicePipe:
此类用于向 USB 设备发送和接收数据和控制消息.
- ### UsbRequest:
此类用于生成一个USB请求包,用于同步或异步数据传输.
### 用例场景
USB设备建立连接之后,根据内核的识别判定调用USB Host Service或是USB Device Service。对应的用例场景分别如下
- ### USB Host Service:
获取USB设备列表、判断设备的权限、设备连接、数据传输(包括同步、异步两种模式),如下图所示:
![](figure/USB-Host_Service.png "USB Host Service")
- ### USB Device Service:
获取functions、设置functions 等场景,如下图所示:
![](figure/USB-Device_Service.png "USB Host Service")
USB Port Service的关键用例包括:Port信息的获取、设置Port角色,如下图所示:
![](figure/USB-Port_Service.png "USB Host Service")
### 交互场景
- ### USB Host Service交互场景
1. USB设备插拔:
内核检测USB插入事件并通过Notify发出通知到HAL,HAL层通过回调处理通知消息,增加USB设备到USB设备列表.
内核检测USB插入事件并通过Notify发出通知到HAL,HAL层通过回调处理通知消息,从USB设备列表中删除USB设备.
![](figure/USB插拔事件通知.png "USB插拔事件通知")
2. 数据收发:
USB Device与Host端连接后,Host端获取Deivice信息,从DeviceList中找到对应的Device,执行OpenDevice并生成对应的Pipe,同步情况下调用Pipe的收发接口进行数据收发。异步的情况下通过Pipe生成一个Request对象,通过Request对象的queue方法进行异步数据收发.
- ### USB Device Service交互场景
1. 设置functions:
可以根据用户传递的function功能值将设备设置为acm(串口)、ecm(网口)、hdc(调试)功能,可以是单
function功能,也可以是复合function功能。
2. 获取functions:
获取当前设备functions功能值.
- ### USB Port Service交互场景
1. 获取port列表:
获取当前设备支持的port列表,每一个port对应设备的usb接口,每个port的id唯一.
2. 获取port支持的模式:
根据portId 获取当前port支持的mode。支持的mode:host、device.
3. 设置port角色:
给指定的port 设置电源role和数据role。电源role支持:source、sink;数据role支持:host、device.
4. 更新port信息:
系统开始时或者设置port角色完成时,usbd会发消息通知到usb service层当前的的port信息,并且执行更新操作.
- ### USB FWK/API
基于USB Service服务,使用NAPI技术,向上提供JS接口。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册