blob: 66bb630053d07bc4e04056bcad2f11715ab1f1aa [file] [log] [blame]
// Copyright 2025 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 <lib/driver/component/cpp/composite_node_spec.h>
#include <lib/driver/component/cpp/driver_export.h>
#include <lib/driver/component/cpp/node_add_args.h>
#include <bind/fuchsia/reloaddriverbind/test/cpp/bind.h>
#include "src/devices/tests/v2/reload-driver/driver_helpers.h"
namespace bindlib = bind_fuchsia_reloaddriverbind_test;
namespace helpers = reload_test_driver_helpers;
namespace {
class TopBDriver : public fdf::DriverBase {
public:
TopBDriver(fdf::DriverStartArgs start_args, fdf::UnownedSynchronizedDispatcher driver_dispatcher)
: fdf::DriverBase("top-b", std::move(start_args), std::move(driver_dispatcher)) {}
zx::result<> Start() override {
node_client_.Bind(std::move(node()));
zx::result result =
helpers::AddChild(logger(), "E", node_client_, bindlib::TEST_BIND_PROPERTY_NODE_E);
if (result.is_error()) {
return result.take_error();
}
node_controller_1_.Bind(std::move(result.value()));
return helpers::SendAck(logger(), node_name().value_or("None"), incoming(), name());
}
private:
fidl::SyncClient<fuchsia_driver_framework::Node> node_client_;
fidl::SyncClient<fuchsia_driver_framework::NodeController> node_controller_1_;
};
} // namespace
FUCHSIA_DRIVER_EXPORT(TopBDriver);