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++
97 lines
1.8 KiB
C++
5 months ago
|
/*
|
||
|
* 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 */
|