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 OHOS_DCAMERA_SOURCE_EVENT_H 17 #define OHOS_DCAMERA_SOURCE_EVENT_H 18 19 #include <variant> 20 21 #include "event.h" 22 #include "v1_0/dcamera_types.h" 23 24 #include "dcamera_event_cmd.h" 25 #include "dcamera_index.h" 26 27 namespace OHOS { 28 namespace DistributedHardware { 29 using namespace OHOS::HDI::DistributedCamera::V1_0; 30 typedef enum { 31 DCAMERA_EVENT_REGIST = 0, 32 DCAMERA_EVENT_UNREGIST = 1, 33 DCAMERA_EVENT_OPEN = 2, 34 DCAMERA_EVENT_CLOSE = 3, 35 DCAMERA_EVENT_CONFIG_STREAMS = 4, 36 DCAMERA_EVENT_RELEASE_STREAMS = 5, 37 DCAMERA_EVENT_START_CAPTURE = 6, 38 DCAMERA_EVENT_STOP_CAPTURE = 7, 39 DCAMERA_EVENT_UPDATE_SETTINGS = 8, 40 DCAMERA_EVENT_NOFIFY = 9, 41 } DCAMERA_EVENT; 42 43 class DCameraRegistParam { 44 public: 45 DCameraRegistParam() = default; DCameraRegistParam(std::string devId,std::string dhId,std::string reqId,std::string param)46 DCameraRegistParam(std::string devId, std::string dhId, std::string reqId, std::string param) 47 : devId_(devId), dhId_(dhId), reqId_(reqId), param_(param) 48 {} 49 ~DCameraRegistParam() = default; 50 std::string devId_; 51 std::string dhId_; 52 std::string reqId_; 53 std::string param_; 54 }; 55 56 class DCameraSourceEvent : public Event { TYPEINDENT(DCameraSourceEvent)57 TYPEINDENT(DCameraSourceEvent) 58 59 public: 60 explicit DCameraSourceEvent(EventSender& sender) : Event(sender) {} 61 ~DCameraSourceEvent() = default; DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType)62 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType) 63 : Event(sender), eventType_(eventType) {} DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,DCameraIndex & index)64 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, DCameraIndex& index) 65 : Event(sender), eventType_(eventType) 66 { 67 eventParam_ = index; 68 } 69 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,std::shared_ptr<DCameraRegistParam> & param)70 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, 71 std::shared_ptr<DCameraRegistParam>& param) : Event(sender), eventType_(eventType) 72 { 73 eventParam_ = param; 74 } 75 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,const std::vector<std::shared_ptr<DCStreamInfo>> & streamInfos)76 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, 77 const std::vector<std::shared_ptr<DCStreamInfo>>& streamInfos) : Event(sender), eventType_(eventType) 78 { 79 eventParam_ = std::move(streamInfos); 80 } 81 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,const std::vector<std::shared_ptr<DCCaptureInfo>> & captureInfos)82 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, 83 const std::vector<std::shared_ptr<DCCaptureInfo>>& captureInfos) : Event(sender), eventType_(eventType) 84 { 85 eventParam_ = std::move(captureInfos); 86 } 87 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,const std::vector<std::shared_ptr<DCameraSettings>> & settings)88 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, 89 const std::vector<std::shared_ptr<DCameraSettings>>& settings) : Event(sender), eventType_(eventType) 90 { 91 eventParam_ = std::move(settings); 92 } 93 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,const std::vector<int> & streamIds)94 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, const std::vector<int>& streamIds) 95 : Event(sender), eventType_(eventType) 96 { 97 eventParam_ = std::move(streamIds); 98 } 99 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,std::shared_ptr<DCameraEvent> & camEvent)100 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, std::shared_ptr<DCameraEvent>& camEvent) 101 : Event(sender), 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