blob: c644d58161272a9488ce1d39a68261ba3d140b9a [file] [edit]
// Copyright 2026 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.
#ifndef LIB_DRIVER_DEVICETREE_MANAGER_PUBLISHER_HOST_H_
#define LIB_DRIVER_DEVICETREE_MANAGER_PUBLISHER_HOST_H_
#include <fidl/fuchsia.driver.framework/cpp/fidl.h>
#include "lib/driver/devicetree/manager/publisher.h"
#include "lib/driver/devicetree/manager/test-publisher.h"
namespace fdf_devicetree {
class PublisherHost : public testing::TestPublisher {
public:
zx::result<> AddPbusNode(fuchsia_hardware_platform_bus::Node& pbus_node) override;
zx::result<> AddBoardChildNode(BoardChildNode args) override;
zx::result<> AddCompositeNodeSpec(std::string name,
std::vector<fuchsia_driver_framework::ParentSpec2> parents,
std::optional<std::string> driver_host) override;
zx::result<> RegisterIommu(uint32_t iommu_id,
fuchsia_hardware_platform_bus::Iommu iommu) override;
const std::vector<fuchsia_hardware_platform_bus::Node>& GetPbusNodes() override {
return pbus_nodes_;
}
const std::vector<BoardChildNode>& GetBoardChildNodes() override;
const std::vector<fuchsia_driver_framework::CompositeNodeSpec>& GetCompositeNodeSpecs() override {
return composite_node_specs_;
}
const std::unordered_map<uint32_t, fuchsia_hardware_platform_bus::Iommu>& GetIommus() override {
return iommus_;
}
private:
std::vector<fuchsia_hardware_platform_bus::Node> pbus_nodes_;
std::vector<BoardChildNode> board_child_nodes_;
std::vector<fuchsia_driver_framework::CompositeNodeSpec> composite_node_specs_;
std::unordered_map<uint32_t, fuchsia_hardware_platform_bus::Iommu> iommus_;
};
} // namespace fdf_devicetree
#endif // LIB_DRIVER_DEVICETREE_MANAGER_PUBLISHER_HOST_H_