Changeset 99404 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c
- Timestamp:
- Apr 14, 2023 3:17:44 PM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 156854
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-145445 /vendor/edk2/current 103735-103757,103769-103776,129194-156846
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c
r80721 r99404 30 30 // Create Hii Extend Label OpCode as the start opcode 31 31 // 32 mStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode (mStartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));32 mStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode (mStartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL)); 33 33 mStartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; 34 34 … … 36 36 // Create Hii Extend Label OpCode as the end opcode 37 37 // 38 mEndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode (mEndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));38 mEndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode (mEndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL)); 39 39 mEndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; 40 40 mEndLabel->Number = LABEL_END; … … 65 65 // Create Hii Extend Label OpCode as the start opcode 66 66 // 67 mStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode (mStartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));67 mStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode (mStartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL)); 68 68 mStartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; 69 70 69 } 71 70 … … 79 78 VOID 80 79 UpdatePageStart ( 81 IN BMM_CALLBACK_DATA 80 IN BMM_CALLBACK_DATA *CallbackData 82 81 ) 83 82 { … … 110 109 VOID 111 110 UpdatePageEnd ( 112 IN BMM_CALLBACK_DATA 111 IN BMM_CALLBACK_DATA *CallbackData 113 112 ) 114 113 { … … 165 164 VOID 166 165 CleanUpPage ( 167 IN UINT16 168 IN BMM_CALLBACK_DATA 166 IN UINT16 LabelId, 167 IN BMM_CALLBACK_DATA *CallbackData 169 168 ) 170 169 { … … 192 191 VOID 193 192 UpdateConCOMPage ( 194 IN BMM_CALLBACK_DATA 195 ) 196 { 197 BM_MENU_ENTRY 198 UINT16 193 IN BMM_CALLBACK_DATA *CallbackData 194 ) 195 { 196 BM_MENU_ENTRY *NewMenuEntry; 197 UINT16 Index; 199 198 200 199 CallbackData->BmmAskSaveOrNot = TRUE; … … 211 210 STRING_TOKEN (STR_NULL_STRING), 212 211 EFI_IFR_FLAG_CALLBACK, 213 (UINT16) 212 (UINT16)(TERMINAL_OPTION_OFFSET + Index) 214 213 ); 215 214 } … … 217 216 UpdatePageEnd (CallbackData); 218 217 } 219 220 218 221 219 /** … … 228 226 VOID 229 227 UpdateBootDelPage ( 230 IN BMM_CALLBACK_DATA 231 ) 232 { 233 BM_MENU_ENTRY *NewMenuEntry;234 BM_LOAD_CONTEXT *NewLoadContext;235 UINT16 Index;228 IN BMM_CALLBACK_DATA *CallbackData 229 ) 230 { 231 BM_MENU_ENTRY *NewMenuEntry; 232 BM_LOAD_CONTEXT *NewLoadContext; 233 UINT16 Index; 236 234 237 235 CallbackData->BmmAskSaveOrNot = TRUE; … … 241 239 ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.BootOptionDel) / sizeof (CallbackData->BmmFakeNvData.BootOptionDel[0]))); 242 240 for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) { 243 NewMenuEntry 244 NewLoadContext = (BM_LOAD_CONTEXT *)NewMenuEntry->VariableContext;241 NewMenuEntry = BOpt_GetMenuEntry (&BootOptionMenu, Index); 242 NewLoadContext = (BM_LOAD_CONTEXT *)NewMenuEntry->VariableContext; 245 243 if (NewLoadContext->IsLegacy) { 246 244 continue; … … 256 254 // through HiiSetBrowserData function. 257 255 // 258 CallbackData->BmmFakeNvData.BootOptionDel[Index] = FALSE;256 CallbackData->BmmFakeNvData.BootOptionDel[Index] = FALSE; 259 257 CallbackData->BmmOldFakeNVData.BootOptionDel[Index] = FALSE; 260 258 } … … 262 260 HiiCreateCheckBoxOpCode ( 263 261 mStartOpCodeHandle, 264 (EFI_QUESTION_ID) 262 (EFI_QUESTION_ID)(BOOT_OPTION_DEL_QUESTION_ID + Index), 265 263 VARSTORE_ID_BOOT_MAINT, 266 (UINT16) 264 (UINT16)(BOOT_OPTION_DEL_VAR_OFFSET + Index), 267 265 NewMenuEntry->DisplayStringToken, 268 266 NewMenuEntry->HelpStringToken, … … 272 270 ); 273 271 } 272 274 273 UpdatePageEnd (CallbackData); 275 274 } … … 283 282 VOID 284 283 UpdateDrvAddHandlePage ( 285 IN BMM_CALLBACK_DATA 286 ) 287 { 288 BM_MENU_ENTRY *NewMenuEntry;289 UINT16 Index;284 IN BMM_CALLBACK_DATA *CallbackData 285 ) 286 { 287 BM_MENU_ENTRY *NewMenuEntry; 288 UINT16 Index; 290 289 291 290 CallbackData->BmmAskSaveOrNot = FALSE; … … 302 301 STRING_TOKEN (STR_NULL_STRING), 303 302 EFI_IFR_FLAG_CALLBACK, 304 (UINT16) 303 (UINT16)(HANDLE_OPTION_OFFSET + Index) 305 304 ); 306 305 } … … 318 317 VOID 319 318 UpdateDrvDelPage ( 320 IN BMM_CALLBACK_DATA 321 ) 322 { 323 BM_MENU_ENTRY *NewMenuEntry;324 BM_LOAD_CONTEXT *NewLoadContext;325 UINT16 Index;319 IN BMM_CALLBACK_DATA *CallbackData 320 ) 321 { 322 BM_MENU_ENTRY *NewMenuEntry; 323 BM_LOAD_CONTEXT *NewLoadContext; 324 UINT16 Index; 326 325 327 326 CallbackData->BmmAskSaveOrNot = TRUE; … … 331 330 ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.DriverOptionDel) / sizeof (CallbackData->BmmFakeNvData.DriverOptionDel[0]))); 332 331 for (Index = 0; Index < DriverOptionMenu.MenuNumber; Index++) { 333 NewMenuEntry 334 335 NewLoadContext = (BM_LOAD_CONTEXT *) 332 NewMenuEntry = BOpt_GetMenuEntry (&DriverOptionMenu, Index); 333 334 NewLoadContext = (BM_LOAD_CONTEXT *)NewMenuEntry->VariableContext; 336 335 NewLoadContext->Deleted = FALSE; 337 336 … … 343 342 // through HiiSetBrowserData function. 344 343 // 345 CallbackData->BmmFakeNvData.DriverOptionDel[Index] = FALSE;344 CallbackData->BmmFakeNvData.DriverOptionDel[Index] = FALSE; 346 345 CallbackData->BmmOldFakeNVData.DriverOptionDel[Index] = FALSE; 347 346 } 347 348 348 HiiCreateCheckBoxOpCode ( 349 349 mStartOpCodeHandle, 350 (EFI_QUESTION_ID) 350 (EFI_QUESTION_ID)(DRIVER_OPTION_DEL_QUESTION_ID + Index), 351 351 VARSTORE_ID_BOOT_MAINT, 352 (UINT16) 352 (UINT16)(DRIVER_OPTION_DEL_VAR_OFFSET + Index), 353 353 NewMenuEntry->DisplayStringToken, 354 354 NewMenuEntry->HelpStringToken, … … 371 371 VOID 372 372 UpdateDriverAddHandleDescPage ( 373 IN BMM_CALLBACK_DATA 374 ) 375 { 376 BM_MENU_ENTRY *NewMenuEntry;377 378 CallbackData->BmmFakeNvData.DriverAddActive 379 CallbackData->BmmFakeNvData.DriverAddForceReconnect 380 CallbackData->BmmAskSaveOrNot 381 NewMenuEntry = CallbackData->MenuEntry;373 IN BMM_CALLBACK_DATA *CallbackData 374 ) 375 { 376 BM_MENU_ENTRY *NewMenuEntry; 377 378 CallbackData->BmmFakeNvData.DriverAddActive = 0x01; 379 CallbackData->BmmFakeNvData.DriverAddForceReconnect = 0x00; 380 CallbackData->BmmAskSaveOrNot = TRUE; 381 NewMenuEntry = CallbackData->MenuEntry; 382 382 383 383 UpdatePageStart (CallbackData); … … 393 393 HiiCreateStringOpCode ( 394 394 mStartOpCodeHandle, 395 (EFI_QUESTION_ID) 395 (EFI_QUESTION_ID)DRV_ADD_HANDLE_DESC_QUESTION_ID, 396 396 VARSTORE_ID_BOOT_MAINT, 397 397 DRV_ADD_HANDLE_DESC_VAR_OFFSET, … … 407 407 HiiCreateCheckBoxOpCode ( 408 408 mStartOpCodeHandle, 409 (EFI_QUESTION_ID) 409 (EFI_QUESTION_ID)DRV_ADD_RECON_QUESTION_ID, 410 410 VARSTORE_ID_BOOT_MAINT, 411 411 DRV_ADD_RECON_VAR_OFFSET, … … 419 419 HiiCreateStringOpCode ( 420 420 mStartOpCodeHandle, 421 (EFI_QUESTION_ID) 421 (EFI_QUESTION_ID)DRIVER_ADD_OPTION_QUESTION_ID, 422 422 VARSTORE_ID_BOOT_MAINT, 423 423 DRIVER_ADD_OPTION_VAR_OFFSET, … … 444 444 VOID 445 445 UpdateConsolePage ( 446 IN UINT16 447 IN BM_MENU_OPTION 448 IN BMM_CALLBACK_DATA 449 ) 450 { 451 BM_MENU_ENTRY *NewMenuEntry;452 BM_CONSOLE_CONTEXT *NewConsoleContext;453 BM_TERMINAL_CONTEXT *NewTerminalContext;454 UINT16 Index;455 UINT16 Index2;456 UINT8 CheckFlags;457 UINT8 *ConsoleCheck;458 EFI_QUESTION_ID QuestionIdBase;459 UINT16 VariableOffsetBase;446 IN UINT16 UpdatePageId, 447 IN BM_MENU_OPTION *ConsoleMenu, 448 IN BMM_CALLBACK_DATA *CallbackData 449 ) 450 { 451 BM_MENU_ENTRY *NewMenuEntry; 452 BM_CONSOLE_CONTEXT *NewConsoleContext; 453 BM_TERMINAL_CONTEXT *NewTerminalContext; 454 UINT16 Index; 455 UINT16 Index2; 456 UINT8 CheckFlags; 457 UINT8 *ConsoleCheck; 458 EFI_QUESTION_ID QuestionIdBase; 459 UINT16 VariableOffsetBase; 460 460 461 461 CallbackData->BmmAskSaveOrNot = TRUE; … … 468 468 469 469 switch (UpdatePageId) { 470 case FORM_CON_IN_ID: 471 ConsoleCheck = &CallbackData->BmmFakeNvData.ConsoleInCheck[0]; 472 QuestionIdBase = CON_IN_DEVICE_QUESTION_ID; 473 VariableOffsetBase = CON_IN_DEVICE_VAR_OFFSET; 474 break; 475 476 case FORM_CON_OUT_ID: 477 ConsoleCheck = &CallbackData->BmmFakeNvData.ConsoleOutCheck[0]; 478 QuestionIdBase = CON_OUT_DEVICE_QUESTION_ID; 479 VariableOffsetBase = CON_OUT_DEVICE_VAR_OFFSET; 480 break; 481 482 case FORM_CON_ERR_ID: 483 ConsoleCheck = &CallbackData->BmmFakeNvData.ConsoleErrCheck[0]; 484 QuestionIdBase = CON_ERR_DEVICE_QUESTION_ID; 485 VariableOffsetBase = CON_ERR_DEVICE_VAR_OFFSET; 486 break; 487 } 470 case FORM_CON_IN_ID: 471 ConsoleCheck = &CallbackData->BmmFakeNvData.ConsoleInCheck[0]; 472 QuestionIdBase = CON_IN_DEVICE_QUESTION_ID; 473 VariableOffsetBase = CON_IN_DEVICE_VAR_OFFSET; 474 break; 475 476 case FORM_CON_OUT_ID: 477 ConsoleCheck = &CallbackData->BmmFakeNvData.ConsoleOutCheck[0]; 478 QuestionIdBase = CON_OUT_DEVICE_QUESTION_ID; 479 VariableOffsetBase = CON_OUT_DEVICE_VAR_OFFSET; 480 break; 481 482 case FORM_CON_ERR_ID: 483 ConsoleCheck = &CallbackData->BmmFakeNvData.ConsoleErrCheck[0]; 484 QuestionIdBase = CON_ERR_DEVICE_QUESTION_ID; 485 VariableOffsetBase = CON_ERR_DEVICE_VAR_OFFSET; 486 break; 487 } 488 488 489 ASSERT (ConsoleCheck != NULL); 489 490 490 491 for (Index = 0; ((Index < ConsoleMenu->MenuNumber) && \ 491 (Index < MAX_MENU_NUMBER)) ; Index++) { 492 CheckFlags = 0; 493 NewMenuEntry = BOpt_GetMenuEntry (ConsoleMenu, Index); 494 NewConsoleContext = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext; 492 (Index < MAX_MENU_NUMBER)); Index++) 493 { 494 CheckFlags = 0; 495 NewMenuEntry = BOpt_GetMenuEntry (ConsoleMenu, Index); 496 NewConsoleContext = (BM_CONSOLE_CONTEXT *)NewMenuEntry->VariableContext; 495 497 if (NewConsoleContext->IsActive) { 496 CheckFlags |= EFI_IFR_CHECKBOX_DEFAULT;498 CheckFlags |= EFI_IFR_CHECKBOX_DEFAULT; 497 499 ConsoleCheck[Index] = TRUE; 498 500 } else { 499 501 ConsoleCheck[Index] = FALSE; 500 502 } 503 501 504 HiiCreateCheckBoxOpCode ( 502 505 mStartOpCodeHandle, 503 (EFI_QUESTION_ID) 506 (EFI_QUESTION_ID)(QuestionIdBase + Index), 504 507 VARSTORE_ID_BOOT_MAINT, 505 (UINT16) 508 (UINT16)(VariableOffsetBase + Index), 506 509 NewMenuEntry->DisplayStringToken, 507 510 NewMenuEntry->HelpStringToken, … … 513 516 514 517 for (Index2 = 0; ((Index2 < TerminalMenu.MenuNumber) && \ 515 (Index2 < MAX_MENU_NUMBER)); Index2++) { 516 CheckFlags = 0; 517 NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index2); 518 NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext; 518 (Index2 < MAX_MENU_NUMBER)); Index2++) 519 { 520 CheckFlags = 0; 521 NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index2); 522 NewTerminalContext = (BM_TERMINAL_CONTEXT *)NewMenuEntry->VariableContext; 519 523 520 524 ASSERT (Index < MAX_MENU_NUMBER); … … 522 526 ((NewTerminalContext->IsConOut != 0) && (UpdatePageId == FORM_CON_OUT_ID)) || 523 527 ((NewTerminalContext->IsStdErr != 0) && (UpdatePageId == FORM_CON_ERR_ID)) 524 ) { 525 CheckFlags |= EFI_IFR_CHECKBOX_DEFAULT; 528 ) 529 { 530 CheckFlags |= EFI_IFR_CHECKBOX_DEFAULT; 526 531 ConsoleCheck[Index] = TRUE; 527 532 } else { 528 533 ConsoleCheck[Index] = FALSE; 529 534 } 535 530 536 HiiCreateCheckBoxOpCode ( 531 537 mStartOpCodeHandle, 532 (EFI_QUESTION_ID) 538 (EFI_QUESTION_ID)(QuestionIdBase + Index), 533 539 VARSTORE_ID_BOOT_MAINT, 534 (UINT16) 540 (UINT16)(VariableOffsetBase + Index), 535 541 NewMenuEntry->DisplayStringToken, 536 542 NewMenuEntry->HelpStringToken, … … 557 563 VOID 558 564 UpdateOrderPage ( 559 IN UINT16 560 IN BM_MENU_OPTION 561 IN BMM_CALLBACK_DATA 562 ) 563 { 564 BM_MENU_ENTRY 565 UINT16 566 UINT16 567 VOID 568 BOOLEAN 569 UINT32 570 EFI_QUESTION_ID 571 UINT16 565 IN UINT16 UpdatePageId, 566 IN BM_MENU_OPTION *OptionMenu, 567 IN BMM_CALLBACK_DATA *CallbackData 568 ) 569 { 570 BM_MENU_ENTRY *NewMenuEntry; 571 UINT16 Index; 572 UINT16 OptionIndex; 573 VOID *OptionsOpCodeHandle; 574 BOOLEAN BootOptionFound; 575 UINT32 *OptionOrder; 576 EFI_QUESTION_ID QuestionId; 577 UINT16 VarOffset; 572 578 573 579 CallbackData->BmmAskSaveOrNot = TRUE; … … 575 581 576 582 OptionOrder = NULL; 577 QuestionId = 0;578 VarOffset = 0;583 QuestionId = 0; 584 VarOffset = 0; 579 585 switch (UpdatePageId) { 580 581 case FORM_BOOT_CHG_ID: 582 // 583 // If the BootOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData, 584 // means all Boot Options has been save in BootOptionMenu, we can get the date from the menu. 585 // else means browser maintains some uncommitted date which are not saved in BootOptionMenu, 586 // so we should not get the data from BootOptionMenu to show it. 587 // 588 if (CompareMem (CallbackData->BmmFakeNvData.BootOptionOrder, CallbackData->BmmOldFakeNVData.BootOptionOrder, sizeof (CallbackData->BmmFakeNvData.BootOptionOrder)) == 0) { 589 GetBootOrder (CallbackData); 590 } 591 OptionOrder = CallbackData->BmmFakeNvData.BootOptionOrder; 592 QuestionId = BOOT_OPTION_ORDER_QUESTION_ID; 593 VarOffset = BOOT_OPTION_ORDER_VAR_OFFSET; 594 break; 595 596 case FORM_DRV_CHG_ID: 597 // 598 // If the DriverOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData, 599 // means all Driver Options has been save in DriverOptionMenu, we can get the DriverOptionOrder from the menu. 600 // else means browser maintains some uncommitted date which are not saved in DriverOptionMenu, 601 // so we should not get the data from DriverOptionMenu to show it. 602 // 603 if (CompareMem (CallbackData->BmmFakeNvData.DriverOptionOrder, CallbackData->BmmOldFakeNVData.DriverOptionOrder, sizeof (CallbackData->BmmFakeNvData.DriverOptionOrder)) == 0) { 604 GetDriverOrder (CallbackData); 605 } 606 OptionOrder = CallbackData->BmmFakeNvData.DriverOptionOrder; 607 QuestionId = DRIVER_OPTION_ORDER_QUESTION_ID; 608 VarOffset = DRIVER_OPTION_ORDER_VAR_OFFSET; 609 break; 610 } 586 case FORM_BOOT_CHG_ID: 587 // 588 // If the BootOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData, 589 // means all Boot Options has been save in BootOptionMenu, we can get the date from the menu. 590 // else means browser maintains some uncommitted date which are not saved in BootOptionMenu, 591 // so we should not get the data from BootOptionMenu to show it. 592 // 593 if (CompareMem (CallbackData->BmmFakeNvData.BootOptionOrder, CallbackData->BmmOldFakeNVData.BootOptionOrder, sizeof (CallbackData->BmmFakeNvData.BootOptionOrder)) == 0) { 594 GetBootOrder (CallbackData); 595 } 596 597 OptionOrder = CallbackData->BmmFakeNvData.BootOptionOrder; 598 QuestionId = BOOT_OPTION_ORDER_QUESTION_ID; 599 VarOffset = BOOT_OPTION_ORDER_VAR_OFFSET; 600 break; 601 602 case FORM_DRV_CHG_ID: 603 // 604 // If the DriverOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData, 605 // means all Driver Options has been save in DriverOptionMenu, we can get the DriverOptionOrder from the menu. 606 // else means browser maintains some uncommitted date which are not saved in DriverOptionMenu, 607 // so we should not get the data from DriverOptionMenu to show it. 608 // 609 if (CompareMem (CallbackData->BmmFakeNvData.DriverOptionOrder, CallbackData->BmmOldFakeNVData.DriverOptionOrder, sizeof (CallbackData->BmmFakeNvData.DriverOptionOrder)) == 0) { 610 GetDriverOrder (CallbackData); 611 } 612 613 OptionOrder = CallbackData->BmmFakeNvData.DriverOptionOrder; 614 QuestionId = DRIVER_OPTION_ORDER_QUESTION_ID; 615 VarOffset = DRIVER_OPTION_ORDER_VAR_OFFSET; 616 break; 617 } 618 611 619 ASSERT (OptionOrder != NULL); 612 620 … … 618 626 BootOptionFound = FALSE; 619 627 for (Index = 0; Index < OptionMenu->MenuNumber; Index++) { 620 NewMenuEntry 621 if ((UINT32) 628 NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index); 629 if ((UINT32)(NewMenuEntry->OptionNumber + 1) == OptionOrder[OptionIndex]) { 622 630 BootOptionFound = TRUE; 623 631 break; 624 632 } 625 633 } 634 626 635 if (BootOptionFound) { 627 636 HiiCreateOneOfOptionOpCode ( … … 655 664 656 665 UpdatePageEnd (CallbackData); 657 658 666 } 659 667 … … 666 674 VOID 667 675 UpdateConModePage ( 668 IN BMM_CALLBACK_DATA 669 ) 670 { 671 UINTN Mode;672 UINTN Index;673 UINTN Col;674 UINTN Row;675 CHAR16 ModeString[50];676 CHAR16 *PStr;677 UINTN MaxMode;678 UINTN ValidMode;679 EFI_STRING_ID *ModeToken;680 EFI_STATUS Status;681 VOID *OptionsOpCodeHandle;676 IN BMM_CALLBACK_DATA *CallbackData 677 ) 678 { 679 UINTN Mode; 680 UINTN Index; 681 UINTN Col; 682 UINTN Row; 683 CHAR16 ModeString[50]; 684 CHAR16 *PStr; 685 UINTN MaxMode; 686 UINTN ValidMode; 687 EFI_STRING_ID *ModeToken; 688 EFI_STATUS Status; 689 VOID *OptionsOpCodeHandle; 682 690 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut; 683 691 … … 685 693 Index = 0; 686 694 ValidMode = 0; 687 MaxMode = (UINTN) 695 MaxMode = (UINTN)(ConOut->Mode->MaxMode); 688 696 689 697 CallbackData->BmmAskSaveOrNot = TRUE; … … 699 707 continue; 700 708 } 709 701 710 ValidMode++; 702 711 } … … 709 718 ASSERT (OptionsOpCodeHandle != NULL); 710 719 711 ModeToken 712 ASSERT (ModeToken != NULL);720 ModeToken = AllocateZeroPool (sizeof (EFI_STRING_ID) * ValidMode); 721 ASSERT (ModeToken != NULL); 713 722 714 723 // … … 731 740 UnicodeValueToStringS (ModeString, sizeof (ModeString), 0, Col, 0); 732 741 PStr = &ModeString[0]; 733 StrnCatS (PStr, ARRAY_SIZE (ModeString), L" x ", StrLen (L" x ") + 1);742 StrnCatS (PStr, ARRAY_SIZE (ModeString), L" x ", StrLen (L" x ") + 1); 734 743 PStr = PStr + StrLen (PStr); 735 744 UnicodeValueToStringS ( … … 749 758 EFI_IFR_OPTION_DEFAULT, 750 759 EFI_IFR_TYPE_NUM_SIZE_16, 751 (UINT16) 760 (UINT16)Mode 752 761 ); 753 762 } else { … … 757 766 0, 758 767 EFI_IFR_TYPE_NUM_SIZE_16, 759 (UINT16) 768 (UINT16)Mode 760 769 ); 761 770 } 771 762 772 Index++; 763 773 } … … 765 775 HiiCreateOneOfOpCode ( 766 776 mStartOpCodeHandle, 767 (EFI_QUESTION_ID) 777 (EFI_QUESTION_ID)CON_MODE_QUESTION_ID, 768 778 VARSTORE_ID_BOOT_MAINT, 769 779 CON_MODE_VAR_OFFSET, … … 782 792 } 783 793 784 785 786 787 788 794 /** 795 Create the dynamic page which allows user to set the property such as Baud Rate, Data Bits, 796 Parity, Stop Bits, Terminal Type. 797 798 @param CallbackData The BMM context data. 789 799 790 800 **/ 791 801 VOID 792 802 UpdateTerminalPage ( 793 IN BMM_CALLBACK_DATA 794 ) 795 { 796 UINT8 797 UINT8 798 BM_MENU_ENTRY 799 VOID 800 UINTN 803 IN BMM_CALLBACK_DATA *CallbackData 804 ) 805 { 806 UINT8 Index; 807 UINT8 CheckFlags; 808 BM_MENU_ENTRY *NewMenuEntry; 809 VOID *OptionsOpCodeHandle; 810 UINTN CurrentTerminal; 801 811 802 812 CallbackData->BmmAskSaveOrNot = TRUE; … … 805 815 806 816 CurrentTerminal = CallbackData->CurrentTerminal; 807 NewMenuEntry = BOpt_GetMenuEntry (808 &TerminalMenu,809 CurrentTerminal810 );817 NewMenuEntry = BOpt_GetMenuEntry ( 818 &TerminalMenu, 819 CurrentTerminal 820 ); 811 821 812 822 if (NewMenuEntry == NULL) { 813 return 823 return; 814 824 } 815 825 … … 817 827 ASSERT (OptionsOpCodeHandle != NULL); 818 828 819 for (Index = 0; Index < sizeof (BaudRateList) / sizeof (BaudRateList 829 for (Index = 0; Index < sizeof (BaudRateList) / sizeof (BaudRateList[0]); Index++) { 820 830 CheckFlags = 0; 821 831 if (BaudRateList[Index].Value == 115200) { 822 832 CheckFlags |= EFI_IFR_OPTION_DEFAULT; 823 833 } 834 824 835 HiiCreateOneOfOptionOpCode ( 825 836 OptionsOpCodeHandle, … … 833 844 HiiCreateOneOfOpCode ( 834 845 mStartOpCodeHandle, 835 (EFI_QUESTION_ID) 846 (EFI_QUESTION_ID)(COM_BAUD_RATE_QUESTION_ID + CurrentTerminal), 836 847 VARSTORE_ID_BOOT_MAINT, 837 (UINT16) 848 (UINT16)(COM_BAUD_RATE_VAR_OFFSET + CurrentTerminal), 838 849 STRING_TOKEN (STR_COM_BAUD_RATE), 839 850 STRING_TOKEN (STR_COM_BAUD_RATE), … … 866 877 HiiCreateOneOfOpCode ( 867 878 mStartOpCodeHandle, 868 (EFI_QUESTION_ID) 879 (EFI_QUESTION_ID)(COM_DATA_RATE_QUESTION_ID + CurrentTerminal), 869 880 VARSTORE_ID_BOOT_MAINT, 870 (UINT16) 881 (UINT16)(COM_DATA_RATE_VAR_OFFSET + CurrentTerminal), 871 882 STRING_TOKEN (STR_COM_DATA_BITS), 872 883 STRING_TOKEN (STR_COM_DATA_BITS), … … 898 909 HiiCreateOneOfOpCode ( 899 910 mStartOpCodeHandle, 900 (EFI_QUESTION_ID) 911 (EFI_QUESTION_ID)(COM_PARITY_QUESTION_ID + CurrentTerminal), 901 912 VARSTORE_ID_BOOT_MAINT, 902 (UINT16) 913 (UINT16)(COM_PARITY_VAR_OFFSET + CurrentTerminal), 903 914 STRING_TOKEN (STR_COM_PARITY), 904 915 STRING_TOKEN (STR_COM_PARITY), … … 930 941 HiiCreateOneOfOpCode ( 931 942 mStartOpCodeHandle, 932 (EFI_QUESTION_ID) 943 (EFI_QUESTION_ID)(COM_STOP_BITS_QUESTION_ID + CurrentTerminal), 933 944 VARSTORE_ID_BOOT_MAINT, 934 (UINT16) 945 (UINT16)(COM_STOP_BITS_VAR_OFFSET + CurrentTerminal), 935 946 STRING_TOKEN (STR_COM_STOP_BITS), 936 947 STRING_TOKEN (STR_COM_STOP_BITS), … … 953 964 HiiCreateOneOfOptionOpCode ( 954 965 OptionsOpCodeHandle, 955 (EFI_STRING_ID) 966 (EFI_STRING_ID)TerminalType[Index], 956 967 CheckFlags, 957 968 EFI_IFR_TYPE_NUM_SIZE_8, … … 962 973 HiiCreateOneOfOpCode ( 963 974 mStartOpCodeHandle, 964 (EFI_QUESTION_ID) 975 (EFI_QUESTION_ID)(COM_TERMINAL_QUESTION_ID + CurrentTerminal), 965 976 VARSTORE_ID_BOOT_MAINT, 966 (UINT16) 977 (UINT16)(COM_TERMINAL_VAR_OFFSET + CurrentTerminal), 967 978 STRING_TOKEN (STR_COM_TERMI_TYPE), 968 979 STRING_TOKEN (STR_COM_TERMI_TYPE), … … 978 989 979 990 for (Index = 0; Index < ARRAY_SIZE (mFlowControlType); Index++) { 980 CheckFlags = 0;991 CheckFlags = 0; 981 992 if (Index == 0) { 982 993 CheckFlags |= EFI_IFR_OPTION_DEFAULT; 983 994 } 995 984 996 HiiCreateOneOfOptionOpCode ( 985 997 OptionsOpCodeHandle, 986 (EFI_STRING_ID) 998 (EFI_STRING_ID)mFlowControlType[Index], 987 999 CheckFlags, 988 1000 EFI_IFR_TYPE_NUM_SIZE_8, … … 993 1005 HiiCreateOneOfOpCode ( 994 1006 mStartOpCodeHandle, 995 (EFI_QUESTION_ID) 1007 (EFI_QUESTION_ID)(COM_FLOWCONTROL_QUESTION_ID + CurrentTerminal), 996 1008 VARSTORE_ID_BOOT_MAINT, 997 (UINT16) 1009 (UINT16)(COM_FLOWCONTROL_VAR_OFFSET + CurrentTerminal), 998 1010 STRING_TOKEN (STR_COM_FLOW_CONTROL), 999 1011 STRING_TOKEN (STR_COM_FLOW_CONTROL), … … 1018 1030 **/ 1019 1031 VOID 1020 UpdateOptionPage (1021 IN BMM_CALLBACK_DATA *CallbackData,1022 IN EFI_FORM_ID FormId,1023 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath1024 ) 1025 { 1026 CHAR16 1027 EFI_STRING_ID 1032 UpdateOptionPage ( 1033 IN BMM_CALLBACK_DATA *CallbackData, 1034 IN EFI_FORM_ID FormId, 1035 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath 1036 ) 1037 { 1038 CHAR16 *String; 1039 EFI_STRING_ID StringToken; 1028 1040 1029 1041 String = NULL; 1030 1042 1031 if (DevicePath != NULL){ 1032 String = ExtractFileNameFromDevicePath(DevicePath); 1033 } 1043 if (DevicePath != NULL) { 1044 String = ExtractFileNameFromDevicePath (DevicePath); 1045 } 1046 1034 1047 if (String == NULL) { 1035 1048 String = HiiGetString (CallbackData->BmmHiiHandle, STRING_TOKEN (STR_NULL_STRING), NULL); … … 1040 1053 FreePool (String); 1041 1054 1042 if (FormId == FORM_BOOT_ADD_ID){1055 if (FormId == FORM_BOOT_ADD_ID) { 1043 1056 if (!CallbackData->BmmFakeNvData.BootOptionChanged) { 1044 1057 ZeroMem (CallbackData->BmmFakeNvData.BootOptionalData, sizeof (CallbackData->BmmFakeNvData.BootOptionalData)); … … 1047 1060 ZeroMem (CallbackData->BmmOldFakeNVData.BootDescriptionData, sizeof (CallbackData->BmmOldFakeNVData.BootDescriptionData)); 1048 1061 } 1049 } else if (FormId == FORM_DRV_ADD_FILE_ID) {1062 } else if (FormId == FORM_DRV_ADD_FILE_ID) { 1050 1063 if (!CallbackData->BmmFakeNvData.DriverOptionChanged) { 1051 1064 ZeroMem (CallbackData->BmmFakeNvData.DriverOptionalData, sizeof (CallbackData->BmmFakeNvData.DriverOptionalData)); … … 1056 1069 } 1057 1070 1058 RefreshUpdateData ();1071 RefreshUpdateData (); 1059 1072 mStartLabel->Number = FormId; 1060 1073 … … 1071 1084 &mBootMaintGuid, 1072 1085 FormId, 1073 mStartOpCodeHandle, // Label FormId1074 mEndOpCodeHandle // LABEL_END1086 mStartOpCodeHandle, // Label FormId 1087 mEndOpCodeHandle // LABEL_END 1075 1088 ); 1076 1089 } … … 1086 1099 VOID 1087 1100 UpdatePageBody ( 1088 IN UINT16 1089 IN BMM_CALLBACK_DATA 1101 IN UINT16 UpdatePageId, 1102 IN BMM_CALLBACK_DATA *CallbackData 1090 1103 ) 1091 1104 { 1092 1105 CleanUpPage (UpdatePageId, CallbackData); 1093 1106 switch (UpdatePageId) { 1094 case FORM_CON_IN_ID:1095 UpdateConsolePage (UpdatePageId, &ConsoleInpMenu, CallbackData);1096 break;1097 1098 case FORM_CON_OUT_ID:1099 UpdateConsolePage (UpdatePageId, &ConsoleOutMenu, CallbackData);1100 break;1101 1102 case FORM_CON_ERR_ID:1103 UpdateConsolePage (UpdatePageId, &ConsoleErrMenu, CallbackData);1104 break;1105 1106 case FORM_BOOT_CHG_ID:1107 UpdateOrderPage (UpdatePageId, &BootOptionMenu, CallbackData);1108 break;1109 1110 case FORM_DRV_CHG_ID:1111 UpdateOrderPage (UpdatePageId, &DriverOptionMenu, CallbackData);1112 break;1113 1114 default:1115 break;1107 case FORM_CON_IN_ID: 1108 UpdateConsolePage (UpdatePageId, &ConsoleInpMenu, CallbackData); 1109 break; 1110 1111 case FORM_CON_OUT_ID: 1112 UpdateConsolePage (UpdatePageId, &ConsoleOutMenu, CallbackData); 1113 break; 1114 1115 case FORM_CON_ERR_ID: 1116 UpdateConsolePage (UpdatePageId, &ConsoleErrMenu, CallbackData); 1117 break; 1118 1119 case FORM_BOOT_CHG_ID: 1120 UpdateOrderPage (UpdatePageId, &BootOptionMenu, CallbackData); 1121 break; 1122 1123 case FORM_DRV_CHG_ID: 1124 UpdateOrderPage (UpdatePageId, &DriverOptionMenu, CallbackData); 1125 break; 1126 1127 default: 1128 break; 1116 1129 } 1117 1130 } … … 1126 1139 VOID 1127 1140 UpdatePageId ( 1128 BMM_CALLBACK_DATA 1129 UINT16 1141 BMM_CALLBACK_DATA *Private, 1142 UINT16 NewPageId 1130 1143 ) 1131 1144 { … … 1145 1158 1146 1159 if ((NewPageId > 0) && (NewPageId < MAXIMUM_FORM_ID)) { 1147 Private->BmmPreviousPageId 1148 Private->BmmCurrentPageId 1149 } 1150 } 1160 Private->BmmPreviousPageId = Private->BmmCurrentPageId; 1161 Private->BmmCurrentPageId = NewPageId; 1162 } 1163 }
Note:
See TracChangeset
for help on using the changeset viewer.