threads: master: [#46] use new Event

This commit is contained in:
Vasily Davydov 2023-05-18 23:28:51 +03:00
parent 2f6bce5d9a
commit 23dda8ba74
2 changed files with 13 additions and 20 deletions

View File

@ -36,9 +36,10 @@ Master::~Master()
LOG_ERROR("Master was deleted"); LOG_ERROR("Master was deleted");
} }
void Master::HandleEventType(Event* e, Event::EventType type) void Master::HandleEventType(Event* e)
{ {
switch (type) EventRawData rd = e->getData();
switch (e->getType())
{ {
case Event::Null: case Event::Null:
break; break;
@ -46,7 +47,7 @@ void Master::HandleEventType(Event* e, Event::EventType type)
//Comes from rotary, goes to manager //Comes from rotary, goes to manager
_qm->send<Event>(ThreadCommon::QueueManager::manager_event_master, e, 0); _qm->send<Event>(ThreadCommon::QueueManager::manager_event_master, e, 0);
//LOG_WARNING("Timestamp: %zus, Clock: %zu, Chip freq: %zu", LPC_SCT1->COUNT_U / Chip_Clock_GetMainClockRate(), LPC_SCT1->COUNT_U, Chip_Clock_GetMainClockRate()); //LOG_WARNING("Timestamp: %zus, Clock: %zu, Chip freq: %zu", LPC_SCT1->COUNT_U / Chip_Clock_GetMainClockRate(), LPC_SCT1->COUNT_U, Chip_Clock_GetMainClockRate());
LOG_DEBUG("Rotary: %s has been forwarded to manager", rotary_direction[e->getDataOf(type)]); LOG_DEBUG("Rotary: %s has been forwarded to manager", rotary_direction[rd]);
break; break;
case Event::InternalTemp: case Event::InternalTemp:
// TODO remove (deprecated) // TODO remove (deprecated)
@ -55,14 +56,15 @@ void Master::HandleEventType(Event* e, Event::EventType type)
//Comes from sensors, goes to relay & manager //Comes from sensors, goes to relay & manager
_qm->send<Event>(ThreadCommon::QueueManager::relay_event_master, e, 0); _qm->send<Event>(ThreadCommon::QueueManager::relay_event_master, e, 0);
_qm->send<Event>(ThreadCommon::QueueManager::manager_event_master, e, 0); _qm->send<Event>(ThreadCommon::QueueManager::manager_event_master, e, 0);
LOG_DEBUG("ExtTemp: %d has been forwarded to manager and relay", e->getDataOf(type)); LOG_DEBUG("ExtTemp: %d has been forwarded to manager and relay", rd);
break; break;
case Event::SetPoint: case Event::SetPoint:
//Comes from manager, goes to relay //Comes from manager, goes to relay
_qm->send<Event>(ThreadCommon::QueueManager::relay_event_master, e, 0); _qm->send<Event>(ThreadCommon::QueueManager::relay_event_master, e, 0);
LOG_DEBUG("SetPoint: %d has been forwarded to relay", e->getDataOf(type)); LOG_DEBUG("SetPoint: %d has been forwarded to relay", rd);
break; break;
default: default:
LOG_ERROR("Unknown EventType");
assert(0); assert(0);
break; break;
} }
@ -70,22 +72,13 @@ void Master::HandleEventType(Event* e, Event::EventType type)
void Master::taskFunction() { void Master::taskFunction() {
Event data(Event::Null, 0); Event data(Event::Null, 0);
for (;;) { for (;;)
{
if(!_qm->receive<Event>(ThreadCommon::QueueManager::master_event_all, &data, 10000)) if(!_qm->receive<Event>(ThreadCommon::QueueManager::master_event_all, &data, 10000))
data.setDataOf(Event::Rotary, ThreadCommon::RotaryAction::Idle); data.setDataOf(Event::Rotary, ThreadCommon::RotaryAction::Idle);
for(Event::EventType i : HandleEventType(&data);
{Event::Null,
Event::Rotary,
Event::InternalTemp,
Event::ExternalTemp,
Event::SetPoint})
{
if (data.getDataOf(i) != ERROR_RETURN)
{
HandleEventType(&data, i);
}
}
global_clock->updateClock(); global_clock->updateClock();
} }
} }

View File

@ -26,7 +26,7 @@ public:
private: private:
Event* message; Event* message;
ThreadCommon::QueueManager* _qm; ThreadCommon::QueueManager* _qm;
void HandleEventType(Event* e, Event::EventType type); void HandleEventType(Event* e);
}; };
void thread_master(void* pvParams); void thread_master(void* pvParams);