Notify: Display: blank text line after 10s

This commit is contained in:
Peter Barker 2017-02-17 18:19:16 +11:00 committed by Randy Mackay
parent da03cf29d6
commit d170396acf
4 changed files with 22 additions and 0 deletions

View File

@ -170,6 +170,7 @@ void AP_Notify::init(bool enable_external_leds)
// clear flight mode string and text buffer
memset(_flight_mode_str, 0, sizeof(_flight_mode_str));
memset(_send_text, 0, sizeof(_send_text));
_send_text_updated_millis = 0;
AP_Notify::flags.external_leds = enable_external_leds;
@ -217,4 +218,5 @@ void AP_Notify::send_text(const char *str)
{
strncpy(_send_text, str, sizeof(_send_text));
_send_text[sizeof(_send_text)-1] = 0;
_send_text_updated_millis = AP_HAL::millis();
}

View File

@ -140,6 +140,7 @@ private:
AP_Int8 _display_type;
char _send_text[NOTIFY_TEXT_BUFFER_SIZE];
uint32_t _send_text_updated_millis; // last time text changed
char _flight_mode_str[5];
static NotifyDevice* _devices[];

View File

@ -488,11 +488,26 @@ void Display::update_mode(uint8_t r)
}
}
void Display::update_text_empty(uint8_t r)
{
char msg [DISPLAY_MESSAGE_SIZE] = {};
memset(msg, ' ', sizeof(msg)-1);
_movedelay = 0;
_mstartpos = 0;
draw_text(COLUMN(0), ROW(r), msg);
}
void Display::update_text(uint8_t r)
{
char msg [DISPLAY_MESSAGE_SIZE];
char txt [NOTIFY_TEXT_BUFFER_SIZE];
const bool text_is_valid = AP_HAL::millis() - pNotify->_send_text_updated_millis < _send_text_valid_millis;
if (!text_is_valid) {
update_text_empty(r);
return;
}
snprintf(txt, NOTIFY_TEXT_BUFFER_SIZE, "%s", pNotify->get_text());
_mstartpos++;
for (uint8_t i = 0; i < sizeof(msg); i++) {

View File

@ -28,6 +28,7 @@ private:
void update_battery(uint8_t r);
void update_mode(uint8_t r);
void update_text(uint8_t r);
void update_text_empty(uint8_t r);
Display_Backend *_driver;
@ -36,5 +37,8 @@ private:
uint8_t _mstartpos;
uint8_t _movedelay;
uint8_t _screenpage;
// stop showing text in display after this many millis:
const uint16_t _send_text_valid_millis = 20000;
};