blob: 713cfb14d3be496b35745d1ae74a45bddd71bf1c [file] [log] [blame]
/*
* Copyright 2016 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.
*/
#include "hal_adapter/camera_module_delegate.h"
#include <utility>
#include "cros-camera/common.h"
#include "hal_adapter/camera_hal_adapter.h"
namespace cros {
CameraModuleDelegate::CameraModuleDelegate(
CameraHalAdapter* camera_hal_adapter,
scoped_refptr<base::SingleThreadTaskRunner> task_runner,
mojom::CameraClientType camera_client_type)
: internal::MojoBinding<mojom::CameraModule>(task_runner),
camera_hal_adapter_(camera_hal_adapter),
camera_client_type_(camera_client_type) {}
CameraModuleDelegate::~CameraModuleDelegate() {}
void CameraModuleDelegate::OpenDevice(
int32_t camera_id,
mojom::Camera3DeviceOpsRequest device_ops_request,
OpenDeviceCallback callback) {
VLOGF_ENTER();
DCHECK(task_runner_->BelongsToCurrentThread());
mojom::Camera3DeviceOpsPtr device_ops;
std::move(callback).Run(camera_hal_adapter_->OpenDevice(
camera_id, std::move(device_ops_request), camera_client_type_));
}
void CameraModuleDelegate::GetNumberOfCameras(
GetNumberOfCamerasCallback callback) {
VLOGF_ENTER();
DCHECK(task_runner_->BelongsToCurrentThread());
std::move(callback).Run(camera_hal_adapter_->GetNumberOfCameras());
}
void CameraModuleDelegate::GetCameraInfo(int32_t camera_id,
GetCameraInfoCallback callback) {
VLOGF_ENTER();
DCHECK(task_runner_->BelongsToCurrentThread());
mojom::CameraInfoPtr camera_info;
int32_t result = camera_hal_adapter_->GetCameraInfo(camera_id, &camera_info);
std::move(callback).Run(result, std::move(camera_info));
}
void CameraModuleDelegate::SetCallbacks(
mojom::CameraModuleCallbacksPtr callbacks, SetCallbacksCallback callback) {
VLOGF_ENTER();
DCHECK(task_runner_->BelongsToCurrentThread());
std::move(callback).Run(
camera_hal_adapter_->SetCallbacks(std::move(callbacks)));
}
void CameraModuleDelegate::SetTorchMode(int32_t camera_id,
bool enabled,
SetTorchModeCallback callback) {
VLOGF_ENTER();
DCHECK(task_runner_->BelongsToCurrentThread());
std::move(callback).Run(
camera_hal_adapter_->SetTorchMode(camera_id, enabled));
}
void CameraModuleDelegate::Init(InitCallback callback) {
VLOGF_ENTER();
DCHECK(task_runner_->BelongsToCurrentThread());
std::move(callback).Run(camera_hal_adapter_->Init());
}
void CameraModuleDelegate::GetVendorTagOps(
mojom::VendorTagOpsRequest vendor_tag_ops_request,
GetVendorTagOpsCallback callback) {
VLOGF_ENTER();
DCHECK(task_runner_->BelongsToCurrentThread());
camera_hal_adapter_->GetVendorTagOps(std::move(vendor_tag_ops_request));
std::move(callback).Run();
}
void CameraModuleDelegate::SetCallbacksAssociated(
mojom::CameraModuleCallbacksAssociatedPtrInfo callbacks_info,
SetCallbacksAssociatedCallback callback) {
VLOGF_ENTER();
DCHECK(task_runner_->BelongsToCurrentThread());
std::move(callback).Run(
camera_hal_adapter_->SetCallbacksAssociated(std::move(callbacks_info)));
}
} // namespace cros