diff options
Diffstat (limited to 'monitor/tach_sensor.hpp')
-rw-r--r-- | monitor/tach_sensor.hpp | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/monitor/tach_sensor.hpp b/monitor/tach_sensor.hpp index ed8caf8..f59f6f5 100644 --- a/monitor/tach_sensor.hpp +++ b/monitor/tach_sensor.hpp @@ -29,6 +29,17 @@ enum class Mode }; /** + * The mode that the timer is running in: + * - func - Transition to functional state timer + * - nonfunc - Transition to nonfunctional state timer + */ +enum class TimerMode +{ + func, + nonfunc +}; + +/** * @class TachSensor * * This class represents the sensor that reads a tach value. @@ -151,15 +162,12 @@ class TachSensor } /** - * @brief Starts the timer for the amount of time - * specified in the constructor + * @brief Stops the timer when the given mode differs and starts + * the associated timer for the mode given if not already running + * + * @param[in] mode - mode of timer to start */ - inline void startTimer() - { - _timer.start( - getTimeout(), - phosphor::fan::util::Timer::TimerType::oneshot); - } + void startTimer(TimerMode mode); /** * @brief Stops the timer @@ -170,9 +178,11 @@ class TachSensor } /** - * @brief Returns the timeout value to use for the sensor + * @brief Return the given timer mode's delay time + * + * @param[in] mode - mode of timer to get delay time for */ - std::chrono::microseconds getTimeout(); + std::chrono::microseconds getDelay(TimerMode mode); /** * Returns the sensor name @@ -285,6 +295,11 @@ class TachSensor const size_t _timeout; /** + * @brief Mode that current timer is in + */ + TimerMode _timerMode; + + /** * The timer object */ phosphor::fan::util::Timer _timer; |