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.

97 lines
1.8 KiB
C++

/*
* FaultDecrease.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "Alert/FaultDecrease.h"
namespace ALERT
{
//CONSTRUCTOR
FaultDecrease::FaultDecrease():
ALERT::AlertBase(),
// m_state(ALERT::FaultDecrease::UNKNOWN),
m_fault(false),
fault(false),
_execute(&ALERT::FaultDecrease::_execute_undef)
//
{}//CONSTRUCTOR
//
void FaultDecrease::setup(float time_sample)
{
m_time_sample = time_sample;
//
}//setup()
//
void FaultDecrease::configure(const ALERT::AlertBaseConfiguration& config)
{
m_level = config.level;
m_period = config.period;
m_timer = FP_ZERO;
//
m_fault = false;
fault = false;
//
if((m_time_sample > FP_ZERO) && (m_period > m_time_sample) && (m_level >= FP_ZERO))
{
_execute = &ALERT::FaultDecrease::_execute_operational;
}
//
}//configure()
//
//
#pragma CODE_SECTION("ramfuncs");
void FaultDecrease::reset()
{
m_fault = false;
fault = false;
m_timer = FP_ZERO;
//
}//reset()
//
#pragma CODE_SECTION("ramfuncs");
void FaultDecrease::execute(float reference)
{
(this->*_execute)(reference);
//
}//execute()
//
void FaultDecrease::_execute_undef(float reference)
{
//
}//_execute_undef()
//
#pragma CODE_SECTION("ramfuncs");
void FaultDecrease::_execute_operational(float reference)
{
if(reference <= m_level)
{
if(m_timer >= m_period)
{
m_fault = true;
fault = true;
}
else
{
m_timer += m_time_sample;
m_fault = false;
fault = false;
//
}//
//
}
else
{
m_timer = FP_ZERO;
m_fault = false;
fault = false;
//
}//
//
}//_execute_operational_warning()
//
} /* namespace ALERT */