Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-cloud-workshop-connect-HTS221 by
pv_log.h
00001 // ---------------------------------------------------------------------------- 00002 // Copyright 2016-2017 ARM Ltd. 00003 // 00004 // Licensed under the Apache License, Version 2.0 (the "License"); 00005 // you may not use this file except in compliance with the License. 00006 // You may obtain a copy of the License at 00007 // 00008 // http://www.apache.org/licenses/LICENSE-2.0 00009 // 00010 // Unless required by applicable law or agreed to in writing, software 00011 // distributed under the License is distributed on an "AS IS" BASIS, 00012 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 // See the License for the specific language governing permissions and 00014 // limitations under the License. 00015 // ---------------------------------------------------------------------------- 00016 00017 /* Logging macros */ 00018 00019 #ifndef __PV_LOG_H__ 00020 #define __PV_LOG_H__ 00021 00022 #ifdef __cplusplus 00023 extern "C" { 00024 #endif 00025 00026 #define __PV_LOG_H__INSIDE 00027 #include <stdio.h> 00028 #include <inttypes.h> 00029 #include <string.h> 00030 #include <stdbool.h> 00031 #include "pal.h" 00032 #include "mbed-trace/mbed_trace.h" 00033 00034 #define __SA_PV_FILE__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) 00035 00036 extern palMutexID_t g_pv_logger_mutex; 00037 /** 00038 * Calls to mbed trace print function 00039 * 00040 * - The function sets mbed trace level according to log level, compose buffer with general data (line,color, file..) and message 00041 * and calls to mbed_vtracef. 00042 */ 00043 void pv_log_trace(int level, const char* filename, int line, const char *func, const char *format, ...); 00044 /** 00045 * Print buffer with mbed trace function 00046 * 00047 */ 00048 void pv_log_trace_buffer(int level, const char* filename, int line, const char *func, const char *color, const char *name, const uint8_t *buff, uint32_t buff_size); 00049 00050 #define _SA_PV_LOG_FUNC_ENTER(level, filename, line, func, format, ...) _SA_PV_LOG(level, filename, line, func, "===> " format, ##__VA_ARGS__) 00051 00052 /** Exit function logging 00053 * 00054 * - Should be called in the end of a function, assuming the function doesn't exit early due to an error. 00055 * - Should display values of output variables (with meaning, no need to print buffers). 00056 * - Usage example (with INFO level): SA_PV_LOG_INFO_FUNC_EXIT("argPointerToInt = %d, argPointerToUnsigned32 = %" PRIu32 "", *argPointerToInt, (uint32_t)*argPointerToUnsigned32); 00057 */ 00058 #define _SA_PV_LOG_FUNC_EXIT(level, filename, line, func, format, ...) _SA_PV_LOG(level, filename, line, func, "<=== " format, ##__VA_ARGS__) 00059 00060 // CRITICAL always being output 00061 #define SA_PV_LOG_CRITICAL(format, ...) \ 00062 _SA_PV_LOG(TRACE_LEVEL_CMD, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00063 #define SA_PV_LOG_BYTE_BUFF_CRITICAL(name, buff, buff_size) \ 00064 _SA_PV_BYTE_BUFF_LOG(TRACE_LEVEL_CMD, __SA_PV_FILE__, __LINE__, __func__, name, buff, buff_size) 00065 #define SA_PV_LOG_CRITICAL_FUNC_EXIT(format, ...) \ 00066 _SA_PV_LOG_FUNC_EXIT(TRACE_LEVEL_CMD, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00067 00068 #if (MBED_TRACE_MAX_LEVEL >= TRACE_LEVEL_ERROR) 00069 #define SA_PV_LOG_ERR(format, ...) \ 00070 _SA_PV_LOG(TRACE_LEVEL_ERROR, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00071 #define SA_PV_LOG_BYTE_BUFF_ERR(name, buff, buff_size) \ 00072 _SA_PV_BYTE_BUFF_LOG(TRACE_LEVEL_ERROR, __SA_PV_FILE__, __LINE__, __func__, name, buff, buff_size) 00073 #define SA_PV_LOG_ERR_FUNC_EXIT(format, ...) \ 00074 _SA_PV_LOG_FUNC_EXIT(TRACE_LEVEL_ERROR, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00075 00076 #else 00077 #define SA_PV_LOG_ERR(format, arg...) do {} while (0) 00078 #define SA_PV_LOG_BYTE_BUFF_ERR(format, arg...) do {} while (0) 00079 #define SA_PV_LOG_ERR_FUNC_EXIT(format, ...) do {} while (0) 00080 #endif 00081 00082 #if (MBED_TRACE_MAX_LEVEL >= TRACE_LEVEL_WARN) 00083 #define SA_PV_LOG_WARN(format, ...) \ 00084 _SA_PV_LOG(TRACE_LEVEL_WARN, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00085 #define SA_PV_LOG_BYTE_BUFF_WARN(name, buff, buff_size) \ 00086 _SA_PV_BYTE_BUFF_LOG(TRACE_LEVEL_WARN, __SA_PV_FILE__, __LINE__, __func__, name, buff, buff_size) 00087 #define SA_PV_LOG_WARN_FUNC_EXIT(format, ...) \ 00088 _SA_PV_LOG_FUNC_EXIT(TRACE_LEVEL_WARN, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00089 #else 00090 #define SA_PV_LOG_WARN(format, ...) do {} while (0) 00091 #define SA_PV_LOG_BYTE_BUFF_WARN(format, ...) do {} while (0) 00092 #define SA_PV_LOG_WARN_FUNC_EXIT(format, ...) do {} while (0) 00093 #endif 00094 00095 #if (MBED_TRACE_MAX_LEVEL >= TRACE_LEVEL_INFO) 00096 #define SA_PV_LOG_INFO(format, ...) \ 00097 _SA_PV_LOG(TRACE_LEVEL_INFO, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00098 #define SA_PV_LOG_INFO_FUNC_ENTER(format, ...) \ 00099 _SA_PV_LOG_FUNC_ENTER(TRACE_LEVEL_INFO, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00100 #define SA_PV_LOG_INFO_FUNC_ENTER_NO_ARGS() \ 00101 SA_PV_LOG_INFO_FUNC_ENTER("") 00102 #define SA_PV_LOG_INFO_FUNC_EXIT(format, ...) \ 00103 _SA_PV_LOG_FUNC_EXIT(TRACE_LEVEL_INFO, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00104 #define SA_PV_LOG_INFO_FUNC_EXIT_NO_ARGS() \ 00105 SA_PV_LOG_INFO_FUNC_EXIT("") 00106 #define SA_PV_LOG_BYTE_BUFF_INFO(name, buff, buff_size) \ 00107 _SA_PV_BYTE_BUFF_LOG(TRACE_LEVEL_INFO, __SA_PV_FILE__, __LINE__, __func__, name, buff, buff_size) 00108 #else 00109 #define SA_PV_LOG_INFO(format, ...) do {} while (0) 00110 #define SA_PV_LOG_INFO_FUNC_ENTER(format, ...) do {} while (0) 00111 #define SA_PV_LOG_INFO_FUNC_ENTER_NO_ARGS() do {} while (0) 00112 #define SA_PV_LOG_INFO_FUNC_EXIT(format, ...) do {} while (0) 00113 #define SA_PV_LOG_INFO_FUNC_EXIT_NO_ARGS() do {} while (0) 00114 #define SA_PV_LOG_BYTE_BUFF_INFO(format, ...) do {} while (0) 00115 #endif 00116 00117 #if (MBED_TRACE_MAX_LEVEL >= TRACE_LEVEL_DEBUG) 00118 #define SA_PV_LOG_TRACE(format, ...) \ 00119 _SA_PV_LOG(TRACE_LEVEL_DEBUG, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00120 #define SA_PV_LOG_TRACE_FUNC_ENTER(format, ...) \ 00121 _SA_PV_LOG_FUNC_ENTER(TRACE_LEVEL_DEBUG, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00122 #define SA_PV_LOG_TRACE_FUNC_ENTER_NO_ARGS() \ 00123 SA_PV_LOG_TRACE_FUNC_ENTER("") 00124 #define SA_PV_LOG_TRACE_FUNC_EXIT(format, ...) \ 00125 _SA_PV_LOG_FUNC_EXIT(TRACE_LEVEL_DEBUG, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00126 #define SA_PV_LOG_TRACE_FUNC_EXIT_NO_ARGS() \ 00127 SA_PV_LOG_TRACE_FUNC_EXIT("") 00128 #define SA_PV_LOG_BYTE_BUFF_TRACE(name, buff, buff_size) \ 00129 _SA_PV_BYTE_BUFF_LOG(TRACE_LEVEL_DEBUG, __SA_PV_FILE__, __LINE__, __func__, name, buff, buff_size) 00130 00131 #else 00132 #define SA_PV_LOG_TRACE(format, ...) do {} while (0) 00133 #define SA_PV_LOG_TRACE_FUNC_ENTER(format, ...) do {} while (0) 00134 #define SA_PV_LOG_TRACE_FUNC_ENTER_NO_ARGS() do {} while (0) 00135 #define SA_PV_LOG_TRACE_FUNC_EXIT(format, ...) do {} while (0) 00136 #define SA_PV_LOG_TRACE_FUNC_EXIT_NO_ARGS() do {} while (0) 00137 #define SA_PV_LOG_BYTE_BUFF_TRACE(format, ...) do {} while (0) 00138 #endif 00139 00140 #if (MBED_TRACE_MAX_LEVEL >= TRACE_LEVEL_DEBUG) 00141 #define SA_PV_LOG_DATA(format, ...) \ 00142 _SA_PV_LOG(TRACE_LEVEL_DEBUG, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00143 #define SA_PV_LOG_DATA_FUNC_ENTER(format, ...) \ 00144 _SA_PV_LOG_FUNC_ENTER(TRACE_LEVEL_DEBUG, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00145 #define SA_PV_LOG_DATA_FUNC_ENTER_NO_ARGS() \ 00146 SA_PV_LOG_DATA_FUNC_ENTER("") 00147 #define SA_PV_LOG_DATA_FUNC_EXIT(format, ...) \ 00148 _SA_PV_LOG_FUNC_EXIT(TRACE_LEVEL_DEBUG, __SA_PV_FILE__, __LINE__, __func__, format, ##__VA_ARGS__) 00149 #define SA_PV_LOG_DATA_FUNC_EXIT_NO_ARGS() \ 00150 SA_PV_LOG_DATA_FUNC_EXIT("") 00151 #define SA_PV_LOG_BYTE_BUFF_DATA(name, buff, buff_size) \ 00152 _SA_PV_BYTE_BUFF_LOG(TRACE_LEVEL_DEBUG, __SA_PV_FILE__, __LINE__, __func__, name, buff, buff_size) 00153 #else 00154 #define SA_PV_LOG_DATA(format, ...) do {} while (0) 00155 #define SA_PV_LOG_DATA_FUNC_ENTER(format, ...) do {} while (0) 00156 #define SA_PV_LOG_DATA_FUNC_ENTER_NO_ARGS() do {} while (0) 00157 #define SA_PV_LOG_DATA_FUNC_EXIT(format, ...) do {} while (0) 00158 #define SA_PV_LOG_DATA_FUNC_EXIT_NO_ARGS() do {} while (0) 00159 #define SA_PV_LOG_BYTE_BUFF_DATA(format, ...) do {} while (0) 00160 #endif 00161 00162 /* Should only be called once, additional calls do nothing. */ 00163 #define _SA_PV_LOG(level, file, line, func, format, ...) \ 00164 do{ \ 00165 mbed_tracef(level, "fcc","%s:%d:%s:"format, file, line, func, ##__VA_ARGS__);\ 00166 } while (0) 00167 00168 #define _SA_PV_BYTE_BUFF_LOG(level, file, line, func, name, buff, buff_size) ( mbed_tracef(level, "fcc", "%s"name, mbed_trace_array(buff, buff_size))) 00169 00170 #undef __PV_LOG_H__INSIDE 00171 00172 #ifdef __cplusplus 00173 } 00174 #endif 00175 #endif /*__PV_LOG_H__*/ 00176
Generated on Tue Jul 12 2022 19:12:15 by
1.7.2
