/** @file Provide Console output library functions. Copyright (c) 2018 - 2020, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __CONSOLE_OUT_LIB_H__ #define __CONSOLE_OUT_LIB_H__ #include #include // // NOT RECOMMEND to use __CONSOLE_PRINT directly // #define __CONSOLE_PRINT_FUNC(Format, ...) \ do { \ ConsolePrint (Format, ##__VA_ARGS__); \ } while (FALSE) #define __CONSOLE_PRINT_UNICODE_FUNC(Format, ...) \ do { \ ConsolePrintUnicode (Format, ##__VA_ARGS__); \ } while (FALSE) #define __CONSOLE_PRINT_CONDITION_FUNC(PrintLevel, Format, ...) \ do { \ ConsolePrint (Format, ##__VA_ARGS__); \ } while (FALSE) #define __CONSOLE_PRINT_UNICODE_CONDITION_FUNC(PrintLevel, Format, ...) \ do { \ ConsolePrintUnicode (Format, ##__VA_ARGS__); \ } while (FALSE) #define __CONSOLE_PRINT_CONDITION(Expression) \ __CONSOLE_PRINT_CONDITION_FUNC Expression #define __CONSOLE_PRINT_UNICODE_CONDITION(Expression) \ __CONSOLE_PRINT_UNICODE_CONDITION_FUNC Expression // // NOT RECOMMEND to use __CONSOLE_PRINT directly // // // CONSOLE_PRINT will redirect log messages to consoles // Expression does not have PrintLevel(ErrorLevel). // #define CONSOLE_PRINT(Expression) \ __CONSOLE_PRINT_FUNC Expression #define CONSOLE_PRINT_UNICODE(Expression) \ __CONSOLE_PRINT_UNICODE_FUNC Expression // // ErrorLevel is ignored when log message is redirect to consoles. // Valid only at DEBUG(). // #define CONSOLE_PRINT_CONDITION(ConsoleOut, Expression) \ do { \ if (ConsoleOut) { \ __CONSOLE_PRINT_CONDITION(Expression); \ } else { \ DEBUG(Expression); \ } \ } while (FALSE) #define CONSOLE_PRINT_UNICODE_CONDITION(ConsoleOut, Expression) \ do { \ if (ConsoleOut) { \ __CONSOLE_PRINT_UNICODE_CONDITION(Expression); \ } else { \ DEBUG(Expression); \ } \ } while (FALSE) typedef enum { ConsoleOutSerialPort = BIT0, ConsoleOutFrameBuffer = BIT1, ConsoleOutDebugPort = BIT2, ConsoleOutAll = 0xFFFFFFFF, } CONSOLE_OUT_DEVICE_TYPE; /** Write data from buffer to the console. Writes NumberOfBytes data bytes from Buffer to the virtual console. If Buffer is NULL, then ASSERT(). If NumberOfBytes is zero, then return 0. @param Buffer Pointer to the data buffer to be written. @param NumberOfBytes Number of bytes to write to the console. @retval >0 The number of bytes written to the console. **/ UINTN EFIAPI ConsoleWrite ( IN UINT8 *Buffer, IN UINTN NumberOfBytes ); /** Print Ascii debug message to consoles If Format is NULL, then ASSERT(). @param Format The format string for the debug message to print. @param ... The variable argument list whose contents are accessed based on the format string specified by Format. **/ UINTN EFIAPI ConsolePrint ( IN CONST CHAR8 *Format, ... ); /** Print Unicode debug message to consoles If Format is NULL, then ASSERT(). @param Format The format string for the debug message to print. @param ... The variable argument list whose contents are accessed based on the format string specified by Format. **/ UINTN EFIAPI ConsolePrintUnicode ( IN CONST CHAR16 *Format, ... ); #endif