112636162Sopenharmony_ci/* 212636162Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 312636162Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 412636162Sopenharmony_ci * you may not use this file except in compliance with the License. 512636162Sopenharmony_ci * You may obtain a copy of the License at 612636162Sopenharmony_ci * 712636162Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 812636162Sopenharmony_ci * 912636162Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1012636162Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1112636162Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1212636162Sopenharmony_ci * See the License for the specific language governing permissions and 1312636162Sopenharmony_ci * limitations under the License. 1412636162Sopenharmony_ci */ 1512636162Sopenharmony_ci#ifndef EXT_OBJECT_H 1612636162Sopenharmony_ci#define EXT_OBJECT_H 1712636162Sopenharmony_ci 1812636162Sopenharmony_ci#include <memory> 1912636162Sopenharmony_ci#include <string> 2012636162Sopenharmony_ci#include "edm_errors.h" 2112636162Sopenharmony_cinamespace OHOS { 2212636162Sopenharmony_cinamespace ExternalDeviceManager { 2312636162Sopenharmony_cienum BusType : uint32_t { 2412636162Sopenharmony_ci BUS_TYPE_INVALID = 0, 2512636162Sopenharmony_ci BUS_TYPE_USB = 1, 2612636162Sopenharmony_ci BUS_TYPE_MAX, 2712636162Sopenharmony_ci BUS_TYPE_TEST, 2812636162Sopenharmony_ci}; 2912636162Sopenharmony_ci 3012636162Sopenharmony_ciclass DrvBundleStateCallback; 3112636162Sopenharmony_ciclass DriverInfoExt { 3212636162Sopenharmony_cipublic: 3312636162Sopenharmony_ci virtual ~DriverInfoExt() = default; 3412636162Sopenharmony_ci virtual int32_t Serialize(std::string &str) = 0; 3512636162Sopenharmony_ci virtual int32_t UnSerialize(const std::string &str) = 0; 3612636162Sopenharmony_ci}; 3712636162Sopenharmony_ci 3812636162Sopenharmony_ciclass DriverInfo : public DriverInfoExt { 3912636162Sopenharmony_cipublic: 4012636162Sopenharmony_ci DriverInfo() = default; 4112636162Sopenharmony_ci DriverInfo(const std::string &bundleName, const std::string &driverName, const std::string &driverUid = "") 4212636162Sopenharmony_ci : bundleName_(bundleName), driverName_(driverName) 4312636162Sopenharmony_ci { 4412636162Sopenharmony_ci if (driverUid.empty()) { 4512636162Sopenharmony_ci driverUid_ = bundleName + "-" + driverName; 4612636162Sopenharmony_ci } else { 4712636162Sopenharmony_ci driverUid_ = driverUid; 4812636162Sopenharmony_ci } 4912636162Sopenharmony_ci } 5012636162Sopenharmony_ci int32_t Serialize(std::string &str) override; 5112636162Sopenharmony_ci int32_t UnSerialize(const std::string &str) override; 5212636162Sopenharmony_ci std::string GetBusName() const 5312636162Sopenharmony_ci { 5412636162Sopenharmony_ci return bus_; 5512636162Sopenharmony_ci } 5612636162Sopenharmony_ci BusType GetBusType() const 5712636162Sopenharmony_ci { 5812636162Sopenharmony_ci return busType_; 5912636162Sopenharmony_ci } 6012636162Sopenharmony_ci std::string GetDriverUid() const 6112636162Sopenharmony_ci { 6212636162Sopenharmony_ci return driverUid_; 6312636162Sopenharmony_ci } 6412636162Sopenharmony_ci std::string GetBundleName() const 6512636162Sopenharmony_ci { 6612636162Sopenharmony_ci return bundleName_; 6712636162Sopenharmony_ci } 6812636162Sopenharmony_ci std::string GetDriverName() const 6912636162Sopenharmony_ci { 7012636162Sopenharmony_ci return driverName_; 7112636162Sopenharmony_ci } 7212636162Sopenharmony_ci std::string GetVersion() const 7312636162Sopenharmony_ci { 7412636162Sopenharmony_ci return version_; 7512636162Sopenharmony_ci } 7612636162Sopenharmony_ci std::string GetDescription() const 7712636162Sopenharmony_ci { 7812636162Sopenharmony_ci return description_; 7912636162Sopenharmony_ci } 8012636162Sopenharmony_ci std::string GetDriverSize() const 8112636162Sopenharmony_ci { 8212636162Sopenharmony_ci return driverSize_; 8312636162Sopenharmony_ci } 8412636162Sopenharmony_ci std::shared_ptr<DriverInfoExt> GetInfoExt() const 8512636162Sopenharmony_ci { 8612636162Sopenharmony_ci return driverInfoExt_; 8712636162Sopenharmony_ci } 8812636162Sopenharmony_ciprivate: 8912636162Sopenharmony_ci friend class DrvBundleStateCallback; 9012636162Sopenharmony_ci std::string bus_; 9112636162Sopenharmony_ci BusType busType_{0}; 9212636162Sopenharmony_ci std::string driverUid_; 9312636162Sopenharmony_ci std::string bundleName_; 9412636162Sopenharmony_ci std::string driverName_; 9512636162Sopenharmony_ci std::string vendor_; 9612636162Sopenharmony_ci std::string version_; 9712636162Sopenharmony_ci std::string description_; 9812636162Sopenharmony_ci std::string driverSize_; 9912636162Sopenharmony_ci std::shared_ptr<DriverInfoExt> driverInfoExt_; 10012636162Sopenharmony_ci}; 10112636162Sopenharmony_ci 10212636162Sopenharmony_ciclass DeviceInfo { 10312636162Sopenharmony_cipublic: 10412636162Sopenharmony_ci DeviceInfo( 10512636162Sopenharmony_ci uint32_t busDeviceId, 10612636162Sopenharmony_ci BusType busType = BusType::BUS_TYPE_INVALID, 10712636162Sopenharmony_ci const std::string &description = "") : description_(description) 10812636162Sopenharmony_ci { 10912636162Sopenharmony_ci devInfo_.devBusInfo.busType = busType; 11012636162Sopenharmony_ci devInfo_.devBusInfo.busDeviceId = busDeviceId; 11112636162Sopenharmony_ci } 11212636162Sopenharmony_ci virtual ~DeviceInfo() = default; 11312636162Sopenharmony_ci BusType GetBusType() const 11412636162Sopenharmony_ci { 11512636162Sopenharmony_ci return devInfo_.devBusInfo.busType; 11612636162Sopenharmony_ci } 11712636162Sopenharmony_ci uint64_t GetDeviceId() const 11812636162Sopenharmony_ci { 11912636162Sopenharmony_ci return devInfo_.deviceId; 12012636162Sopenharmony_ci } 12112636162Sopenharmony_ci uint32_t GetBusDevId() const 12212636162Sopenharmony_ci { 12312636162Sopenharmony_ci return devInfo_.devBusInfo.busDeviceId; 12412636162Sopenharmony_ci } 12512636162Sopenharmony_ci const std::string& GetDeviceDescription() const 12612636162Sopenharmony_ci { 12712636162Sopenharmony_ci return description_; 12812636162Sopenharmony_ci } 12912636162Sopenharmony_ci 13012636162Sopenharmony_ciprivate: 13112636162Sopenharmony_ci union DevInfo { 13212636162Sopenharmony_ci uint64_t deviceId; 13312636162Sopenharmony_ci struct { 13412636162Sopenharmony_ci BusType busType; 13512636162Sopenharmony_ci uint32_t busDeviceId; 13612636162Sopenharmony_ci } devBusInfo; 13712636162Sopenharmony_ci } devInfo_; 13812636162Sopenharmony_ci std::string description_ {""}; 13912636162Sopenharmony_ci}; 14012636162Sopenharmony_ci} // namespace ExternalDeviceManager 14112636162Sopenharmony_ci} // namespace OHOS 14212636162Sopenharmony_ci#endif // EXT_OBJECT_H