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 #include "dcamera_source_event.h"
17 
18 #include "distributed_camera_errno.h"
19 #include "distributed_hardware_log.h"
20 
21 namespace OHOS {
22 namespace DistributedHardware {
GetDCameraIndex(DCameraIndex & index)23 int32_t DCameraSourceEvent::GetDCameraIndex(DCameraIndex& index)
24 {
25     auto indexPtr = std::get_if<DCameraIndex>(&eventParam_);
26     if (indexPtr == nullptr) {
27         DHLOGE("DCameraSourceEvent can not get_if DCameraIndex");
28         return DCAMERA_NOT_FOUND;
29     }
30 
31     index = *indexPtr;
32     return DCAMERA_OK;
33 }
34 
GetDCameraRegistParam(std::shared_ptr<DCameraRegistParam> & param)35 int32_t DCameraSourceEvent::GetDCameraRegistParam(std::shared_ptr<DCameraRegistParam>& param)
36 {
37     auto paramPtr = std::get_if<std::shared_ptr<DCameraRegistParam>>(&eventParam_);
38     if (paramPtr == nullptr) {
39         DHLOGE("DCameraSourceEvent can not get_if DCameraRegistParam");
40         return DCAMERA_NOT_FOUND;
41     }
42     param = *paramPtr;
43     return DCAMERA_OK;
44 }
45 
GetStreamInfos(std::vector<std::shared_ptr<DCStreamInfo>> & streamInfos)46 int32_t DCameraSourceEvent::GetStreamInfos(std::vector<std::shared_ptr<DCStreamInfo>>& streamInfos)
47 {
48     auto streamInfosPtr = std::get_if<std::vector<std::shared_ptr<DCStreamInfo>>>(&eventParam_);
49     if (streamInfosPtr == nullptr) {
50         DHLOGE("DCameraSourceEvent can not get_if DCStreamInfo");
51         return DCAMERA_NOT_FOUND;
52     }
53     streamInfos = std::move(*streamInfosPtr);
54     return DCAMERA_OK;
55 }
56 
GetCaptureInfos(std::vector<std::shared_ptr<DCCaptureInfo>> & captureInfos)57 int32_t DCameraSourceEvent::GetCaptureInfos(std::vector<std::shared_ptr<DCCaptureInfo>>& captureInfos)
58 {
59     auto captureInfosPtr = std::get_if<std::vector<std::shared_ptr<DCCaptureInfo>>>(&eventParam_);
60     if (captureInfosPtr == nullptr) {
61         DHLOGE("DCameraSourceEvent can not get_if DCCaptureInfo");
62         return DCAMERA_NOT_FOUND;
63     }
64     captureInfos = std::move(*captureInfosPtr);
65     return DCAMERA_OK;
66 }
67 
GetCameraSettings(std::vector<std::shared_ptr<DCameraSettings>> & settings)68 int32_t DCameraSourceEvent::GetCameraSettings(std::vector<std::shared_ptr<DCameraSettings>>& settings)
69 {
70     auto settingsPtr = std::get_if<std::vector<std::shared_ptr<DCameraSettings>>>(&eventParam_);
71     if (settingsPtr == nullptr) {
72         DHLOGE("DCameraSourceEvent can not get_if DCameraSettings");
73         return DCAMERA_NOT_FOUND;
74     }
75     settings = std::move(*settingsPtr);
76     return DCAMERA_OK;
77 }
78 
GetStreamIds(std::vector<int> & streamIds)79 int32_t DCameraSourceEvent::GetStreamIds(std::vector<int>& streamIds)
80 {
81     auto streamIdsPtr = std::get_if<std::vector<int>>(&eventParam_);
82     if (streamIdsPtr == nullptr) {
83         DHLOGE("DCameraSourceEvent can not get_if streamIds");
84         return DCAMERA_NOT_FOUND;
85     }
86     streamIds = std::move(*streamIdsPtr);
87     return DCAMERA_OK;
88 }
89 
GetCameraEvent(std::shared_ptr<DCameraEvent> & camEvent)90 int32_t DCameraSourceEvent::GetCameraEvent(std::shared_ptr<DCameraEvent>& camEvent)
91 {
92     auto camEventPtr = std::get_if<std::shared_ptr<DCameraEvent>>(&eventParam_);
93     if (camEventPtr == nullptr) {
94         DHLOGE("DCameraSourceEvent can not get_if camEventPtr");
95         return DCAMERA_NOT_FOUND;
96     }
97     camEvent = *camEventPtr;
98     return DCAMERA_OK;
99 }
100 
GetEventType()101 DCAMERA_EVENT DCameraSourceEvent::GetEventType()
102 {
103     return eventType_;
104 }
105 } // namespace DistributedHardware
106 } // namespace OHOS
107