From 96d691166f07b7ed422f9536832edadc0aea35c9 Mon Sep 17 00:00:00 2001 From: Nickle Wang Date: Tue, 4 Jul 2023 21:12:44 +0800 Subject: RedfishPkg/RedfishDebugLib: add new interfaces Introduce DumpHiiStatementValue() and DumpRedfishValue() to RedfishDebugLib. Application uses these functions to debug print the value of HII_STATEMENT_VALUE and EDKII_REDFISH_VALUE. Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy Reviewed-by: Abner Chang --- RedfishPkg/Include/Library/RedfishDebugLib.h | 33 ++++++ .../Library/RedfishDebugLib/RedfishDebugLib.c | 113 +++++++++++++++++++++ 2 files changed, 146 insertions(+) (limited to 'RedfishPkg') diff --git a/RedfishPkg/Include/Library/RedfishDebugLib.h b/RedfishPkg/Include/Library/RedfishDebugLib.h index 73f1469ac6..da7e0d0bc9 100644 --- a/RedfishPkg/Include/Library/RedfishDebugLib.h +++ b/RedfishPkg/Include/Library/RedfishDebugLib.h @@ -11,12 +11,45 @@ #define REDFISH_DEBUG_LIB_H_ #include +#include #include #include +#include + #define DEBUG_REDFISH_NETWORK DEBUG_MANAGEABILITY ///< Debug error level for Redfish networking function #define DEBUG_REDFISH_HOST_INTERFACE DEBUG_MANAGEABILITY ///< Debug error level for Redfish networking function +/** + Debug print the value of StatementValue. + + @param[in] ErrorLevel DEBUG macro error level. + @param[in] StatementValue The statement value to print. + + @retval EFI_SUCCESS StatementValue is printed. + @retval EFI_INVALID_PARAMETER StatementValue is NULL. +**/ +EFI_STATUS +DumpHiiStatementValue ( + IN UINTN ErrorLevel, + IN HII_STATEMENT_VALUE *StatementValue + ); + +/** + Debug print the value of RedfishValue. + + @param[in] ErrorLevel DEBUG macro error level. + @param[in] RedfishValue The statement value to print. + + @retval EFI_SUCCESS RedfishValue is printed. + @retval EFI_INVALID_PARAMETER RedfishValue is NULL. +**/ +EFI_STATUS +DumpRedfishValue ( + IN UINTN ErrorLevel, + IN EDKII_REDFISH_VALUE *RedfishValue + ); + /** This function dump the Json string in given error level. diff --git a/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.c b/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.c index 6f1d9de25e..0b2a9a5c4e 100644 --- a/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.c +++ b/RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.c @@ -22,6 +22,119 @@ #define REDFISH_JSON_STRING_LENGTH 200 #define REDFISH_JSON_OUTPUT_FORMAT (EDKII_JSON_COMPACT | EDKII_JSON_INDENT(2)) +/** + Debug print the value of StatementValue. + + @param[in] ErrorLevel DEBUG macro error level. + @param[in] StatementValue The statement value to print. + + @retval EFI_SUCCESS StatementValue is printed. + @retval EFI_INVALID_PARAMETER StatementValue is NULL. +**/ +EFI_STATUS +DumpHiiStatementValue ( + IN UINTN ErrorLevel, + IN HII_STATEMENT_VALUE *StatementValue + ) +{ + if (StatementValue == NULL) { + return EFI_INVALID_PARAMETER; + } + + DEBUG ((ErrorLevel, "BufferValueType: 0x%x\n", StatementValue->BufferValueType)); + DEBUG ((ErrorLevel, "BufferLen: 0x%x\n", StatementValue->BufferLen)); + DEBUG ((ErrorLevel, "Buffer: 0x%p\n", StatementValue->Buffer)); + DEBUG ((ErrorLevel, "Type: 0x%p\n", StatementValue->Type)); + + switch (StatementValue->Type) { + case EFI_IFR_TYPE_NUM_SIZE_8: + DEBUG ((ErrorLevel, "Value: 0x%x\n", StatementValue->Value.u8)); + break; + case EFI_IFR_TYPE_NUM_SIZE_16: + DEBUG ((ErrorLevel, "Value: 0x%x\n", StatementValue->Value.u16)); + break; + case EFI_IFR_TYPE_NUM_SIZE_32: + DEBUG ((ErrorLevel, "Value: 0x%x\n", StatementValue->Value.u32)); + break; + case EFI_IFR_TYPE_NUM_SIZE_64: + DEBUG ((ErrorLevel, "Value: 0x%lx\n", StatementValue->Value.u64)); + break; + case EFI_IFR_TYPE_BOOLEAN: + DEBUG ((ErrorLevel, "Value: %a\n", (StatementValue->Value.b ? "true" : "false"))); + break; + case EFI_IFR_TYPE_STRING: + DEBUG ((ErrorLevel, "Value: 0x%x\n", StatementValue->Value.string)); + break; + case EFI_IFR_TYPE_TIME: + case EFI_IFR_TYPE_DATE: + default: + break; + } + + return EFI_SUCCESS; +} + +/** + Debug print the value of RedfishValue. + + @param[in] ErrorLevel DEBUG macro error level. + @param[in] RedfishValue The statement value to print. + + @retval EFI_SUCCESS RedfishValue is printed. + @retval EFI_INVALID_PARAMETER RedfishValue is NULL. +**/ +EFI_STATUS +DumpRedfishValue ( + IN UINTN ErrorLevel, + IN EDKII_REDFISH_VALUE *RedfishValue + ) +{ + UINTN Index; + + if (RedfishValue == NULL) { + return EFI_INVALID_PARAMETER; + } + + DEBUG ((ErrorLevel, "Type: 0x%x\n", RedfishValue->Type)); + DEBUG ((ErrorLevel, "ArrayCount: 0x%x\n", RedfishValue->ArrayCount)); + + switch (RedfishValue->Type) { + case RedfishValueTypeInteger: + DEBUG ((ErrorLevel, "Value: 0x%x\n", RedfishValue->Value.Integer)); + break; + case RedfishValueTypeBoolean: + DEBUG ((ErrorLevel, "Value: %a\n", (RedfishValue->Value.Boolean ? "true" : "false"))); + break; + case RedfishValueTypeString: + DEBUG ((ErrorLevel, "Value: %a\n", RedfishValue->Value.Buffer)); + break; + case RedfishValueTypeStringArray: + for (Index = 0; Index < RedfishValue->ArrayCount; Index++) { + DEBUG ((ErrorLevel, "Value[%d]: %a\n", Index, RedfishValue->Value.StringArray[Index])); + } + + break; + case RedfishValueTypeIntegerArray: + for (Index = 0; Index < RedfishValue->ArrayCount; Index++) { + DEBUG ((ErrorLevel, "Value[%d]: 0x%x\n", Index, RedfishValue->Value.IntegerArray[Index])); + } + + break; + case RedfishValueTypeBooleanArray: + for (Index = 0; Index < RedfishValue->ArrayCount; Index++) { + DEBUG ((ErrorLevel, "Value[%d]: %a\n", Index, (RedfishValue->Value.BooleanArray[Index] ? "true" : "false"))); + } + + break; + case RedfishValueTypeUnknown: + case RedfishValueTypeMax: + default: + break; + } + + return EFI_SUCCESS; +} + /** This function dump the Json string in given error level. -- cgit v1.2.3