diff --git a/common/include/villas/kernel/devices/platform_driver.hpp b/common/include/villas/kernel/devices/platform_driver.hpp index 0a3f89f57..8a4979f75 100644 --- a/common/include/villas/kernel/devices/platform_driver.hpp +++ b/common/include/villas/kernel/devices/platform_driver.hpp @@ -10,6 +10,7 @@ #include #include +#include namespace villas { namespace kernel { @@ -17,7 +18,7 @@ namespace devices { class PlatformDevice; -class PlatformDriver { +class PlatformDriver : public Driver { private: static constexpr char BIND_DEFAULT[] = "bind"; static constexpr char UNBIND_DEFAULT[] = "unbind"; @@ -39,13 +40,12 @@ public: const std::filesystem::path unbind_path) : path(path), bind_path(bind_path), unbind_path(unbind_path){}; - std::string name() const; - void attach(const PlatformDevice &device) const; - -private: - void bind(const PlatformDevice &device) const; - void unbind(const PlatformDevice &device) const; - void override(const PlatformDevice &device) const; +public: + std::string name() const override; + void attach(const Device &device) const override; + void bind(const Device &device) const override; + void unbind(const Device &device) const override; + void override(const Device &device) const override; }; } // namespace devices diff --git a/common/lib/kernel/devices/platform_driver.cpp b/common/lib/kernel/devices/platform_driver.cpp index 28c3ed1f1..467d00bb5 100644 --- a/common/lib/kernel/devices/platform_driver.cpp +++ b/common/lib/kernel/devices/platform_driver.cpp @@ -18,21 +18,21 @@ std::string PlatformDriver::name() const { return path.u8string().substr(pos + 1); } -void PlatformDriver::bind(const PlatformDevice &device) const { +void PlatformDriver::bind(const Device &device) const { write_to_file(device.name(), this->bind_path); }; -void PlatformDriver::unbind(const PlatformDevice &device) const { +void PlatformDriver::unbind(const Device &device) const { write_to_file(device.name(), this->unbind_path); }; -void PlatformDriver::override(const PlatformDevice &device) const { +void PlatformDriver::override(const Device &device) const { write_to_file(this->name(), device.override_path()); }; -void PlatformDriver::attach(const PlatformDevice &device) const { +void PlatformDriver::attach(const Device &device) const { if (device.driver().has_value()) { - device.driver().value().unbind(device); + device.driver().value()->unbind(device); } this->override(device); device.probe();