blob: 6ef7cd13951178986b1d15f71155755c342ee546 [file] [log] [blame]
#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