diff --git a/source/shoh/src/threads/manager/Menu.cpp b/source/shoh/src/threads/manager/Menu.cpp index 0415721..19d8593 100644 --- a/source/shoh/src/threads/manager/Menu.cpp +++ b/source/shoh/src/threads/manager/Menu.cpp @@ -19,6 +19,7 @@ set_point_text("CURRENT %3d DESIRED[%3d] ") this->SetState(&Menu::sInitView); ext_temp.setCurrent(0); set_point.setCurrent(0); + readSetPointFromEEPROM(); } Menu::~Menu() @@ -26,6 +27,17 @@ Menu::~Menu() LOG_DEBUG("Deleting Menu"); } +void +Menu::readSetPointFromEEPROM (void) +{ + EventRawData *data = (EventRawData *)eeprom.read_from (EEPROM_START_ADDR, + sizeof(EventRawData)); + if ((*data) > 0 && (*data) < 120) + { + set_point.setCurrent(*data); + } +} + void Menu::HandleEventPair (Event::EventPair *ep) { switch(ep->et/*EventType*/) @@ -135,6 +147,8 @@ void Menu::sMainView(const MenuObjEvent &e) void Menu::sSetPointMod(const MenuObjEvent &e) { static char screen_text[64]; + EventRawData sp; + Event event_sp (Event::EventType::SetPoint, set_point.getCurrent()); switch (e.type) { case MenuObjEvent::eFocus: @@ -161,7 +175,15 @@ void Menu::sSetPointMod(const MenuObjEvent &e) break; case MenuObjEvent::eClick: LOG_DEBUG("click sSetPointMod"); + sp = set_point.getCurrent(); + // Write to EEPROM + eeprom.write_to(EEPROM_START_ADDR, (void*)&sp, sizeof(EventRawData)); + + event_sp.setDataOf(Event::EventType::SetPoint, sp); + _qm->send(ThreadCommon::QueueManager::master_event_all, &event_sp, 1); + this->SetState(&Menu::sMainView); + break; case MenuObjEvent::eRefresh: LOG_DEBUG("refresh sSetPointMod"); diff --git a/source/shoh/src/threads/manager/Menu.h b/source/shoh/src/threads/manager/Menu.h index 676ceb0..76b1a22 100644 --- a/source/shoh/src/threads/manager/Menu.h +++ b/source/shoh/src/threads/manager/Menu.h @@ -11,6 +11,7 @@ #include "Counter.h" #include "MenuObjEvent.h" #include "ThreadCommon.h" +#include "EEPROMio.h" #include "Event.h" class Menu; @@ -29,6 +30,7 @@ private: p_state current; Counter ext_temp; Counter set_point; + EEPROMio eeprom; const char main_text[64]; const char set_point_text[64]; /* States */ @@ -39,6 +41,7 @@ private: void SetState (p_state new_state); void HandleObj (const MenuObjEvent &event); void NotifyAndRefreshUI (const char *str); + void readSetPointFromEEPROM (void); }; #endif /* THREADS_MANAGER_MENU_H_ */ diff --git a/source/shoh/src/threads/master/Master.cpp b/source/shoh/src/threads/master/Master.cpp index 23d6536..e9f1204 100644 --- a/source/shoh/src/threads/master/Master.cpp +++ b/source/shoh/src/threads/master/Master.cpp @@ -92,7 +92,7 @@ void thread_master(void* pvParams) { ThreadCommon::QueueManager::logging_message_all); logging_queue = manager->qm->getQueue(ThreadCommon::QueueManager::logging_message_all); manager->tm->createTask(thread_logging, "logging", - configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL, + configMINIMAL_STACK_SIZE * 9,tskIDLE_PRIORITY + 1UL, static_cast(manager)); LOG_INFO("Logging Active"); @@ -117,16 +117,16 @@ void thread_master(void* pvParams) { LOG_INFO("Master is creating tasks"); manager->tm->createTask(thread_manager, "manager", - configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL, + configMINIMAL_STACK_SIZE * 15,tskIDLE_PRIORITY + 1UL, static_cast(manager)); manager->tm->createTask(thread_rotary, "rotary", - configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL, + configMINIMAL_STACK_SIZE * 9,tskIDLE_PRIORITY + 1UL, static_cast(manager)); manager->tm->createTask(thread_user_interface, "user_interface", - configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL, + configMINIMAL_STACK_SIZE * 9,tskIDLE_PRIORITY + 1UL, static_cast(manager)); manager->tm->createTask(thread_relay, "relay", - configMINIMAL_STACK_SIZE * 10,tskIDLE_PRIORITY + 1UL, + configMINIMAL_STACK_SIZE * 9,tskIDLE_PRIORITY + 1UL, static_cast(manager)); LOG_INFO("Master created tasks"); m.taskFunction();