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,
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];

View File

@ -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, ...);

View File

@ -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;