blob: a72b542d77d63d7f0fbb2af13f6c37df36dacbdf [file] [log] [blame] [edit]
// Copyright 2024 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "camera/diagnostics/camera_diagnostics_server.h"
#include <utility>
#include <base/functional/callback_helpers.h>
#include <base/location.h>
#include <base/task/bind_post_task.h>
#include <chromeos/mojo/service_constants.h>
#include "diagnostics/camera_diagnostics_processor.h"
namespace cros {
CameraDiagnosticsServer::CameraDiagnosticsServer(
CameraDiagnosticsMojoManager* mojo_manager)
: mojo_manager_(mojo_manager), processor_(mojo_manager) {
diag_provider_.Register(mojo_manager->GetMojoServiceManager(),
chromeos::mojo_services::kCrosCameraDiagnostics);
diag_service_provider_.Register(
mojo_manager->GetMojoServiceManager(),
chromeos::mojo_services::kCrosCameraDiagnosticsService);
}
void CameraDiagnosticsServer::RunFrameAnalysis(
camera_diag::mojom::FrameAnalysisConfigPtr config,
RunFrameAnalysisCallback callback) {
LOGF(INFO) << "Frame analysis requested, client: " << config->client_type
<< ", duration: " << config->duration_ms << "ms";
auto result_callback =
base::BindPostTask(mojo_manager_->GetTaskRunner(), std::move(callback));
processor_.RunFrameAnalysis(std::move(config), std::move(result_callback));
}
void CameraDiagnosticsServer::SendFrame(
camera_diag::mojom::CameraFramePtr frame) {
processor_.QueueFrame(std::move(frame));
}
} // namespace cros