Browse Source

Notify: Display: blank text line after 10s

mission-4.1.18
Peter Barker 8 years ago committed by Randy Mackay
parent
commit
d170396acf
  1. 2
      libraries/AP_Notify/AP_Notify.cpp
  2. 1
      libraries/AP_Notify/AP_Notify.h
  3. 15
      libraries/AP_Notify/Display.cpp
  4. 4
      libraries/AP_Notify/Display.h

2
libraries/AP_Notify/AP_Notify.cpp

@ -170,6 +170,7 @@ void AP_Notify::init(bool enable_external_leds) @@ -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) @@ -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();
}

1
libraries/AP_Notify/AP_Notify.h

@ -140,6 +140,7 @@ private: @@ -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[];

15
libraries/AP_Notify/Display.cpp

@ -488,11 +488,26 @@ void Display::update_mode(uint8_t r) @@ -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++) {

4
libraries/AP_Notify/Display.h

@ -28,6 +28,7 @@ private: @@ -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: @@ -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…
Cancel
Save