/** @file
  Defines last attempt status code ranges within the UEFI Specification
  defined unsuccessful vendor range.

  Copyright (c) Microsoft Corporation.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef __LAST_ATTEMPT_STATUS_H__
#define __LAST_ATTEMPT_STATUS_H__

///
/// Last Attempt Status Unsuccessful Vendor Range Map
///
/// Update this map any time new ranges are added. Pre-existing range definitions cannot be modified
/// to keep status code definitions consistent over time.
///
/// START     | END       | Usage
/// ------------------------------------------------------------------|
/// 0x1000    | 0x17FF    | FmpDevicePkg                              |
///    0x1000 |    0x107F | FmpDxe driver                             |
///    0x1080 |    0x109F | FmpDependencyLib                          |
///    0x10A0 |    0x10BF | FmpDependencyCheckLib                     |
///    0x10C0 |    0x17FF | Unused. Available for future expansion.   |
/// 0x1800    | 0x1FFF    | FmpDeviceLib instances implementation     |
/// 0x2000    | 0x3FFF    | Unused. Available for future expansion.   |
///

///
/// The minimum value of the FMP reserved range.
///
#define LAST_ATTEMPT_STATUS_FMP_RESERVED_MIN_ERROR_CODE_VALUE               0x1000

///
/// The maximum value of the FMP reserved range.
///
#define LAST_ATTEMPT_STATUS_FMP_RESERVED_MAX_ERROR_CODE_VALUE               0x1FFF

///
/// The minimum value allowed for FmpDxe driver-specific errors.
///
#define LAST_ATTEMPT_STATUS_DRIVER_MIN_ERROR_CODE_VALUE                     0x1000

///
/// The maximum value allowed for FmpDxe driver-specific errors.
///
#define LAST_ATTEMPT_STATUS_DRIVER_MAX_ERROR_CODE_VALUE                     0x107F

///
/// The minimum value allowed for FmpDependencyLib related errors.
///
#define LAST_ATTEMPT_STATUS_FMP_DEPENDENCY_LIB_MIN_ERROR_CODE_VALUE         0x1080

///
/// The maximum value allowed for FmpDependencyLib related errors.
///
#define LAST_ATTEMPT_STATUS_FMP_DEPENDENCY_LIB_MAX_ERROR_CODE_VALUE         0x109F

///
/// The minimum value allowed for FmpDependencyCheckLib related errors.
///
#define LAST_ATTEMPT_STATUS_FMP_DEPENDENCY_CHECK_LIB_MIN_ERROR_CODE_VALUE   0x10A0

///
/// The maximum value allowed for FmpDependencyCheckLib related errors.
///
#define LAST_ATTEMPT_STATUS_FMP_DEPENDENCY_CHECK_LIB_MAX_ERROR_CODE_VALUE   0x10BF

///
/// The minimum value allowed for FMP device library errors.
///
#define LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MIN_ERROR_CODE_VALUE             0x1800

///
/// The maximum value allowed for FMP device library errors.
///
#define LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MAX_ERROR_CODE_VALUE             0x1FFF

#endif
