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.
89 lines
1.7 KiB
C++
89 lines
1.7 KiB
C++
5 months ago
|
/*
|
||
|
* WarningDecrease.cpp
|
||
|
*
|
||
|
* Author: Aleksey Gerasimenko
|
||
|
* gerasimenko.aleksey.n@gmail.com
|
||
|
*/
|
||
|
|
||
|
#include "Alert/WarningDecrease.h"
|
||
|
|
||
|
namespace ALERT
|
||
|
{
|
||
|
//CONSTRUCTOR
|
||
|
WarningDecrease::WarningDecrease():
|
||
|
ALERT::AlertBase(),
|
||
|
m_warning(false),
|
||
|
warning(false),
|
||
|
_execute(&ALERT::WarningDecrease::_execute_undef)
|
||
|
{}//CONSTRUCTOR
|
||
|
//
|
||
|
void WarningDecrease::setup(float time_sample)
|
||
|
{
|
||
|
m_time_sample = time_sample;
|
||
|
//
|
||
|
}//setup()
|
||
|
//
|
||
|
void WarningDecrease::configure(const AlertBaseConfiguration& config)
|
||
|
{
|
||
|
m_level = config.level;
|
||
|
m_period = config.period;
|
||
|
//
|
||
|
m_warning = false;
|
||
|
//
|
||
|
if((m_time_sample > FP_ZERO) && (m_period >= m_time_sample) && (m_level > FP_ZERO))
|
||
|
{
|
||
|
_execute = &ALERT::WarningDecrease::_execute_operational;
|
||
|
//
|
||
|
}//if
|
||
|
//
|
||
|
}//configure()
|
||
|
//
|
||
|
#pragma CODE_SECTION("ramfuncs");
|
||
|
void WarningDecrease::reset()
|
||
|
{
|
||
|
m_warning = false;
|
||
|
warning = false;
|
||
|
m_timer = FP_ZERO;
|
||
|
//
|
||
|
}//reset()
|
||
|
//
|
||
|
void WarningDecrease::execute(float reference)
|
||
|
{
|
||
|
(this->*_execute)(reference);
|
||
|
//
|
||
|
}//execute()
|
||
|
//
|
||
|
void WarningDecrease::_execute_undef(float reference)
|
||
|
{}//
|
||
|
//
|
||
|
#pragma CODE_SECTION("ramfuncs");
|
||
|
void WarningDecrease::_execute_operational(float reference)
|
||
|
{
|
||
|
//
|
||
|
if(reference <= m_level)
|
||
|
{
|
||
|
if(m_timer >= m_period)
|
||
|
{
|
||
|
m_warning = true;
|
||
|
warning = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_timer += m_time_sample;
|
||
|
m_warning = false;
|
||
|
warning = false;
|
||
|
//
|
||
|
}//if else
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_warning = false;
|
||
|
warning = false;
|
||
|
m_timer = FP_ZERO;
|
||
|
//
|
||
|
}//else if
|
||
|
//
|
||
|
}//_execute_operational()
|
||
|
//
|
||
|
} /* namespace ALERT */
|