blob: d170d0bef54ef83a870bdb7adcb5d399217be8d1 [file] [log] [blame]
#pragma once
#include "types.hpp"
#include "zone.hpp"
namespace phosphor
{
namespace fan
{
namespace control
{
namespace trigger
{
/**
* @brief A trigger to start a timer for an event
* @details Creates and starts a timer according to the configuration given
* that will call an event's actions upon each timer expiration.
*
* @param[in] tConf - Timer configuration parameters
*
* @return Trigger lambda function
* A Trigger function that creates and starts a timer
*/
Trigger timer(TimerConf&& tConf);
/**
* @brief A trigger of a signal for an event
* @details Subscribes to the defined signal match.
*
* @param[in] match - Signal match to subscribe to
* @param[in] handler - Handler function for the received signal
*
* @return Trigger lambda function
* A Trigger function that subscribes to a signal
*/
Trigger signal(const std::string& match, SignalHandler&& handler);
/**
* @brief A trigger for actions to run at event init
* @details Runs the event actions when the event is initialized. An event
* is initialized at application start or each time an event's precondition
* transitions to a valid state.
*
* @param[in] handler - Handler function to use for event init
*
* @return Trigger lambda function
* A Trigger function that runs actions at event init
*/
Trigger init(MethodHandler&& handler = nullptr);
} // namespace trigger
} // namespace control
} // namespace fan
} // namespace phosphor