Skip to content

Commit

Permalink
RedfishPkg/RedfishDebugLib: add new interfaces
Browse files Browse the repository at this point in the history
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 <[email protected]>
Cc: Abner Chang <[email protected]>
Cc: Igor Kulchytskyy <[email protected]>
Reviewed-by: Abner Chang <[email protected]>
  • Loading branch information
nicklela authored and mergify[bot] committed Jul 6, 2023
1 parent 6047516 commit 96d6911
Show file tree
Hide file tree
Showing 2 changed files with 146 additions and 0 deletions.
33 changes: 33 additions & 0 deletions RedfishPkg/Include/Library/RedfishDebugLib.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,45 @@
#define REDFISH_DEBUG_LIB_H_

#include <Uefi.h>
#include <Library/HiiUtilityLib.h>
#include <Library/JsonLib.h>
#include <Library/RedfishLib.h>

#include <Protocol/EdkIIRedfishPlatformConfig.h>

#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.
Expand Down
113 changes: 113 additions & 0 deletions RedfishPkg/Library/RedfishDebugLib/RedfishDebugLib.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 96d6911

Please sign in to comment.