/** @file This file defines the Redfish debug library interface. Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef REDFISH_DEBUG_LIB_H_ #define REDFISH_DEBUG_LIB_H_ #include #include #include #include #include #include // Used with MdePKg DEBUG macro. #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 Host INterface #define DEBUG_REDFISH_PLATFORM_CONFIG DEBUG_MANAGEABILITY ///< Debug error level for Redfish Platform Configure Driver // // Definitions of Redfish debug capability in Redfish component scope, used with DEBUG_REDFISH macro // For example, Redfish Platform Config Driver // DEBUG_REDFISH(DEBUG_REDFISH_PLATFORM_CONFIG_DXE, ...) // #define DEBUG_REDFISH_COMPONENT_PLATFORM_CONFIG_DXE 0x00000001 #define DEBUG_REDFISH(DebugCategory, ...) \ do { \ if (!DebugPrintEnabled()) { \ break; \ } \ if (!DebugRedfishComponentEnabled (DebugCategory)) { \ break; \ } \ DEBUG ((DEBUG_MANAGEABILITY, ##__VA_ARGS__)); \ } while (FALSE) /** Determine whether the Redfish debug category is enabled in gEfiRedfishPkgTokenSpaceGuid.PcdRedfishDebugCategory. @param[in] DebugCategory Redfish debug category. @retval TRUE This debug category is enabled. @retval FALSE This debug category is disabled.. **/ BOOLEAN DebugRedfishComponentEnabled ( IN UINT64 DebugCategory ); /** 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. @param[in] ErrorLevel DEBUG macro error level @param[in] JsonValue Json value to dump. @retval EFI_SUCCESS Json string is printed. @retval Others Errors occur. **/ EFI_STATUS DumpJsonValue ( IN UINTN ErrorLevel, IN EDKII_JSON_VALUE JsonValue ); /** This function dump the status code, header and body in given Redfish payload. @param[in] ErrorLevel DEBUG macro error level @param[in] Payload Redfish payload to dump @retval EFI_SUCCESS Redfish payload is printed. @retval Others Errors occur. **/ EFI_STATUS DumpRedfishPayload ( IN UINTN ErrorLevel, IN REDFISH_PAYLOAD Payload ); /** This function dump the status code, header and body in given Redfish response. @param[in] Message Message string @param[in] ErrorLevel DEBUG macro error level @param[in] Response Redfish response to dump @retval EFI_SUCCESS Redfish response is printed. @retval Others Errors occur. **/ EFI_STATUS DumpRedfishResponse ( IN CONST CHAR8 *Message, IN UINTN ErrorLevel, IN REDFISH_RESPONSE *Response ); /** This function dump the HTTP status code. @param[in] ErrorLevel DEBUG macro error level @param[in] HttpStatusCode HTTP status code @retval EFI_SUCCESS HTTP status code is printed **/ EFI_STATUS DumpHttpStatusCode ( IN UINTN ErrorLevel, IN EFI_HTTP_STATUS_CODE HttpStatusCode ); /** This function dump the IPv4 address in given error level. @param[in] ErrorLevel DEBUG macro error level @param[in] Ipv4Address IPv4 address to dump @retval EFI_SUCCESS IPv4 address string is printed. @retval Others Errors occur. **/ EFI_STATUS DumpIpv4Address ( IN UINTN ErrorLevel, IN EFI_IPv4_ADDRESS *Ipv4Address ); /** Debug output raw data buffer. @param[in] ErrorLevel DEBUG macro error level @param[in] Buffer Debug output data buffer. @param[in] BufferSize The size of Buffer in byte. @retval EFI_SUCCESS Debug dump finished. @retval EFI_INVALID_PARAMETER Buffer is NULL. **/ EFI_STATUS DumpBuffer ( IN UINTN ErrorLevel, IN UINT8 *Buffer, IN UINTN BufferSize ); #endif