NetworkPkg/HttpBootDxe: Add HTTP Boot Callback protocol support.

This patch updates the HTTP Boot driver to install a default HTTP Callback protocol
if the platform doesn't provide one. This callback implementation will print the
boot file download progress in percentage format.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>
This commit is contained in:
Fu Siyuan
2017-06-14 17:28:48 +08:00
parent a77d109ffa
commit 95b5c32fb3
10 changed files with 444 additions and 58 deletions

View File

@@ -62,6 +62,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
// Produced Protocols
//
#include <Protocol/LoadFile.h>
#include <Protocol/HttpBootCallback.h>
//
// Consumed Guids
@@ -133,6 +134,14 @@ struct _HTTP_BOOT_VIRTUAL_NIC {
CallbackInfo, \
HTTP_BOOT_PRIVATE_DATA_SIGNATURE \
)
#define HTTP_BOOT_PRIVATE_DATA_FROM_CALLBACK_PROTOCOL(CallbackProtocol) \
CR ( \
CallbackProtocol, \
HTTP_BOOT_PRIVATE_DATA, \
LoadFileCallback, \
HTTP_BOOT_PRIVATE_DATA_SIGNATURE \
)
struct _HTTP_BOOT_PRIVATE_DATA {
UINT32 Signature;
@@ -168,6 +177,11 @@ struct _HTTP_BOOT_PRIVATE_DATA {
EFI_LOAD_FILE_PROTOCOL LoadFile;
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
UINT32 Id;
EFI_HTTP_BOOT_CALLBACK_PROTOCOL *HttpBootCallback;
EFI_HTTP_BOOT_CALLBACK_PROTOCOL LoadFileCallback;
UINT64 FileSize;
UINT64 ReceivedSize;
UINT32 Percentage;
//
// HII callback info block