mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-05 07:28:29 -04:00
Notify: Display: blank text line after 10s
This commit is contained in:
parent
da03cf29d6
commit
d170396acf
@ -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();
|
||||
}
|
||||
|
@ -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[];
|
||||
|
@ -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++) {
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user