/** @file
  Provides firmware device specific services to support saving dependency to
  firmware device and getting dependency from firmware device.

  Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>

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

**/

#ifndef __FMP_DEPENDENCY_DEVICE_LIB__
#define __FMP_DEPENDENCY_DEVICE_LIB__

#include <PiDxe.h>
#include <Protocol/FirmwareManagement.h>

/**
  Save dependency to Fmp device.

  @param[in]  Depex       Fmp dependency.
  @param[in]  DepexSize   Size, in bytes, of the Fmp dependency.

  @retval  EFI_SUCCESS       Save Fmp dependency succeeds.
  @retval  EFI_UNSUPPORTED   Save Fmp dependency is not supported.
  @retval  Others            Save Fmp dependency fails.

**/
EFI_STATUS
EFIAPI
SaveFmpDependency (
  IN EFI_FIRMWARE_IMAGE_DEP  *Depex,
  IN UINT32                  DepexSize
  );

/**
  Get dependency from the Fmp device.
  This caller is responsible for freeing the dependency buffer.

  @param[out]  DepexSize   Size, in bytes, of the dependency.

  @retval  The pointer to dependency.
  @retval  NULL

**/
EFI_FIRMWARE_IMAGE_DEP *
EFIAPI
GetFmpDependency (
  OUT UINT32  *DepexSize
  );

#endif
