/* * ContactorFault.h * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include #include #include "SYSCTRL/BaseComponent.h" #ifndef SYSCTRL_CONTACTORFAULT_H_ #define SYSCTRL_CONTACTORFAULT_H_ namespace SYSCTRL { struct ContactorFaultConfiguration { float period; ContactorFaultConfiguration(): period(-1.0) {} }; struct ContactorFaultBitField { uint16_t fault: 1; }; union ContactorFaultRegister { uint16_t all; ContactorFaultBitField signal; ContactorFaultRegister(): all((uint16_t)0) {} }; class ContactorFault { private: float m_time_sample; float m_period; float m_counter; ContactorFaultRegister m_status; public: ContactorFaultRegister status; public: ContactorFault(); void setup(float time_sample); void configure(ContactorFaultConfiguration& config); public: void reset(bool ref); public: void execute(bool ref, bool current); private: void (ContactorFault::*_execute)(bool ref, bool current); void _execute_undef(bool ref, bool current); void _execute_operational(bool ref, bool current); }; } /* namespace SYSCTRL */ #endif /* SYSCTRL_CONTACTORFAULT_H_ */