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