| // 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 "example_driver.h" |
| |
| #include "greeter.h" |
| |
| namespace example_driver { |
| |
| zx::result<> ExampleDriver::Start() { |
| // Initialize the driver compat service context. |
| compat::Context::ConnectAndCreate( |
| &context(), dispatcher(), fit::bind_member<&ExampleDriver::InitializeCompatService>(this)); |
| |
| return zx::ok(); |
| } |
| |
| // Complete driver initialization using the driver compat service. |
| void ExampleDriver::InitializeCompatService( |
| zx::result<std::shared_ptr<compat::Context>> compat_result) { |
| if (!compat_result.is_ok()) { |
| FDF_SLOG(ERROR, "Failed to create compat context.", |
| KV("status", compat_result.status_string())); |
| node().reset(); |
| return; |
| } |
| compat_context_ = std::move(*compat_result); |
| child_ = compat::DeviceServer(std::string(name()), 0, compat_context_->TopologicalPath(name())); |
| |
| // Say hello |
| FDF_SLOG(INFO, example_driver::greeting(name()).c_str()); |
| FDF_SLOG(INFO, example_driver::greeting(child_->topological_path()).c_str()); |
| } |
| |
| } // namespace example_driver |
| |
| FUCHSIA_DRIVER_RECORD_CPP_V2(driver::Record<example_driver::ExampleDriver>); |