• 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 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