diff --git a/source/shoh/src/threads/manager/Manager.cpp b/source/shoh/src/threads/manager/Manager.cpp index b5eee38..2f4e9ca 100644 --- a/source/shoh/src/threads/manager/Manager.cpp +++ b/source/shoh/src/threads/manager/Manager.cpp @@ -8,8 +8,8 @@ #include "Manager.h" #include "ThreadCommon.h" -Manager::Manager(ThreadCommon::QueueManager* qm, Menu * menu) -: _qm(qm), _menu(menu) +Manager::Manager(ThreadCommon::QueueManager* qm) +: _qm(qm), _menu{qm} { } @@ -43,13 +43,12 @@ void Manager::taskFunction() { _qm->receive(ThreadCommon::QueueManager::manager_event_master, &data, portMAX_DELAY); event_pair= this->parseEvent(&data); - _menu->HandleEventPair(&event_pair); + _menu.HandleEventPair(&event_pair); } } void thread_manager(void* pvParams) { - Menu menu; - Manager m(static_cast(pvParams), &menu); + Manager m(static_cast(pvParams)); m.taskFunction(); } diff --git a/source/shoh/src/threads/manager/Manager.h b/source/shoh/src/threads/manager/Manager.h index 8ab2884..7a8e844 100644 --- a/source/shoh/src/threads/manager/Manager.h +++ b/source/shoh/src/threads/manager/Manager.h @@ -16,13 +16,13 @@ class Manager { public: - Manager(ThreadCommon::QueueManager* qm, Menu * menu); + Manager(ThreadCommon::QueueManager* qm); virtual ~Manager(); void taskFunction(); private: Event::EventPair parseEvent(Event* e); ThreadCommon::QueueManager* _qm; - Menu* _menu; + Menu _menu; EventRawData rotary_action; }; diff --git a/source/shoh/src/threads/manager/Menu.cpp b/source/shoh/src/threads/manager/Menu.cpp index 2b15825..52c95d6 100644 --- a/source/shoh/src/threads/manager/Menu.cpp +++ b/source/shoh/src/threads/manager/Menu.cpp @@ -7,8 +7,10 @@ #include "Menu.h" #include +#include "UserInterface.h" -Menu::Menu(): current(&Menu::sInitView), set_point(0, 100, 1), +Menu::Menu(ThreadCommon::QueueManager* qm): _qm(qm), +current(&Menu::sInitView), set_point(0, 100, 1), main_text ("CURRENT %2d DESIRED %2d "), set_point_text("CURRENT %2d DESIRED[%2d] ") { @@ -164,4 +166,7 @@ void Menu::HandleObj (const MenuObjEvent &event) void Menu::NotifyAndRefreshUI (const char *str) { //Send string on a queue to UI task. + UserInterface::InterfaceWithData ud = {UserInterface::LCD1, *str}; + Event * p_e = new Event(Event::EventType::NotifyUI, *(reinterpret_cast(&ud))); + this->_qm->send(ThreadCommon::QueueManager::ui_event_manager, p_e, portMAX_DELAY); } \ No newline at end of file diff --git a/source/shoh/src/threads/manager/Menu.h b/source/shoh/src/threads/manager/Menu.h index a8a3d7f..bc5177d 100644 --- a/source/shoh/src/threads/manager/Menu.h +++ b/source/shoh/src/threads/manager/Menu.h @@ -19,12 +19,13 @@ typedef void (Menu::*p_state) (const MenuObjEvent &); class Menu { public: - Menu (); + Menu (ThreadCommon::QueueManager* qm); virtual ~Menu (); void HandleEventPair (Event::EventPair *ep); private: /* Variables and objects */ + ThreadCommon::QueueManager* _qm; p_state current; int ext_temp; Counter set_point; diff --git a/source/shoh/src/threads/user_interface/UserInterface.cpp b/source/shoh/src/threads/user_interface/UserInterface.cpp index e3dc7e1..ebc87b4 100644 --- a/source/shoh/src/threads/user_interface/UserInterface.cpp +++ b/source/shoh/src/threads/user_interface/UserInterface.cpp @@ -32,7 +32,7 @@ void UserInterface::taskFunction() for (;;) { - this->_qm->receive(ThreadCommon::QueueManager::ui_event_manager, &data, portMAX_DELAY); + this->_qm->receive(ThreadCommon::QueueManager::ui_event_manager, &data, portMAX_DELAY); //Don't mind the type, we care only about the raw_data. EventRawData ed = data.getDataOf(Event::NotifyUI); if(ed != ERROR_RETURN) diff --git a/source/shoh/src/threads/user_interface/UserInterface.h b/source/shoh/src/threads/user_interface/UserInterface.h index 1f8df5b..85befe5 100644 --- a/source/shoh/src/threads/user_interface/UserInterface.h +++ b/source/shoh/src/threads/user_interface/UserInterface.h @@ -23,7 +23,7 @@ public: union InterfaceData { - char str[64]; + const char str[64]; }; struct InterfaceWithData