diff --git a/common/include/villas/kernel/devices/ip_device_reader.hpp b/common/include/villas/kernel/devices/ip_device_reader.hpp new file mode 100644 index 000000000..eee2d391f --- /dev/null +++ b/common/include/villas/kernel/devices/ip_device_reader.hpp @@ -0,0 +1,40 @@ +/* Device Tree Reader for IpDevices + * + * Author: Pascal Bauer + * + * SPDX-FileCopyrightText: 2023-2024 Pascal Bauer + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include +#include +#include +#include + +#include + +#include +#include + +class IpDeviceReader { +public: + const std::vector devicetree_names; + std::vector devices; + + IpDeviceReader(std::filesystem::path devices_directory) + : devicetree_names( + villas::kernel::devices::utils::read_names_in_directory( + devices_directory)) { + for (auto devicetree_name : this->devicetree_names) { + auto path_to_device = + devices_directory / std::filesystem::path(devicetree_name); + try { + auto device = villas::kernel::devices::IpDevice::from(path_to_device); + this->devices.push_back(device); + } catch (std::runtime_error &e) { + } + } + } +};