1094332d3Sopenharmony_ci/*
2094332d3Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License.
5094332d3Sopenharmony_ci * You may obtain a copy of the License at
6094332d3Sopenharmony_ci *
7094332d3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8094332d3Sopenharmony_ci *
9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and
13094332d3Sopenharmony_ci * limitations under the License.
14094332d3Sopenharmony_ci */
15094332d3Sopenharmony_ci
16094332d3Sopenharmony_ci#ifndef CAMERA_HOST_CAMERA_HOST_H
17094332d3Sopenharmony_ci#define CAMERA_HOST_CAMERA_HOST_H
18094332d3Sopenharmony_ci
19094332d3Sopenharmony_ci#include "camera_host_c_if.h"
20094332d3Sopenharmony_ci#include "camera_device_c_if.h"
21094332d3Sopenharmony_ci#include "icamera_host_callback.h"
22094332d3Sopenharmony_ci#include "icamera_device_callback.h"
23094332d3Sopenharmony_ci#include "icamera_device.h"
24094332d3Sopenharmony_ci
25094332d3Sopenharmony_cinamespace OHOS::Camera {
26094332d3Sopenharmony_ciclass CameraHost {
27094332d3Sopenharmony_cipublic:
28094332d3Sopenharmony_ci    static std::shared_ptr<CameraHost> CreateCameraHost();
29094332d3Sopenharmony_ci
30094332d3Sopenharmony_ci    virtual CamRetCode SetCallback(const OHOS::sptr<ICameraHostCallback> &callback);
31094332d3Sopenharmony_ci    virtual CamRetCode GetCameraIds(std::vector<std::string> &cameraIds);
32094332d3Sopenharmony_ci    virtual CamRetCode GetCameraAbility(const std::string &cameraId,
33094332d3Sopenharmony_ci        std::shared_ptr<CameraAbility> &ability);
34094332d3Sopenharmony_ci    virtual CamRetCode OpenCamera(const std::string &cameraId,
35094332d3Sopenharmony_ci        const OHOS::sptr<ICameraDeviceCallback> &callback,
36094332d3Sopenharmony_ci        OHOS::sptr<ICameraDevice> &pDevice);
37094332d3Sopenharmony_ci    virtual CamRetCode SetFlashlight(const std::string &cameraId,  bool &isEnable);
38094332d3Sopenharmony_ci
39094332d3Sopenharmony_ci
40094332d3Sopenharmony_cipublic:
41094332d3Sopenharmony_ci    CameraHost();
42094332d3Sopenharmony_ci    virtual ~CameraHost();
43094332d3Sopenharmony_ci    CameraHost(const CameraHost& other) = delete;
44094332d3Sopenharmony_ci    CameraHost(CameraHost&& other) = delete;
45094332d3Sopenharmony_ci    CameraHost& operator=(const CameraHost& other) = delete;
46094332d3Sopenharmony_ci    CameraHost& operator=(CameraHost&& other) = delete;
47094332d3Sopenharmony_ci
48094332d3Sopenharmony_ciprivate:
49094332d3Sopenharmony_ci    CamRetCode Init();
50094332d3Sopenharmony_ci
51094332d3Sopenharmony_ciprivate:
52094332d3Sopenharmony_ci    void* handler_ = nullptr;
53094332d3Sopenharmony_ci    CameraHostCIF* host_ = nullptr;
54094332d3Sopenharmony_ci};
55094332d3Sopenharmony_ci} // end namespace OHOS::Camera
56094332d3Sopenharmony_ci#endif // CAMERA_HOST_CAMERA_HOST_H
57