diff options
Diffstat (limited to 'src/generated.cpp')
-rw-r--r-- | src/generated.cpp | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/src/generated.cpp b/src/generated.cpp new file mode 100644 index 0000000..6ef7cd1 --- /dev/null +++ b/src/generated.cpp @@ -0,0 +1,184 @@ +#include "data_types.hpp" +#include "functor.hpp" +#include "monitor.hpp" +#include "conditions.hpp" +#include "actions.hpp" + +namespace phosphor +{ +namespace dbus +{ +namespace monitoring +{ + +// Example vector of sensors constructing a group +static Group fan_zone_group = { + std::make_tuple( + "/xyz/openbmc_project/sensors/fan_tach/fan0", + static_cast<int64_t>(0) + ), + std::make_tuple( + "/xyz/openbmc_project/sensors/fan_tach/fan1", + static_cast<int64_t>(0) + ), + std::make_tuple( + "/xyz/openbmc_project/sensors/fan_tach/fan2", + static_cast<int64_t>(0) + ), + std::make_tuple( + "/xyz/openbmc_project/sensors/fan_tach/fan3", + static_cast<int64_t>(0) + ) +}; + +const std::vector<std::tuple<std::vector<std::shared_ptr<Event>>, + std::vector<Action>>> + Monitor::events +{ // Example vector of Events with START trigger + {std::make_tuple(std::vector<std::shared_ptr<Event>>( + { // Example vector of StartEvent + std::make_shared<StartEvent>( + std::vector<Condition>( + { // Example vector of StartEvent conditions + make_condition(propertyStart<int64_t>( + "/xyz/openbmc_project/sensors/fan_tach/fan0", + "xyz.openbmc_project.Sensor.Value", + "Value", + condition::countAtOrAbove( + fan_zone_group, + "/xyz/openbmc_project/sensors/fan_tach/fan0", + static_cast<size_t>(3), + static_cast<int64_t>(8000ll) + ) + )), + make_condition(propertyStart<int64_t>( + "/xyz/openbmc_project/sensors/fan_tach/fan1", + "xyz.openbmc_project.Sensor.Value", + "Value", + condition::countAtOrAbove( + fan_zone_group, + "/xyz/openbmc_project/sensors/fan_tach/fan1", + static_cast<size_t>(3), + static_cast<int64_t>(8000ll) + ) + )), + make_condition(propertyStart<int64_t>( + "/xyz/openbmc_project/sensors/fan_tach/fan2", + "xyz.openbmc_project.Sensor.Value", + "Value", + condition::countAtOrAbove( + fan_zone_group, + "/xyz/openbmc_project/sensors/fan_tach/fan2", + static_cast<size_t>(3), + static_cast<int64_t>(8000ll) + ) + )), + make_condition(propertyStart<int64_t>( + "/xyz/openbmc_project/sensors/fan_tach/fan3", + "xyz.openbmc_project.Sensor.Value", + "Value", + condition::countAtOrAbove( + fan_zone_group, + "/xyz/openbmc_project/sensors/fan_tach/fan3", + static_cast<size_t>(3), + static_cast<int64_t>(8000ll) + ) + )), + } + ) + ), + std::make_shared<SignalEvent>( + "interface='org.freedesktop.DBus.Properties'," + "member='PropertiesChanged'," + "type='signal'," + "path='/xyz/openbmc_project/sensors/fan_tach/fan0'", + std::vector<Condition>( + { // Example vector of SignalEvent conditions + make_condition(propertySignal<int64_t>( + "xyz.openbmc_project.Sensor.Value", + "Value", + condition::countAtOrAbove( + fan_zone_group, + "/xyz/openbmc_project/sensors/fan_tach/fan0", + static_cast<size_t>(3), + static_cast<int64_t>(8000ll) + ) + )) + } + ) + ), + std::make_shared<SignalEvent>( + "interface='org.freedesktop.DBus.Properties'," + "member='PropertiesChanged'," + "type='signal'," + "path='/xyz/openbmc_project/sensors/fan_tach/fan1'", + std::vector<Condition>( + { // Example vector of SignalEvent conditions + make_condition(propertySignal<int64_t>( + "xyz.openbmc_project.Sensor.Value", + "Value", + condition::countAtOrAbove( + fan_zone_group, + "/xyz/openbmc_project/sensors/fan_tach/fan1", + static_cast<size_t>(3), + static_cast<int64_t>(8000ll) + ) + )) + } + ) + ), + std::make_shared<SignalEvent>( + "interface='org.freedesktop.DBus.Properties'," + "member='PropertiesChanged'," + "type='signal'," + "path='/xyz/openbmc_project/sensors/fan_tach/fan2'", + std::vector<Condition>( + { // Example vector of SignalEvent conditions + make_condition(propertySignal<int64_t>( + "xyz.openbmc_project.Sensor.Value", + "Value", + condition::countAtOrAbove( + fan_zone_group, + "/xyz/openbmc_project/sensors/fan_tach/fan2", + static_cast<size_t>(3), + static_cast<int64_t>(8000ll) + ) + )) + } + ) + ), + std::make_shared<SignalEvent>( + "interface='org.freedesktop.DBus.Properties'," + "member='PropertiesChanged'," + "type='signal'," + "path='/xyz/openbmc_project/sensors/fan_tach/fan3'", + std::vector<Condition>( + { // Example vector of SignalEvent conditions + make_condition(propertySignal<int64_t>( + "xyz.openbmc_project.Sensor.Value", + "Value", + condition::countAtOrAbove( + fan_zone_group, + "/xyz/openbmc_project/sensors/fan_tach/fan3", + static_cast<size_t>(3), + static_cast<int64_t>(8000ll) + ) + )) + } + ) + ) + }), + std::vector<Action>( + { + make_action( + action::log_error( + "ERROR: Number of fans at or above 8000rpms reached" + ) + ) + }) + )} +}; + +} // namespace monitoring +} // namespace dbus +} // namespace phosphor |