• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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