Prepare v2023.10
[platform/kernel/u-boot.git] / include / menu.h
index 0b4d973..64ce89b 100644 (file)
@@ -6,6 +6,7 @@
 #ifndef __MENU_H__
 #define __MENU_H__
 
+struct cli_ch_state;
 struct menu;
 
 struct menu *menu_create(char *title, int timeout, int prompt,
@@ -44,14 +45,17 @@ struct bootmenu_data {
 
 /** enum bootmenu_key - keys that can be returned by the bootmenu */
 enum bootmenu_key {
-       KEY_NONE = 0,
-       KEY_UP,
-       KEY_DOWN,
-       KEY_SELECT,
-       KEY_QUIT,
-       KEY_PLUS,
-       KEY_MINUS,
-       KEY_SPACE,
+       BKEY_NONE = 0,
+       BKEY_UP,
+       BKEY_DOWN,
+       BKEY_SELECT,
+       BKEY_QUIT,
+       BKEY_PLUS,
+       BKEY_MINUS,
+       BKEY_SPACE,
+       BKEY_SAVE,
+
+       BKEY_COUNT,
 };
 
 /**
@@ -65,14 +69,14 @@ enum bootmenu_key {
  * indicating that the current option should be chosen.
  *
  * @menu: Menu being processed
- * @key: Returns the code for the key the user pressed:
+ * @esc: Set to 1 if the escape key is pressed, otherwise not updated
+ * Returns: code for the key the user pressed:
  *     enter: KEY_SELECT
  *     Ctrl-C: KEY_QUIT
  *     anything else: KEY_NONE
- * @esc: Set to 1 if the escape key is pressed, otherwise not updated
  */
-void bootmenu_autoboot_loop(struct bootmenu_data *menu,
-                           enum bootmenu_key *key, int *esc);
+enum bootmenu_key bootmenu_autoboot_loop(struct bootmenu_data *menu,
+                                        struct cli_ch_state *cch);
 
 /**
  * bootmenu_loop() - handle waiting for a keypress when autoboot is disabled
@@ -84,20 +88,28 @@ void bootmenu_autoboot_loop(struct bootmenu_data *menu,
  * character is recognised
  *
  * @menu: Menu being processed
- * @key: Returns the code for the key the user pressed:
- *     enter: KEY_SELECT
- *     Ctrl-C: KEY_QUIT
- *     Up arrow: KEY_UP
- *     Down arrow: KEY_DOWN
- *     Escape (by itself): KEY_QUIT
- *     Plus: KEY_PLUS
- *     Minus: KEY_MINUS
- *     Space: KEY_SPACE
  * @esc: On input, a non-zero value indicates that an escape sequence has
  *     resulted in that many characters so far. On exit this is updated to the
  *     new number of characters
+ * Returns: code for the key the user pressed:
+ *     enter: BKEY_SELECT
+ *     Ctrl-C: BKEY_QUIT
+ *     Up arrow: BKEY_UP
+ *     Down arrow: BKEY_DOWN
+ *     Escape (by itself): BKEY_QUIT
+ *     Plus: BKEY_PLUS
+ *     Minus: BKEY_MINUS
+ *     Space: BKEY_SPACE
+ */
+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
  */
-void bootmenu_loop(struct bootmenu_data *menu,
-                  enum bootmenu_key *key, int *esc);
+enum bootmenu_key bootmenu_conv_key(int ichar);
 
 #endif /* __MENU_H__ */