diff --git a/source/shoh/.cproject b/source/shoh/.cproject index 9a99684..1f9b41f 100644 --- a/source/shoh/.cproject +++ b/source/shoh/.cproject @@ -43,6 +43,7 @@ + diff --git a/source/shoh/src/threads/master/Master.cpp b/source/shoh/src/threads/master/Master.cpp index dbc1774..23d6536 100644 --- a/source/shoh/src/threads/master/Master.cpp +++ b/source/shoh/src/threads/master/Master.cpp @@ -9,6 +9,7 @@ #include "Log.h" #include "ThreadCommon.h" #include "Rotary.h" +#include "Relay.h" #include "Manager.h" #include "Logging.h" #include "UserInterface.h" @@ -108,6 +109,9 @@ void thread_master(void* pvParams) { manager->qm->createQueue(20, sizeof(UserInterface::InterfaceWithData), ThreadCommon::QueueManager::ui_event_manager); + manager->qm->createQueue(10, + sizeof(Event), + ThreadCommon::QueueManager::relay_event_master); LOG_INFO("Master created queues"); @@ -121,6 +125,9 @@ void thread_master(void* pvParams) { manager->tm->createTask(thread_user_interface, "user_interface", configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL, static_cast(manager)); + manager->tm->createTask(thread_relay, "relay", + configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL, + static_cast(manager)); LOG_INFO("Master created tasks"); m.taskFunction(); } diff --git a/source/shoh/src/threads/relay/Relay.cpp b/source/shoh/src/threads/relay/Relay.cpp new file mode 100644 index 0000000..78cc214 --- /dev/null +++ b/source/shoh/src/threads/relay/Relay.cpp @@ -0,0 +1,33 @@ +/* + * Relay.cpp + * + * Created on: 12 May 2023 + * Author: tylen + */ + +#include "Relay.h" +#include "Event.h" +#include "Log.h" + +Relay::Relay(ThreadCommon::QueueManager* qm): _qm(qm) { + LOG_DEBUG("Creating Relay"); +} + +Relay::~Relay() { + LOG_ERROR("Deleting Relay"); +} + +void Relay::taskFunction() +{ + Event data(Event::Null, 0); + for(;;) + { + _qm->receive(ThreadCommon::QueueManager::relay_event_master, &data, portMAX_DELAY); + } +} + +void thread_relay(void * pvParams) +{ + ThreadCommon::CommonManagers * manager = static_cast(pvParams); + Relay r(manager->qm); +} \ No newline at end of file diff --git a/source/shoh/src/threads/relay/Relay.h b/source/shoh/src/threads/relay/Relay.h new file mode 100644 index 0000000..1678d06 --- /dev/null +++ b/source/shoh/src/threads/relay/Relay.h @@ -0,0 +1,24 @@ +/* + * Relay.h + * + * Created on: 12 May 2023 + * Author: tylen + */ + +#ifndef THREADS_RELAY_RELAY_H_ +#define THREADS_RELAY_RELAY_H_ + +#include "ThreadCommon.h" + +class Relay { +public: + Relay(ThreadCommon::QueueManager* qm); + virtual ~Relay(); + void taskFunction(); +private: + ThreadCommon::QueueManager* _qm; +}; + +void thread_relay(void * pvParams); + +#endif /* THREADS_RELAY_RELAY_H_ */