1 /* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef USB_IMPL_MOCK_H 17 #define USB_IMPL_MOCK_H 18 19 #include <gmock/gmock.h> 20 #include <gtest/gtest.h> 21 22 #include "v2_0/iusb_host_interface.h" 23 #include "v2_0/usb_types.h" 24 25 using OHOS::HDI::Usb::V2_0::IUsbdBulkCallback; 26 using OHOS::HDI::Usb::V2_0::IUsbdSubscriber; 27 using OHOS::HDI::Usb::V2_0::IUsbHostInterface; 28 using OHOS::HDI::Usb::V2_0::PortInfo; 29 using OHOS::HDI::Usb::V2_0::UsbCtrlTransfer; 30 using OHOS::HDI::Usb::V2_0::UsbDev; 31 using OHOS::HDI::Usb::V2_0::USBDeviceInfo; 32 using OHOS::HDI::Usb::V2_0::UsbPipe; 33 using OHOS::HDI::Usb::V2_0::UsbCtrlTransferParams; 34 using OHOS::HDI::Usb::V2_0::USBTransferInfo; 35 using OHOS::HDI::Usb::V2_0::IUsbdTransferCallback; 36 namespace OHOS { 37 namespace USB { 38 constexpr int32_t DEV_ADDR_OK = 2; 39 constexpr int32_t DEV_ADDR_OK_2 = 3; 40 constexpr int32_t DEV_ADDR_OK_ERR_DESC = 4; 41 constexpr int32_t DEV_ADDR_OK_NULL_DESC = 5; 42 43 constexpr int32_t BUS_NUM_OK = 6; 44 constexpr int32_t BUS_NUM_OK_2 = 7; 45 constexpr int32_t DEV_ADDR_INVALID = 255; 46 constexpr int32_t BUS_NUM_INVALID = 255; 47 constexpr int32_t DEFAULT_PORT_ID = 1; 48 constexpr int32_t RETVAL_INVALID = -1; 49 50 class UsbHostImplMock : public IUsbHostInterface { 51 public: 52 UsbHostImplMock(); 53 ~UsbHostImplMock(); 54 int32_t SubscriberDeviceEvent(const USBDeviceInfo &info); 55 int32_t BindUsbdHostSubscriber(const sptr<IUsbdSubscriber> &subscriber) override; 56 int32_t UnbindUsbdHostSubscriber(const sptr<IUsbdSubscriber> &subscriber) override; 57 int32_t GetDeviceDescriptor(const UsbDev& dev, std::vector<uint8_t>& descriptor) override; 58 int32_t GetRawDescriptor(const UsbDev &dev, std::vector<uint8_t> &decriptor) override; 59 int32_t GetStringDescriptor(const UsbDev &dev, uint8_t descId, std::vector<uint8_t> &decriptor) override; 60 int32_t GetConfig(const UsbDev &dev, uint8_t &configIndex) override; 61 MOCK_METHOD1(OpenDevice, int32_t(const UsbDev &dev)); 62 MOCK_METHOD1(CloseDevice, int32_t(const UsbDev &dev)); 63 MOCK_METHOD3(GetConfigDescriptor, int32_t(const UsbDev &dev, uint8_t descId, std::vector<uint8_t> &decriptor)); 64 MOCK_METHOD2(GetFileDescriptor, int32_t(const UsbDev &dev, int32_t &fd)); 65 MOCK_METHOD2(SetConfig, int32_t(const UsbDev &dev, uint8_t configIndex)); 66 MOCK_METHOD3(ClaimInterface, int32_t(const UsbDev &dev, uint8_t interfaceid, uint8_t force)); 67 MOCK_METHOD2(ReleaseInterface, int32_t(const UsbDev &dev, uint8_t interfaceid)); 68 MOCK_METHOD3(SetInterface, int32_t(const UsbDev &dev, uint8_t interfaceid, uint8_t altIndex)); 69 MOCK_METHOD4( 70 BulkTransferRead, int32_t(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector<uint8_t> &data)); 71 MOCK_METHOD4(BulkTransferWrite, 72 int32_t(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, const std::vector<uint8_t> &data)); 73 MOCK_METHOD3( 74 ControlTransferRead, int32_t(const UsbDev &dev, const UsbCtrlTransfer &ctrl, std::vector<uint8_t> &data)); 75 MOCK_METHOD3(ControlTransferWrite, 76 int32_t(const UsbDev &dev, const UsbCtrlTransfer &ctrl, const std::vector<uint8_t> &data)); 77 MOCK_METHOD4(InterruptTransferRead, 78 int32_t(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector<uint8_t> &data)); 79 MOCK_METHOD4(InterruptTransferWrite, 80 int32_t(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, const std::vector<uint8_t> &data)); 81 MOCK_METHOD4( 82 IsoTransferRead, int32_t(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector<uint8_t> &data)); 83 MOCK_METHOD4(IsoTransferWrite, 84 int32_t(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, const std::vector<uint8_t> &data)); 85 MOCK_METHOD4(RequestQueue, 86 int32_t(const UsbDev &dev, const UsbPipe &pipe, const std::vector<uint8_t> &clientData, 87 const std::vector<uint8_t> &buffer)); 88 MOCK_METHOD4(RequestWait, 89 int32_t(const UsbDev &dev, std::vector<uint8_t> &clientData, std::vector<uint8_t> &buffer, int32_t timeout)); 90 MOCK_METHOD2(RequestCancel, int32_t(const UsbDev &dev, const UsbPipe &pipe)); 91 MOCK_METHOD1(GetCurrentFunctions, int32_t(int32_t &funcs)); 92 MOCK_METHOD1(SetCurrentFunctions, int32_t(int32_t funcs)); 93 MOCK_METHOD3(RegBulkCallback, int32_t(const UsbDev &dev, const UsbPipe &pipe, const sptr<IUsbdBulkCallback> &cb)); 94 MOCK_METHOD2(UnRegBulkCallback, int32_t(const UsbDev &dev, const UsbPipe &pipe)); 95 MOCK_METHOD3(BulkRead, int32_t(const UsbDev &dev, const UsbPipe &pipe, const sptr<Ashmem> &ashmem)); 96 MOCK_METHOD3(BulkWrite, int32_t(const UsbDev &dev, const UsbPipe &pipe, const sptr<Ashmem> &ashmem)); 97 MOCK_METHOD2(BulkCancel, int32_t(const UsbDev &dev, const UsbPipe &pipe)); 98 MOCK_METHOD3(ManageInterface, int32_t(const UsbDev &dev, uint8_t interfaceid, bool disable)); 99 MOCK_METHOD3(GetInterfaceActiveStatus, int32_t(const UsbDev &dev, uint8_t interfaceid, bool &unactivated)); 100 MOCK_METHOD2(GetDeviceSpeed, int32_t(const UsbDev &dev, uint8_t &speed)); 101 MOCK_METHOD1(ResetDevice, int32_t(const UsbDev &dev)); 102 MOCK_METHOD2(ClearHalt, int32_t(const UsbDev &dev, const UsbPipe &pipe)); 103 MOCK_METHOD2(GetDeviceFileDescriptor, int32_t(const UsbDev &dev, int32_t &fd)); 104 MOCK_METHOD5(BulkTransferReadwithLength, int32_t(const UsbDev &dev, 105 const UsbPipe &pipe, int32_t timeout, int32_t length, std::vector<uint8_t> &data)); 106 MOCK_METHOD3(ControlTransferReadwithLength, 107 int32_t(const UsbDev &dev, const UsbCtrlTransferParams &ctrlParams, std::vector<uint8_t> &data)); 108 MOCK_METHOD4(UsbSubmitTransfer, int32_t(const UsbDev &dev, const USBTransferInfo &info, 109 const sptr<IUsbdTransferCallback> &cb, const sptr<Ashmem> &ashmem)); 110 MOCK_METHOD2(UsbCancelTransfer, int32_t(const UsbDev &dev, const int32_t endpoint)); 111 private: 112 sptr<IUsbdSubscriber> subscriber_ = nullptr; 113 }; 114 } // namespace USB 115 } // namespace OHOS 116 #endif 117