mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
menu: Factor out menu-keypress decoding
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>
This commit is contained in:
parent
24d8e1b37b
commit
9e7ac0b0be
2 changed files with 40 additions and 18 deletions
|
@ -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)
|
||||
{
|
||||
enum bootmenu_key key = BKEY_NONE;
|
||||
int c;
|
||||
enum bootmenu_key key;
|
||||
|
||||
c = cli_ch_process(cch, 0);
|
||||
if (!c) {
|
||||
while (!c && !tstc()) {
|
||||
schedule();
|
||||
mdelay(10);
|
||||
c = cli_ch_process(cch, -ETIMEDOUT);
|
||||
}
|
||||
if (!c) {
|
||||
c = getchar();
|
||||
c = cli_ch_process(cch, c);
|
||||
}
|
||||
}
|
||||
|
||||
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()) {
|
||||
schedule();
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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__ */
|
||||
|
|
Loading…
Reference in a new issue