blob: 35a63c2d0fd7b27555e7d1e9104cfd85955f7912 [file] [log] [blame]
/*
* Copyright 2018 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef CAMERA_HAL_ADAPTER_CAMERA_HAL_TEST_ADAPTER_H_
#define CAMERA_HAL_ADAPTER_CAMERA_HAL_TEST_ADAPTER_H_
#include <utility>
#include <vector>
#include <hardware/camera3.h>
#include <base/optional.h>
#include "hal_adapter/camera_hal_adapter.h"
namespace cros {
class CameraHalTestAdapter : public CameraHalAdapter {
public:
CameraHalTestAdapter(std::vector<camera_module_t*> camera_modules,
CameraMojoChannelManager* mojo_manager,
CameraActivityCallback activity_callback,
bool enable_front,
bool enable_back,
bool enable_external);
~CameraHalTestAdapter() override {}
int32_t OpenDevice(int32_t camera_id,
mojom::Camera3DeviceOpsRequest device_ops_request,
mojom::CameraClientType camera_client_type) override;
int32_t GetNumberOfCameras() override;
int32_t GetCameraInfo(int32_t camera_id,
mojom::CameraInfoPtr* camera_info) override;
int32_t SetTorchMode(int32_t camera_id, bool enabled) override;
protected:
void StartOnThread(base::Callback<void(bool)> callback) override;
void NotifyCameraDeviceStatusChange(CameraModuleCallbacksDelegate* delegate,
int camera_id,
camera_device_status_t status) override;
void NotifyTorchModeStatusChange(CameraModuleCallbacksDelegate* delegate,
int camera_id,
torch_mode_status_t status) override;
private:
bool enable_front_, enable_back_, enable_external_;
// Id of enabled cameras assigned by SuperHAL. |CameraHalTestAdapter| will
// reassign new id exposed to framework based on its index in this vector.
std::vector<int> enable_camera_ids_;
base::Optional<int32_t> GetRemappedCameraId(int camera_id);
base::Optional<int32_t> GetUnRemappedCameraId(int camera_id);
DISALLOW_IMPLICIT_CONSTRUCTORS(CameraHalTestAdapter);
};
} // namespace cros
#endif // CAMERA_HAL_ADAPTER_CAMERA_HAL_TEST_ADAPTER_H_