blob: 5df7c67b8fc350da2a588c8473ba204c3881f84f [file] [log] [blame]
// Copyright 2024 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 <fidl/fuchsia.device/cpp/test_base.h>
#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <lib/async/default.h>
#include <lib/component/outgoing/cpp/outgoing_directory.h>
#include <lib/syslog/cpp/macros.h>
#include "src/power/testing/fake-suspend/device_server.h"
int main() {
FX_LOGS(INFO) << "Starting fake suspend...";
async::Loop loop{&kAsyncLoopConfigAttachToCurrentThread};
component::OutgoingDirectory outgoing(loop.dispatcher());
auto device_server = std::make_shared<fake_suspend::DeviceServer>();
fuchsia_hardware_suspend::SuspendService::InstanceHandler handler({
.suspender =
[device_server](fidl::ServerEnd<fuchsia_hardware_suspend::Suspender> server_end) {
device_server->Serve(async_get_default_dispatcher(), std::move(server_end));
},
});
auto result = outgoing.AddService<fuchsia_hardware_suspend::SuspendService>(std::move(handler));
if (result.is_error()) {
return -1;
}
result = outgoing.AddUnmanagedProtocol<test_suspendcontrol::Device>(
[device_server](fidl::ServerEnd<test_suspendcontrol::Device> server_end) {
device_server->Serve(async_get_default_dispatcher(), std::move(server_end));
});
if (result.is_error()) {
return -1;
}
result = outgoing.ServeFromStartupInfo();
if (result.is_error()) {
return -1;
}
loop.Run();
return 0;
}