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_MPI_DEVICE_MANAGER_H 17 #define HOS_CAMERA_MPI_DEVICE_MANAGER_H 18 19 #include <iostream> 20 #include <vector> 21 #include <string> 22 #include <stdlib.h> 23 #include "create_devicemanager_factory.h" 24 #include "icontroller.h" 25 #include "idevice_manager.h" 26 #include "imanager.h" 27 #include "isys_object.h" 28 #include "device_manager_adapter.h" 29 30 namespace OHOS { 31 namespace Camera { 32 class MpiDeviceManager : public IDeviceManager { 33 DECLARE_DEVICEMANAGER(MpiDeviceManager) 34 public: 35 MpiDeviceManager(); 36 virtual ~MpiDeviceManager(); 37 std::shared_ptr<IManager> GetManager(ManagerId managerId); 38 std::shared_ptr<ISensor> GetSensor(CameraId cameraId); 39 RetCode DestroyManager(); 40 RetCode Init(); 41 std::shared_ptr<IController> GetController(ManagerId managerId, ControllerId controllerId); 42 RetCode PowerUp(CameraId cameraId); 43 RetCode PowerDown(CameraId cameraId); 44 std::vector<CameraId> GetCameraId(); 45 RetCode Connect(std::string controller, 46 std::string portNum, 47 std::string connectController, 48 std::string connectPortNum); 49 RetCode UnConnect(std::string controller, 50 std::string portNum, 51 std::string connectController, 52 std::string connectPortNum); 53 void SetSendflag(bool flag); 54 void BufferCallback(std::shared_ptr<FrameSpec> buffer); 55 void SetAbilityMetaDataTag(std::vector<int32_t> abilityMetaDataTag); 56 RetCode SendFrameBuffer(std::shared_ptr<FrameSpec> buffer, CameraId cameraId = CAMERA_MAX); 57 void SetNodeCallBack(const NodeBufferCb cb, CameraId cameraId = CAMERA_MAX); 58 void SetMetaDataCallBack(const MetaDataCb cb, CameraId cameraId = CAMERA_MAX); 59 void SetDevStatusCallBack(const DeviceStatusCb cb); 60 RetCode SetFlashlight(FlashMode flashMode, bool enable, CameraId cameraId = CAMERA_MAX); 61 void Configure(std::shared_ptr<CameraMetadata> meta); 62 RetCode PreConfig(const ModeMeta& meta, const std::vector<DeviceStreamSetting>& settings) override; 63 RetCode Flush(int32_t streamId) override; 64 RetCode StartRecvFrame(int32_t streamId) override; 65 RetCode StopRecvFrame(int32_t streamId) override; 66 67 private: 68 RetCode CreateController(std::shared_ptr<IManager> manager, ManagerId managerId); 69 RetCode DestroyController(); 70 bool CheckManagerList(ManagerId managerId); 71 bool CheckCameraIdList(CameraId cameraId); 72 ControllerId CheckControllerId(std::string controllerName); 73 RetCode CreateManager(); 74 RetCode StartNode(ControllerId controllerId); 75 int32_t CheckNodePortNum(std::string controllerName); 76 RetCode GetAbilityMetaData(std::shared_ptr<CameraMetadata> meta, bool &sendflag); 77 78 private: 79 std::vector<HardwareConfiguration> hardwareList_; 80 std::vector<std::shared_ptr<IManager>> managerList_; 81 std::shared_ptr<ISysObject> sysObject_ = nullptr; 82 NodeBufferCb nodeBufferCb_; 83 MetaDataCb metaDataCb_; 84 DeviceStatusCb deviceStatusCb_; 85 bool sysInitFlag; 86 bool metaSendflag_ = false; 87 }; 88 } // namespace Camera 89 } // namespace OHOS 90 #endif 91