• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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_DEVICE_H
17 #define USB_DEVICE_H
18 
19 #include <iostream>
20 #include <singleton.h>
21 #include <sstream>
22 #include <vector>
23 #include "iremote_object.h"
24 #include "usb_config.h"
25 #include "usb_interface.h"
26 
27 namespace OHOS {
28 namespace USB {
29 class UsbDevice {
30 public:
UsbDevice(std::string mName,std::string mManufacturerName,std::string mProductName,std::string mVersion,uint8_t devAddr,uint8_t busNum,int mVendorId,int mProductId,int mClass,int mSubclass,int mProtocol,std::vector<USBConfig> configs)31     UsbDevice(std::string mName,
32               std::string mManufacturerName,
33               std::string mProductName,
34               std::string mVersion,
35               uint8_t devAddr,
36               uint8_t busNum,
37               int mVendorId,
38               int mProductId,
39               int mClass,
40               int mSubclass,
41               int mProtocol,
42               std::vector<USBConfig> configs)
43     {
44         this->mName = mName;
45         this->mManufacturerName = mManufacturerName;
46         this->mProductName = mProductName;
47         this->mVersion = mVersion;
48         this->devAddr = devAddr;
49         this->busNum = busNum;
50         this->mVendorId = mVendorId;
51         this->mProductId = mProductId;
52         this->mClass = mClass;
53         this->mSubclass = mSubclass;
54         this->mProtocol = mProtocol;
55         this->configs = configs;
56     }
UsbDevice()57     UsbDevice() {}
~UsbDevice()58     ~UsbDevice() {}
GetName()59     const std::string &GetName() const
60     {
61         return mName;
62     }
GetManufacturerName()63     const std::string &GetManufacturerName() const
64     {
65         return mManufacturerName;
66     }
GetProductName()67     const std::string &GetProductName() const
68     {
69         return mProductName;
70     }
GetVersion()71     const std::string &GetVersion() const
72     {
73         return mVersion;
74     }
GetVendorId()75     int32_t GetVendorId() const
76     {
77         return mVendorId;
78     }
GetProductId()79     int32_t GetProductId() const
80     {
81         return mProductId;
82     }
GetClass()83     int32_t GetClass() const
84     {
85         return mClass;
86     }
GetSubclass()87     int32_t GetSubclass() const
88     {
89         return mSubclass;
90     }
GetProtocol()91     int32_t GetProtocol() const
92     {
93         return mProtocol;
94     }
GetConfigCount()95     int32_t GetConfigCount() const
96     {
97         return configs.size();
98     }
GetConfig(uint32_t index,USBConfig & config)99     int32_t GetConfig(uint32_t index, USBConfig &config) const
100     {
101         if (index >= configs.size()) {
102             return ERR_INVALID_VALUE;
103         }
104         config = configs[index];
105         return ERR_OK;
106     }
SetConfigs(const std::vector<USBConfig> & configs)107     void SetConfigs(const std::vector<USBConfig> &configs)
108     {
109         this->configs = configs;
110     }
111 
GetDevAddr()112     uint8_t GetDevAddr() const
113     {
114         return devAddr;
115     }
GetBusNum()116     uint8_t GetBusNum() const
117     {
118         return busNum;
119     }
GetDescConfigCount()120     bool GetDescConfigCount()
121     {
122         return descConfigCount;
123     }
124 
SetDevAddr(uint8_t Num)125     void SetDevAddr(uint8_t Num)
126     {
127         devAddr = Num;
128     }
SetBusNum(uint8_t Num)129     void SetBusNum(uint8_t Num)
130     {
131         busNum = Num;
132     }
SetName(std::string Name)133     void SetName(std::string Name)
134     {
135         mName = Name;
136     }
SetManufacturerName(std::string Name)137     void SetManufacturerName(std::string Name)
138     {
139         mManufacturerName = Name;
140     }
SetProductName(std::string Name)141     void SetProductName(std::string Name)
142     {
143         mProductName = Name;
144     }
SetVersion(std::string Name)145     void SetVersion(std::string Name)
146     {
147         mVersion = Name;
148     }
SetVendorId(int Id)149     void SetVendorId(int Id)
150     {
151         mVendorId = Id;
152     }
SetProductId(int Id)153     void SetProductId(int Id)
154     {
155         mProductId = Id;
156     }
SetClass(int Id)157     void SetClass(int Id)
158     {
159         mClass = Id;
160     }
SetSubclass(int Id)161     void SetSubclass(int Id)
162     {
163         mSubclass = Id;
164     }
SetProtocol(int Id)165     void SetProtocol(int Id)
166     {
167         mProtocol = Id;
168     }
SetDescConfigCount(uint8_t count)169     void SetDescConfigCount(uint8_t count)
170     {
171         descConfigCount = count;
172     }
173 
GetConfigs()174     std::vector<USBConfig> &GetConfigs()
175     {
176         return configs;
177     }
178 
ToString()179     std::string ToString() const
180     {
181         std::ostringstream ss;
182         ss << "mName=" << mName << ","
183            << "mManufacturerName=" << mManufacturerName << ","
184            << "mProductName=" << mProductName << ","
185            << "mVersion=" << mVersion << ","
186            << "mSerial=" << mSerial << ","
187            << "busNum=" << (int32_t)busNum << ","
188            << "devAddr=" << (int32_t)devAddr << ","
189            << "mVendorId=" << mVendorId << ","
190            << "mProductId=" << mProductId << ","
191            << "mClass=" << mClass << ","
192            << "mSubclass=" << mSubclass << ","
193            << "mProtocol=" << mProtocol << "";
194         std::string str = "UsbDevice[" + ss.str() + "];    ";
195         ss.str("");
196         std::string strConfigs;
197         for (size_t i = 0; i < configs.size(); ++i) {
198             const USBConfig &config = configs[i];
199             strConfigs += config.ToString();
200         }
201         str += strConfigs;
202         return str;
203     }
204 
SetiManufacturer(uint8_t idx)205     void SetiManufacturer(uint8_t idx)
206     {
207         this->iManufacturer = idx;
208     }
GetiManufacturer()209     uint8_t GetiManufacturer()
210     {
211         return this->iManufacturer;
212     }
SetiProduct(uint8_t idx)213     void SetiProduct(uint8_t idx)
214     {
215         this->iProduct = idx;
216     }
GetiProduct()217     uint8_t GetiProduct()
218     {
219         return this->iProduct;
220     }
SetiSerialNumber(uint8_t idx)221     void SetiSerialNumber(uint8_t idx)
222     {
223         this->iSerialNumber = idx;
224     }
GetiSerialNumber()225     uint8_t GetiSerialNumber()
226     {
227         return this->iSerialNumber;
228     }
SetmSerial(std::string Name)229     void SetmSerial(std::string Name)
230     {
231         this->mSerial = Name;
232     }
GetmSerial()233     const std::string GetmSerial() const
234     {
235         return this->mSerial;
236     }
SetbMaxPacketSize0(uint8_t val)237     void SetbMaxPacketSize0(uint8_t val)
238     {
239         this->bMaxPacketSize0 = val;
240     }
GetbMaxPacketSize0()241     uint8_t GetbMaxPacketSize0()
242     {
243         return this->bMaxPacketSize0;
244     }
SetbcdUSB(uint16_t val)245     void SetbcdUSB(uint16_t val)
246     {
247         this->bcdUSB = val;
248     }
GetbcdUSB()249     uint16_t GetbcdUSB()
250     {
251         return this->bcdUSB;
252     }
SetbcdDevice(uint16_t val)253     void SetbcdDevice(uint16_t val)
254     {
255         this->bcdDevice = val;
256     }
GetbcdDevice()257     uint16_t GetbcdDevice()
258     {
259         return this->bcdDevice;
260     }
261 
262 private:
263     std::string mName;
264     std::string mManufacturerName;
265     std::string mProductName;
266     std::string mVersion;
267     std::string mSerial;
268     uint8_t devAddr;
269     uint8_t busNum;
270     uint8_t descConfigCount;
271 
272     uint8_t bMaxPacketSize0;
273     uint16_t bcdUSB;
274     uint16_t bcdDevice;
275     uint8_t iManufacturer;
276     uint8_t iProduct;
277     uint8_t iSerialNumber;
278 
279     int mVendorId;
280     int mProductId;
281     int mClass;
282     int mSubclass;
283     int mProtocol;
284     std::vector<USBConfig> configs;
285 };
286 } // namespace USB
287 } // namespace OHOS
288 
289 #endif // USB_DEVICE_H
290