--- /dev/null
+/** @file\r
+ Report Status Code Library public .h file\r
+\r
+ Copyright (c) 2006, Intel Corporation \r
+ All rights reserved. This program and the accompanying materials \r
+ are licensed and made available under the terms and conditions of the BSD License \r
+ which accompanies this distribution. The full text of the license may be found at \r
+ http://opensource.org/licenses/bsd-license.php \r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+**/\r
+\r
+#ifndef __POST_CODE_LIB_H__\r
+#define __POST_CODE_LIB_H__\r
+\r
+#define POST_CODE_PROPERTY_POST_CODE_ENABLED 0x00000008\r
+#define POST_CODE_PROPERTY_POST_CODE_DESCRIPTION_ENABLED 0x00000010\r
+\r
+/**\r
+ Sends an 32-bit value to a POST card.\r
+\r
+ Sends the 32-bit value specified by Value to a POST card, and returns Value. \r
+ Some implementations of this library function may perform I/O operations \r
+ directly to a POST card device. Other implementations may send Value to \r
+ ReportStatusCode(), and the status code reporting mechanism will eventually \r
+ display the 32-bit value on the status reporting device.\r
+ \r
+ PostCode() must actively prevent recursion. If PostCode() is called while \r
+ processing another any other Report Status Code Library function, then \r
+ PostCode() must return Value immediately.\r
+\r
+ @param Value The 32-bit value to write to the POST card.\r
+\r
+ @return Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCode (\r
+ IN UINT32 Value\r
+ );\r
+\r
+\r
+/**\r
+ Sends an 32-bit value to a POST and associated ASCII string.\r
+\r
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.\r
+ If Description is not NULL, then the ASCII string specified by Description is \r
+ also passed to the handler that displays the POST card value. Some \r
+ implementations of this library function may perform I/O operations directly \r
+ to a POST card device. Other implementations may send Value to ReportStatusCode(), \r
+ and the status code reporting mechanism will eventually display the 32-bit \r
+ value on the status reporting device. \r
+\r
+ PostCodeWithDescription()must actively prevent recursion. If \r
+ PostCodeWithDescription() is called while processing another any other Report \r
+ Status Code Library function, then PostCodeWithDescription() must return Value \r
+ immediately.\r
+\r
+ @param Value The 32-bit value to write to the POST card.\r
+ @param Description Pointer to an ASCII string that is a description of the \r
+ POST code value. This is an optional parameter that may \r
+ be NULL.\r
+\r
+ @return Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCodeWithDescription (\r
+ IN UINT32 Value,\r
+ IN CONST CHAR8 *Description OPTIONAL\r
+ );\r
+\r
+\r
+/**\r
+ Returns TRUE if POST Codes are enabled.\r
+\r
+ This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+ bit of PcdPostCodePropertyMask is set. Otherwise FALSE is returned.\r
+\r
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+ PcdPostCodeProperyMask is set.\r
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+ PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeEnabled (\r
+ VOID\r
+ );\r
+\r
+\r
+/**\r
+ Returns TRUE if POST code descriptions are enabled.\r
+\r
+ This function returns TRUE if the \r
+ POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+ PcdPostCodePropertyMask is set. Otherwise FALSE is returned.\r
+\r
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+ bit of PcdPostCodeProperyMask is set.\r
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+ bit of PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeDescriptionEnabled (\r
+ VOID\r
+ );\r
+\r
+\r
+/**\r
+ Sends an 32-bit value to a POST card.\r
+\r
+ If POST codes are enabled in PcdPostCodeProperyMask, then call PostCode() \r
+ passing in Value. Value is returned.\r
+\r
+ @param Value The 32-bit value to write to the POST card.\r
+\r
+ @return Value\r
+\r
+**/\r
+#define POST_CODE(Value) PostCodeEnabled() ? PostCode(Value) : Value\r
+\r
+/**\r
+ Sends an 32-bit value to a POST and associated ASCII string.\r
+\r
+ If POST codes and POST code descriptions are enabled in \r
+ PcdPostCodeProperyMask, then call PostCodeWithDescription() passing in \r
+ Value and Description. If only POST codes are enabled, then call PostCode() \r
+ passing in Value. Value is returned.\r
+\r
+ @param Value The 32-bit value to write to the POST card.\r
+ @param Description Pointer to an ASCII string that is a description of the \r
+ POST code value.\r
+\r
+**/\r
+#define POST_CODE_WITH_DESCRIPTION(Value,Description) \\r
+ PostCodeEnabled() ? \\r
+ (PostCodeDescriptionEnabled() ? \\r
+ PostCodeWithDescription(Value,Description) : \\r
+ PostCode(Value)) : \\r
+ Value\r
+\r
+#endif\r