You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.2 KiB
C
63 lines
1.2 KiB
C
5 months ago
|
/*
|
||
|
* FanTimerControl.h
|
||
|
*
|
||
|
* Author: Aleksey Gerasimenko
|
||
|
* gerasimenko.aleksey.n@gmail.com
|
||
|
*/
|
||
|
|
||
|
#include <math.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
|
||
|
#ifndef SYSCTRL_FANTIMERCONTROL_H_
|
||
|
#define SYSCTRL_FANTIMERCONTROL_H_
|
||
|
|
||
|
namespace SYSCTRL
|
||
|
{
|
||
|
|
||
|
|
||
|
struct FanTimerControlConfiguration
|
||
|
{
|
||
|
float timer_period;
|
||
|
FanTimerControlConfiguration():
|
||
|
timer_period(-1.0)
|
||
|
{}
|
||
|
//
|
||
|
};//FanTimerControlConfiguration
|
||
|
|
||
|
|
||
|
|
||
|
class FanTimerControl
|
||
|
{
|
||
|
public:
|
||
|
enum mode_t {UNDEFINED, CONFIGURATE, OPERATIONAL};
|
||
|
private:
|
||
|
mode_t m_mode;
|
||
|
private:
|
||
|
float m_time_sample;
|
||
|
private:
|
||
|
float m_timer_counter;
|
||
|
float m_timer_period;
|
||
|
bool m_state;
|
||
|
public:
|
||
|
FanTimerControl();
|
||
|
void setup(float time_sample);
|
||
|
void configure(const FanTimerControlConfiguration& config);
|
||
|
public:
|
||
|
mode_t get_mode();
|
||
|
bool compare(mode_t mode);
|
||
|
public:
|
||
|
bool is_on();
|
||
|
bool is_off();
|
||
|
public:
|
||
|
void execute(bool is_switched_on, bool is_switched_off);
|
||
|
private:
|
||
|
void (FanTimerControl::*_execute)(bool is_switched_on, bool is_switched_off);
|
||
|
void _execute_undef(bool is_switched_on, bool is_switched_off);
|
||
|
void _execute_operational(bool is_switched_on, bool is_switched_off);
|
||
|
};
|
||
|
|
||
|
} /* namespace SYSCTRL */
|
||
|
|
||
|
#endif /* SYSCTRL_FANTIMERCONTROL_H_ */
|