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 HOS_CAMERA_IDEVICED_MANAGER_H 17 #define HOS_CAMERA_IDEVICED_MANAGER_H 18 19 #include "icontroller.h" 20 #include "imanager.h" 21 #include "device_manager_adapter.h" 22 #include "isensor.h" 23 #include <vector> 24 25 namespace OHOS::Camera { 26 class IDeviceManager { 27 public: 28 IDeviceManager(); 29 virtual ~IDeviceManager(); 30 static std::shared_ptr<IDeviceManager> GetInstance(); 31 virtual std::shared_ptr<IManager> GetManager(ManagerId managerId) = 0; 32 virtual RetCode CreateManager() = 0; 33 virtual RetCode DestroyManager() = 0; GetController(ManagerId managerId,ControllerId controllerId)34 virtual std::shared_ptr<IController> GetController(ManagerId managerId, ControllerId controllerId) 35 { 36 return nullptr; 37 }; 38 virtual std::shared_ptr<IController> GetController(CameraId cameraId,ManagerId managerId,ControllerId controllerId)39 GetController(CameraId cameraId, ManagerId managerId, ControllerId controllerId) 40 { 41 return nullptr; 42 }; 43 virtual RetCode PowerUp(CameraId cameraId) = 0; 44 virtual RetCode PowerDown(CameraId cameraId) = 0; 45 virtual RetCode Init() = 0; 46 virtual std::shared_ptr<ISensor> GetSensor(CameraId cameraId) = 0; 47 virtual std::vector<CameraId> GetCameraId() = 0; Connect(std::string controller,std::string portNum,std::string connectController,std::string connectPortNum)48 virtual RetCode Connect(std::string controller, 49 std::string portNum, std::string connectController, std::string connectPortNum) 50 { 51 return RC_OK; 52 }; UnConnect(std::string controller,std::string portNum,std::string connectController,std::string connectPortNum)53 virtual RetCode UnConnect(std::string controller, 54 std::string portNum, std::string connectController, std::string connectPortNum) 55 { 56 return RC_OK; 57 }; BufferCallback(std::shared_ptr<FrameSpec> buffer)58 virtual void BufferCallback(std::shared_ptr<FrameSpec> buffer) {}; SetAbilityMetaDataTag(std::vector<int32_t> abilityMetaDataTag)59 virtual void SetAbilityMetaDataTag(std::vector<int32_t> abilityMetaDataTag) {}; 60 virtual RetCode SendFrameBuffer(std::shared_ptr<FrameSpec> buffer, CameraId cameraId = CAMERA_MAX) 61 { 62 return RC_OK; 63 }; 64 virtual void SetNodeCallBack(const NodeBufferCb cb, CameraId cameraId = CAMERA_MAX) {}; 65 virtual void SetMetaDataCallBack(const MetaDataCb cb, CameraId cameraId = CAMERA_MAX) {}; SetDevStatusCallBack(const DeviceStatusCb cb)66 virtual void SetDevStatusCallBack(const DeviceStatusCb cb) {}; 67 virtual RetCode SetFlashlight(FlashMode flashMode, bool enable, CameraId cameraId = CAMERA_MAX) = 0; 68 virtual void Configure(std::shared_ptr<CameraStandard::CameraMetadata> meta) = 0; SetCallBack(UvcMetaDataCb cb)69 virtual void SetCallBack(UvcMetaDataCb cb) {}; PreConfig(const ModeMeta & meta,const std::vector<DeviceStreamSetting> & settings)70 virtual RetCode PreConfig(const ModeMeta& meta, const std::vector<DeviceStreamSetting>& settings) 71 { 72 return RC_OK; 73 } Flush(int32_t streamId)74 virtual RetCode Flush(int32_t streamId) 75 { 76 return RC_OK; 77 } StartRecvFrame(int32_t streamId)78 virtual RetCode StartRecvFrame(int32_t streamId) 79 { 80 return RC_OK; 81 } StopRecvFrame(int32_t streamId)82 virtual RetCode StopRecvFrame(int32_t streamId) 83 { 84 return RC_OK; 85 } 86 }; 87 } // namespace OHOS::Camera 88 #endif 89