2 Header file for boot maintenance module.
4 Copyright (c) 2004 - 2008, Intel Corporation. <BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
19 #include "BBSsupport.h"
21 #include "FrontPage.h"
24 // Constants which are variable names used to access variables
26 #define VarLegacyDevOrder L"LegacyDevOrder"
28 #define VarConOutMode L"ConOutMode"
31 // Guid of a NV Variable which store the information about the
32 // FD/HD/CD/NET/BEV order
34 #define EFI_LEGACY_DEV_ORDER_VARIABLE_GUID \
36 0xa56074db, 0x65fe, 0x45f7, {0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52} \
42 #define StrFloppy L"Floppy Drive #%02x"
43 #define StrHardDisk L"HardDisk Drive #%02x"
44 #define StrCDROM L"ATAPI CDROM Drive #%02x"
45 #define StrNET L"NET Drive #%02x"
46 #define StrBEV L"BEV Drive #%02x"
47 #define StrFloppyHelp L"Select Floppy Drive #%02x"
48 #define StrHardDiskHelp L"Select HardDisk Drive #%02x"
49 #define StrCDROMHelp L"Select ATAPI CDROM Drive #%02x"
50 #define StrNETHelp L"NET Drive #%02x"
51 #define StrBEVHelp L"BEV Drive #%02x"
54 // Variable created with this flag will be "Efi:...."
56 #define VAR_FLAG EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE
59 // Define Maxmim characters that will be accepted
62 #define MAX_CHAR_SIZE (MAX_CHAR * 2)
65 // Check to see if current build support option active feature of
68 #ifndef LOAD_OPTION_ACTIVE
69 #define LOAD_OPTION_ACTIVE 0x00000001
73 // Check to see if current build support force reconnect feature of
76 #ifndef LOAD_OPTION_FORCE_RECONNECT
77 #define LOAD_OPTION_FORCE_RECONNECT 0x00000002
80 extern EFI_GUID mBootMaintGuid
;
81 extern EFI_GUID mFileExplorerGuid
;
84 // These are the VFR compiler generated data representing our VFR data.
90 // Below are the number of options in Baudrate, Databits,
91 // Parity and Stopbits selection for serial ports.
93 #define BM_COM_ATTR_BUADRATE 19
94 #define BM_COM_ATTR_DATABITS 4
95 #define BM_COM_ATTR_PARITY 5
96 #define BM_COM_ATTR_STOPBITS 3
99 // Callback function helper
101 #define BMM_CALLBACK_DATA_SIGNATURE EFI_SIGNATURE_32 ('C', 'b', 'c', 'k')
102 #define BMM_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, BmmConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
104 #define FE_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, FeConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
107 // Enumeration type definition
109 typedef UINT8 BBS_TYPE
;
144 } TYPE_OF_UPATE_MANNER
;
148 BOOT_FROM_FILE_STATE
,
149 ADD_BOOT_OPTION_STATE
,
150 ADD_DRIVER_OPTION_STATE
,
152 } FILE_EXPLORER_STATE
;
158 } FILE_EXPLORER_DISPLAY_CONTEXT
;
161 // All of the signatures that will be used in list structure
163 #define BM_MENU_OPTION_SIGNATURE EFI_SIGNATURE_32 ('m', 'e', 'n', 'u')
164 #define BM_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('l', 'o', 'a', 'd')
165 #define BM_CONSOLE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('c', 'n', 's', 'l')
166 #define BM_FILE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('f', 'i', 'l', 'e')
167 #define BM_HANDLE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('h', 'n', 'd', 'l')
168 #define BM_TERMINAL_OPTION_SIGNATURE EFI_SIGNATURE_32 ('t', 'r', 'm', 'l')
169 #define BM_MENU_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('e', 'n', 't', 'r')
171 #define BM_LOAD_CONTEXT_SELECT 0x0
172 #define BM_CONSOLE_CONTEXT_SELECT 0x1
173 #define BM_FILE_CONTEXT_SELECT 0x2
174 #define BM_HANDLE_CONTEXT_SELECT 0x3
175 #define BM_TERMINAL_CONTEXT_SELECT 0x5
177 #define BM_CONSOLE_IN_CONTEXT_SELECT 0x6
178 #define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7
179 #define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8
180 #define BM_LEGACY_DEV_CONTEXT_SELECT 0x9
183 // Buffer size for update data
185 #define UPDATE_DATA_SIZE 0x100000
188 // Namespace of callback keys used in display and file system navigation
190 #define MAX_BBS_OFFSET 0xE000
191 #define NET_OPTION_OFFSET 0xD800
192 #define BEV_OPTION_OFFSET 0xD000
193 #define FD_OPTION_OFFSET 0xC000
194 #define HD_OPTION_OFFSET 0xB000
195 #define CD_OPTION_OFFSET 0xA000
196 #define FILE_OPTION_OFFSET 0x8000
197 #define FILE_OPTION_MASK 0x7FFF
198 #define HANDLE_OPTION_OFFSET 0x7000
199 #define CONSOLE_OPTION_OFFSET 0x6000
200 #define TERMINAL_OPTION_OFFSET 0x5000
201 #define CONFIG_OPTION_OFFSET 0x1200
202 #define KEY_VALUE_OFFSET 0x1100
203 #define FORM_ID_OFFSET 0x1000
206 // VarOffset that will be used to create question
207 // all these values are computed from the structure
210 #define VAR_OFFSET(Field) ((UINT16) ((UINTN) &(((BMM_FAKE_NV_DATA *) 0)->Field)))
213 // Question Id of Zero is invalid, so add an offset to it
215 #define QUESTION_ID(Field) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)
217 #define BOOT_TIME_OUT_VAR_OFFSET VAR_OFFSET (BootTimeOut)
218 #define BOOT_NEXT_VAR_OFFSET VAR_OFFSET (BootNext)
219 #define COM1_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM1BaudRate)
220 #define COM1_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM1DataRate)
221 #define COM1_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM1StopBits)
222 #define COM1_PARITY_VAR_OFFSET VAR_OFFSET (COM1Parity)
223 #define COM1_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)
224 #define COM2_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM2BaudRate)
225 #define COM2_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM2DataRate)
226 #define COM2_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM2StopBits)
227 #define COM2_PARITY_VAR_OFFSET VAR_OFFSET (COM2Parity)
228 #define COM2_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)
229 #define DRV_ADD_HANDLE_DESC_VAR_OFFSET VAR_OFFSET (DriverAddHandleDesc)
230 #define DRV_ADD_ACTIVE_VAR_OFFSET VAR_OFFSET (DriverAddActive)
231 #define DRV_ADD_RECON_VAR_OFFSET VAR_OFFSET (DriverAddForceReconnect)
232 #define CON_IN_COM1_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM1)
233 #define CON_IN_COM2_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM2)
234 #define CON_OUT_COM1_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM1)
235 #define CON_OUT_COM2_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM2)
236 #define CON_ERR_COM1_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM1)
237 #define CON_ERR_COM2_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM2)
238 #define CON_MODE_VAR_OFFSET VAR_OFFSET (ConsoleOutMode)
239 #define CON_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleCheck)
240 #define OPTION_ORDER_VAR_OFFSET VAR_OFFSET (OptionOrder)
241 #define DRIVER_OPTION_ORDER_VAR_OFFSET VAR_OFFSET (DriverOptionToBeDeleted)
242 #define BOOT_OPTION_DEL_VAR_OFFSET VAR_OFFSET (BootOptionDel)
243 #define DRIVER_OPTION_DEL_VAR_OFFSET VAR_OFFSET (DriverOptionDel)
244 #define DRIVER_ADD_OPTION_VAR_OFFSET VAR_OFFSET (DriverAddHandleOptionalData)
245 #define COM_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COMBaudRate)
246 #define COM_DATA_RATE_VAR_OFFSET VAR_OFFSET (COMDataRate)
247 #define COM_STOP_BITS_VAR_OFFSET VAR_OFFSET (COMStopBits)
248 #define COM_PARITY_VAR_OFFSET VAR_OFFSET (COMParity)
249 #define COM_TERMINAL_VAR_OFFSET VAR_OFFSET (COMTerminalType)
250 #define LEGACY_FD_VAR_OFFSET VAR_OFFSET (LegacyFD)
251 #define LEGACY_HD_VAR_OFFSET VAR_OFFSET (LegacyHD)
252 #define LEGACY_CD_VAR_OFFSET VAR_OFFSET (LegacyCD)
253 #define LEGACY_NET_VAR_OFFSET VAR_OFFSET (LegacyNET)
254 #define LEGACY_BEV_VAR_OFFSET VAR_OFFSET (LegacyBEV)
256 #define BOOT_TIME_OUT_QUESTION_ID QUESTION_ID (BootTimeOut)
257 #define BOOT_NEXT_QUESTION_ID QUESTION_ID (BootNext)
258 #define COM1_BAUD_RATE_QUESTION_ID QUESTION_ID (COM1BaudRate)
259 #define COM1_DATA_RATE_QUESTION_ID QUESTION_ID (COM1DataRate)
260 #define COM1_STOP_BITS_QUESTION_ID QUESTION_ID (COM1StopBits)
261 #define COM1_PARITY_QUESTION_ID QUESTION_ID (COM1Parity)
262 #define COM1_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)
263 #define COM2_BAUD_RATE_QUESTION_ID QUESTION_ID (COM2BaudRate)
264 #define COM2_DATA_RATE_QUESTION_ID QUESTION_ID (COM2DataRate)
265 #define COM2_STOP_BITS_QUESTION_ID QUESTION_ID (COM2StopBits)
266 #define COM2_PARITY_QUESTION_ID QUESTION_ID (COM2Parity)
267 #define COM2_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)
268 #define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc)
269 #define DRV_ADD_ACTIVE_QUESTION_ID QUESTION_ID (DriverAddActive)
270 #define DRV_ADD_RECON_QUESTION_ID QUESTION_ID (DriverAddForceReconnect)
271 #define CON_IN_COM1_QUESTION_ID QUESTION_ID (ConsoleInputCOM1)
272 #define CON_IN_COM2_QUESTION_ID QUESTION_ID (ConsoleInputCOM2)
273 #define CON_OUT_COM1_QUESTION_ID QUESTION_ID (ConsoleOutputCOM1)
274 #define CON_OUT_COM2_QUESTION_ID QUESTION_ID (ConsoleOutputCOM2)
275 #define CON_ERR_COM1_QUESTION_ID QUESTION_ID (ConsoleErrorCOM1)
276 #define CON_ERR_COM2_QUESTION_ID QUESTION_ID (ConsoleErrorCOM2)
277 #define CON_MODE_QUESTION_ID QUESTION_ID (ConsoleOutMode)
278 #define CON_DEVICE_QUESTION_ID QUESTION_ID (ConsoleCheck)
279 #define OPTION_ORDER_QUESTION_ID QUESTION_ID (OptionOrder)
280 #define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionToBeDeleted)
281 #define BOOT_OPTION_DEL_QUESTION_ID QUESTION_ID (BootOptionDel)
282 #define DRIVER_OPTION_DEL_QUESTION_ID QUESTION_ID (DriverOptionDel)
283 #define DRIVER_ADD_OPTION_QUESTION_ID QUESTION_ID (DriverAddHandleOptionalData)
284 #define COM_BAUD_RATE_QUESTION_ID QUESTION_ID (COMBaudRate)
285 #define COM_DATA_RATE_QUESTION_ID QUESTION_ID (COMDataRate)
286 #define COM_STOP_BITS_QUESTION_ID QUESTION_ID (COMStopBits)
287 #define COM_PARITY_QUESTION_ID QUESTION_ID (COMParity)
288 #define COM_TERMINAL_QUESTION_ID QUESTION_ID (COMTerminalType)
289 #define LEGACY_FD_QUESTION_ID QUESTION_ID (LegacyFD)
290 #define LEGACY_HD_QUESTION_ID QUESTION_ID (LegacyHD)
291 #define LEGACY_CD_QUESTION_ID QUESTION_ID (LegacyCD)
292 #define LEGACY_NET_QUESTION_ID QUESTION_ID (LegacyNET)
293 #define LEGACY_BEV_QUESTION_ID QUESTION_ID (LegacyBEV)
295 #define STRING_DEPOSITORY_NUMBER 8
300 // Serial Ports attributes, first one is the value for
301 // return from callback function, stringtoken is used to
302 // display the value properly
313 // Length = sizeof (UINT16) + SIZEOF (Data)
317 } BM_LEGACY_DEV_ORDER_CONTEXT
;
336 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
337 } BM_TERMINAL_CONTEXT
;
341 BOOLEAN LoadOptionModified
;
346 BOOLEAN ForceReconnect
;
347 UINTN OptionalDataSize
;
349 UINTN LoadOptionSize
;
353 UINT16 FilePathListLength
;
355 EFI_DEVICE_PATH_PROTOCOL
*FilePathList
;
366 } BM_LEGACY_DEVICE_CONTEXT
;
374 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
375 } BM_CONSOLE_CONTEXT
;
384 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
385 EFI_FILE_HANDLE FHandle
;
387 EFI_FILE_SYSTEM_VOLUME_LABEL_INFO
*Info
;
391 BOOLEAN IsRemovableMedia
;
393 BOOLEAN IsBootLegacy
;
398 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
411 UINT16
*DisplayString
;
413 EFI_STRING_ID DisplayStringToken
;
414 EFI_STRING_ID HelpStringToken
;
415 UINTN ContextSelection
;
416 VOID
*VariableContext
;
421 // Shared callback data.
425 BM_MENU_ENTRY
*MenuEntry
;
426 BM_HANDLE_CONTEXT
*HandleContext
;
427 BM_FILE_CONTEXT
*FileContext
;
428 BM_LOAD_CONTEXT
*LoadContext
;
429 BM_TERMINAL_CONTEXT
*TerminalContext
;
430 UINTN CurrentTerminal
;
434 // BMM main formset callback data.
436 EFI_HII_HANDLE BmmHiiHandle
;
437 EFI_HANDLE BmmDriverHandle
;
438 EFI_HII_CONFIG_ACCESS_PROTOCOL BmmConfigAccess
;
439 EFI_FORM_ID BmmCurrentPageId
;
440 EFI_FORM_ID BmmPreviousPageId
;
441 BOOLEAN BmmAskSaveOrNot
;
442 BMM_FAKE_NV_DATA BmmFakeNvData
;
443 BMM_FAKE_NV_DATA BmmOldFakeNVData
;
446 // File explorer formset callback data.
448 EFI_HII_HANDLE FeHiiHandle
;
449 EFI_HANDLE FeDriverHandle
;
450 EFI_HII_CONFIG_ACCESS_PROTOCOL FeConfigAccess
;
451 FILE_EXPLORER_STATE FeCurrentState
;
452 FILE_EXPLORER_DISPLAY_CONTEXT FeDisplayContext
;
453 FILE_EXPLORER_NV_DATA FeFakeNvData
;
456 typedef struct _STRING_LIST_NODE
{
457 EFI_STRING_ID StringToken
;
458 struct _STRING_LIST_NODE
*Next
;
461 typedef struct _STRING_DEPOSITORY
{
462 UINTN TotalNodeNumber
;
463 STRING_LIST_NODE
*CurrentNode
;
464 STRING_LIST_NODE
*ListHead
;
470 // For initializing File System menu
473 EDES_TODO: Add function description
475 @param CallbackData EDES_TODO: Add parameter description
477 @return EDES_TODO: Add description for return value
481 BOpt_FindFileSystem (
482 IN BMM_CALLBACK_DATA
*CallbackData
487 // For cleaning up File System menu
490 EDES_TODO: Add function description
492 @param VOID EDES_TODO: Add parameter description
494 @return EDES_TODO: Add description for return value
498 BOpt_FreeFileSystem (
504 // For initializing File Navigation menu
507 EDES_TODO: Add function description
509 @param CallbackData EDES_TODO: Add parameter description
510 @param MenuEntry EDES_TODO: Add parameter description
512 @return EDES_TODO: Add description for return value
517 IN BMM_CALLBACK_DATA
*CallbackData
,
518 IN BM_MENU_ENTRY
*MenuEntry
523 // For cleaning up File Navigation menu
526 EDES_TODO: Add function description
528 @param VOID EDES_TODO: Add parameter description
530 @return EDES_TODO: Add description for return value
540 // For Initializing handle navigation menu
543 EDES_TODO: Add function description
545 @param VOID EDES_TODO: Add parameter description
547 @return EDES_TODO: Add description for return value
557 // For Cleaning up handle navigation menu
560 EDES_TODO: Add function description
562 @param VOID EDES_TODO: Add parameter description
564 @return EDES_TODO: Add description for return value
568 BOpt_FreeDrivers(VOID
);
571 // For initializing Boot Option menu
574 EDES_TODO: Add function description
576 @param CallbackData EDES_TODO: Add parameter description
578 @return EDES_TODO: Add description for return value
582 BOpt_GetBootOptions (
583 IN BMM_CALLBACK_DATA
*CallbackData
587 // For Initializing Driver option menu
590 EDES_TODO: Add function description
592 @param CallbackData EDES_TODO: Add parameter description
594 @return EDES_TODO: Add description for return value
598 BOpt_GetDriverOptions (
599 IN BMM_CALLBACK_DATA
*CallbackData
603 // For Cleaning up boot option menu
606 EDES_TODO: Add function description
608 @param VOID EDES_TODO: Add parameter description
610 @return EDES_TODO: Add description for return value
614 BOpt_FreeBootOptions (VOID
);
617 // For cleaning up driver option menu
620 EDES_TODO: Add function description
622 @param VOID EDES_TODO: Add parameter description
624 @return EDES_TODO: Add description for return value
628 BOpt_FreeDriverOptions(VOID
);
631 // For Initializing HD/FD/CD/NET/BEV option menu
634 EDES_TODO: Add function description
636 @param VOID EDES_TODO: Add parameter description
638 @return EDES_TODO: Add description for return value
642 BOpt_GetLegacyOptions(VOID
);
645 // For cleaning up driver option menu
648 EDES_TODO: Add function description
650 @param VOID EDES_TODO: Add parameter description
652 @return EDES_TODO: Add description for return value
656 BOpt_FreeLegacyOptions(VOID
);
659 // this function is used to take place of all other free menu actions
662 EDES_TODO: Add function description
664 @param FreeMenu EDES_TODO: Add parameter description
666 @return EDES_TODO: Add description for return value
671 BM_MENU_OPTION
*FreeMenu
676 // Following are the helper functions used
679 EDES_TODO: Add function description
681 @param Str1 EDES_TODO: Add parameter description
682 @param Str2 EDES_TODO: Add parameter description
684 @return EDES_TODO: Add description for return value
688 BOpt_AppendFileName (
694 EDES_TODO: Add function description
696 @param FileName EDES_TODO: Add parameter description
698 @return EDES_TODO: Add description for return value
702 BOpt_IsEfiImageName (
707 EDES_TODO: Add function description
709 @param Dir EDES_TODO: Add parameter description
710 @param FileName EDES_TODO: Add parameter description
712 @return EDES_TODO: Add description for return value
717 IN EFI_FILE_HANDLE Dir
,
722 // Get current unused boot option number
725 EDES_TODO: Add function description
727 @param VOID EDES_TODO: Add parameter description
729 @return EDES_TODO: Add description for return value
733 BOpt_GetBootOptionNumber (VOID
);
736 // Get current unused driver option number
739 EDES_TODO: Add function description
741 @param VOID EDES_TODO: Add parameter description
743 @return EDES_TODO: Add description for return value
747 BOpt_GetDriverOptionNumber (VOID
);
750 EDES_TODO: Add function description
752 @param MenuType EDES_TODO: Add parameter description
754 @return EDES_TODO: Add description for return value
758 BOpt_CreateMenuEntry (
763 EDES_TODO: Add function description
765 @param MenuEntry EDES_TODO: Add parameter description
767 @return EDES_TODO: Add description for return value
771 BOpt_DestroyMenuEntry (
772 BM_MENU_ENTRY
*MenuEntry
776 EDES_TODO: Add function description
778 @param MenuOption EDES_TODO: Add parameter description
779 @param MenuNumber EDES_TODO: Add parameter description
781 @return EDES_TODO: Add description for return value
786 BM_MENU_OPTION
*MenuOption
,
791 // a helper function used to free pool type memory
794 EDES_TODO: Add function description
796 @param Buffer EDES_TODO: Add parameter description
798 @return EDES_TODO: Add description for return value
807 // Locate all serial io devices for console
810 EDES_TODO: Add function description
812 @param VOID EDES_TODO: Add parameter description
814 @return EDES_TODO: Add description for return value
818 LocateSerialIo (VOID
);
821 // Initializing Console menu
824 EDES_TODO: Add function description
826 @param VOID EDES_TODO: Add parameter description
828 @return EDES_TODO: Add description for return value
832 GetAllConsoles(VOID
);
835 // Get current mode information
838 EDES_TODO: Add function description
840 @param CallbackData EDES_TODO: Add parameter description
842 @return EDES_TODO: Add description for return value
847 IN BMM_CALLBACK_DATA
*CallbackData
851 // Cleaning up console menu
854 EDES_TODO: Add function description
856 @param VOID EDES_TODO: Add parameter description
858 @return EDES_TODO: Add description for return value
862 FreeAllConsoles(VOID
);
865 EDES_TODO: Add function description
867 @param DevicePath EDES_TODO: Add parameter description
869 @return EDES_TODO: Add description for return value
873 ChangeVariableDevicePath (
874 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
878 EDES_TODO: Add function description
880 @param DevicePath EDES_TODO: Add parameter description
881 @param ChangeTerminal EDES_TODO: Add parameter description
883 @return EDES_TODO: Add description for return value
887 ChangeTerminalDevicePath (
888 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
,
889 BOOLEAN ChangeTerminal
892 // Variable operation by menu selection
895 EDES_TODO: Add function description
897 @param CallbackData EDES_TODO: Add parameter description
898 @param NvRamMap EDES_TODO: Add parameter description
900 @return EDES_TODO: Add description for return value
904 Var_UpdateBootOption (
905 IN BMM_CALLBACK_DATA
*CallbackData
,
906 IN FILE_EXPLORER_NV_DATA
*NvRamMap
910 EDES_TODO: Add function description
912 @param VOID EDES_TODO: Add parameter description
914 @return EDES_TODO: Add description for return value
918 Var_DelBootOption (VOID
);
921 EDES_TODO: Add function description
923 @param VOID EDES_TODO: Add parameter description
925 @return EDES_TODO: Add description for return value
929 Var_ChangeBootOrder (VOID
);
932 EDES_TODO: Add function description
934 @param CallbackData EDES_TODO: Add parameter description
935 @param HiiHandle EDES_TODO: Add parameter description
936 @param DescriptionData EDES_TODO: Add parameter description
937 @param OptionalData EDES_TODO: Add parameter description
938 @param ForceReconnect EDES_TODO: Add parameter description
940 @return EDES_TODO: Add description for return value
944 Var_UpdateDriverOption (
945 IN BMM_CALLBACK_DATA
*CallbackData
,
946 IN EFI_HII_HANDLE HiiHandle
,
947 IN UINT16
*DescriptionData
,
948 IN UINT16
*OptionalData
,
949 IN UINT8 ForceReconnect
953 EDES_TODO: Add function description
955 @param VOID EDES_TODO: Add parameter description
957 @return EDES_TODO: Add description for return value
961 Var_DelDriverOption (VOID
);
964 EDES_TODO: Add function description
966 @param VOID EDES_TODO: Add parameter description
968 @return EDES_TODO: Add description for return value
972 Var_ChangeDriverOrder (VOID
);
975 EDES_TODO: Add function description
977 @param VOID EDES_TODO: Add parameter description
979 @return EDES_TODO: Add description for return value
983 Var_UpdateConsoleInpOption (VOID
);
986 EDES_TODO: Add function description
988 @param VOID EDES_TODO: Add parameter description
990 @return EDES_TODO: Add description for return value
994 Var_UpdateConsoleOutOption (VOID
);
997 EDES_TODO: Add function description
999 @param VOID EDES_TODO: Add parameter description
1001 @return EDES_TODO: Add description for return value
1005 Var_UpdateErrorOutOption (VOID
);
1008 EDES_TODO: Add function description
1010 @param VOID EDES_TODO: Add parameter description
1012 @return EDES_TODO: Add description for return value
1016 Var_UpdateAllConsoleOption (VOID
);
1019 EDES_TODO: Add function description
1021 @param CallbackData EDES_TODO: Add parameter description
1023 @return EDES_TODO: Add description for return value
1027 Var_UpdateBootNext (
1028 IN BMM_CALLBACK_DATA
*CallbackData
1032 EDES_TODO: Add function description
1034 @param CallbackData EDES_TODO: Add parameter description
1036 @return EDES_TODO: Add description for return value
1040 Var_UpdateBootOrder (
1041 IN BMM_CALLBACK_DATA
*CallbackData
1045 EDES_TODO: Add function description
1047 @param CallbackData EDES_TODO: Add parameter description
1049 @return EDES_TODO: Add description for return value
1053 Var_UpdateDriverOrder (
1054 IN BMM_CALLBACK_DATA
*CallbackData
1058 EDES_TODO: Add function description
1060 @param CallbackData EDES_TODO: Add parameter description
1062 @return EDES_TODO: Add description for return value
1066 Var_UpdateBBSOption (
1067 IN BMM_CALLBACK_DATA
*CallbackData
1071 EDES_TODO: Add function description
1073 @param CallbackData EDES_TODO: Add parameter description
1075 @return EDES_TODO: Add description for return value
1080 IN BMM_CALLBACK_DATA
*CallbackData
1084 // Following are page create and refresh functions
1087 EDES_TODO: Add function description
1089 @param VOID EDES_TODO: Add parameter description
1091 @return EDES_TODO: Add description for return value
1100 EDES_TODO: Add function description
1102 @param LabelId EDES_TODO: Add parameter description
1103 @param CallbackData EDES_TODO: Add parameter description
1105 @return EDES_TODO: Add description for return value
1111 IN BMM_CALLBACK_DATA
*CallbackData
1115 EDES_TODO: Add function description
1117 @param CallbackData EDES_TODO: Add parameter description
1118 @param UpdatingMenu EDES_TODO: Add parameter description
1119 @param UpdatingPage EDES_TODO: Add parameter description
1120 @param UpdatingManner EDES_TODO: Add parameter description
1121 @param QuestionIdStart EDES_TODO: Add parameter description
1122 @param GotoForm EDES_TODO: Add parameter description
1123 @param GotoAlternateForm EDES_TODO: Add parameter description
1124 @param DisplayTokenStart EDES_TODO: Add parameter description
1125 @param HelpTokenStart EDES_TODO: Add parameter description
1126 @param KeyValueStart EDES_TODO: Add parameter description
1128 @return EDES_TODO: Add description for return value
1133 IN BMM_CALLBACK_DATA
*CallbackData
,
1134 IN BM_MENU_OPTION
*UpdatingMenu
,
1135 IN UINT16 UpdatingPage
,
1136 IN UINT16 UpdatingManner
,
1137 IN UINT16 QuestionIdStart
,
1139 IN UINT16 GotoAlternateForm
,
1140 IN EFI_STRING_ID DisplayTokenStart
,
1141 IN EFI_STRING_ID HelpTokenStart
,
1142 IN UINT16 KeyValueStart
1146 EDES_TODO: Add function description
1148 @param CallbackData EDES_TODO: Add parameter description
1150 @return EDES_TODO: Add description for return value
1155 IN BMM_CALLBACK_DATA
*CallbackData
1159 EDES_TODO: Add function description
1161 @param CallbackData EDES_TODO: Add parameter description
1163 @return EDES_TODO: Add description for return value
1168 IN BMM_CALLBACK_DATA
*CallbackData
1172 EDES_TODO: Add function description
1174 @param CallbackData EDES_TODO: Add parameter description
1176 @return EDES_TODO: Add description for return value
1180 UpdateDrvAddFilePage (
1181 IN BMM_CALLBACK_DATA
*CallbackData
1185 EDES_TODO: Add function description
1187 @param CallbackData EDES_TODO: Add parameter description
1189 @return EDES_TODO: Add description for return value
1193 UpdateDrvAddHandlePage (
1194 IN BMM_CALLBACK_DATA
*CallbackData
1198 EDES_TODO: Add function description
1200 @param CallbackData EDES_TODO: Add parameter description
1202 @return EDES_TODO: Add description for return value
1207 IN BMM_CALLBACK_DATA
*CallbackData
1211 EDES_TODO: Add function description
1213 @param CallbackData EDES_TODO: Add parameter description
1215 @return EDES_TODO: Add description for return value
1219 UpdateDriverAddHandleDescPage (
1220 IN BMM_CALLBACK_DATA
*CallbackData
1224 EDES_TODO: Add function description
1226 @param CallbackData EDES_TODO: Add parameter description
1228 @return EDES_TODO: Add description for return value
1233 IN BMM_CALLBACK_DATA
*CallbackData
1237 EDES_TODO: Add function description
1239 @param CallbackData EDES_TODO: Add parameter description
1241 @return EDES_TODO: Add description for return value
1246 IN BMM_CALLBACK_DATA
*CallbackData
1250 EDES_TODO: Add function description
1252 @param CallbackData EDES_TODO: Add parameter description
1254 @return EDES_TODO: Add description for return value
1259 IN BMM_CALLBACK_DATA
*CallbackData
1263 EDES_TODO: Add function description
1265 @param CallbackData EDES_TODO: Add parameter description
1267 @return EDES_TODO: Add description for return value
1272 IN BMM_CALLBACK_DATA
*CallbackData
1276 EDES_TODO: Add function description
1278 @param UpdatePageId EDES_TODO: Add parameter description
1279 @param CallbackData EDES_TODO: Add parameter description
1281 @return EDES_TODO: Add description for return value
1286 IN UINT16 UpdatePageId
,
1287 IN BMM_CALLBACK_DATA
*CallbackData
1291 EDES_TODO: Add function description
1293 @param CallbackData EDES_TODO: Add parameter description
1295 @return EDES_TODO: Add description for return value
1300 IN BMM_CALLBACK_DATA
*CallbackData
1304 EDES_TODO: Add function description
1306 @param CallbackData EDES_TODO: Add parameter description
1308 @return EDES_TODO: Add description for return value
1313 IN BMM_CALLBACK_DATA
*CallbackData
1317 EDES_TODO: Add function description
1319 @param CallbackData EDES_TODO: Add parameter description
1321 @return EDES_TODO: Add description for return value
1325 UpdateBootOrderPage (
1326 IN BMM_CALLBACK_DATA
*CallbackData
1330 EDES_TODO: Add function description
1332 @param CallbackData EDES_TODO: Add parameter description
1334 @return EDES_TODO: Add description for return value
1338 UpdateDriverOrderPage (
1339 IN BMM_CALLBACK_DATA
*CallbackData
1343 EDES_TODO: Add function description
1345 @param CallbackData EDES_TODO: Add parameter description
1347 @return EDES_TODO: Add description for return value
1351 UpdateBootNextPage (
1352 IN BMM_CALLBACK_DATA
*CallbackData
1356 EDES_TODO: Add function description
1358 @param CallbackData EDES_TODO: Add parameter description
1360 @return EDES_TODO: Add description for return value
1365 IN BMM_CALLBACK_DATA
*CallbackData
1369 EDES_TODO: Add function description
1371 @param CallbackData EDES_TODO: Add parameter description
1373 @return EDES_TODO: Add description for return value
1377 UpdateTerminalPage (
1378 IN BMM_CALLBACK_DATA
*CallbackData
1382 EDES_TODO: Add function description
1384 @param CallbackData EDES_TODO: Add parameter description
1386 @return EDES_TODO: Add description for return value
1391 IN BMM_CALLBACK_DATA
*CallbackData
1395 EDES_TODO: Add function description
1397 @param CallbackData EDES_TODO: Add parameter description
1399 @return EDES_TODO: Add description for return value
1404 IN BMM_CALLBACK_DATA
*CallbackData
1408 EDES_TODO: Add function description
1410 @param UpdatePageId EDES_TODO: Add parameter description
1411 @param CallbackData EDES_TODO: Add parameter description
1413 @return EDES_TODO: Add description for return value
1417 UpdateSetLegacyDeviceOrderPage (
1418 IN UINT16 UpdatePageId
,
1419 IN BMM_CALLBACK_DATA
*CallbackData
1423 EDES_TODO: Add function description
1425 @param BbsType EDES_TODO: Add parameter description
1426 @param BbsFlag EDES_TODO: Add parameter description
1428 @return EDES_TODO: Add description for return value
1438 EDES_TODO: Add function description
1440 @param TerminalNumber EDES_TODO: Add parameter description
1442 @return EDES_TODO: Add description for return value
1446 GetCurrentTerminal (
1447 UINTN TerminalNumber
1451 EDES_TODO: Add function description
1453 @param DeviceHandle EDES_TODO: Add parameter description
1455 @return EDES_TODO: Add description for return value
1460 IN EFI_HANDLE DeviceHandle
1464 EDES_TODO: Add function description
1466 @param FHand EDES_TODO: Add parameter description
1468 @return EDES_TODO: Add description for return value
1471 EFI_FILE_SYSTEM_VOLUME_LABEL_INFO
*
1472 EfiLibFileSystemVolumeLabelInfo (
1473 IN EFI_FILE_HANDLE FHand
1477 EDES_TODO: Add function description
1479 @param FHand EDES_TODO: Add parameter description
1481 @return EDES_TODO: Add description for return value
1486 IN EFI_FILE_HANDLE FHand
1490 EDES_TODO: Add function description
1492 @param UStr EDES_TODO: Add parameter description
1493 @param Length EDES_TODO: Add parameter description
1494 @param AStr EDES_TODO: Add parameter description
1496 @return EDES_TODO: Add description for return value
1507 EDES_TODO: Add function description
1509 @param DevPath EDES_TODO: Add parameter description
1511 @return EDES_TODO: Add description for return value
1516 EFI_DEVICE_PATH_PROTOCOL
*DevPath
1520 EDES_TODO: Add function description
1522 @param Size EDES_TODO: Add parameter description
1524 @return EDES_TODO: Add description for return value
1528 EfiAllocateZeroPool (
1533 EDES_TODO: Add function description
1535 @param ProtocolGuid EDES_TODO: Add parameter description
1536 @param Interface EDES_TODO: Add parameter description
1538 @return EDES_TODO: Add description for return value
1542 EfiLibLocateProtocol (
1543 IN EFI_GUID
*ProtocolGuid
,
1544 OUT VOID
**Interface
1548 EDES_TODO: Add function description
1550 @param OldPool EDES_TODO: Add parameter description
1551 @param OldSize EDES_TODO: Add parameter description
1552 @param NewSize EDES_TODO: Add parameter description
1554 @return EDES_TODO: Add description for return value
1565 EDES_TODO: Add function description
1567 @param DevPath EDES_TODO: Add parameter description
1569 @return EDES_TODO: Add description for return value
1574 EFI_DEVICE_PATH_PROTOCOL
*DevPath
1578 EDES_TODO: Add function description
1580 @param Name EDES_TODO: Add parameter description
1581 @param VendorGuid EDES_TODO: Add parameter description
1582 @param VarSize EDES_TODO: Add parameter description
1584 @return EDES_TODO: Add description for return value
1588 BdsLibGetVariableAndSize (
1590 IN EFI_GUID
*VendorGuid
,
1595 EDES_TODO: Add function description
1597 @param VarName EDES_TODO: Add parameter description
1598 @param VarGuid EDES_TODO: Add parameter description
1600 @return EDES_TODO: Add description for return value
1604 EfiLibDeleteVariable (
1606 IN EFI_GUID
*VarGuid
1610 EDES_TODO: Add function description
1612 @param Src EDES_TODO: Add parameter description
1614 @return EDES_TODO: Add description for return value
1623 EDES_TODO: Add function description
1625 @param Multi EDES_TODO: Add parameter description
1626 @param Single EDES_TODO: Add parameter description
1628 @return EDES_TODO: Add description for return value
1632 EfiLibMatchDevicePaths (
1633 IN EFI_DEVICE_PATH_PROTOCOL
*Multi
,
1634 IN EFI_DEVICE_PATH_PROTOCOL
*Single
1638 EDES_TODO: Add function description
1640 @param DevicePath EDES_TODO: Add parameter description
1642 @return EDES_TODO: Add description for return value
1646 EfiDevicePathInstanceCount (
1647 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePath
1651 EDES_TODO: Add function description
1653 @param CallbackData EDES_TODO: Add parameter description
1654 @param HiiHandle EDES_TODO: Add parameter description
1655 @param MenuOption EDES_TODO: Add parameter description
1657 @return EDES_TODO: Add description for return value
1661 CreateMenuStringToken (
1662 IN BMM_CALLBACK_DATA
*CallbackData
,
1663 IN EFI_HII_HANDLE HiiHandle
,
1664 IN BM_MENU_OPTION
*MenuOption
1668 EDES_TODO: Add function description
1670 @param DevPath EDES_TODO: Add parameter description
1672 @return EDES_TODO: Add description for return value
1676 EfiLibStrFromDatahub (
1677 IN EFI_DEVICE_PATH_PROTOCOL
*DevPath
1681 EDES_TODO: Add function description
1683 @param DeviceType EDES_TODO: Add parameter description
1684 @param OptionIndex EDES_TODO: Add parameter description
1685 @param OptionSize EDES_TODO: Add parameter description
1687 @return EDES_TODO: Add description for return value
1691 GetLegacyBootOptionVar (
1692 IN UINTN DeviceType
,
1693 OUT UINTN
*OptionIndex
,
1694 OUT UINTN
*OptionSize
1698 EDES_TODO: Add function description
1700 @param VOID EDES_TODO: Add parameter description
1702 @return EDES_TODO: Add description for return value
1711 EDES_TODO: Add function description
1713 @param VOID EDES_TODO: Add parameter description
1715 @return EDES_TODO: Add description for return value
1724 EDES_TODO: Add function description
1726 @param VOID EDES_TODO: Add parameter description
1728 @return EDES_TODO: Add description for return value
1732 InitializeStringDepository (VOID
);
1735 EDES_TODO: Add function description
1737 @param CallbackData EDES_TODO: Add parameter description
1738 @param StringDepository EDES_TODO: Add parameter description
1740 @return EDES_TODO: Add description for return value
1744 GetStringTokenFromDepository (
1745 IN BMM_CALLBACK_DATA
*CallbackData
,
1746 IN STRING_DEPOSITORY
*StringDepository
1750 EDES_TODO: Add function description
1752 @param VOID EDES_TODO: Add parameter description
1754 @return EDES_TODO: Add description for return value
1758 ReclaimStringDepository (
1763 EDES_TODO: Add function description
1765 @param VOID EDES_TODO: Add parameter description
1767 @return EDES_TODO: Add description for return value
1771 CleanUpStringDepository (
1776 EDES_TODO: Add function description
1778 @param Private EDES_TODO: Add parameter description
1779 @param CurrentFakeNVMap EDES_TODO: Add parameter description
1780 @param FormId EDES_TODO: Add parameter description
1782 @return EDES_TODO: Add description for return value
1786 ApplyChangeHandler (
1787 IN BMM_CALLBACK_DATA
*Private
,
1788 IN BMM_FAKE_NV_DATA
*CurrentFakeNVMap
,
1789 IN EFI_FORM_ID FormId
1793 EDES_TODO: Add function description
1795 @param Private EDES_TODO: Add parameter description
1796 @param CurrentFakeNVMap EDES_TODO: Add parameter description
1798 @return EDES_TODO: Add description for return value
1802 DiscardChangeHandler (
1803 IN BMM_CALLBACK_DATA
*Private
,
1804 IN BMM_FAKE_NV_DATA
*CurrentFakeNVMap
1808 EDES_TODO: Add function description
1810 @param Private EDES_TODO: Add parameter description
1811 @param NewPageId EDES_TODO: Add parameter description
1813 @return EDES_TODO: Add description for return value
1818 BMM_CALLBACK_DATA
*Private
,
1823 EDES_TODO: Add function description
1825 @param FileContext EDES_TODO: Add parameter description
1827 @return EDES_TODO: Add description for return value
1832 IN BM_FILE_CONTEXT
*FileContext
1836 EDES_TODO: Add function description
1838 @param CallbackData EDES_TODO: Add parameter description
1839 @param KeyValue EDES_TODO: Add parameter description
1841 @return EDES_TODO: Add description for return value
1845 UpdateFileExplorer (
1846 IN BMM_CALLBACK_DATA
*CallbackData
,
1851 EDES_TODO: Add function description
1853 @param This EDES_TODO: Add parameter description
1854 @param Action EDES_TODO: Add parameter description
1855 @param QuestionId EDES_TODO: Add parameter description
1856 @param Type EDES_TODO: Add parameter description
1857 @param Value EDES_TODO: Add parameter description
1858 @param ActionRequest EDES_TODO: Add parameter description
1860 @return EDES_TODO: Add description for return value
1865 FileExplorerCallback (
1866 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL
*This
,
1867 IN EFI_BROWSER_ACTION Action
,
1868 IN EFI_QUESTION_ID QuestionId
,
1870 IN EFI_IFR_TYPE_VALUE
*Value
,
1871 OUT EFI_BROWSER_ACTION_REQUEST
*ActionRequest
1875 EDES_TODO: Add function description
1877 @param CallbackData EDES_TODO: Add parameter description
1879 @return EDES_TODO: Add description for return value
1884 IN BMM_CALLBACK_DATA
*CallbackData
1888 EDES_TODO: Add function description
1890 @param Name EDES_TODO: Add parameter description
1891 @param VendorGuid EDES_TODO: Add parameter description
1893 @return EDES_TODO: Add description for return value
1899 IN EFI_GUID
*VendorGuid
1903 // Global variable in this program (defined in data.c)
1905 extern BM_MENU_OPTION BootOptionMenu
;
1906 extern BM_MENU_OPTION DriverOptionMenu
;
1907 extern BM_MENU_OPTION FsOptionMenu
;
1908 extern BM_MENU_OPTION ConsoleInpMenu
;
1909 extern BM_MENU_OPTION ConsoleOutMenu
;
1910 extern BM_MENU_OPTION ConsoleErrMenu
;
1911 extern BM_MENU_OPTION DirectoryMenu
;
1912 extern BM_MENU_OPTION DriverMenu
;
1913 extern BM_MENU_OPTION TerminalMenu
;
1914 extern BM_MENU_OPTION LegacyFDMenu
;
1915 extern BM_MENU_OPTION LegacyHDMenu
;
1916 extern BM_MENU_OPTION LegacyCDMenu
;
1917 extern BM_MENU_OPTION LegacyNETMenu
;
1918 extern BM_MENU_OPTION LegacyBEVMenu
;
1919 extern UINT16 TerminalType
[];
1920 extern COM_ATTR BaudRateList
[19];
1921 extern COM_ATTR DataBitsList
[4];
1922 extern COM_ATTR ParityList
[5];
1923 extern COM_ATTR StopBitsList
[3];
1924 extern EFI_GUID Guid
[4];
1925 extern EFI_HII_UPDATE_DATA gUpdateData
;
1926 extern STRING_DEPOSITORY
*FileOptionStrDepository
;
1927 extern STRING_DEPOSITORY
*ConsoleOptionStrDepository
;
1928 extern STRING_DEPOSITORY
*BootOptionStrDepository
;
1929 extern STRING_DEPOSITORY
*BootOptionHelpStrDepository
;
1930 extern STRING_DEPOSITORY
*DriverOptionStrDepository
;
1931 extern STRING_DEPOSITORY
*DriverOptionHelpStrDepository
;
1932 extern STRING_DEPOSITORY
*TerminalStrDepository
;
1933 extern EFI_DEVICE_PATH_PROTOCOL EndDevicePath
[];
1934 extern EFI_GUID EfiLegacyDevOrderGuid
;