relay: [#9] utilize parsed event data

This commit is contained in:
Vasily Davydov 2023-05-13 01:33:37 +03:00
parent b7196b769e
commit a0023e622e
2 changed files with 33 additions and 0 deletions

View File

@ -83,6 +83,7 @@ void Relay::taskFunction()
{
_qm->receive<Event>(ThreadCommon::QueueManager::relay_event_master, &data, portMAX_DELAY);
parseEvent(&data);
utilizeEventData();
}
}
@ -111,6 +112,37 @@ void Relay::parseEvent(Event* d)
}
}
void Relay::utilizeEventData()
{
PowerMode pm = POWER_0;
/* If setpoint is lower than ext_temp,
* none of below checks will pass and function
* shall turn OFF the heater.
* When setpoint is always higher than ext_temp,
* we can use up to three stages determine how
* powerful the output of the signal should be.
*/
int8_t diff = setpoint - ext_temp;
if (diff >= 10)
{
pm = POWER_3;
}
if (diff >= 5)
{
pm = POWER_2;
}
if (diff >= 1)
{
pm = POWER_1;
}
setPowerMode(pm);
return;
}
void thread_relay(void * pvParams)
{
ThreadCommon::CommonManagers * manager = static_cast<ThreadCommon::CommonManagers*>(pvParams);

View File

@ -45,6 +45,7 @@ public:
virtual ~Relay();
void taskFunction();
void setPowerMode(PowerMode pm);
void utilizeEventData();
private:
ThreadCommon::QueueManager* _qm;
RelayDevice relays [2] = {{0, 24, 0},