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_HICOLLIE = 10, 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 : public Event { TYPEINDENT(DCameraSourceEvent)59 TYPEINDENT(DCameraSourceEvent) 60 61 public: 62 explicit DCameraSourceEvent(EventSender& sender) : Event(sender) {} 63 ~DCameraSourceEvent() = default; DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType)64 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType) 65 : Event(sender), eventType_(eventType) {} DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,DCameraIndex & index)66 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, DCameraIndex& index) 67 : Event(sender), eventType_(eventType) 68 { 69 eventParam_ = index; 70 } 71 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,std::shared_ptr<DCameraRegistParam> & param)72 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, 73 std::shared_ptr<DCameraRegistParam>& param) : Event(sender), eventType_(eventType) 74 { 75 eventParam_ = param; 76 } 77 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,const std::vector<std::shared_ptr<DCStreamInfo>> & streamInfos)78 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, 79 const std::vector<std::shared_ptr<DCStreamInfo>>& streamInfos) : Event(sender), eventType_(eventType) 80 { 81 eventParam_ = std::move(streamInfos); 82 } 83 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,const std::vector<std::shared_ptr<DCCaptureInfo>> & captureInfos)84 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, 85 const std::vector<std::shared_ptr<DCCaptureInfo>>& captureInfos) : Event(sender), eventType_(eventType) 86 { 87 eventParam_ = std::move(captureInfos); 88 } 89 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,const std::vector<std::shared_ptr<DCameraSettings>> & settings)90 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, 91 const std::vector<std::shared_ptr<DCameraSettings>>& settings) : Event(sender), eventType_(eventType) 92 { 93 eventParam_ = std::move(settings); 94 } 95 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,const std::vector<int> & streamIds)96 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, const std::vector<int>& streamIds) 97 : Event(sender), eventType_(eventType) 98 { 99 eventParam_ = std::move(streamIds); 100 } 101 DCameraSourceEvent(EventSender & sender,DCAMERA_EVENT eventType,std::shared_ptr<DCameraEvent> & camEvent)102 explicit DCameraSourceEvent(EventSender& sender, DCAMERA_EVENT eventType, std::shared_ptr<DCameraEvent>& camEvent) 103 : Event(sender), eventType_(eventType) 104 { 105 eventParam_ = camEvent; 106 } 107 108 int32_t GetDCameraIndex(DCameraIndex& index); 109 int32_t GetDCameraRegistParam(std::shared_ptr<DCameraRegistParam>& param); 110 int32_t GetStreamInfos(std::vector<std::shared_ptr<DCStreamInfo>>& streamInfos); 111 int32_t GetCaptureInfos(std::vector<std::shared_ptr<DCCaptureInfo>>& captureInfos); 112 int32_t GetCameraSettings(std::vector<std::shared_ptr<DCameraSettings>>& settings); 113 int32_t GetStreamIds(std::vector<int>& streamIds); 114 int32_t GetCameraEvent(std::shared_ptr<DCameraEvent>& camEvent); 115 DCAMERA_EVENT GetEventType(); 116 117 private: 118 using EventParam = std::variant<std::monostate, 119 DCameraIndex, 120 std::shared_ptr<DCameraRegistParam>, 121 std::vector<std::shared_ptr<DCStreamInfo>>, 122 std::vector<std::shared_ptr<DCCaptureInfo>>, 123 std::vector<std::shared_ptr<DCameraSettings>>, 124 std::vector<int>, std::shared_ptr<DCameraEvent>>; 125 126 private: 127 DCAMERA_EVENT eventType_; 128 EventParam eventParam_; 129 }; 130 } // namespace DistributedHardware 131 } // namespace OHOS 132 #endif // OHOS_DCAMERA_SOURCE_EVENT_H 133