blob: 8a75b4144ba7c66aee8e51e785804d692afb0d26 [file] [log] [blame]
// Copyright 2021 The Fuchsia 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 "src/camera/bin/virtual_camera/virtual_camera_hal_controller.h"
#include <lib/syslog/cpp/macros.h>
namespace camera {
// Values used to create the |fuchsia::camera2::DeviceInfo| value returned in
// |GetDeviceInfo|.
const int kDeviceVendorId = 1;
const int kDeviceProductId = 2;
const char kDeviceVendorName[] = "virtual_camera_vendor";
const char kDeviceProductName[] = "virtual_camera_product";
VirtualCameraHalController::VirtualCameraHalController(
StreamStorage& stream_storage,
fidl::InterfaceRequest<fuchsia::camera2::hal::Controller> request)
: stream_storage_(stream_storage), binding_(this, std::move(request)) {}
void VirtualCameraHalController::GetNextConfig(
fuchsia::camera2::hal::Controller::GetNextConfigCallback callback) {
if (get_next_config_called_) {
callback(nullptr, ZX_ERR_STOP);
return;
}
fuchsia::camera2::hal::Config config = stream_storage_.GetConfig();
get_next_config_called_ = true;
callback(std::make_unique<fuchsia::camera2::hal::Config>(std::move(config)), ZX_OK);
}
void VirtualCameraHalController::CreateStream(
uint32_t config_index, uint32_t stream_index, uint32_t image_format_index,
fidl::InterfaceRequest<fuchsia::camera2::Stream> stream) {
FX_LOGS(WARNING) << "VirtualCameraHalController::CreateStream unimplemented";
}
void VirtualCameraHalController::EnableStreaming() {
FX_LOGS(WARNING) << "VirtualCameraHalController::EnableStreaming unimplemented";
}
void VirtualCameraHalController::DisableStreaming() {
FX_LOGS(WARNING) << "VirtualCameraHalController::DisableStreaming unimplemented";
}
void VirtualCameraHalController::GetDeviceInfo(
fuchsia::camera2::hal::Controller::GetDeviceInfoCallback callback) {
fuchsia::camera2::DeviceInfo device_info;
device_info.set_vendor_id(kDeviceVendorId);
device_info.set_vendor_name(kDeviceVendorName);
device_info.set_product_id(kDeviceProductId);
device_info.set_product_name(kDeviceProductName);
device_info.set_type(fuchsia::camera2::DeviceType::VIRTUAL);
callback(std::move(device_info));
}
} // namespace camera