1 /* 2 * Copyright (c) 2021-2024 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 OHOS_DCAMERA_SOURCE_EVENT_H 17 #define OHOS_DCAMERA_SOURCE_EVENT_H 18 19 #include <variant> 20 21 #include "v1_1/dcamera_types.h" 22 23 #include "dcamera_event_cmd.h" 24 #include "dcamera_index.h" 25 26 namespace OHOS { 27 namespace DistributedHardware { 28 using namespace OHOS::HDI::DistributedCamera::V1_1; 29 typedef enum { 30 DCAMERA_EVENT_REGIST = 0, 31 DCAMERA_EVENT_UNREGIST = 1, 32 DCAMERA_EVENT_OPEN = 2, 33 DCAMERA_EVENT_CLOSE = 3, 34 DCAMERA_EVENT_CONFIG_STREAMS = 4, 35 DCAMERA_EVENT_RELEASE_STREAMS = 5, 36 DCAMERA_EVENT_START_CAPTURE = 6, 37 DCAMERA_EVENT_STOP_CAPTURE = 7, 38 DCAMERA_EVENT_UPDATE_SETTINGS = 8, 39 DCAMERA_EVENT_NOFIFY = 9, 40 DCAMERA_EVENT_HICOLLIE = 10, 41 DCAMERA_EVENT_GET_FULLCAPS = 11, 42 } DCAMERA_EVENT; 43 44 class DCameraRegistParam { 45 public: 46 DCameraRegistParam() = default; DCameraRegistParam(std::string devId,std::string dhId,std::string reqId,std::string sinkParam,std::string srcParam)47 DCameraRegistParam(std::string devId, std::string dhId, std::string reqId, std::string sinkParam, 48 std::string srcParam) : devId_(devId), dhId_(dhId), reqId_(reqId), sinkParam_(sinkParam), srcParam_(srcParam) 49 {} 50 ~DCameraRegistParam() = default; 51 std::string devId_; 52 std::string dhId_; 53 std::string reqId_; 54 std::string sinkParam_; 55 std::string srcParam_; 56 }; 57 58 class DCameraSourceEvent { 59 public: DCameraSourceEvent()60 explicit DCameraSourceEvent() {} 61 ~DCameraSourceEvent() = default; DCameraSourceEvent(DCAMERA_EVENT eventType)62 explicit DCameraSourceEvent(DCAMERA_EVENT eventType) 63 : eventType_(eventType) {} DCameraSourceEvent(DCAMERA_EVENT eventType,DCameraIndex & index)64 explicit DCameraSourceEvent(DCAMERA_EVENT eventType, DCameraIndex& index) 65 : eventType_(eventType) 66 { 67 eventParam_ = index; 68 } 69 DCameraSourceEvent(DCAMERA_EVENT eventType,std::shared_ptr<DCameraRegistParam> & param)70 explicit DCameraSourceEvent(DCAMERA_EVENT eventType, 71 std::shared_ptr<DCameraRegistParam>& param) : eventType_(eventType) 72 { 73 eventParam_ = param; 74 } 75 DCameraSourceEvent(DCAMERA_EVENT eventType,const std::vector<std::shared_ptr<DCStreamInfo>> & streamInfos)76 explicit DCameraSourceEvent(DCAMERA_EVENT eventType, 77 const std::vector<std::shared_ptr<DCStreamInfo>>& streamInfos) : eventType_(eventType) 78 { 79 eventParam_ = std::move(streamInfos); 80 } 81 DCameraSourceEvent(DCAMERA_EVENT eventType,const std::vector<std::shared_ptr<DCCaptureInfo>> & captureInfos)82 explicit DCameraSourceEvent(DCAMERA_EVENT eventType, 83 const std::vector<std::shared_ptr<DCCaptureInfo>>& captureInfos) : eventType_(eventType) 84 { 85 eventParam_ = std::move(captureInfos); 86 } 87 DCameraSourceEvent(DCAMERA_EVENT eventType,const std::vector<std::shared_ptr<DCameraSettings>> & settings)88 explicit DCameraSourceEvent(DCAMERA_EVENT eventType, 89 const std::vector<std::shared_ptr<DCameraSettings>>& settings) : eventType_(eventType) 90 { 91 eventParam_ = std::move(settings); 92 } 93 DCameraSourceEvent(DCAMERA_EVENT eventType,const std::vector<int> & streamIds)94 explicit DCameraSourceEvent(DCAMERA_EVENT eventType, const std::vector<int>& streamIds) 95 : eventType_(eventType) 96 { 97 eventParam_ = std::move(streamIds); 98 } 99 DCameraSourceEvent(DCAMERA_EVENT eventType,std::shared_ptr<DCameraEvent> & camEvent)100 explicit DCameraSourceEvent(DCAMERA_EVENT eventType, std::shared_ptr<DCameraEvent>& camEvent) 101 : eventType_(eventType) 102 { 103 eventParam_ = camEvent; 104 } 105 106 int32_t GetDCameraIndex(DCameraIndex& index); 107 int32_t GetDCameraRegistParam(std::shared_ptr<DCameraRegistParam>& param); 108 int32_t GetStreamInfos(std::vector<std::shared_ptr<DCStreamInfo>>& streamInfos); 109 int32_t GetCaptureInfos(std::vector<std::shared_ptr<DCCaptureInfo>>& captureInfos); 110 int32_t GetCameraSettings(std::vector<std::shared_ptr<DCameraSettings>>& settings); 111 int32_t GetStreamIds(std::vector<int>& streamIds); 112 int32_t GetCameraEvent(std::shared_ptr<DCameraEvent>& camEvent); 113 DCAMERA_EVENT GetEventType(); 114 115 private: 116 using EventParam = std::variant<std::monostate, 117 DCameraIndex, 118 std::shared_ptr<DCameraRegistParam>, 119 std::vector<std::shared_ptr<DCStreamInfo>>, 120 std::vector<std::shared_ptr<DCCaptureInfo>>, 121 std::vector<std::shared_ptr<DCameraSettings>>, 122 std::vector<int>, std::shared_ptr<DCameraEvent>>; 123 124 private: 125 DCAMERA_EVENT eventType_; 126 EventParam eventParam_; 127 }; 128 } // namespace DistributedHardware 129 } // namespace OHOS 130 #endif // OHOS_DCAMERA_SOURCE_EVENT_H 131