1 /*
2 * Copyright (c) 2023 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 "camera_device_service.h"
17 #include "camera.h"
18 #include "stream_operator_service_callback.h"
19
20 namespace OHOS::Camera {
21
CameraDeviceService(OHOS::sptr<ICameraDeviceVdi> cameraDeviceServiceVdi)22 CameraDeviceService::CameraDeviceService(OHOS::sptr<ICameraDeviceVdi> cameraDeviceServiceVdi)
23 : cameraDeviceServiceVdi_(cameraDeviceServiceVdi)
24 {
25 CAMERA_LOGI("ctor, instance");
26 }
27
GetStreamOperator(const sptr<IStreamOperatorCallback> & callbackObj,sptr<IStreamOperator> & streamOperator)28 int32_t CameraDeviceService::GetStreamOperator(const sptr<IStreamOperatorCallback> &callbackObj,
29 sptr<IStreamOperator> &streamOperator)
30 {
31 CAMERA_LOGI("CameraHost:GetStreamOperator");
32 OHOS::sptr<IStreamOperatorVdi> streamOperatorVdi = nullptr;
33 CHECK_IF_PTR_NULL_RETURN_VALUE(cameraDeviceServiceVdi_, OHOS::HDI::Camera::V1_0::INVALID_ARGUMENT);
34 OHOS::sptr<IStreamOperatorVdiCallback> vdiCallbackObj = new StreamOperatorServiceCallback(callbackObj);
35 if (vdiCallbackObj == nullptr) {
36 CAMERA_LOGE("Get stream operator error, vdiCallbackObj is nullptr");
37 return OHOS::HDI::Camera::V1_0::INSUFFICIENT_RESOURCES;
38 }
39 int32_t ret = cameraDeviceServiceVdi_->GetStreamOperator(vdiCallbackObj, streamOperatorVdi);
40 if (ret != OHOS::HDI::Camera::V1_0::NO_ERROR) {
41 CAMERA_LOGE("Get stream operator error, ret=%{public}d", ret);
42 return ret;
43 }
44 if (streamOperatorVdi == nullptr) {
45 CAMERA_LOGE("Get stream operator error, streamOperatorVdi is nullptr");
46 return OHOS::HDI::Camera::V1_0::INSUFFICIENT_RESOURCES;
47 }
48 streamOperator = new StreamOperatorService(streamOperatorVdi);
49 if (streamOperator == nullptr) {
50 CAMERA_LOGE("Get stream operator error, streamOperator is nullptr");
51 return OHOS::HDI::Camera::V1_0::INSUFFICIENT_RESOURCES;
52 }
53
54 return OHOS::HDI::Camera::V1_0::NO_ERROR;
55 }
56
UpdateSettings(const std::vector<uint8_t> & settings)57 int32_t CameraDeviceService::UpdateSettings(const std::vector<uint8_t> &settings)
58 {
59 CAMERA_LOGI("CameraHost:UpdateSettings");
60 CHECK_IF_PTR_NULL_RETURN_VALUE(cameraDeviceServiceVdi_, OHOS::HDI::Camera::V1_0::INVALID_ARGUMENT);
61 return cameraDeviceServiceVdi_->UpdateSettings(settings);
62 }
63
SetResultMode(ResultCallbackMode mode)64 int32_t CameraDeviceService::SetResultMode(ResultCallbackMode mode)
65 {
66 CAMERA_LOGI("CameraHost:SetResultMode");
67 CHECK_IF_PTR_NULL_RETURN_VALUE(cameraDeviceServiceVdi_, OHOS::HDI::Camera::V1_0::INVALID_ARGUMENT);
68 return cameraDeviceServiceVdi_->SetResultMode(static_cast<VdiResultCallbackMode>(mode));
69 }
70
GetEnabledResults(std::vector<int32_t> & results)71 int32_t CameraDeviceService::GetEnabledResults(std::vector<int32_t> &results)
72 {
73 CAMERA_LOGI("CameraHost:GetEnabledResults");
74 CHECK_IF_PTR_NULL_RETURN_VALUE(cameraDeviceServiceVdi_, OHOS::HDI::Camera::V1_0::INVALID_ARGUMENT);
75 return cameraDeviceServiceVdi_->GetEnabledResults(results);
76 }
77
EnableResult(const std::vector<int32_t> & results)78 int32_t CameraDeviceService::EnableResult(const std::vector<int32_t> &results)
79 {
80 CAMERA_LOGI("CameraHost:EnableResult");
81 CHECK_IF_PTR_NULL_RETURN_VALUE(cameraDeviceServiceVdi_, OHOS::HDI::Camera::V1_0::INVALID_ARGUMENT);
82 return cameraDeviceServiceVdi_->EnableResult(results);
83 }
84
DisableResult(const std::vector<int32_t> & results)85 int32_t CameraDeviceService::DisableResult(const std::vector<int32_t> &results)
86 {
87 CAMERA_LOGI("CameraHost:DisableResult");
88 CHECK_IF_PTR_NULL_RETURN_VALUE(cameraDeviceServiceVdi_, OHOS::HDI::Camera::V1_0::INVALID_ARGUMENT);
89 return cameraDeviceServiceVdi_->DisableResult(results);
90 }
91
Close()92 int32_t CameraDeviceService::Close()
93 {
94 CAMERA_LOGI("CameraHost:Close");
95 CHECK_IF_PTR_NULL_RETURN_VALUE(cameraDeviceServiceVdi_, OHOS::HDI::Camera::V1_0::INVALID_ARGUMENT);
96 return cameraDeviceServiceVdi_->Close();
97 }
98 } // end namespace OHOS::Camera
99