diff --git a/source/shoh/src/threads/manager/Manager.cpp b/source/shoh/src/threads/manager/Manager.cpp index efea320..f5cb4a3 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) -: _qm(qm), set_point(0, 100, 5) +Manager::Manager(ThreadCommon::QueueManager* qm, Menu * menu) +: _qm(qm), _menu(menu), set_point(0, 100, 5) { set_point.setCurrent(0); } @@ -43,11 +43,13 @@ void Manager::taskFunction() { _qm->receive(ThreadCommon::QueueManager::manager_event_master, &data, portMAX_DELAY); event_pair= this->parseEvent(&data); + _menu->HandleEventPair(&event_pair); } } void thread_manager(void* pvParams) { - Manager m(static_cast(pvParams)); + Menu menu; + Manager m(static_cast(pvParams), &menu); m.taskFunction(); -} \ No newline at end of file +} diff --git a/source/shoh/src/threads/manager/Manager.h b/source/shoh/src/threads/manager/Manager.h index c3533ba..805d5af 100644 --- a/source/shoh/src/threads/manager/Manager.h +++ b/source/shoh/src/threads/manager/Manager.h @@ -11,11 +11,12 @@ #include "ThreadCommon.h" #include "Event.h" #include "Counter.h" +#include "Menu.h" class Manager { public: - Manager(ThreadCommon::QueueManager* qm); + Manager(ThreadCommon::QueueManager* qm, Menu * menu); virtual ~Manager(); void taskFunction(); private: diff --git a/source/shoh/src/threads/manager/Menu.cpp b/source/shoh/src/threads/manager/Menu.cpp index 23a4edc..e4607b2 100644 --- a/source/shoh/src/threads/manager/Menu.cpp +++ b/source/shoh/src/threads/manager/Menu.cpp @@ -20,6 +20,40 @@ Menu::~Menu() void Menu::HandleEventPair (Event::EventPair *ep) { + switch(ep->et/*EventType*/) + { + case Event::Rotary: + // can be wrapped in a function, but this was found to be more clear solution, + // since we are still handling eventpair here, although nested + switch(static_cast(ep->rd)/*RawData*/) + { + case ThreadCommon::RotaryAction::Right: + this->HandleObj(MenuObjEvent::eRollClockWise); + break; + case ThreadCommon::RotaryAction::Left: + this->HandleObj(MenuObjEvent::eRollCClockWise); + break; + case ThreadCommon::RotaryAction::Press: + this->HandleObj(MenuObjEvent::eClick); + break; + case ThreadCommon::RotaryAction::Idle: + /*I guess this is left for debugging purposes ;D*/ + break; + case default: + /* Pretty damn bad code if reached here */ + break; + } + break; + case Event::InternalTemp: + // TODO + break; + case Event::ExternalTemp: + // TODO + break; + case default: + /* Manager has big issues... */ + break; + } return; }