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