From a27f9b00f02f8f90b6303cabcd5712dbbb3f50ae Mon Sep 17 00:00:00 2001 From: wu Date: Thu, 26 May 2022 06:37:12 -0700 Subject: [PATCH] add usb hdi zh-cn Signed-off-by: wu --- zh-cn/device_api/hdi/usb/usb_info.h | 149 ++++++ zh-cn/device_api/hdi/usb/usbd_client.h | 537 +++++++++++++++++++++ zh-cn/device_api/hdi/usb/usbd_subscriber.h | 131 +++++ zh-cn/device_api/hdi/usb/usbd_type.h | 144 ++++++ 4 files changed, 961 insertions(+) create mode 100644 zh-cn/device_api/hdi/usb/usb_info.h create mode 100644 zh-cn/device_api/hdi/usb/usbd_client.h create mode 100644 zh-cn/device_api/hdi/usb/usbd_subscriber.h create mode 100644 zh-cn/device_api/hdi/usb/usbd_type.h diff --git a/zh-cn/device_api/hdi/usb/usb_info.h b/zh-cn/device_api/hdi/usb/usb_info.h new file mode 100644 index 00000000..4920347c --- /dev/null +++ b/zh-cn/device_api/hdi/usb/usb_info.h @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup USB + * @{ + * + * @brief 定义(USB)功能的标准API接口。 + * + * 该模块用于获取描述符、接口对象、请求对象和提交请求的自定义数据类型和函数。 + * + * @since 3.0 + * @version 1.0 + */ + +/** + * @file usb_info.h + * + * @brief usb驱动订阅模块使用的数据类型。 + * + * @since 3.0 + * @version 1.0 + */ + +#ifndef USB_INFO_H +#define USB_INFO_H + +#include +#include + +namespace OHOS { +namespace USB { +/** + * @brief usb设备信息 + * + */ +struct USBDeviceInfo { + /** usb设备状态 */ + int32_t status; + /** usb总线编号 */ + int32_t busNum; + /** usb设备编号 */ + int32_t devNum; +}; + +/** + * @brief usb设备信息类 + * + */ +class UsbInfo { +public: + /** + * @brief 设置usb设备状态 + * + * @param status 输入参数,设备状态 + * + * @since 3.0 + * @version 1.0 + */ + void setDevInfoStatus(int32_t status) + { + devInfo.status = status; + } + + /** + * @brief 设置usb总线编号 + * + * @param status 输入参数,usb总线编号 + * + * @since 3.0 + * @version 1.0 + */ + void setDevInfoBusNum(int32_t busNum) + { + devInfo.busNum = busNum; + } + + /** + * @brief 设置usb设备编号 + * + * @param status 输入参数,usb设备编号 + * + * @since 3.0 + * @version 1.0 + */ + void setDevInfoDevNum(int32_t devNum) + { + devInfo.devNum = devNum; + } + + /** + * @brief 获取usb设备状态 + * + * @param status 输出参数,设备状态 + * + * @since 3.0 + * @version 1.0 + */ + int32_t getDevInfoStatus() const + { + return devInfo.status; + } + + /** + * @brief 获取usb总线编号 + * + * @param status 输出参数,usb总线编号 + * + * @since 3.0 + * @version 1.0 + */ + int32_t getDevInfoBusNum() const + { + return devInfo.busNum; + } + + /** + * @brief 获取usb设备编号 + * + * @param status 输出参数,usb设备编号 + * + * @since 3.0 + * @version 1.0 + */ + int32_t getDevInfoDevNum() const + { + return devInfo.devNum; + } + +private: + /** usb设备信息 */ + USBDeviceInfo devInfo; +}; +} /** namespace USB */ +} /** namespace OHOS */ + +#endif /** USBMGR_USB_INFO_H */ diff --git a/zh-cn/device_api/hdi/usb/usbd_client.h b/zh-cn/device_api/hdi/usb/usbd_client.h new file mode 100644 index 00000000..0c389ba1 --- /dev/null +++ b/zh-cn/device_api/hdi/usb/usbd_client.h @@ -0,0 +1,537 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup USB + * @{ + * + * @brief 定义(USB)功能的标准API接口。 + * + * 该模块用于获取描述符、接口对象、请求对象和提交请求的自定义数据类型和函数。 + * + * @since 3.0 + * @version 1.0 + */ + +/** + * @file usbd_client.h + * + * @brief 声明标准usb驱动接口函数。 + * + * @since 3.0 + * @version 1.0 + */ + +#ifndef USBD_CLIENT_H +#define USBD_CLIENT_H + +#include "usb_param.h" +#include "usbd_subscriber.h" + +namespace OHOS { +namespace USB { +class UsbdClient { +public: + static UsbdClient &GetInstance(); + + /** + * @brief 打开设备,建立连接 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t OpenDevice(const UsbDev &dev); + + /** + * @brief 关闭设备,释放与设备相关的所有系统资源 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t CloseDevice(const UsbDev &dev); + + /** + * @brief 获取设备描述符 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param descriptor 输出参数,usb设备描述符信息 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t GetDeviceDescriptor(const UsbDev &dev, std::vector &descriptor); + + /** + * @brief 根据String ID获取设备的字符串描述符 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param descId 输入参数,usb的string ID + * @param descriptor 输出参数,获取usb设备config信息 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t GetStringDescriptor(const UsbDev &dev, uint8_t descId, std::vector &descriptor); + + /** + * @brief 根据config ID获取设备的配置描述符config + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param descId 输入参数,usb的config ID + * @param descriptor 输出参数,获取usb设备config信息 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t GetConfigDescriptor(const UsbDev &dev, uint8_t descId, std::vector &descriptor); + + /** + * @brief 获取原始描述符 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param descriptor 输出参数,usb设备原始描述符 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t GetRawDescriptor(const UsbDev &dev, std::vector &descriptor); + + /** + * @brief 获取文件描述符 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param fd 输出参数,usb设备文件描述符 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t GetFileDescriptor(const UsbDev &dev, int32_t &fd); + + /** + * @brief 设置当前的config信息 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param configIndex 输入参数,usb设备config信息 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t SetConfig(const UsbDev &dev, uint8_t configIndex); + + /** + * @brief 获取当前的config信息 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param configIndex 输出参数,usb设备config信息 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t GetConfig(const UsbDev &dev, uint8_t &configIndex); + + /** + * @brief 打开接口,并声明独占接口,必须在数据传输前执行 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param interfaceid 输入参数,usb设备interface ID + * @param force 输入参数,是否强制: 1强制 0不强制 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t ClaimInterface(const UsbDev &dev, uint8_t interfaceid, uint8_t force); + + /** + * @brief 关闭接口,释放接口的占用,在停止数据传输后执行 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param interfaceid 输入参数,usb设备interface ID + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t ReleaseInterface(const UsbDev &dev, uint8_t interfaceid); + + /** + * @brief 设置指定接口的备选设置,用于在具有相同ID但不同备用设置的两个接口之间进行选择 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param interfaceid 输入参数,usb设备interface ID + * @param altIndex 输入参数,interface的AlternateSetting信息 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * @since 3.0 + * @version 1.0 + */ + int32_t SetInterface(const UsbDev &dev, uint8_t interfaceid, uint8_t altIndex); + + /** + * @brief 在给定端点上执行批量数据读取,返回读取的数据和长度,端点方向必须为数据读取,可以设置超时时间 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param timeout 输入参数,超时时间 + * @param data 输出参数,获取写入的数据 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t BulkTransferRead(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); + + /** + * @brief 在给定端点上执行批量数据写入, 返回读取的数据和长度,端点方向必须为数据写入 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param timeout 输入参数,超时时间 + * @param data 输入参数,写入的数据 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t BulkTransferWrite(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, + const std::vector &data); + + /** + * @brief 对此设备执行端点零的控制事务,传输方向由请求类型决定。 如果requestType& + * USB_ENDPOINT_DIR_MASK是USB_DIR_OUT ,则传输是写入,如果是USB_DIR_IN ,则传输是读取。 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param ctrl 输入参数,usb设备控制数据包结构,详见{@link UsbCtrlTransfer} + * @param data 输入/输出参数,读取/写入的数据 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t ControlTransfer(const UsbDev &dev, const UsbCtrlTransfer &ctrl, std::vector &data); + + /** + * @brief 在给定端点上执行中断数据读取, 返回读取的数据和长度,端点方向必须为数据读取 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param timeout 输入参数,超时时间 + * @param data 输出参数,读取的数据 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t InterruptTransferRead(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); + + /** + * @brief 在给定端点上执行中断数据写入, 返回读取的数据和长度,端点方向必须为数据写入 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param timeout 输入参数,超时时间 + * @param data 输入参数,写入的数据 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t InterruptTransferWrite(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); + + /** + * @brief 在给定端点上执行等时数据读取, 返回读取的数据和长度,端点方向必须为数据读取 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param timeout 输入参数,超时时间 + * @param data 输出参数,读取的数据 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t IsoTransferRead(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); + + /** + * @brief 在给定端点上执行等时数据写入, 返回读取的数据和长度,端点方向必须为数据写入 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param timeout 输入参数,超时时间 + * @param data 输入参数,读取的数据 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t IsoTransferWrite(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); + + /** + * @brief 将指定的端点进行异步数据发送或者接收请求,数据传输方向由端点方向决定 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param clientData 输入参数,用户数据 + * @param buffer 输入参数,传输的数据 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t RequestQueue(const UsbDev &dev, const UsbPipe &pipe, const std::vector &clientData, + const std::vector &buffer); + + /** + * @brief 等待RequestQueue异步请求的操作结果 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param clientData 输入参数,用户数据 + * @param buffer 输入参数,传输数据 + * @param timeout 输入参数,超时时间 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t RequestWait(const UsbDev &dev, std::vector &clientData, std::vector &buffer, + int32_t timeout); + + /** + * @brief 取消待处理的数据请求 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t RequestCancel(const UsbDev &dev, const UsbPipe &pipe); + + /** + * @brief 获取从设备支持的功能列表(按位域表示)(从设备) + * + * @param funcs 输出参数,获取当前设备的function的值 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t GetCurrentFunctions(int32_t &funcs); + + /** + * @brief 设置从设备支持的功能列表(按位域表示)(从设备) + * + * @param funcs 输入参数,传入设备支持的function的值 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t SetCurrentFunctions(int32_t funcs); + + /** + * @brief 设置port端口的角色 + * + * @param portId 输入参数,port接口 ID + * @param powerRole 输入参数,电源角色的值 + * @param dataRole 输入参数,数据角色的值 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t SetPortRole(int32_t portId, int32_t powerRole, int32_t dataRole); + + /** + * @brief 查询port端口的当前设置 + * + * @param portId 输出参数,port接口 ID + * @param powerRole 输出参数,电源角色的值 + * @param dataRole 输出参数,数据角色的值 + * @param mode 输出参数,模式的值 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t QueryPort(int32_t &portId, int32_t &powerRole, int32_t &dataRole, int32_t &mode); + + /** + * @brief 绑定订阅者 + * + * @param subscriber 输入参数,订阅者信息,详见{@link UsbdSubscriber} + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t BindUsbdSubscriber(const sptr &subscriber); + + /** + * @brief 解绑订阅者 + * + * @param subscriber 输入参数,订阅者信息,详见{@link UsbdSubscriber} + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t UnbindUsbdSubscriber(const sptr &subscriber); + + /** + * @brief 注册批量传输异步回调函数 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param cb 输入参数,回调函数对象的引用 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t RegBulkCallback(const UsbDev &dev, const UsbPipe &pipe, const sptr &cb); + + /** + * @brief 注销批量传输异步回调函数 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t UnRegBulkCallback(const UsbDev &dev, const UsbPipe &pipe); + + /** + * @brief 批量传输异步读数据 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param ashmem 输出参数,为共享内存,用于存放读取的数据,详见{@link Ashmem} + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t BulkRead(const UsbDev &dev, const UsbPipe &pipe, sptr &ashmem); + + /** + * @brief 批量传输异步写数据 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * @param ashmem 输入参数,为共享内存,用于存放需要写入的数据,详见{@link Ashmem} + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t BulkWrite(const UsbDev &dev, const UsbPipe &pipe, sptr &ashmem); + + /** + * @brief 批量传输异步取消接口,用于取消当前接口的异步批量读写操作 + * + * @param dev 输入参数,usb设备地址信息,详见{@link UsbDev} + * @param pipe 输入参数,usb设备pipe信息,详见{@link UsbPipe} + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t BulkCancel(const UsbDev &dev, const UsbPipe &pipe); +}; +} /** namespace USB */ +} /** namespace OHOS */ +#endif // USBD_CLIENT_H diff --git a/zh-cn/device_api/hdi/usb/usbd_subscriber.h b/zh-cn/device_api/hdi/usb/usbd_subscriber.h new file mode 100644 index 00000000..28baf9af --- /dev/null +++ b/zh-cn/device_api/hdi/usb/usbd_subscriber.h @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup USB + * @{ + * + * @brief 定义(USB)功能的标准API接口。 + * + * 该模块用于获取描述符、接口对象、请求对象和提交请求的自定义数据类型和函数。 + * + * @since 3.0 + * @version 1.0 + */ + +/** + * @file usbd_subscriber.h + * + * @brief usb驱动订阅模块。 + * + * @since 3.0 + * @version 1.0 + */ + +#ifndef USBD_SUBSCRIBER_H +#define USBD_SUBSCRIBER_H + +#include "ipc_object_stub.h" +#include "usb_info.h" +#include "usbd_type.h" + +namespace OHOS { +namespace USB { +class UsbdSubscriber : public IPCObjectStub { +public: + explicit UsbdSubscriber() : IPCObjectStub(u"ohos.usb.IUsbManagerSubscriber") {}; + virtual ~UsbdSubscriber() = default; + + /** + * @brief 设备事件 + * + * @param UsbInfo 输入参数,usb设备信息 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + virtual int32_t DeviceEvent(const UsbInfo &info) = 0; + + /** + * @brief 端口改变事件 + * + * @param portId 输入参数,端口ID + * @param powerRole 输入参数,电源角色的值 + * @param dataRole 输入参数,数据角色的值 + * @param mode 输入参数,端口模式的值 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + virtual int32_t PortChangedEvent(int32_t portId, int32_t powerRole, int32_t dataRole, int32_t mode) = 0; + + /** + * @brief 远程请求 + * + * @param code 输入参数,命令字 + * @param data 输入参数,待解析的数据 + * @param reply 输出参数,返回的数据 + * @param option 输入参数,选项数据 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + int32_t OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override; + +private: + /** + * @brief 解析usb设备信息 + * + * @param code 输入参数,命令字 + * @param reply 输出参数,返回的数据 + * @param option 输入参数,选项数据 + * @param info 输出参数,usb设备信息 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + static int32_t ParserUsbInfo(MessageParcel &data, MessageParcel &reply, MessageOption &option, UsbInfo &info); + + /** + * @brief 解析usb设备端口信息 + * + * @param code 输入参数,命令字 + * @param reply 输出参数,返回的数据 + * @param option 输入参数,选项数据 + * @param info 输出参数,usb设备端口信息 + * + * @return 0 表示操作成功 + * @return 非零值 表示操作失败 + * + * @since 3.0 + * @version 1.0 + */ + static int32_t ParserPortInfo(MessageParcel &data, MessageParcel &reply, MessageOption &option, PortInfo &info); +}; +} /** namespace USB */ +} /** namespace OHOS */ +#endif /** USBD_SUBSCRIBER_H */ \ No newline at end of file diff --git a/zh-cn/device_api/hdi/usb/usbd_type.h b/zh-cn/device_api/hdi/usb/usbd_type.h new file mode 100644 index 00000000..94d57c26 --- /dev/null +++ b/zh-cn/device_api/hdi/usb/usbd_type.h @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @addtogroup USB + * @{ + * + * @brief 定义(USB)功能的标准API接口。 + * + * 该模块用于获取描述符、接口对象、请求对象和提交请求的自定义数据类型和函数。 + * + * @since 3.0 + * @version 1.0 + */ + +/** + * @file usbd_type.h + * + * @brief usb驱动模块接口定义中使用的自定义数据类型。 + * + * usb驱动模块接口定义中使用的自定义数据类型, 包括分发的命令字、数据方向等。 + * + * @since 3.0 + * @version 1.0 + */ + +#ifndef USBD_TYPE_H +#define USBD_TYPE_H + +#include +#include +#include +#include + +/** usb设备最大接口数量 */ +#define USB_MAX_INTERFACES 32 + +/** 从地址中提取USB Endpoint方向的位掩码 */ +static const int32_t USB_ENDPOINT_DIR_MASK = 0x80; + +/** USB Endpoint从设备到主机的数据方向 */ +static const int32_t USB_ENDPOINT_DIR_IN = 0x80; + +/** USB Endpoint从主机到设备的数据方向 */ +static const int32_t USB_ENDPOINT_DIR_OUT = 0; + +/** 请求回调函数 */ +typedef void (*UsbdRequestCallback)(uint8_t *requestArg); + +/** + * @brief 批量回调命令字 + * + */ +enum UsbdBulkCbCmd { + /** 批量回调读取 */ + CMD_USBD_BULK_CALLBACK_READ, + /** 批量回调写入 */ + CMD_USBD_BULK_CALLBACK_WRITE, +}; + +/** + * @brief 主机端和设备端插拔事件 + * + */ +enum UsbdDeviceAction { + /** 主机端接入设备 */ + ACT_DEVUP = 0, + /** 主机端拔出设备 */ + ACT_DEVDOWN, + /** 设备连接 */ + ACT_UPDEVICE, + /** 设备断开 */ + ACT_DOWNDEVICE, +}; + +namespace OHOS { +namespace USB { +/** + * @brief usb设备 + * + */ +struct UsbDev { + /** usb总线编号 */ + uint8_t busNum; + /** usb设备地址 */ + uint8_t devAddr; +}; + +/** + * @brief 管道信息 + * + */ +struct UsbPipe { + /** usb设备接口ID */ + uint8_t interfaceId; + /** usb设备端点ID */ + uint8_t endpointId; +}; + +/** + * @brief usb控制传输 + * + */ +struct UsbCtrlTransfer { + /** 请求类型 */ + int32_t requestType; + /** 请求命令字 */ + int32_t requestCmd; + /** 请求值 */ + int32_t value; + /** 索引 */ + int32_t index; + /** 超时时间 */ + int32_t timeout; +}; + +/** + * @brief usb设备信息 + * + */ +struct USBDeviceInfo { + /** usb设备状态 */ + int32_t status; + /** usb总线编号 */ + int32_t busNum; + /** usb设备编号 */ + int32_t devNum; +}; +} /** namespace USB */ +} /** namespace OHOS */ + +#endif /** USBD_TYPE_H */ -- Gitee