\r
This library class defines a set of interfaces for how to process capsule image updates.\r
\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
#ifndef __CAPSULE_LIB_H__\r
#define __CAPSULE_LIB_H__\r
\r
+//\r
+// BOOLEAN Variable to indicate whether system is in the capsule on disk state.\r
+//\r
+#define COD_RELOCATION_INFO_VAR_NAME L"CodRelocationInfo"\r
+\r
/**\r
The firmware checks whether the capsule image is supported\r
by the CapsuleGuid in CapsuleHeader or if there is other specific information in\r
VOID\r
);\r
\r
+/**\r
+ This routine is called to check if CapsuleOnDisk flag in OsIndications Variable\r
+ is enabled.\r
+\r
+ @retval TRUE Flag is enabled\r
+ @retval FALSE Flag is not enabled\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+CoDCheckCapsuleOnDiskFlag(\r
+ VOID\r
+ );\r
+\r
+/**\r
+ This routine is called to clear CapsuleOnDisk flags including OsIndications and BootNext variable\r
+\r
+ @retval EFI_SUCCESS All Capsule On Disk flags are cleared\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoDClearCapsuleOnDiskFlag(\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Relocate Capsule on Disk from EFI system partition.\r
+\r
+ Two solution to deliver Capsule On Disk:\r
+ Solution A: If PcdCapsuleInRamSupport is enabled, relocate Capsule On Disk to memory and call UpdateCapsule().\r
+ Solution B: If PcdCapsuleInRamSupport is disabled, relocate Capsule On Disk to a platform-specific NV storage\r
+ device with BlockIo protocol.\r
+\r
+ Device enumeration like USB costs time, user can input MaxRetry to tell function to retry.\r
+ Function will stall 100ms between each retry.\r
+\r
+ Side Effects:\r
+ Capsule Delivery Supported Flag in OsIndication variable and BootNext variable will be cleared.\r
+ Solution B: Content corruption. Block IO write directly touches low level write. Orignal partitions, file\r
+ systems of the relocation device will be corrupted.\r
+\r
+ @param[in] MaxRetry Max Connection Retry. Stall 100ms between each connection try to ensure\r
+ devices like USB can get enumerated. Input 0 means no retry.\r
+\r
+ @retval EFI_SUCCESS Capsule on Disk images are successfully relocated.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoDRelocateCapsule(\r
+ UINTN MaxRetry\r
+ );\r
+\r
+/**\r
+ Remove the temp file from the root of EFI System Partition.\r
+ Device enumeration like USB costs time, user can input MaxRetry to tell function to retry.\r
+ Function will stall 100ms between each retry.\r
+\r
+ @param[in] MaxRetry Max Connection Retry. Stall 100ms between each connection try to ensure\r
+ devices like USB can get enumerated. Input 0 means no retry.\r
+\r
+ @retval EFI_SUCCESS Remove the temp file successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoDRemoveTempFile (\r
+ UINTN MaxRetry\r
+ );\r
+\r
#endif\r