]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/BdsDxe/BootMaint/BootMaint.h
Added some functions header.
[mirror_edk2.git] / MdeModulePkg / Universal / BdsDxe / BootMaint / BootMaint.h
CommitLineData
fd6a62f3 1/** @file\r
2 Header file for boot maintenance module.\r
93e3992d 3\r
fd6a62f3 4Copyright (c) 2004 - 2008, Intel Corporation. <BR>\r
93e3992d 5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
fd6a62f3 13**/\r
93e3992d 14\r
15#ifndef _BOOT_MAINT_H\r
16#define _BOOT_MAINT_H\r
17\r
18#include "Bds.h"\r
19#include "BBSsupport.h"\r
20#include "FormGuid.h"\r
21#include "FrontPage.h"\r
22\r
23//\r
24// Constants which are variable names used to access variables\r
25//\r
26#define VarLegacyDevOrder L"LegacyDevOrder"\r
27\r
28#define VarConOutMode L"ConOutMode"\r
29\r
30//\r
31// Guid of a NV Variable which store the information about the\r
32// FD/HD/CD/NET/BEV order\r
33//\r
34#define EFI_LEGACY_DEV_ORDER_VARIABLE_GUID \\r
35 { \\r
36 0xa56074db, 0x65fe, 0x45f7, {0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52} \\r
37 }\r
38\r
39//\r
40// String Contant\r
41//\r
42#define StrFloppy L"Floppy Drive #%02x"\r
43#define StrHardDisk L"HardDisk Drive #%02x"\r
44#define StrCDROM L"ATAPI CDROM Drive #%02x"\r
45#define StrNET L"NET Drive #%02x"\r
46#define StrBEV L"BEV Drive #%02x"\r
47#define StrFloppyHelp L"Select Floppy Drive #%02x"\r
48#define StrHardDiskHelp L"Select HardDisk Drive #%02x"\r
49#define StrCDROMHelp L"Select ATAPI CDROM Drive #%02x"\r
50#define StrNETHelp L"NET Drive #%02x"\r
51#define StrBEVHelp L"BEV Drive #%02x"\r
52\r
53//\r
54// Variable created with this flag will be "Efi:...."\r
55//\r
56#define VAR_FLAG EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE\r
57\r
58//\r
59// Define Maxmim characters that will be accepted\r
60//\r
61#define MAX_CHAR 480\r
62#define MAX_CHAR_SIZE (MAX_CHAR * 2)\r
63\r
64//\r
65// Check to see if current build support option active feature of\r
66// some driver option\r
67//\r
68#ifndef LOAD_OPTION_ACTIVE\r
69#define LOAD_OPTION_ACTIVE 0x00000001\r
70#endif\r
71\r
72//\r
73// Check to see if current build support force reconnect feature of\r
74// some driver option\r
75//\r
76#ifndef LOAD_OPTION_FORCE_RECONNECT\r
77#define LOAD_OPTION_FORCE_RECONNECT 0x00000002\r
78#endif\r
79\r
80extern EFI_GUID mBootMaintGuid;\r
81extern EFI_GUID mFileExplorerGuid;\r
82\r
83//\r
84// These are the VFR compiler generated data representing our VFR data.\r
85//\r
86extern UINT8 BmBin[];\r
87extern UINT8 FEBin[];\r
88\r
89//\r
90// Below are the number of options in Baudrate, Databits,\r
91// Parity and Stopbits selection for serial ports.\r
92//\r
93#define BM_COM_ATTR_BUADRATE 19\r
94#define BM_COM_ATTR_DATABITS 4\r
95#define BM_COM_ATTR_PARITY 5\r
96#define BM_COM_ATTR_STOPBITS 3\r
97\r
98//\r
99// Callback function helper\r
100//\r
101#define BMM_CALLBACK_DATA_SIGNATURE EFI_SIGNATURE_32 ('C', 'b', 'c', 'k')\r
102#define BMM_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, BmmConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)\r
103\r
104#define FE_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, FeConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)\r
105\r
106//\r
107// Enumeration type definition\r
108//\r
109typedef UINT8 BBS_TYPE;\r
110\r
111typedef enum {\r
112 PC_ANSI = 0,\r
113 VT_100,\r
114 VT_100_PLUS,\r
115 VT_UTF8\r
116} TYPE_OF_TERMINAL;\r
117\r
118typedef enum {\r
119 COM1 = 0,\r
120 COM2,\r
121 UNKNOW_COM\r
122} TYPE_OF_COM;\r
123\r
124typedef enum {\r
125 CONIN = 0,\r
126 CONOUT,\r
127 CONERR,\r
128 UNKNOWN_CON\r
129} TYPE_OF_CON;\r
130\r
131typedef enum {\r
132 BAUDRATE = 0,\r
133 DATABITS,\r
134 PARITY,\r
135 STOPBITS,\r
136 UNKNOW_ATTR\r
137} TYPE_OF_ATTRIBUTE;\r
138\r
139typedef enum {\r
140 MANNER_GOTO = 0,\r
141 MANNER_CHECK,\r
142 MANNER_ONEOF,\r
143 MANNER_USER_DEFINE\r
144} TYPE_OF_UPATE_MANNER;\r
145\r
146typedef enum {\r
147 INACTIVE_STATE = 0,\r
148 BOOT_FROM_FILE_STATE,\r
149 ADD_BOOT_OPTION_STATE,\r
150 ADD_DRIVER_OPTION_STATE,\r
151 UNKNOWN_STATE\r
152} FILE_EXPLORER_STATE;\r
153\r
154typedef enum {\r
155 FILE_SYSTEM,\r
156 DIRECTORY,\r
157 UNKNOWN_CONTEXT\r
158} FILE_EXPLORER_DISPLAY_CONTEXT;\r
159\r
160//\r
161// All of the signatures that will be used in list structure\r
162//\r
5bd4f5fa 163#define BM_MENU_OPTION_SIGNATURE EFI_SIGNATURE_32 ('m', 'e', 'n', 'u')\r
164#define BM_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('l', 'o', 'a', 'd')\r
165#define BM_CONSOLE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('c', 'n', 's', 'l')\r
166#define BM_FILE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('f', 'i', 'l', 'e')\r
167#define BM_HANDLE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('h', 'n', 'd', 'l')\r
168#define BM_TERMINAL_OPTION_SIGNATURE EFI_SIGNATURE_32 ('t', 'r', 'm', 'l')\r
169#define BM_MENU_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('e', 'n', 't', 'r')\r
93e3992d 170\r
171#define BM_LOAD_CONTEXT_SELECT 0x0\r
172#define BM_CONSOLE_CONTEXT_SELECT 0x1\r
173#define BM_FILE_CONTEXT_SELECT 0x2\r
174#define BM_HANDLE_CONTEXT_SELECT 0x3\r
175#define BM_TERMINAL_CONTEXT_SELECT 0x5\r
176\r
177#define BM_CONSOLE_IN_CONTEXT_SELECT 0x6\r
178#define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7\r
179#define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8\r
180#define BM_LEGACY_DEV_CONTEXT_SELECT 0x9\r
181\r
182//\r
183// Buffer size for update data\r
184//\r
185#define UPDATE_DATA_SIZE 0x100000\r
186\r
187//\r
188// Namespace of callback keys used in display and file system navigation\r
189//\r
190#define MAX_BBS_OFFSET 0xE000\r
191#define NET_OPTION_OFFSET 0xD800\r
192#define BEV_OPTION_OFFSET 0xD000\r
193#define FD_OPTION_OFFSET 0xC000\r
194#define HD_OPTION_OFFSET 0xB000\r
195#define CD_OPTION_OFFSET 0xA000\r
196#define FILE_OPTION_OFFSET 0x8000\r
197#define FILE_OPTION_MASK 0x7FFF\r
198#define HANDLE_OPTION_OFFSET 0x7000\r
199#define CONSOLE_OPTION_OFFSET 0x6000\r
200#define TERMINAL_OPTION_OFFSET 0x5000\r
201#define CONFIG_OPTION_OFFSET 0x1200\r
202#define KEY_VALUE_OFFSET 0x1100\r
203#define FORM_ID_OFFSET 0x1000\r
204\r
205//\r
206// VarOffset that will be used to create question\r
207// all these values are computed from the structure\r
208// defined below\r
209//\r
210#define VAR_OFFSET(Field) ((UINT16) ((UINTN) &(((BMM_FAKE_NV_DATA *) 0)->Field)))\r
211\r
212//\r
213// Question Id of Zero is invalid, so add an offset to it\r
214//\r
215#define QUESTION_ID(Field) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)\r
216\r
217#define BOOT_TIME_OUT_VAR_OFFSET VAR_OFFSET (BootTimeOut)\r
218#define BOOT_NEXT_VAR_OFFSET VAR_OFFSET (BootNext)\r
219#define COM1_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM1BaudRate)\r
220#define COM1_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM1DataRate)\r
221#define COM1_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM1StopBits)\r
222#define COM1_PARITY_VAR_OFFSET VAR_OFFSET (COM1Parity)\r
223#define COM1_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)\r
224#define COM2_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM2BaudRate)\r
225#define COM2_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM2DataRate)\r
226#define COM2_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM2StopBits)\r
227#define COM2_PARITY_VAR_OFFSET VAR_OFFSET (COM2Parity)\r
228#define COM2_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)\r
229#define DRV_ADD_HANDLE_DESC_VAR_OFFSET VAR_OFFSET (DriverAddHandleDesc)\r
230#define DRV_ADD_ACTIVE_VAR_OFFSET VAR_OFFSET (DriverAddActive)\r
231#define DRV_ADD_RECON_VAR_OFFSET VAR_OFFSET (DriverAddForceReconnect)\r
232#define CON_IN_COM1_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM1)\r
233#define CON_IN_COM2_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM2)\r
234#define CON_OUT_COM1_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM1)\r
235#define CON_OUT_COM2_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM2)\r
236#define CON_ERR_COM1_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM1)\r
237#define CON_ERR_COM2_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM2)\r
238#define CON_MODE_VAR_OFFSET VAR_OFFSET (ConsoleOutMode)\r
239#define CON_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleCheck)\r
240#define OPTION_ORDER_VAR_OFFSET VAR_OFFSET (OptionOrder)\r
241#define DRIVER_OPTION_ORDER_VAR_OFFSET VAR_OFFSET (DriverOptionToBeDeleted)\r
242#define BOOT_OPTION_DEL_VAR_OFFSET VAR_OFFSET (BootOptionDel)\r
243#define DRIVER_OPTION_DEL_VAR_OFFSET VAR_OFFSET (DriverOptionDel)\r
244#define DRIVER_ADD_OPTION_VAR_OFFSET VAR_OFFSET (DriverAddHandleOptionalData)\r
245#define COM_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COMBaudRate)\r
246#define COM_DATA_RATE_VAR_OFFSET VAR_OFFSET (COMDataRate)\r
247#define COM_STOP_BITS_VAR_OFFSET VAR_OFFSET (COMStopBits)\r
248#define COM_PARITY_VAR_OFFSET VAR_OFFSET (COMParity)\r
249#define COM_TERMINAL_VAR_OFFSET VAR_OFFSET (COMTerminalType)\r
250#define LEGACY_FD_VAR_OFFSET VAR_OFFSET (LegacyFD)\r
251#define LEGACY_HD_VAR_OFFSET VAR_OFFSET (LegacyHD)\r
252#define LEGACY_CD_VAR_OFFSET VAR_OFFSET (LegacyCD)\r
253#define LEGACY_NET_VAR_OFFSET VAR_OFFSET (LegacyNET)\r
254#define LEGACY_BEV_VAR_OFFSET VAR_OFFSET (LegacyBEV)\r
255\r
256#define BOOT_TIME_OUT_QUESTION_ID QUESTION_ID (BootTimeOut)\r
257#define BOOT_NEXT_QUESTION_ID QUESTION_ID (BootNext)\r
258#define COM1_BAUD_RATE_QUESTION_ID QUESTION_ID (COM1BaudRate)\r
259#define COM1_DATA_RATE_QUESTION_ID QUESTION_ID (COM1DataRate)\r
260#define COM1_STOP_BITS_QUESTION_ID QUESTION_ID (COM1StopBits)\r
261#define COM1_PARITY_QUESTION_ID QUESTION_ID (COM1Parity)\r
262#define COM1_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)\r
263#define COM2_BAUD_RATE_QUESTION_ID QUESTION_ID (COM2BaudRate)\r
264#define COM2_DATA_RATE_QUESTION_ID QUESTION_ID (COM2DataRate)\r
265#define COM2_STOP_BITS_QUESTION_ID QUESTION_ID (COM2StopBits)\r
266#define COM2_PARITY_QUESTION_ID QUESTION_ID (COM2Parity)\r
267#define COM2_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)\r
268#define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc)\r
269#define DRV_ADD_ACTIVE_QUESTION_ID QUESTION_ID (DriverAddActive)\r
270#define DRV_ADD_RECON_QUESTION_ID QUESTION_ID (DriverAddForceReconnect)\r
271#define CON_IN_COM1_QUESTION_ID QUESTION_ID (ConsoleInputCOM1)\r
272#define CON_IN_COM2_QUESTION_ID QUESTION_ID (ConsoleInputCOM2)\r
273#define CON_OUT_COM1_QUESTION_ID QUESTION_ID (ConsoleOutputCOM1)\r
274#define CON_OUT_COM2_QUESTION_ID QUESTION_ID (ConsoleOutputCOM2)\r
275#define CON_ERR_COM1_QUESTION_ID QUESTION_ID (ConsoleErrorCOM1)\r
276#define CON_ERR_COM2_QUESTION_ID QUESTION_ID (ConsoleErrorCOM2)\r
277#define CON_MODE_QUESTION_ID QUESTION_ID (ConsoleOutMode)\r
278#define CON_DEVICE_QUESTION_ID QUESTION_ID (ConsoleCheck)\r
279#define OPTION_ORDER_QUESTION_ID QUESTION_ID (OptionOrder)\r
280#define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionToBeDeleted)\r
281#define BOOT_OPTION_DEL_QUESTION_ID QUESTION_ID (BootOptionDel)\r
282#define DRIVER_OPTION_DEL_QUESTION_ID QUESTION_ID (DriverOptionDel)\r
283#define DRIVER_ADD_OPTION_QUESTION_ID QUESTION_ID (DriverAddHandleOptionalData)\r
284#define COM_BAUD_RATE_QUESTION_ID QUESTION_ID (COMBaudRate)\r
285#define COM_DATA_RATE_QUESTION_ID QUESTION_ID (COMDataRate)\r
286#define COM_STOP_BITS_QUESTION_ID QUESTION_ID (COMStopBits)\r
287#define COM_PARITY_QUESTION_ID QUESTION_ID (COMParity)\r
288#define COM_TERMINAL_QUESTION_ID QUESTION_ID (COMTerminalType)\r
289#define LEGACY_FD_QUESTION_ID QUESTION_ID (LegacyFD)\r
290#define LEGACY_HD_QUESTION_ID QUESTION_ID (LegacyHD)\r
291#define LEGACY_CD_QUESTION_ID QUESTION_ID (LegacyCD)\r
292#define LEGACY_NET_QUESTION_ID QUESTION_ID (LegacyNET)\r
293#define LEGACY_BEV_QUESTION_ID QUESTION_ID (LegacyBEV)\r
294\r
295#define STRING_DEPOSITORY_NUMBER 8\r
296\r
297//\r
298// #pragma pack(1)\r
299//\r
300// Serial Ports attributes, first one is the value for\r
301// return from callback function, stringtoken is used to\r
302// display the value properly\r
303//\r
304typedef struct {\r
305 UINTN Value;\r
306 UINT16 StringToken;\r
307} COM_ATTR;\r
308\r
9b8a6c2e 309#pragma pack(1)\r
93e3992d 310typedef struct {\r
311 BBS_TYPE BbsType;\r
312 //\r
313 // Length = sizeof (UINT16) + SIZEOF (Data)\r
314 //\r
315 UINT16 Length;\r
316 UINT16 *Data;\r
317} BM_LEGACY_DEV_ORDER_CONTEXT;\r
9b8a6c2e 318#pragma pack()\r
93e3992d 319\r
320typedef struct {\r
321 UINT64 BaudRate;\r
322 UINT8 DataBits;\r
323 UINT8 Parity;\r
324 UINT8 StopBits;\r
325\r
326 UINT8 BaudRateIndex;\r
327 UINT8 DataBitsIndex;\r
328 UINT8 ParityIndex;\r
329 UINT8 StopBitsIndex;\r
330\r
331 UINT8 IsConIn;\r
332 UINT8 IsConOut;\r
333 UINT8 IsStdErr;\r
334 UINT8 TerminalType;\r
335\r
336 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
337} BM_TERMINAL_CONTEXT;\r
338\r
339typedef struct {\r
340 BOOLEAN IsBootNext;\r
341 BOOLEAN LoadOptionModified;\r
342 BOOLEAN Deleted;\r
343\r
344 BOOLEAN IsLegacy;\r
345 BOOLEAN IsActive;\r
346 BOOLEAN ForceReconnect;\r
347 UINTN OptionalDataSize;\r
348\r
349 UINTN LoadOptionSize;\r
350 UINT8 *LoadOption;\r
351\r
352 UINT32 Attributes;\r
353 UINT16 FilePathListLength;\r
354 UINT16 *Description;\r
355 EFI_DEVICE_PATH_PROTOCOL *FilePathList;\r
356 UINT8 *OptionalData;\r
357\r
358 UINT16 BbsIndex;\r
359} BM_LOAD_CONTEXT;\r
360\r
361typedef struct {\r
362 BBS_TABLE *BbsTable;\r
363 UINTN Index;\r
364 UINTN BbsCount;\r
365 UINT16 *Description;\r
366} BM_LEGACY_DEVICE_CONTEXT;\r
367\r
368typedef struct {\r
369\r
370 BOOLEAN IsActive;\r
371\r
372 BOOLEAN IsTerminal;\r
373\r
374 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
375} BM_CONSOLE_CONTEXT;\r
376\r
377typedef struct {\r
378 UINTN Column;\r
379 UINTN Row;\r
380} CONSOLE_OUT_MODE;\r
381\r
382typedef struct {\r
383 EFI_HANDLE Handle;\r
384 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
385 EFI_FILE_HANDLE FHandle;\r
386 UINT16 *FileName;\r
387 EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *Info;\r
388\r
389 BOOLEAN IsRoot;\r
390 BOOLEAN IsDir;\r
391 BOOLEAN IsRemovableMedia;\r
392 BOOLEAN IsLoadFile;\r
393 BOOLEAN IsBootLegacy;\r
394} BM_FILE_CONTEXT;\r
395\r
396typedef struct {\r
397 EFI_HANDLE Handle;\r
398 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
399} BM_HANDLE_CONTEXT;\r
400\r
401typedef struct {\r
402 UINTN Signature;\r
403 LIST_ENTRY Head;\r
404 UINTN MenuNumber;\r
405} BM_MENU_OPTION;\r
406\r
407typedef struct {\r
408 UINTN Signature;\r
409 LIST_ENTRY Link;\r
410 UINTN OptionNumber;\r
411 UINT16 *DisplayString;\r
412 UINT16 *HelpString;\r
413 EFI_STRING_ID DisplayStringToken;\r
414 EFI_STRING_ID HelpStringToken;\r
415 UINTN ContextSelection;\r
416 VOID *VariableContext;\r
417} BM_MENU_ENTRY;\r
418\r
419typedef struct {\r
420 //\r
421 // Shared callback data.\r
422 //\r
423 UINTN Signature;\r
424\r
425 BM_MENU_ENTRY *MenuEntry;\r
426 BM_HANDLE_CONTEXT *HandleContext;\r
427 BM_FILE_CONTEXT *FileContext;\r
428 BM_LOAD_CONTEXT *LoadContext;\r
429 BM_TERMINAL_CONTEXT *TerminalContext;\r
430 UINTN CurrentTerminal;\r
9b8a6c2e 431 BBS_TYPE BbsType;\r
93e3992d 432\r
433 //\r
434 // BMM main formset callback data.\r
435 //\r
436 EFI_HII_HANDLE BmmHiiHandle;\r
437 EFI_HANDLE BmmDriverHandle;\r
438 EFI_HII_CONFIG_ACCESS_PROTOCOL BmmConfigAccess;\r
439 EFI_FORM_ID BmmCurrentPageId;\r
440 EFI_FORM_ID BmmPreviousPageId;\r
441 BOOLEAN BmmAskSaveOrNot;\r
442 BMM_FAKE_NV_DATA BmmFakeNvData;\r
443 BMM_FAKE_NV_DATA BmmOldFakeNVData;\r
444\r
445 //\r
446 // File explorer formset callback data.\r
447 //\r
448 EFI_HII_HANDLE FeHiiHandle;\r
449 EFI_HANDLE FeDriverHandle;\r
450 EFI_HII_CONFIG_ACCESS_PROTOCOL FeConfigAccess;\r
451 FILE_EXPLORER_STATE FeCurrentState;\r
452 FILE_EXPLORER_DISPLAY_CONTEXT FeDisplayContext;\r
453 FILE_EXPLORER_NV_DATA FeFakeNvData;\r
454} BMM_CALLBACK_DATA;\r
455\r
456typedef struct _STRING_LIST_NODE {\r
457 EFI_STRING_ID StringToken;\r
458 struct _STRING_LIST_NODE *Next;\r
459} STRING_LIST_NODE;\r
460\r
461typedef struct _STRING_DEPOSITORY {\r
462 UINTN TotalNodeNumber;\r
463 STRING_LIST_NODE *CurrentNode;\r
464 STRING_LIST_NODE *ListHead;\r
465} STRING_DEPOSITORY;\r
466\r
467//\r
468// #pragma pack()\r
469//\r
470// For initializing File System menu\r
471//\r
472EFI_STATUS\r
473BOpt_FindFileSystem (\r
474 IN BMM_CALLBACK_DATA *CallbackData\r
475 )\r
476;\r
477\r
478//\r
479// For cleaning up File System menu\r
480//\r
481VOID\r
482BOpt_FreeFileSystem (\r
483 VOID\r
484 )\r
485;\r
486\r
487//\r
488// For initializing File Navigation menu\r
489//\r
490EFI_STATUS\r
491BOpt_FindFiles (\r
492 IN BMM_CALLBACK_DATA *CallbackData,\r
493 IN BM_MENU_ENTRY *MenuEntry\r
494 )\r
495;\r
496\r
497//\r
498// For cleaning up File Navigation menu\r
499//\r
500VOID\r
501BOpt_FreeFiles (\r
502 VOID\r
503 )\r
504;\r
505\r
506//\r
507// For Initializing handle navigation menu\r
508//\r
509EFI_STATUS\r
510BOpt_FindDrivers (\r
511 VOID\r
512 )\r
513;\r
514\r
515//\r
516// For Cleaning up handle navigation menu\r
517//\r
518VOID\r
519BOpt_FreeDrivers(VOID);\r
520\r
521//\r
522// For initializing Boot Option menu\r
523//\r
524EFI_STATUS\r
525BOpt_GetBootOptions (\r
526 IN BMM_CALLBACK_DATA *CallbackData\r
527 );\r
528\r
529//\r
530// For Initializing Driver option menu\r
531//\r
532EFI_STATUS\r
533BOpt_GetDriverOptions (\r
534 IN BMM_CALLBACK_DATA *CallbackData\r
535 );\r
536\r
537//\r
538// For Cleaning up boot option menu\r
539//\r
540VOID\r
541BOpt_FreeBootOptions (VOID);\r
542\r
543//\r
544// For cleaning up driver option menu\r
545//\r
546VOID\r
547BOpt_FreeDriverOptions(VOID);\r
548\r
549//\r
550// For Initializing HD/FD/CD/NET/BEV option menu\r
551//\r
552EFI_STATUS\r
553BOpt_GetLegacyOptions(VOID);\r
554\r
555//\r
556// For cleaning up driver option menu\r
557//\r
558VOID\r
559BOpt_FreeLegacyOptions(VOID);\r
560\r
561//\r
562// this function is used to take place of all other free menu actions\r
563//\r
564VOID\r
565BOpt_FreeMenu (\r
566 BM_MENU_OPTION *FreeMenu\r
567 );\r
568\r
569\r
570//\r
571// Following are the helper functions used\r
572//\r
573CHAR16 *\r
574BOpt_AppendFileName (\r
575 IN CHAR16 *Str1,\r
576 IN CHAR16 *Str2\r
577 );\r
578\r
579BOOLEAN\r
580BOpt_IsEfiImageName (\r
581 IN UINT16 *FileName\r
582 );\r
583\r
584BOOLEAN\r
585BOpt_IsEfiApp (\r
586 IN EFI_FILE_HANDLE Dir,\r
587 IN UINT16 *FileName\r
588 );\r
589\r
590//\r
591// Get current unused boot option number\r
592//\r
593UINT16\r
594BOpt_GetBootOptionNumber (VOID);\r
595\r
596//\r
597// Get current unused driver option number\r
598//\r
599UINT16\r
600BOpt_GetDriverOptionNumber (VOID);\r
601\r
602BM_MENU_ENTRY *\r
603BOpt_CreateMenuEntry (\r
604 UINTN MenuType\r
605 );\r
606\r
607VOID\r
608BOpt_DestroyMenuEntry (\r
609 BM_MENU_ENTRY *MenuEntry\r
610 );\r
611\r
612BM_MENU_ENTRY *\r
613BOpt_GetMenuEntry (\r
614 BM_MENU_OPTION *MenuOption,\r
615 UINTN MenuNumber\r
616 );\r
617\r
618//\r
619// a helper function used to free pool type memory\r
620//\r
621VOID\r
622SafeFreePool (\r
623 IN VOID *Buffer\r
624 );\r
625\r
626//\r
627// Locate all serial io devices for console\r
628//\r
629EFI_STATUS\r
630LocateSerialIo (VOID);\r
631\r
632//\r
633// Initializing Console menu\r
634//\r
635EFI_STATUS\r
636GetAllConsoles(VOID);\r
637\r
638//\r
639// Get current mode information\r
640//\r
641VOID\r
642GetConsoleOutMode (\r
643 IN BMM_CALLBACK_DATA *CallbackData\r
644 );\r
645\r
646//\r
647// Cleaning up console menu\r
648//\r
649EFI_STATUS\r
650FreeAllConsoles(VOID);\r
651\r
652VOID\r
653ChangeVariableDevicePath (\r
654 EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
655);\r
656\r
657EFI_STATUS\r
658ChangeTerminalDevicePath (\r
659 EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
660 BOOLEAN ChangeTerminal\r
661);\r
662//\r
663// Variable operation by menu selection\r
664//\r
665EFI_STATUS\r
666Var_UpdateBootOption (\r
667 IN BMM_CALLBACK_DATA *CallbackData,\r
668 IN FILE_EXPLORER_NV_DATA *NvRamMap\r
669 );\r
670\r
671EFI_STATUS\r
672Var_DelBootOption (VOID);\r
673\r
674EFI_STATUS\r
675Var_ChangeBootOrder (VOID);\r
676\r
677EFI_STATUS\r
678Var_UpdateDriverOption (\r
679 IN BMM_CALLBACK_DATA *CallbackData,\r
680 IN EFI_HII_HANDLE HiiHandle,\r
681 IN UINT16 *DescriptionData,\r
682 IN UINT16 *OptionalData,\r
683 IN UINT8 ForceReconnect\r
684 );\r
685\r
686EFI_STATUS\r
687Var_DelDriverOption (VOID);\r
688\r
689EFI_STATUS\r
690Var_ChangeDriverOrder (VOID);\r
691\r
692EFI_STATUS\r
693Var_UpdateConsoleInpOption (VOID);\r
694\r
695EFI_STATUS\r
696Var_UpdateConsoleOutOption (VOID);\r
697\r
698EFI_STATUS\r
699Var_UpdateErrorOutOption (VOID);\r
700\r
701VOID\r
702Var_UpdateAllConsoleOption (VOID);\r
703\r
704EFI_STATUS\r
705Var_UpdateBootNext (\r
706 IN BMM_CALLBACK_DATA *CallbackData\r
707 );\r
708\r
709EFI_STATUS\r
710Var_UpdateBootOrder (\r
711 IN BMM_CALLBACK_DATA *CallbackData\r
712 );\r
713\r
714EFI_STATUS\r
715Var_UpdateDriverOrder (\r
716 IN BMM_CALLBACK_DATA *CallbackData\r
717 );\r
718\r
719EFI_STATUS\r
720Var_UpdateBBSOption (\r
721 IN BMM_CALLBACK_DATA *CallbackData\r
722 );\r
723\r
724EFI_STATUS\r
725Var_UpdateConMode (\r
726 IN BMM_CALLBACK_DATA *CallbackData\r
727 );\r
728\r
729//\r
730// Following are page create and refresh functions\r
731//\r
732VOID\r
733RefreshUpdateData (\r
734 VOID\r
735 );\r
736\r
737VOID\r
738CleanUpPage (\r
739 IN UINT16 LabelId,\r
740 IN BMM_CALLBACK_DATA *CallbackData\r
741 );\r
742\r
743EFI_STATUS\r
744UpdatePage (\r
745 IN BMM_CALLBACK_DATA *CallbackData,\r
746 IN BM_MENU_OPTION *UpdatingMenu,\r
747 IN UINT16 UpdatingPage,\r
748 IN UINT16 UpdatingManner,\r
749 IN UINT16 QuestionIdStart,\r
750 IN UINT16 GotoForm,\r
751 IN UINT16 GotoAlternateForm,\r
752 IN EFI_STRING_ID DisplayTokenStart,\r
753 IN EFI_STRING_ID HelpTokenStart,\r
754 IN UINT16 KeyValueStart\r
755 );\r
756\r
757VOID\r
758UpdateBootAddPage (\r
759 IN BMM_CALLBACK_DATA *CallbackData\r
760 );\r
761\r
762VOID\r
763UpdateBootDelPage (\r
764 IN BMM_CALLBACK_DATA *CallbackData\r
765 );\r
766\r
767VOID\r
768UpdateDrvAddFilePage (\r
769 IN BMM_CALLBACK_DATA *CallbackData\r
770 );\r
771\r
772VOID\r
773UpdateDrvAddHandlePage (\r
774 IN BMM_CALLBACK_DATA *CallbackData\r
775 );\r
776\r
777VOID\r
778UpdateDrvDelPage (\r
779 IN BMM_CALLBACK_DATA *CallbackData\r
780 );\r
781\r
782VOID\r
783UpdateDriverAddHandleDescPage (\r
784 IN BMM_CALLBACK_DATA *CallbackData\r
785 );\r
786\r
787VOID\r
788UpdateBootTimeOut (\r
789 IN BMM_CALLBACK_DATA *CallbackData\r
790 );\r
791\r
792VOID\r
793UpdateConInPage (\r
794 IN BMM_CALLBACK_DATA *CallbackData\r
795 );\r
796\r
797VOID\r
798UpdateConOutPage (\r
799 IN BMM_CALLBACK_DATA *CallbackData\r
800 );\r
801\r
802VOID\r
803UpdateStdErrPage (\r
804 IN BMM_CALLBACK_DATA *CallbackData\r
805 );\r
806\r
807VOID\r
808UpdatePageBody (\r
809 IN UINT16 UpdatePageId,\r
810 IN BMM_CALLBACK_DATA *CallbackData\r
811 );\r
812\r
813VOID\r
814UpdateCOM1Page (\r
815 IN BMM_CALLBACK_DATA *CallbackData\r
816 );\r
817\r
818VOID\r
819UpdateCOM2Page (\r
820 IN BMM_CALLBACK_DATA *CallbackData\r
821 );\r
822\r
823VOID\r
824UpdateBootOrderPage (\r
825 IN BMM_CALLBACK_DATA *CallbackData\r
826 );\r
827\r
828VOID\r
829UpdateDriverOrderPage (\r
830 IN BMM_CALLBACK_DATA *CallbackData\r
831 );\r
832\r
833VOID\r
834UpdateBootNextPage (\r
835 IN BMM_CALLBACK_DATA *CallbackData\r
836 );\r
837\r
838VOID\r
839UpdateTimeOutPage (\r
840 IN BMM_CALLBACK_DATA *CallbackData\r
841 );\r
842\r
843VOID\r
844UpdateTerminalPage (\r
845 IN BMM_CALLBACK_DATA *CallbackData\r
846 );\r
847\r
848VOID\r
849UpdateConModePage (\r
850 IN BMM_CALLBACK_DATA *CallbackData\r
851 );\r
852\r
853VOID\r
854UpdateConCOMPage (\r
855 IN BMM_CALLBACK_DATA *CallbackData\r
856 );\r
857\r
858VOID\r
859UpdateSetLegacyDeviceOrderPage (\r
860 IN UINT16 UpdatePageId,\r
861 IN BMM_CALLBACK_DATA *CallbackData\r
862);\r
863\r
864EFI_STATUS\r
865BootLegacy (\r
866 IN UINT16 BbsType,\r
867 IN UINT16 BbsFlag\r
868);\r
869\r
870BM_MENU_ENTRY *\r
871GetCurrentTerminal (\r
872 UINTN TerminalNumber\r
873);\r
874\r
875EFI_FILE_HANDLE\r
876EfiLibOpenRoot (\r
877 IN EFI_HANDLE DeviceHandle\r
878 );\r
879\r
880EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *\r
881EfiLibFileSystemVolumeLabelInfo (\r
882 IN EFI_FILE_HANDLE FHand\r
883 );\r
884\r
885EFI_FILE_INFO *\r
886EfiLibFileInfo (\r
887 IN EFI_FILE_HANDLE FHand\r
888 );\r
889\r
890UINTN\r
891UnicodeToAscii (\r
892 IN CHAR16 *UStr,\r
893 IN UINTN Length,\r
894 OUT CHAR8 *AStr\r
895 );\r
896\r
897CHAR16 *\r
898DevicePathToStr (\r
899 EFI_DEVICE_PATH_PROTOCOL *DevPath\r
900 );\r
901\r
902VOID *\r
903EfiAllocateZeroPool (\r
904 IN UINTN Size\r
905 );\r
906\r
907EFI_STATUS\r
908EfiLibLocateProtocol (\r
909 IN EFI_GUID *ProtocolGuid,\r
910 OUT VOID **Interface\r
911 );\r
912\r
913VOID *\r
914EfiReallocatePool (\r
915 IN VOID *OldPool,\r
916 IN UINTN OldSize,\r
917 IN UINTN NewSize\r
918 );\r
919\r
920CHAR16 *\r
921DevicePathToStr (\r
922 EFI_DEVICE_PATH_PROTOCOL *DevPath\r
923 );\r
924\r
925VOID *\r
926BdsLibGetVariableAndSize (\r
927 IN CHAR16 *Name,\r
928 IN EFI_GUID *VendorGuid,\r
929 OUT UINTN *VarSize\r
930 );\r
931\r
932EFI_STATUS\r
933EfiLibDeleteVariable (\r
934 IN CHAR16 *VarName,\r
935 IN EFI_GUID *VarGuid\r
936 );\r
937\r
938CHAR16 *\r
939EfiStrDuplicate (\r
940 IN CHAR16 *Src\r
941 );\r
942\r
943BOOLEAN\r
944EfiLibMatchDevicePaths (\r
945 IN EFI_DEVICE_PATH_PROTOCOL *Multi,\r
946 IN EFI_DEVICE_PATH_PROTOCOL *Single\r
947 );\r
948\r
949UINTN\r
950EfiDevicePathInstanceCount (\r
951 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
952 );\r
953\r
954EFI_STATUS\r
955CreateMenuStringToken (\r
956 IN BMM_CALLBACK_DATA *CallbackData,\r
957 IN EFI_HII_HANDLE HiiHandle,\r
958 IN BM_MENU_OPTION *MenuOption\r
959 );\r
960\r
961UINT16 *\r
962EfiLibStrFromDatahub (\r
963 IN EFI_DEVICE_PATH_PROTOCOL *DevPath\r
964 );\r
965\r
966VOID *\r
967GetLegacyBootOptionVar (\r
968 IN UINTN DeviceType,\r
969 OUT UINTN *OptionIndex,\r
970 OUT UINTN *OptionSize\r
971 );\r
972\r
973EFI_STATUS\r
974InitializeBM (\r
975 VOID\r
976 );\r
977\r
978EFI_STATUS\r
979BdsStartBootMaint (\r
980 VOID\r
981 );\r
982\r
983VOID\r
984InitializeStringDepository (VOID);\r
985\r
986EFI_STRING_ID\r
987GetStringTokenFromDepository (\r
988 IN BMM_CALLBACK_DATA *CallbackData,\r
989 IN STRING_DEPOSITORY *StringDepository\r
990 );\r
991\r
992VOID\r
993ReclaimStringDepository (\r
994 VOID\r
995 );\r
996\r
997VOID\r
998CleanUpStringDepository (\r
999 VOID\r
1000 );\r
1001\r
1002EFI_STATUS\r
1003ApplyChangeHandler (\r
1004 IN BMM_CALLBACK_DATA *Private,\r
1005 IN BMM_FAKE_NV_DATA *CurrentFakeNVMap,\r
1006 IN EFI_FORM_ID FormId\r
1007 );\r
1008\r
1009VOID\r
1010DiscardChangeHandler (\r
1011 IN BMM_CALLBACK_DATA *Private,\r
1012 IN BMM_FAKE_NV_DATA *CurrentFakeNVMap\r
1013 );\r
1014\r
1015VOID\r
1016UpdatePageId (\r
1017 BMM_CALLBACK_DATA *Private,\r
1018 UINT16 NewPageId\r
1019 );\r
1020\r
1021EFI_STATUS\r
1022BootThisFile (\r
1023 IN BM_FILE_CONTEXT *FileContext\r
1024 );\r
1025\r
1026BOOLEAN\r
1027UpdateFileExplorer (\r
1028 IN BMM_CALLBACK_DATA *CallbackData,\r
1029 IN UINT16 KeyValue\r
1030 );\r
1031\r
1032EFI_STATUS\r
1033EFIAPI\r
1034FileExplorerCallback (\r
1035 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,\r
1036 IN EFI_BROWSER_ACTION Action,\r
1037 IN EFI_QUESTION_ID QuestionId,\r
1038 IN UINT8 Type,\r
1039 IN EFI_IFR_TYPE_VALUE *Value,\r
1040 OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest\r
1041 );\r
1042\r
1043EFI_STATUS\r
1044FormSetDispatcher (\r
1045 IN BMM_CALLBACK_DATA *CallbackData\r
1046 );\r
1047\r
fd6a62f3 1048VOID *\r
1049EfiLibGetVariable (\r
1050 IN CHAR16 *Name,\r
1051 IN EFI_GUID *VendorGuid\r
1052 );\r
1053\r
93e3992d 1054//\r
1055// Global variable in this program (defined in data.c)\r
1056//\r
1057extern BM_MENU_OPTION BootOptionMenu;\r
1058extern BM_MENU_OPTION DriverOptionMenu;\r
1059extern BM_MENU_OPTION FsOptionMenu;\r
1060extern BM_MENU_OPTION ConsoleInpMenu;\r
1061extern BM_MENU_OPTION ConsoleOutMenu;\r
1062extern BM_MENU_OPTION ConsoleErrMenu;\r
1063extern BM_MENU_OPTION DirectoryMenu;\r
1064extern BM_MENU_OPTION DriverMenu;\r
1065extern BM_MENU_OPTION TerminalMenu;\r
1066extern BM_MENU_OPTION LegacyFDMenu;\r
1067extern BM_MENU_OPTION LegacyHDMenu;\r
1068extern BM_MENU_OPTION LegacyCDMenu;\r
1069extern BM_MENU_OPTION LegacyNETMenu;\r
1070extern BM_MENU_OPTION LegacyBEVMenu;\r
1071extern UINT16 TerminalType[];\r
1072extern COM_ATTR BaudRateList[19];\r
1073extern COM_ATTR DataBitsList[4];\r
1074extern COM_ATTR ParityList[5];\r
1075extern COM_ATTR StopBitsList[3];\r
1076extern EFI_GUID Guid[4];\r
1077extern EFI_HII_UPDATE_DATA gUpdateData;\r
1078extern STRING_DEPOSITORY *FileOptionStrDepository;\r
1079extern STRING_DEPOSITORY *ConsoleOptionStrDepository;\r
1080extern STRING_DEPOSITORY *BootOptionStrDepository;\r
1081extern STRING_DEPOSITORY *BootOptionHelpStrDepository;\r
1082extern STRING_DEPOSITORY *DriverOptionStrDepository;\r
1083extern STRING_DEPOSITORY *DriverOptionHelpStrDepository;\r
1084extern STRING_DEPOSITORY *TerminalStrDepository;\r
1085extern EFI_DEVICE_PATH_PROTOCOL EndDevicePath[];\r
1086extern EFI_GUID EfiLegacyDevOrderGuid;\r
1087\r
1088#endif\r