/** @file

  @copyright
  Copyright 2012 - 2021 Intel Corporation. <BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef __PLATFORM_SETUP_VAR_SYNC
#define __PLATFORM_SETUP_VAR_SYNC
#include <Base.h>
#include "Uefi/UefiBaseType.h"

/**
  THis function can sync PC/OEM setup variable value to Rp setup variable before variable service is ready
    IN EFI_PEI_SERVICES           **PeiServices,
  IN OUT VOID* Header,  -   The input paramter should be   VARIABLE_STORE_HEADER  *VarStoreHeader.
                            Since we don't know whether SECURE_BOOT_ENABLE is used, we don't know to include which ***VariableFormat.h
                            So just use VOID* to pass to platform library
  IN BOOLEAN CreateHobDataForRpDefaults - whether need to create a hob for RP setup variable only,
                                           in normal boot case, we should set this to TRUE to make sure RP setup variable can always sync latest PC variable value



  @return The number of Unicode characters.

**/
EFI_STATUS SyncSetupVariable  (
  IN EFI_PEI_SERVICES           **PeiServices,
  IN OUT VOID* Header,
  IN BOOLEAN CreateHobDataForRpDefaults
);


/*++
Description:

  This function finds the matched default data and create GUID hob only for RP variable .
  This is used to sync Pc variable to RP variable value

Arguments:

  DefaultId - Specifies the type of defaults to retrieve.
  BoardId   - Specifies the platform board of defaults to retrieve.

Returns:

  EFI_SUCCESS - The matched default data is found.
  EFI_NOT_FOUND - The matched default data is not found.
  EFI_OUT_OF_RESOURCES - No enough resource to create HOB.

--*/

EFI_STATUS
CreateRPVariableHob (
  IN UINT16  DefaultId,
  IN UINT16   BoardId
  );

#endif
