Merge pull request #63 from vas-dav/unreachable-sensor-60

threads: [#60] display error when temperature is unavailable
This commit is contained in:
RedHawk 2023-06-11 12:09:54 +03:00 committed by GitHub
commit 2e496a23c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 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_SCREEN,
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),
@ -58,6 +62,7 @@ Menu::readSetPointFromEEPROM (void)
void Menu::parseEvent (Event *ep) void Menu::parseEvent (Event *ep)
{ {
EventRawData ext_temp;
switch(ep->getType()/*EventType*/) switch(ep->getType()/*EventType*/)
{ {
case Event::Rotary: case Event::Rotary:
@ -86,7 +91,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()); 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 +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) 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;