| // 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; |
| } |