1 /* 2 * Copyright (c) 2023, Arm Limited. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #ifndef __PLATFORM_LOG_H__ 9 #define __PLATFORM_LOG_H__ 10 11 #define PLAT_LOG_LEVEL_OFF (0) 12 #define PLAT_LOG_LEVEL_ERROR (1) 13 #define PLAT_LOG_LEVEL_WARN (2) 14 #define PLAT_LOG_LEVEL_INFO (3) 15 #define PLAT_LOG_LEVEL_DEBUG (4) 16 17 #ifndef PLAT_LOG_MODULE_NAME 18 #define MODULE_NAME_STR " " 19 #else 20 #define MODULE_NAME_STR "["PLAT_LOG_MODULE_NAME"]: " 21 #endif 22 23 #ifndef PLAT_LOG_LEVEL 24 #warning "Logging level is not defined, default is PLAT_LOG_LEVEL_ERROR." 25 #define PLAT_LOG_LEVEL PLAT_LOG_LEVEL_ERROR 26 #endif 27 28 29 /* System can override PRINTF with other rich format function*/ 30 #ifndef PRINTF 31 #if PLAT_LOG_LEVEL > PLAT_LOG_LEVEL_OFF 32 #include <stdio.h> 33 #define PRINTF printf 34 #endif 35 #endif 36 37 #if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_ERROR 38 #define ERROR(f_, ...) do { PRINTF("\033[31;4m[ERR]:\033[m%s"f_"\r\n", MODULE_NAME_STR, ##__VA_ARGS__); } while (0) 39 #else 40 #define ERROR(f_, ...) do { } while(0) 41 #endif 42 #if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_WARN 43 #define WARN(f_, ...) do { PRINTF("\033[33;4m[WRN]:\033[m%s"f_"\r\n", MODULE_NAME_STR, ##__VA_ARGS__); } while (0) 44 #else 45 #define WARN(f_, ...) do { } while(0) 46 #endif 47 #if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_INFO 48 #define INFO(f_, ...) do { PRINTF("[INF]:%s"f_"\r\n", MODULE_NAME_STR, ##__VA_ARGS__); } while (0) 49 #else 50 #define INFO(f_, ...) do { } while(0) 51 #endif 52 #if PLAT_LOG_LEVEL >= PLAT_LOG_LEVEL_DEBUG 53 #define VERBOSE(f_, ...) do { PRINTF("[DBG]:%s" f_"\r\n",MODULE_NAME_STR, ##__VA_ARGS__); } while (0) 54 #define DEBUG(f_, ...) do { PRINTF("[DBG]:%s" f_"\r\n",MODULE_NAME_STR, ##__VA_ARGS__); } while (0) 55 #else 56 #define VERBOSE(f_, ...) do { } while(0) 57 #define DEBUG(f_, ...) do { } while(0) 58 #endif 59 60 #endif /* __PLATFORM_LOG_H__ */ 61