threads: [#60] display error when temperature is unavailable

- -128 as error signal (highly unlikely temp)
- errorView
This commit is contained in:
vas-dav 2023-06-10 14:29:09 +03:00
parent dc0dc1f095
commit 1400feffde
3 changed files with 53 additions and 6 deletions

View File

@ -16,7 +16,9 @@ enum
CURRENT_TEMP, CURRENT_TEMP,
DESIRED_TEMP, DESIRED_TEMP,
DESIRED_TEMP_F, DESIRED_TEMP_F,
LOADING LOADING,
ERROR,
DEVICE_CORRUPTED
}; };
static const char * interface_messages [] = static const char * interface_messages [] =
@ -24,7 +26,9 @@ static const char * interface_messages [] =
"CURRENT %3d ", "CURRENT %3d ",
"DESIRED %2d ", "DESIRED %2d ",
"DESIRED [%2d] ", "DESIRED [%2d] ",
" Loading... " " Loading... ",
" ERROR ",
"Device Corrupted"
}; };
Menu::Menu(ThreadCommon::QueueManager* qm): _qm(qm), Menu::Menu(ThreadCommon::QueueManager* qm): _qm(qm),
@ -86,7 +90,14 @@ void Menu::parseEvent (Event *ep)
break; break;
case Event::ExternalTemp: case Event::ExternalTemp:
//Change ExternalTemp value. -99 <= ext_temp <= 99 //Change ExternalTemp value. -99 <= ext_temp <= 99
this->ext_temp.setCurrent(ep->getData()); EventRawData ext_temp = ep->getData();
if(ext_temp == -128)
{
LOG_ERROR("Menu recieved -128 as ext_temp.");
this->SetState(&Menu::sErrorView);
break;
}
this->ext_temp.setCurrent(ext_temp);
//Refresh the menu screen. //Refresh the menu screen.
this->HandleObj(MenuObjEvent (MenuObjEvent::eRefresh)); this->HandleObj(MenuObjEvent (MenuObjEvent::eRefresh));
break; break;
@ -164,6 +175,40 @@ void Menu::sMainView(const MenuObjEvent &e)
} }
} }
void Menu::sErrorView(const MenuObjEvent &e)
{
static char screen_text[64];
switch (e.type)
{
case MenuObjEvent::eFocus:
LOG_DEBUG("enter sErrorView");
constructUIString(0, interface_messages[ERROR]);
constructUIString(1, interface_messages[DEVICE_CORRUPTED]);
this->NotifyAndRefreshUI();
break;
case MenuObjEvent::eUnFocus:
LOG_DEBUG("leave sErrorView");
memset(screen_text, 0, 64); // Clear screen
this->NotifyAndRefreshUI();
break;
case MenuObjEvent::eRollClockWise:
break;
case MenuObjEvent::eRollCClockWise:
break;
case MenuObjEvent::eClick:
break;
case MenuObjEvent::eRefresh:
LOG_DEBUG("refresh sErrorView");
if (this->ext_temp.getCurrent() != -128)
{
this->SetState(&Menu::sInitView);
}
break;
default:
break;
}
}
void Menu::sSetPointMod(const MenuObjEvent &e) void Menu::sSetPointMod(const MenuObjEvent &e)
{ {
static char screen_text[64]; static char screen_text[64];

View File

@ -35,6 +35,7 @@ private:
/* States */ /* States */
void sInitView(const MenuObjEvent &e); void sInitView(const MenuObjEvent &e);
void sMainView(const MenuObjEvent &e); void sMainView(const MenuObjEvent &e);
void sErrorView(const MenuObjEvent &e);
void sSetPointMod(const MenuObjEvent &e); void sSetPointMod(const MenuObjEvent &e);
/* Methods */ /* Methods */
void constructUIString(uint8_t line, const char *fmt, ...); void constructUIString(uint8_t line, const char *fmt, ...);

View File

@ -16,14 +16,15 @@ Temperature::~Temperature() {}
void Temperature::taskFunction() void Temperature::taskFunction()
{ {
SensorTempTC74 ext_temp_sensor(this->_pi2c, 0x4a); SensorTempTC74 ext_temp_sensor(this->_pi2c, 0x4a);
Event t (Event::ExternalTemp, -10); Event t (Event::ExternalTemp, -128);
int8_t temp_value = -10; int8_t temp_value = -128;
_qm->send<Event>(ThreadCommon::QueueManager::master_event_all, &t, 0);
for (;;) for (;;)
{ {
if (ext_temp_sensor.is_up()) if (ext_temp_sensor.is_up())
temp_value = ext_temp_sensor.getTemperature(); temp_value = ext_temp_sensor.getTemperature();
if(temp_value == -10) if(temp_value == -128)
{ {
LOG_ERROR("Failed to get temperature."); LOG_ERROR("Failed to get temperature.");
continue; continue;