
On 10/17/22 22:29, Simon Glass wrote:
Move this code into a separate function so that it can be used in the new VBE menu.
Signed-off-by: Simon Glass sjg@chromium.org
common/menu.c | 48 ++++++++++++++++++++++++++++++------------------ include/menu.h | 10 ++++++++++ 2 files changed, 40 insertions(+), 18 deletions(-)
diff --git a/common/menu.c b/common/menu.c index c2e3ec592e3..4606cb7d1b1 100644 --- a/common/menu.c +++ b/common/menu.c @@ -483,26 +483,11 @@ enum bootmenu_key bootmenu_autoboot_loop(struct bootmenu_data *menu, return key; }
-enum bootmenu_key bootmenu_loop(struct bootmenu_data *menu,
struct cli_ch_state *cch)
+enum bootmenu_key bootmenu_conv_key(int ichar) {
Please, extract a common library function from efi_cin_read_key_stroke_ex(). We should avoid code duplication.
Best regards
Heinrich
- enum bootmenu_key key = BKEY_NONE;
- int c;
- c = cli_ch_process(cch, 0);
- if (!c) {
while (!c && !tstc()) {
WATCHDOG_RESET();
mdelay(10);
c = cli_ch_process(cch, -ETIMEDOUT);
}
if (!c) {
c = getchar();
c = cli_ch_process(cch, c);
}
- }
- enum bootmenu_key key;
- switch (c) {
- switch (ichar) { case '\n': /* enter key was pressed */ key = BKEY_SELECT;
@@ -527,7 +512,34 @@ enum bootmenu_key bootmenu_loop(struct bootmenu_data *menu, case ' ': key = BKEY_SPACE; break;
- default:
key = BKEY_NONE;
break;
- }
- return key;
+}
+enum bootmenu_key bootmenu_loop(struct bootmenu_data *menu,
struct cli_ch_state *cch)
+{
enum bootmenu_key key;
int c;
c = cli_ch_process(cch, 0);
if (!c) {
while (!c && !tstc()) {
WATCHDOG_RESET();
mdelay(10);
c = cli_ch_process(cch, -ETIMEDOUT);
}
if (!c) {
c = getchar();
c = cli_ch_process(cch, c);
}
}
key = bootmenu_conv_key(c);
return key; }
diff --git a/include/menu.h b/include/menu.h index 3996075a337..1e88141d6bf 100644 --- a/include/menu.h +++ b/include/menu.h @@ -53,6 +53,8 @@ enum bootmenu_key { BKEY_PLUS, BKEY_MINUS, BKEY_SPACE,
BKEY_COUNT, };
/**
@@ -101,4 +103,12 @@ enum bootmenu_key bootmenu_autoboot_loop(struct bootmenu_data *menu, enum bootmenu_key bootmenu_loop(struct bootmenu_data *menu, struct cli_ch_state *cch);
+/**
- bootmenu_conv_key() - Convert a U-Boot keypress into a menu key
- @ichar: Keypress to convert (ASCII, including control characters)
- Returns: Menu key that corresponds to @ichar, or BKEY_NONE if none
- */
+enum bootmenu_key bootmenu_conv_key(int ichar);
- #endif /* __MENU_H__ */