Skip to content

Commit

Permalink
Notify: Display: blank text line after 10s
Browse files Browse the repository at this point in the history
  • Loading branch information
peterbarker authored and rmackay9 committed Feb 27, 2017
1 parent da03cf2 commit d170396
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 0 deletions.
2 changes: 2 additions & 0 deletions libraries/AP_Notify/AP_Notify.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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 change: 1 addition & 0 deletions libraries/AP_Notify/AP_Notify.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ class AP_Notify
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[];
Expand Down
15 changes: 15 additions & 0 deletions libraries/AP_Notify/Display.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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++) {
Expand Down
4 changes: 4 additions & 0 deletions libraries/AP_Notify/Display.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class Display: public NotifyDevice {
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;

Expand All @@ -36,5 +37,8 @@ class Display: public NotifyDevice {
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;
};

0 comments on commit d170396

Please sign in to comment.