X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkUnixPkg%2FDxe%2FPlatformBds%2FGeneric%2FBootMaint%2FFileExplorer.c;fp=EdkUnixPkg%2FDxe%2FPlatformBds%2FGeneric%2FBootMaint%2FFileExplorer.c;h=0000000000000000000000000000000000000000;hp=db835cf534ca9d7829d6ffcdf3c8138ff9353eeb;hb=e8a5c66f4b82234a812b7c9fef77ed6b96868c66;hpb=d5c918e7e361b2f05fce44cdf48944d093ff9dd1 diff --git a/EdkUnixPkg/Dxe/PlatformBds/Generic/BootMaint/FileExplorer.c b/EdkUnixPkg/Dxe/PlatformBds/Generic/BootMaint/FileExplorer.c deleted file mode 100644 index db835cf534..0000000000 --- a/EdkUnixPkg/Dxe/PlatformBds/Generic/BootMaint/FileExplorer.c +++ /dev/null @@ -1,340 +0,0 @@ -/*++ - -Copyright (c) 2006, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -Module Name: - - FileExplorer.c - -AgBStract: - - File explorer related functions. - ---*/ - -#include "Generic/Bds.h" -#include "BootMaint.h" -#include "BdsPlatform.h" - -VOID -UpdateFileExplorePage ( - IN BMM_CALLBACK_DATA *CallbackData, - BM_MENU_OPTION *MenuOption - ) -/*++ -Routine Description: - Update the File Explore page. - -Arguments: - MenuOption - Pointer to menu options to display. - -Returns: - None. - ---*/ -{ - UINT8 *Location; - UINTN Index; - BM_MENU_ENTRY *NewMenuEntry; - BM_FILE_CONTEXT *NewFileContext; - FORM_ID FormId; - - NewMenuEntry = NULL; - NewFileContext = NULL; - FormId = 0; - - // - // Clean up file explore page. - // - RefreshUpdateData (FALSE, 0, FALSE, 0, 0xff); - - // - // Remove all op-codes from dynamic page - // - CallbackData->Hii->UpdateForm ( - CallbackData->Hii, - CallbackData->FeHiiHandle, - FORM_FILE_EXPLORER_ID, - FALSE, - UpdateData - ); - - RefreshUpdateData (TRUE, (EFI_PHYSICAL_ADDRESS) (UINTN) CallbackData->FeCallbackHandle, FALSE, 0, 0); - - Location = (UINT8 *) &UpdateData->Data; - - for (Index = 0; Index < MenuOption->MenuNumber; Index++) { - NewMenuEntry = BOpt_GetMenuEntry (MenuOption, Index); - NewFileContext = (BM_FILE_CONTEXT *) NewMenuEntry->VariableContext; - - if (NewFileContext->IsBootLegacy) { - continue; - } - - if ((NewFileContext->IsDir) || (BOOT_FROM_FILE_STATE == CallbackData->FeCurrentState)) { - // - // Create Text opcode for directory, also create Text opcode for file in BOOT_FROM_FILE_STATE. - // - CreateTextOpCode ( - NewMenuEntry->DisplayStringToken, - STR_NULL_STRING, - STR_NULL_STRING, - EFI_IFR_FLAG_INTERACTIVE | EFI_IFR_FLAG_NV_ACCESS, - (UINT16) (FILE_OPTION_OFFSET + Index), - Location - ); - } else { - // - // Create Goto opcode for file in ADD_BOOT_OPTION_STATE or ADD_DRIVER_OPTION_STATE. - // - if (ADD_BOOT_OPTION_STATE == CallbackData->FeCurrentState) { - FormId = FORM_BOOT_ADD_DESCRIPTION_ID; - } else if (ADD_DRIVER_OPTION_STATE == CallbackData->FeCurrentState) { - FormId = FORM_DRIVER_ADD_FILE_DESCRIPTION_ID; - } - - CreateGotoOpCode ( - FormId, - NewMenuEntry->DisplayStringToken, - STRING_TOKEN (STR_NULL_STRING), - EFI_IFR_FLAG_INTERACTIVE | EFI_IFR_FLAG_NV_ACCESS, - (UINT16) (FILE_OPTION_OFFSET + Index), - Location - ); - } - - UpdateData->DataCount++; - Location = Location + ((EFI_IFR_OP_HEADER *) Location)->Length; - } - - CallbackData->Hii->UpdateForm ( - CallbackData->Hii, - CallbackData->FeHiiHandle, - FORM_FILE_EXPLORER_ID, - TRUE, - UpdateData - ); -} - -BOOLEAN -UpdateFileExplorer ( - IN BMM_CALLBACK_DATA *CallbackData, - IN UINT16 KeyValue - ) -/*++ - -Routine Description: - Update the file explower page with the refershed file system. - -Arguments: - CallbackData - BMM context data - KeyValue - Key value to identify the type of data to expect. - -Returns: - TRUE - Inform the caller to create a callback packet to exit file explorer. - FALSE - Indicate that there is no need to exit file explorer. - ---*/ -{ - UINT16 FileOptionMask; - BM_MENU_ENTRY *NewMenuEntry; - BM_FILE_CONTEXT *NewFileContext; - FORM_ID FormId; - BOOLEAN ExitFileExplorer; - EFI_STATUS Status; - - NewMenuEntry = NULL; - NewFileContext = NULL; - ExitFileExplorer = FALSE; - - FileOptionMask = (UINT16) (FILE_OPTION_MASK & KeyValue); - - if (UNKNOWN_CONTEXT == CallbackData->FeDisplayContext) { - // - // First in, display file system. - // - BOpt_FreeMenu (&FsOptionMenu); - BOpt_FindFileSystem (CallbackData); - CreateMenuStringToken (CallbackData, CallbackData->FeHiiHandle, &FsOptionMenu); - - UpdateFileExplorePage (CallbackData, &FsOptionMenu); - - CallbackData->FeDisplayContext = FILE_SYSTEM; - } else { - if (FILE_SYSTEM == CallbackData->FeDisplayContext) { - NewMenuEntry = BOpt_GetMenuEntry (&FsOptionMenu, FileOptionMask); - } else if (DIRECTORY == CallbackData->FeDisplayContext) { - NewMenuEntry = BOpt_GetMenuEntry (&DirectoryMenu, FileOptionMask); - } - - CallbackData->FeDisplayContext = DIRECTORY; - - NewFileContext = (BM_FILE_CONTEXT *) NewMenuEntry->VariableContext; - - if (NewFileContext->IsDir ) { - RemoveEntryList (&NewMenuEntry->Link); - BOpt_FreeMenu (&DirectoryMenu); - Status = BOpt_FindFiles (CallbackData, NewMenuEntry); - if (EFI_ERROR (Status)) { - ExitFileExplorer = TRUE; - goto exit; - } - CreateMenuStringToken (CallbackData, CallbackData->FeHiiHandle, &DirectoryMenu); - BOpt_DestroyMenuEntry (NewMenuEntry); - - UpdateFileExplorePage (CallbackData, &DirectoryMenu); - - } else { - switch (CallbackData->FeCurrentState) { - case BOOT_FROM_FILE_STATE: - // - // Here boot from file - // - BootThisFile (NewFileContext); - ExitFileExplorer = TRUE; - break; - - case ADD_BOOT_OPTION_STATE: - case ADD_DRIVER_OPTION_STATE: - if (ADD_BOOT_OPTION_STATE == CallbackData->FeCurrentState) { - FormId = FORM_BOOT_ADD_DESCRIPTION_ID; - } else { - FormId = FORM_DRIVER_ADD_FILE_DESCRIPTION_ID; - } - - CallbackData->MenuEntry = NewMenuEntry; - CallbackData->LoadContext->FilePathList = ((BM_FILE_CONTEXT *) (CallbackData->MenuEntry->VariableContext))->DevicePath; - - // - // Clean up file explore page. - // - RefreshUpdateData (FALSE, 0, FALSE, 0, 1); - - // - // Remove the Subtitle op-code. - // - CallbackData->Hii->UpdateForm ( - CallbackData->Hii, - CallbackData->FeHiiHandle, - FormId, - FALSE, - UpdateData - ); - - // - // Create Subtitle op-code for the display string of the option. - // - RefreshUpdateData (TRUE, (EFI_PHYSICAL_ADDRESS) (UINTN) CallbackData->FeCallbackHandle, FALSE, 0, 1); - - CreateSubTitleOpCode ( - NewMenuEntry->DisplayStringToken, - &UpdateData->Data - ); - - CallbackData->Hii->UpdateForm ( - CallbackData->Hii, - CallbackData->FeHiiHandle, - FormId, - TRUE, - UpdateData - ); - break; - - default: - break; - } - } - } -exit: - return ExitFileExplorer; -} - -EFI_STATUS -EFIAPI -FileExplorerCallback ( - IN EFI_FORM_CALLBACK_PROTOCOL *This, - IN UINT16 KeyValue, - IN EFI_IFR_DATA_ARRAY *Data, - OUT EFI_HII_CALLBACK_PACKET **Packet - ) -/*++ -Routine Description: - Callback Function for file exploration and file interaction. - -Arguments: - This - File explorer callback protocol pointer. - KeyValue - Key value to identify the type of data to expect. - Data - A pointer to the data being sent to the original exporting driver. - Packet - A pointer to a packet of information which a driver passes back to the browser. - -Returns: - EFI_SUCCESS - Callback ended successfully. - Others - Contain some errors. - ---*/ -{ - BMM_CALLBACK_DATA *Private; - FILE_EXPLORER_NV_DATA *NvRamMap; - EFI_STATUS Status; - - Status = EFI_SUCCESS; - Private = FE_CALLBACK_DATA_FROM_THIS (This); - UpdateData->FormCallbackHandle = (EFI_PHYSICAL_ADDRESS) (UINTN) Private->FeCallbackHandle; - NvRamMap = (FILE_EXPLORER_NV_DATA *) Data->NvRamMap; - - if (KEY_VALUE_SAVE_AND_EXIT == KeyValue) { - // - // Apply changes and exit formset. - // - if (ADD_BOOT_OPTION_STATE == Private->FeCurrentState) { - Status = Var_UpdateBootOption (Private, NvRamMap); - if (EFI_ERROR (Status)) { - return Status; - } - - BOpt_GetBootOptions (Private); - CreateMenuStringToken (Private, Private->FeHiiHandle, &BootOptionMenu); - } else if (ADD_DRIVER_OPTION_STATE == Private->FeCurrentState) { - Status = Var_UpdateDriverOption ( - Private, - Private->FeHiiHandle, - NvRamMap->DescriptionData, - NvRamMap->OptionalData, - NvRamMap->ForceReconnect - ); - if (EFI_ERROR (Status)) { - return Status; - } - - BOpt_GetDriverOptions (Private); - CreateMenuStringToken (Private, Private->FeHiiHandle, &DriverOptionMenu); - } - - CreateCallbackPacket (Packet, EXIT_REQUIRED | NV_NOT_CHANGED); - } else if (KEY_VALUE_NO_SAVE_AND_EXIT == KeyValue) { - // - // Discard changes and exit formset. - // - NvRamMap->OptionalData[0] = 0x0000; - NvRamMap->DescriptionData[0] = 0x0000; - CreateCallbackPacket (Packet, EXIT_REQUIRED | NV_NOT_CHANGED); - } else if (KeyValue < FILE_OPTION_OFFSET) { - // - // Exit File Explorer formset. - // - CreateCallbackPacket (Packet, EXIT_REQUIRED); - } else { - if (UpdateFileExplorer (Private, KeyValue)) { - CreateCallbackPacket (Packet, EXIT_REQUIRED); - } - } - - return Status; -}