mirror of https://github.com/ArduPilot/ardupilot
AP_Menu: fixed double display of prompt
This commit is contained in:
parent
45381e5341
commit
a86ec8c786
|
@ -80,10 +80,16 @@ Menu::_check_for_input(void)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// display the prompt
|
||||||
|
void
|
||||||
|
Menu::_display_prompt(void)
|
||||||
|
{
|
||||||
|
_port->printf_P(PSTR("%S] "), FPSTR(_prompt));
|
||||||
|
}
|
||||||
|
|
||||||
// run the menu
|
// run the menu
|
||||||
bool
|
bool
|
||||||
Menu::_run_command(void)
|
Menu::_run_command(bool prompt_on_enter)
|
||||||
{
|
{
|
||||||
int8_t ret;
|
int8_t ret;
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
@ -109,7 +115,9 @@ Menu::_run_command(void)
|
||||||
|
|
||||||
if (_argv[0].str == NULL) {
|
if (_argv[0].str == NULL) {
|
||||||
// we got a blank line, re-display the prompt
|
// we got a blank line, re-display the prompt
|
||||||
_port->printf_P(PSTR("%S] "), FPSTR(_prompt));
|
if (prompt_on_enter) {
|
||||||
|
_display_prompt();
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,16 +175,20 @@ Menu::run(void)
|
||||||
|
|
||||||
_allocate_buffers();
|
_allocate_buffers();
|
||||||
|
|
||||||
|
_display_prompt();
|
||||||
|
|
||||||
// loop performing commands
|
// loop performing commands
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
|
||||||
// run the pre-prompt function, if one is defined
|
// run the pre-prompt function, if one is defined
|
||||||
if ((NULL != _ppfunc) && !_ppfunc())
|
if (NULL != _ppfunc) {
|
||||||
return;
|
if (!_ppfunc())
|
||||||
|
return;
|
||||||
|
_display_prompt();
|
||||||
|
}
|
||||||
|
|
||||||
// loop reading characters from the input
|
// loop reading characters from the input
|
||||||
_input_len = 0;
|
_input_len = 0;
|
||||||
_port->printf_P(PSTR("%S] "), FPSTR(_prompt));
|
|
||||||
|
|
||||||
for (;; ) {
|
for (;; ) {
|
||||||
if (_check_for_input()) {
|
if (_check_for_input()) {
|
||||||
|
@ -186,7 +198,9 @@ Menu::run(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// we have a full command to run
|
// we have a full command to run
|
||||||
if (_run_command()) break;
|
if (_run_command(false)) break;
|
||||||
|
|
||||||
|
_display_prompt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,7 +216,7 @@ Menu::check_input(void)
|
||||||
_allocate_buffers();
|
_allocate_buffers();
|
||||||
|
|
||||||
if (_check_for_input()) {
|
if (_check_for_input()) {
|
||||||
return _run_command();
|
return _run_command(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -148,7 +148,9 @@ private:
|
||||||
|
|
||||||
// run one full entered command.
|
// run one full entered command.
|
||||||
// return true if the menu loop should exit
|
// return true if the menu loop should exit
|
||||||
bool _run_command(void);
|
bool _run_command(bool prompt_on_enter);
|
||||||
|
|
||||||
|
void _display_prompt();
|
||||||
|
|
||||||
// port to run on
|
// port to run on
|
||||||
static AP_HAL::BetterStream *_port;
|
static AP_HAL::BetterStream *_port;
|
||||||
|
|
Loading…
Reference in New Issue