Merge pull request #63 from vas-dav/unreachable-sensor-60
threads: [#60] display error when temperature is unavailable
This commit is contained in:
commit
2e496a23c9
@ -16,7 +16,9 @@ enum
|
||||
CURRENT_TEMP,
|
||||
DESIRED_TEMP,
|
||||
DESIRED_TEMP_F,
|
||||
LOADING
|
||||
LOADING,
|
||||
ERROR_SCREEN,
|
||||
DEVICE_CORRUPTED
|
||||
};
|
||||
|
||||
static const char * interface_messages [] =
|
||||
@ -24,7 +26,9 @@ static const char * interface_messages [] =
|
||||
"CURRENT %3d ",
|
||||
"DESIRED %2d ",
|
||||
"DESIRED [%2d] ",
|
||||
" Loading... "
|
||||
" Loading... ",
|
||||
" ERROR ",
|
||||
"Device Corrupted"
|
||||
};
|
||||
|
||||
Menu::Menu(ThreadCommon::QueueManager* qm): _qm(qm),
|
||||
@ -58,6 +62,7 @@ Menu::readSetPointFromEEPROM (void)
|
||||
|
||||
void Menu::parseEvent (Event *ep)
|
||||
{
|
||||
EventRawData ext_temp;
|
||||
switch(ep->getType()/*EventType*/)
|
||||
{
|
||||
case Event::Rotary:
|
||||
@ -86,7 +91,14 @@ void Menu::parseEvent (Event *ep)
|
||||
break;
|
||||
case Event::ExternalTemp:
|
||||
//Change ExternalTemp value. -99 <= ext_temp <= 99
|
||||
this->ext_temp.setCurrent(ep->getData());
|
||||
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.
|
||||
this->HandleObj(MenuObjEvent (MenuObjEvent::eRefresh));
|
||||
break;
|
||||
@ -164,6 +176,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_SCREEN]);
|
||||
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)
|
||||
{
|
||||
static char screen_text[64];
|
||||
|
||||
@ -35,6 +35,7 @@ private:
|
||||
/* States */
|
||||
void sInitView(const MenuObjEvent &e);
|
||||
void sMainView(const MenuObjEvent &e);
|
||||
void sErrorView(const MenuObjEvent &e);
|
||||
void sSetPointMod(const MenuObjEvent &e);
|
||||
/* Methods */
|
||||
void constructUIString(uint8_t line, const char *fmt, ...);
|
||||
|
||||
@ -16,14 +16,15 @@ Temperature::~Temperature() {}
|
||||
void Temperature::taskFunction()
|
||||
{
|
||||
SensorTempTC74 ext_temp_sensor(this->_pi2c, 0x4a);
|
||||
Event t (Event::ExternalTemp, -10);
|
||||
int8_t temp_value = -10;
|
||||
Event t (Event::ExternalTemp, -128);
|
||||
int8_t temp_value = -128;
|
||||
_qm->send<Event>(ThreadCommon::QueueManager::master_event_all, &t, 0);
|
||||
for (;;)
|
||||
{
|
||||
if (ext_temp_sensor.is_up())
|
||||
temp_value = ext_temp_sensor.getTemperature();
|
||||
|
||||
if(temp_value == -10)
|
||||
if(temp_value == -128)
|
||||
{
|
||||
LOG_ERROR("Failed to get temperature.");
|
||||
continue;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user