From 07a6937077c97b0fbce3f7d4ede7da0aada76267 Mon Sep 17 00:00:00 2001 From: Vasily Davydov Date: Sat, 13 May 2023 00:24:31 +0300 Subject: [PATCH] relay: [#9] create Event parser --- source/shoh/src/threads/relay/Relay.cpp | 25 +++++++++++++++++++++++++ source/shoh/src/threads/relay/Relay.h | 4 ++++ 2 files changed, 29 insertions(+) diff --git a/source/shoh/src/threads/relay/Relay.cpp b/source/shoh/src/threads/relay/Relay.cpp index 5022f79..9b4cbad 100644 --- a/source/shoh/src/threads/relay/Relay.cpp +++ b/source/shoh/src/threads/relay/Relay.cpp @@ -9,6 +9,7 @@ #include "Event.h" #include "Log.h" +// TODO Remove en pins RelayDevice::RelayDevice(uint8_t en_pin, uint8_t en_port, uint8_t pha_pin, @@ -42,9 +43,33 @@ void Relay::taskFunction() for(;;) { _qm->receive(ThreadCommon::QueueManager::relay_event_master, &data, portMAX_DELAY); + parseEvent(&data); } } +void Relay::parseEvent(Event* d) +{ + for (uint8_t i = Event::ExternalTemp; i <= Event::SetPoint; i++) + { + EventRawData rd = data.getDataOf(i); + if(rd == ERROR_RETURN) + { + continue; + } + switch(i /* EventType */) + { + case Event::ExternalTemp: + ext_temp = rd; + break; + case Event::SetPoint: + setpoint = rd; + default: + assert(0); + } + + } +} + void thread_relay(void * pvParams) { ThreadCommon::CommonManagers * manager = static_cast(pvParams); diff --git a/source/shoh/src/threads/relay/Relay.h b/source/shoh/src/threads/relay/Relay.h index 7065174..0a7b8bc 100644 --- a/source/shoh/src/threads/relay/Relay.h +++ b/source/shoh/src/threads/relay/Relay.h @@ -10,6 +10,7 @@ #include "ThreadCommon.h" #include "DigitalIoPin.h" +#include "Counter.h" class RelayDevice { public: @@ -33,6 +34,9 @@ private: ThreadCommon::QueueManager* _qm; RelayDevice relays [2] = {{0, 23, 0, 24, 0}, {0, 25, 0, 26, 1}}; + + void parseEvent(Event * d); + int8_t setpoint, ext_temp; }; void thread_relay(void * pvParams);