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