/** @file
The header file of functions for configuring or getting the parameters
relating to HTTP Boot.
;******************************************************************************
;* Copyright (c) 2020 - 2021, Insyde Software Corp. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
Copyright (c) 2016, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _HTTP_BOOT_CONFIG_H_
#define _HTTP_BOOT_CONFIG_H_
#include "HttpBootConfigNVDataStruc.h"
#include
#include
typedef struct _HTTP_BOOT_FORM_CALLBACK_INFO HTTP_BOOT_FORM_CALLBACK_INFO;
extern UINT8 HttpBootDxeStrings[];
/// This VFR is for LinkForm, install in SCU\Boot\Link
extern UINT8 HttpBootConfigLinkFormVfrBin[];
/// This VFR is for original HTTP URL manage form, install in FrontPage\DeviceManager.
extern UINT8 HttpBootConfigVfrBin[];
#pragma pack()
#define HTTP_BOOT_FORM_SUPPORTED_DEVICES_MAX 100
#define HTTP_BOOT_DEVICE_MAX 100
#define HTTP_BOOT_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('H', 'B', 'f', 'c')
#define HTTP_BOOT_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS(Callback) \
CR ( \
Callback, \
HTTP_BOOT_FORM_CALLBACK_INFO, \
ConfigAccess, \
HTTP_BOOT_FORM_CALLBACK_INFO_SIGNATURE \
)
typedef struct {
UINT16 StringId;
UINT16 HiiDevPathStringId;
} HTTP_DEVICE_ENTRY;
struct _HTTP_BOOT_FORM_CALLBACK_INFO {
UINT32 Signature;
BOOLEAN IsRootForm;
BOOLEAN Initialized;
EFI_HANDLE ChildHandle;
EFI_GUID *FormGuid;
EFI_DEVICE_PATH_PROTOCOL *HiiVendorDevicePath;
EFI_HII_HANDLE RegisteredHandle;
EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
HTTP_BOOT_CONFIG_IFR_NVDATA HttpBootNvData;
EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL *FormBrowserEx2;
HTTP_DEVICE_ENTRY *HttpDeviceList;
UINTN StringIdCnt;
EFI_HANDLE UndiHandle;
};
/**
Initialize the configuration form.
@param[in] Private Pointer to the driver private data.
@retval EFI_SUCCESS The configuration form is initialized.
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
**/
EFI_STATUS
HttpBootConfigFormInit (
IN HTTP_BOOT_PRIVATE_DATA *Private
);
/**
Unload the configuration form, this includes: delete all the configuration
entries, uninstall the form callback protocol, and free the resources used.
The form will only be unload completely when both IP4 and IP6 stack are stopped.
@param[in] Private Pointer to the driver private data.
@retval EFI_SUCCESS The configuration form is unloaded.
@retval Others Failed to unload the form.
**/
EFI_STATUS
HttpBootConfigFormUnload (
IN HTTP_BOOT_PRIVATE_DATA *Private
);
/**
Initialize the link configuration form for Link.
This form will be install to SCU\Boot\Link
@param[out] CallbackInfo Pointer to the form data.
@retval EFI_SUCCESS The configuration form is initialized.
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
**/
EFI_STATUS
HttpBootConfigLinkFormInit (
OUT HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo
);
/**
Unload the configuration form from SCU Boot\Link
@param[in] CallbackInfo Pointer to the form data.
@retval EFI_SUCCESS The configuration form is unloaded.
@retval Others Failed to unload the form.
**/
EFI_STATUS
HttpBootConfigLinkFormUnload (
IN HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo
);
#endif