sandbox / mbed-trace
Committer:
Yogesh Pande
Date:
Thu Mar 31 18:10:53 2016 +0300
Revision:
1:506ad37c6bd7
mbed-trace v1.1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yogesh Pande 1:506ad37c6bd7 1 /*
Yogesh Pande 1:506ad37c6bd7 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
Yogesh Pande 1:506ad37c6bd7 3 * SPDX-License-Identifier: Apache-2.0
Yogesh Pande 1:506ad37c6bd7 4 * Licensed under the Apache License, Version 2.0 (the License); you may
Yogesh Pande 1:506ad37c6bd7 5 * not use this file except in compliance with the License.
Yogesh Pande 1:506ad37c6bd7 6 * You may obtain a copy of the License at
Yogesh Pande 1:506ad37c6bd7 7 *
Yogesh Pande 1:506ad37c6bd7 8 * http://www.apache.org/licenses/LICENSE-2.0
Yogesh Pande 1:506ad37c6bd7 9 *
Yogesh Pande 1:506ad37c6bd7 10 * Unless required by applicable law or agreed to in writing, software
Yogesh Pande 1:506ad37c6bd7 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
Yogesh Pande 1:506ad37c6bd7 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Yogesh Pande 1:506ad37c6bd7 13 * See the License for the specific language governing permissions and
Yogesh Pande 1:506ad37c6bd7 14 * limitations under the License.
Yogesh Pande 1:506ad37c6bd7 15 */
Yogesh Pande 1:506ad37c6bd7 16
Yogesh Pande 1:506ad37c6bd7 17 /**
Yogesh Pande 1:506ad37c6bd7 18 * \file mbed_trace.h
Yogesh Pande 1:506ad37c6bd7 19 * Trace interface for MbedOS applications.
Yogesh Pande 1:506ad37c6bd7 20 * This file provide simple but flexible way to handle software traces.
Yogesh Pande 1:506ad37c6bd7 21 * Trace library are abstract layer, which use stdout (printf) by default,
Yogesh Pande 1:506ad37c6bd7 22 * but outputs can be easily redirect to custom function, for example to
Yogesh Pande 1:506ad37c6bd7 23 * store traces to memory or other interfaces.
Yogesh Pande 1:506ad37c6bd7 24 *
Yogesh Pande 1:506ad37c6bd7 25 * usage example:
Yogesh Pande 1:506ad37c6bd7 26 * \code(main.c:)
Yogesh Pande 1:506ad37c6bd7 27 * #include "mbed_trace.h"
Yogesh Pande 1:506ad37c6bd7 28 * #define TRACE_GROUP "main"
Yogesh Pande 1:506ad37c6bd7 29 *
Yogesh Pande 1:506ad37c6bd7 30 * int main(void){
Yogesh Pande 1:506ad37c6bd7 31 * mbed_trace_init(); // initialize trace library
Yogesh Pande 1:506ad37c6bd7 32 * tr_debug("this is debug msg"); //print debug message to stdout: "[DBG]
Yogesh Pande 1:506ad37c6bd7 33 * tr_err("this is error msg");
Yogesh Pande 1:506ad37c6bd7 34 * tr_warn("this is warning msg");
Yogesh Pande 1:506ad37c6bd7 35 * tr_info("this is info msg");
Yogesh Pande 1:506ad37c6bd7 36 * return 0;
Yogesh Pande 1:506ad37c6bd7 37 * }
Yogesh Pande 1:506ad37c6bd7 38 * \endcode
Yogesh Pande 1:506ad37c6bd7 39 * Activate with compiler flag: YOTTA_CFG_MBED_TRACE
Yogesh Pande 1:506ad37c6bd7 40 * Configure trace line buffer size with compiler flag: YOTTA_CFG_MBED_TRACE_LINE_LENGTH. Default length: 1024.
Yogesh Pande 1:506ad37c6bd7 41 *
Yogesh Pande 1:506ad37c6bd7 42 */
Yogesh Pande 1:506ad37c6bd7 43 #ifndef MBED_TRACE_H_
Yogesh Pande 1:506ad37c6bd7 44 #define MBED_TRACE_H_
Yogesh Pande 1:506ad37c6bd7 45
Yogesh Pande 1:506ad37c6bd7 46 #ifdef __cplusplus
Yogesh Pande 1:506ad37c6bd7 47 extern "C" {
Yogesh Pande 1:506ad37c6bd7 48 #endif
Yogesh Pande 1:506ad37c6bd7 49
Yogesh Pande 1:506ad37c6bd7 50 #ifdef YOTTA_CFG
Yogesh Pande 1:506ad37c6bd7 51 #include <stdint.h>
Yogesh Pande 1:506ad37c6bd7 52 #include <stddef.h>
Yogesh Pande 1:506ad37c6bd7 53 #include <stdbool.h>
Yogesh Pande 1:506ad37c6bd7 54 #else
Yogesh Pande 1:506ad37c6bd7 55 #include "ns_types.h"
Yogesh Pande 1:506ad37c6bd7 56 #endif
Yogesh Pande 1:506ad37c6bd7 57
Yogesh Pande 1:506ad37c6bd7 58 #ifndef YOTTA_CFG_MBED_TRACE_FEA_IPV6
Yogesh Pande 1:506ad37c6bd7 59 #define YOTTA_CFG_MBED_TRACE_FEA_IPV6 1
Yogesh Pande 1:506ad37c6bd7 60 #endif
Yogesh Pande 1:506ad37c6bd7 61
Yogesh Pande 1:506ad37c6bd7 62 /** 3 upper bits are trace modes related,
Yogesh Pande 1:506ad37c6bd7 63 and 5 lower bits are trace level configuration */
Yogesh Pande 1:506ad37c6bd7 64
Yogesh Pande 1:506ad37c6bd7 65 /** Config mask */
Yogesh Pande 1:506ad37c6bd7 66 #define TRACE_MASK_CONFIG 0xE0
Yogesh Pande 1:506ad37c6bd7 67 /** Trace level mask */
Yogesh Pande 1:506ad37c6bd7 68 #define TRACE_MASK_LEVEL 0x1F
Yogesh Pande 1:506ad37c6bd7 69
Yogesh Pande 1:506ad37c6bd7 70 /** plain trace data instead of "headers" */
Yogesh Pande 1:506ad37c6bd7 71 #define TRACE_MODE_PLAIN 0x80
Yogesh Pande 1:506ad37c6bd7 72 /** color mode */
Yogesh Pande 1:506ad37c6bd7 73 #define TRACE_MODE_COLOR 0x40
Yogesh Pande 1:506ad37c6bd7 74 /** Use print CR before trace line */
Yogesh Pande 1:506ad37c6bd7 75 #define TRACE_CARRIAGE_RETURN 0x20
Yogesh Pande 1:506ad37c6bd7 76
Yogesh Pande 1:506ad37c6bd7 77 /** used to activate all trace levels */
Yogesh Pande 1:506ad37c6bd7 78 #define TRACE_ACTIVE_LEVEL_ALL 0x1F
Yogesh Pande 1:506ad37c6bd7 79 /** print all traces same as above */
Yogesh Pande 1:506ad37c6bd7 80 #define TRACE_ACTIVE_LEVEL_DEBUG 0x1f
Yogesh Pande 1:506ad37c6bd7 81 /** print info,warn and error traces */
Yogesh Pande 1:506ad37c6bd7 82 #define TRACE_ACTIVE_LEVEL_INFO 0x0f
Yogesh Pande 1:506ad37c6bd7 83 /** print warn and error traces */
Yogesh Pande 1:506ad37c6bd7 84 #define TRACE_ACTIVE_LEVEL_WARN 0x07
Yogesh Pande 1:506ad37c6bd7 85 /** print only error trace */
Yogesh Pande 1:506ad37c6bd7 86 #define TRACE_ACTIVE_LEVEL_ERROR 0x03
Yogesh Pande 1:506ad37c6bd7 87 /** print only cmd line data */
Yogesh Pande 1:506ad37c6bd7 88 #define TRACE_ACTIVE_LEVEL_CMD 0x01
Yogesh Pande 1:506ad37c6bd7 89 /** trace nothing */
Yogesh Pande 1:506ad37c6bd7 90 #define TRACE_ACTIVE_LEVEL_NONE 0x00
Yogesh Pande 1:506ad37c6bd7 91
Yogesh Pande 1:506ad37c6bd7 92 /** this print is some deep information for debug purpose */
Yogesh Pande 1:506ad37c6bd7 93 #define TRACE_LEVEL_DEBUG 0x10
Yogesh Pande 1:506ad37c6bd7 94 /** Info print, for general purpose prints */
Yogesh Pande 1:506ad37c6bd7 95 #define TRACE_LEVEL_INFO 0x08
Yogesh Pande 1:506ad37c6bd7 96 /** warning prints, which shouldn't causes any huge problems */
Yogesh Pande 1:506ad37c6bd7 97 #define TRACE_LEVEL_WARN 0x04
Yogesh Pande 1:506ad37c6bd7 98 /** Error prints, which causes probably problems, e.g. out of mem. */
Yogesh Pande 1:506ad37c6bd7 99 #define TRACE_LEVEL_ERROR 0x02
Yogesh Pande 1:506ad37c6bd7 100 /** special level for cmdline. Behaviours like "plain mode" */
Yogesh Pande 1:506ad37c6bd7 101 #define TRACE_LEVEL_CMD 0x01
Yogesh Pande 1:506ad37c6bd7 102
Yogesh Pande 1:506ad37c6bd7 103 //usage macros:
Yogesh Pande 1:506ad37c6bd7 104 #define tr_info(...) mbed_tracef(TRACE_LEVEL_INFO, TRACE_GROUP, __VA_ARGS__) //!< Print info message
Yogesh Pande 1:506ad37c6bd7 105 #define tr_debug(...) mbed_tracef(TRACE_LEVEL_DEBUG, TRACE_GROUP, __VA_ARGS__) //!< Print debug message
Yogesh Pande 1:506ad37c6bd7 106 #define tr_warning(...) mbed_tracef(TRACE_LEVEL_WARN, TRACE_GROUP, __VA_ARGS__) //!< Print warning message
Yogesh Pande 1:506ad37c6bd7 107 #define tr_warn(...) mbed_tracef(TRACE_LEVEL_WARN, TRACE_GROUP, __VA_ARGS__) //!< Alternative warning message
Yogesh Pande 1:506ad37c6bd7 108 #define tr_error(...) mbed_tracef(TRACE_LEVEL_ERROR, TRACE_GROUP, __VA_ARGS__) //!< Print Error Message
Yogesh Pande 1:506ad37c6bd7 109 #define tr_err(...) mbed_tracef(TRACE_LEVEL_ERROR, TRACE_GROUP, __VA_ARGS__) //!< Alternative error message
Yogesh Pande 1:506ad37c6bd7 110 #define tr_cmdline(...) mbed_tracef(TRACE_LEVEL_CMD, TRACE_GROUP, __VA_ARGS__) //!< Special print for cmdline. See more from TRACE_LEVEL_CMD -level
Yogesh Pande 1:506ad37c6bd7 111
Yogesh Pande 1:506ad37c6bd7 112 /** Possible to skip all traces in compile time */
Yogesh Pande 1:506ad37c6bd7 113 #if defined(YOTTA_CFG_MBED_TRACE) || (defined(YOTTA_CFG) && !defined(NDEBUG))
Yogesh Pande 1:506ad37c6bd7 114
Yogesh Pande 1:506ad37c6bd7 115 /**
Yogesh Pande 1:506ad37c6bd7 116 * Allow specification of default TRACE_GROUP to be used if not specified by application
Yogesh Pande 1:506ad37c6bd7 117 */
Yogesh Pande 1:506ad37c6bd7 118
Yogesh Pande 1:506ad37c6bd7 119 #ifndef TRACE_GROUP
Yogesh Pande 1:506ad37c6bd7 120 #ifdef YOTTA_CFG_MBED_TRACE_GROUP
Yogesh Pande 1:506ad37c6bd7 121 #define TRACE_GROUP_STR_HELPER(x) #x
Yogesh Pande 1:506ad37c6bd7 122 #define TRACE_GROUP_STR(x) TRACE_GROUP_STR_HELPER(x)
Yogesh Pande 1:506ad37c6bd7 123 #define TRACE_GROUP TRACE_GROUP_STR(YOTTA_CFG_MBED_TRACE_GROUP)
Yogesh Pande 1:506ad37c6bd7 124 #else
Yogesh Pande 1:506ad37c6bd7 125 #define TRACE_GROUP "APPL"
Yogesh Pande 1:506ad37c6bd7 126 #endif
Yogesh Pande 1:506ad37c6bd7 127 #endif
Yogesh Pande 1:506ad37c6bd7 128
Yogesh Pande 1:506ad37c6bd7 129 #if defined(__GNUC__) || defined(__CC_ARM)
Yogesh Pande 1:506ad37c6bd7 130 /**
Yogesh Pande 1:506ad37c6bd7 131 * Initialize trace functionality
Yogesh Pande 1:506ad37c6bd7 132 * @return 0 when all success, otherwise non zero
Yogesh Pande 1:506ad37c6bd7 133 */
Yogesh Pande 1:506ad37c6bd7 134 int mbed_trace_init( void );
Yogesh Pande 1:506ad37c6bd7 135 /**
Yogesh Pande 1:506ad37c6bd7 136 * Free trace memory
Yogesh Pande 1:506ad37c6bd7 137 */
Yogesh Pande 1:506ad37c6bd7 138 void mbed_trace_free( void );
Yogesh Pande 1:506ad37c6bd7 139 /**
Yogesh Pande 1:506ad37c6bd7 140 * Resize buffers (line / tmp ) sizes
Yogesh Pande 1:506ad37c6bd7 141 * @param lineLength new maximum length for trace line (0 = do no resize)
Yogesh Pande 1:506ad37c6bd7 142 * @param tmpLength new maximum length for trace tmp buffer (used for trace_array, etc) (0 = do no resize)
Yogesh Pande 1:506ad37c6bd7 143 */
Yogesh Pande 1:506ad37c6bd7 144 void mbed_trace_buffer_sizes(int lineLength, int tmpLength);
Yogesh Pande 1:506ad37c6bd7 145 /**
Yogesh Pande 1:506ad37c6bd7 146 * Set trace configurations
Yogesh Pande 1:506ad37c6bd7 147 * Possible parameters:
Yogesh Pande 1:506ad37c6bd7 148 *
Yogesh Pande 1:506ad37c6bd7 149 * TRACE_MODE_COLOR
Yogesh Pande 1:506ad37c6bd7 150 * TRACE_MODE_PLAIN (this exclude color mode)
Yogesh Pande 1:506ad37c6bd7 151 * TRACE_CARRIAGE_RETURN (print CR before trace line)
Yogesh Pande 1:506ad37c6bd7 152 *
Yogesh Pande 1:506ad37c6bd7 153 * TRACE_ACTIVE_LEVEL_ALL - to activate all trace levels
Yogesh Pande 1:506ad37c6bd7 154 * or TRACE_ACTIVE_LEVEL_DEBUG (alternative)
Yogesh Pande 1:506ad37c6bd7 155 * TRACE_ACTIVE_LEVEL_INFO
Yogesh Pande 1:506ad37c6bd7 156 * TRACE_ACTIVE_LEVEL_WARN
Yogesh Pande 1:506ad37c6bd7 157 * TRACE_ACTIVE_LEVEL_ERROR
Yogesh Pande 1:506ad37c6bd7 158 * TRACE_ACTIVE_LEVEL_CMD
Yogesh Pande 1:506ad37c6bd7 159 * TRACE_LEVEL_NONE - to deactivate all traces
Yogesh Pande 1:506ad37c6bd7 160 *
Yogesh Pande 1:506ad37c6bd7 161 * @param config Byte size Bit-mask. Bits are descripted above.
Yogesh Pande 1:506ad37c6bd7 162 * usage e.g.
Yogesh Pande 1:506ad37c6bd7 163 * @code
Yogesh Pande 1:506ad37c6bd7 164 * mbed_trace_config_set( TRACE_ACTIVE_LEVEL_ALL|TRACE_MODE_COLOR );
Yogesh Pande 1:506ad37c6bd7 165 * @endcode
Yogesh Pande 1:506ad37c6bd7 166 */
Yogesh Pande 1:506ad37c6bd7 167 void mbed_trace_config_set(uint8_t config);
Yogesh Pande 1:506ad37c6bd7 168 /** get trace configurations
Yogesh Pande 1:506ad37c6bd7 169 * @return trace configuration byte
Yogesh Pande 1:506ad37c6bd7 170 */
Yogesh Pande 1:506ad37c6bd7 171 uint8_t mbed_trace_config_get(void);
Yogesh Pande 1:506ad37c6bd7 172 /**
Yogesh Pande 1:506ad37c6bd7 173 * Set trace prefix function
Yogesh Pande 1:506ad37c6bd7 174 * pref_f -function return string with null terminated
Yogesh Pande 1:506ad37c6bd7 175 * Can be used for e.g. time string
Yogesh Pande 1:506ad37c6bd7 176 * e.g.
Yogesh Pande 1:506ad37c6bd7 177 * char* trace_time(){ return "rtc-time-in-string"; }
Yogesh Pande 1:506ad37c6bd7 178 * mbed_trace_prefix_function_set( &trace_time );
Yogesh Pande 1:506ad37c6bd7 179 */
Yogesh Pande 1:506ad37c6bd7 180 void mbed_trace_prefix_function_set( char* (*pref_f)(size_t) );
Yogesh Pande 1:506ad37c6bd7 181 /**
Yogesh Pande 1:506ad37c6bd7 182 * Set trace suffix function
Yogesh Pande 1:506ad37c6bd7 183 * suffix -function return string with null terminated
Yogesh Pande 1:506ad37c6bd7 184 * Can be used for e.g. time string
Yogesh Pande 1:506ad37c6bd7 185 * e.g.
Yogesh Pande 1:506ad37c6bd7 186 * char* trace_suffix(){ return " END"; }
Yogesh Pande 1:506ad37c6bd7 187 * mbed_trace_suffix_function_set( &trace_suffix );
Yogesh Pande 1:506ad37c6bd7 188 */
Yogesh Pande 1:506ad37c6bd7 189 void mbed_trace_suffix_function_set(char* (*suffix_f)(void) );
Yogesh Pande 1:506ad37c6bd7 190 /**
Yogesh Pande 1:506ad37c6bd7 191 * Set trace print function
Yogesh Pande 1:506ad37c6bd7 192 * By default, trace module print using printf() function,
Yogesh Pande 1:506ad37c6bd7 193 * but with this you can write own print function,
Yogesh Pande 1:506ad37c6bd7 194 * for e.g. to other IO device.
Yogesh Pande 1:506ad37c6bd7 195 */
Yogesh Pande 1:506ad37c6bd7 196 void mbed_trace_print_function_set( void (*print_f)(const char*) );
Yogesh Pande 1:506ad37c6bd7 197 /**
Yogesh Pande 1:506ad37c6bd7 198 * Set trace print function for tr_cmdline()
Yogesh Pande 1:506ad37c6bd7 199 */
Yogesh Pande 1:506ad37c6bd7 200 void mbed_trace_cmdprint_function_set( void (*printf)(const char*) );
Yogesh Pande 1:506ad37c6bd7 201 /**
Yogesh Pande 1:506ad37c6bd7 202 * When trace group contains text in filters,
Yogesh Pande 1:506ad37c6bd7 203 * trace print will be ignored.
Yogesh Pande 1:506ad37c6bd7 204 * e.g.:
Yogesh Pande 1:506ad37c6bd7 205 * mbed_trace_exclude_filters_set("mygr");
Yogesh Pande 1:506ad37c6bd7 206 * mbed_tracef(TRACE_ACTIVE_LEVEL_DEBUG, "ougr", "This is not printed");
Yogesh Pande 1:506ad37c6bd7 207 */
Yogesh Pande 1:506ad37c6bd7 208 void mbed_trace_exclude_filters_set(char* filters);
Yogesh Pande 1:506ad37c6bd7 209 /** get trace exclude filters
Yogesh Pande 1:506ad37c6bd7 210 */
Yogesh Pande 1:506ad37c6bd7 211 const char* mbed_trace_exclude_filters_get(void);
Yogesh Pande 1:506ad37c6bd7 212 /**
Yogesh Pande 1:506ad37c6bd7 213 * When trace group contains text in filter,
Yogesh Pande 1:506ad37c6bd7 214 * trace will be printed.
Yogesh Pande 1:506ad37c6bd7 215 * e.g.:
Yogesh Pande 1:506ad37c6bd7 216 * set_trace_include_filters("mygr");
Yogesh Pande 1:506ad37c6bd7 217 * mbed_tracef(TRACE_ACTIVE_LEVEL_DEBUG, "mygr", "Hi There");
Yogesh Pande 1:506ad37c6bd7 218 * mbed_tracef(TRACE_ACTIVE_LEVEL_DEBUG, "grp2", "This is not printed");
Yogesh Pande 1:506ad37c6bd7 219 */
Yogesh Pande 1:506ad37c6bd7 220 void mbed_trace_include_filters_set(char* filters);
Yogesh Pande 1:506ad37c6bd7 221 /** get trace include filters
Yogesh Pande 1:506ad37c6bd7 222 */
Yogesh Pande 1:506ad37c6bd7 223 const char* mbed_trace_include_filters_get(void);
Yogesh Pande 1:506ad37c6bd7 224 /**
Yogesh Pande 1:506ad37c6bd7 225 * General trace function
Yogesh Pande 1:506ad37c6bd7 226 * This should be used every time when user want to print out something important thing
Yogesh Pande 1:506ad37c6bd7 227 * Usage e.g.
Yogesh Pande 1:506ad37c6bd7 228 * mbed_tracef( TRACE_LEVEL_INFO, "mygr", "Hello world!");
Yogesh Pande 1:506ad37c6bd7 229 *
Yogesh Pande 1:506ad37c6bd7 230 * @param dlevel debug level
Yogesh Pande 1:506ad37c6bd7 231 * @param grp trace group
Yogesh Pande 1:506ad37c6bd7 232 * @param fmt trace format (like printf)
Yogesh Pande 1:506ad37c6bd7 233 * @param ... variable arguments related to fmt
Yogesh Pande 1:506ad37c6bd7 234 */
Yogesh Pande 1:506ad37c6bd7 235 void mbed_tracef(uint8_t dlevel, const char* grp, const char *fmt, ...) __attribute__ ((__format__(__printf__, 3, 4)));
Yogesh Pande 1:506ad37c6bd7 236 /**
Yogesh Pande 1:506ad37c6bd7 237 * Get last trace from buffer
Yogesh Pande 1:506ad37c6bd7 238 */
Yogesh Pande 1:506ad37c6bd7 239 const char* mbed_trace_last(void);
Yogesh Pande 1:506ad37c6bd7 240 #if YOTTA_CFG_MBED_TRACE_FEA_IPV6 == 1
Yogesh Pande 1:506ad37c6bd7 241 /**
Yogesh Pande 1:506ad37c6bd7 242 * mbed_tracef helping function for convert ipv6
Yogesh Pande 1:506ad37c6bd7 243 * table to human readable string.
Yogesh Pande 1:506ad37c6bd7 244 * usage e.g.
Yogesh Pande 1:506ad37c6bd7 245 * char ipv6[16] = {...}; // ! array length is 16 bytes !
Yogesh Pande 1:506ad37c6bd7 246 * mbed_tracef(TRACE_LEVEL_INFO, "mygr", "ipv6 addr: %s", mbed_trace_ipv6(ipv6));
Yogesh Pande 1:506ad37c6bd7 247 *
Yogesh Pande 1:506ad37c6bd7 248 * @param add_ptr IPv6 Address pointer
Yogesh Pande 1:506ad37c6bd7 249 * @return temporary buffer where ipv6 is in string format
Yogesh Pande 1:506ad37c6bd7 250 */
Yogesh Pande 1:506ad37c6bd7 251 char* mbed_trace_ipv6(const void *addr_ptr);
Yogesh Pande 1:506ad37c6bd7 252 /**
Yogesh Pande 1:506ad37c6bd7 253 * mbed_tracef helping function for print ipv6 prefix
Yogesh Pande 1:506ad37c6bd7 254 * usage e.g.
Yogesh Pande 1:506ad37c6bd7 255 * char ipv6[16] = {...}; // ! array length is 16 bytes !
Yogesh Pande 1:506ad37c6bd7 256 * mbed_tracef(TRACE_LEVEL_INFO, "mygr", "ipv6 addr: %s", mbed_trace_ipv6_prefix(ipv6, 4));
Yogesh Pande 1:506ad37c6bd7 257 *
Yogesh Pande 1:506ad37c6bd7 258 * @param prefix IPv6 Address pointer
Yogesh Pande 1:506ad37c6bd7 259 * @param prefix_len prefix length
Yogesh Pande 1:506ad37c6bd7 260 * @return temporary buffer where ipv6 is in string format
Yogesh Pande 1:506ad37c6bd7 261 */
Yogesh Pande 1:506ad37c6bd7 262 char* mbed_trace_ipv6_prefix(const uint8_t *prefix, uint8_t prefix_len);
Yogesh Pande 1:506ad37c6bd7 263 #endif
Yogesh Pande 1:506ad37c6bd7 264 /**
Yogesh Pande 1:506ad37c6bd7 265 * mbed_tracef helping function for convert hex-array to string.
Yogesh Pande 1:506ad37c6bd7 266 * usage e.g.
Yogesh Pande 1:506ad37c6bd7 267 * char myarr[] = {0x10, 0x20};
Yogesh Pande 1:506ad37c6bd7 268 * mbed_tracef(TRACE_LEVEL_INFO, "mygr", "arr: %s", mbed_trace_array(myarr, 2));
Yogesh Pande 1:506ad37c6bd7 269 *
Yogesh Pande 1:506ad37c6bd7 270 * @param buf hex array pointer
Yogesh Pande 1:506ad37c6bd7 271 * @param len buffer length
Yogesh Pande 1:506ad37c6bd7 272 * @return temporary buffer where string copied
Yogesh Pande 1:506ad37c6bd7 273 * if array as string not fit to temp buffer, this function write '*' as last character,
Yogesh Pande 1:506ad37c6bd7 274 * which indicate that buffer is too small for array.
Yogesh Pande 1:506ad37c6bd7 275 */
Yogesh Pande 1:506ad37c6bd7 276 char* mbed_trace_array(const uint8_t* buf, uint16_t len);
Yogesh Pande 1:506ad37c6bd7 277
Yogesh Pande 1:506ad37c6bd7 278 #else // defined(__GNUC__) || defined(__CC_ARM)
Yogesh Pande 1:506ad37c6bd7 279 int mbed_trace_init( void );
Yogesh Pande 1:506ad37c6bd7 280 void mbed_trace_free( void );
Yogesh Pande 1:506ad37c6bd7 281 void mbed_trace_config_set(uint8_t config);
Yogesh Pande 1:506ad37c6bd7 282 void mbed_trace_prefix_function_set( char* (*pref_f)(size_t) );
Yogesh Pande 1:506ad37c6bd7 283 void mbed_trace_suffix_function_set(char* (*suffix_f)(void) );
Yogesh Pande 1:506ad37c6bd7 284 void mbed_trace_print_function_set( void (*print_f)(const char*) );
Yogesh Pande 1:506ad37c6bd7 285 void mbed_trace_cmdprint_function_set( void (*printf)(const char*) );
Yogesh Pande 1:506ad37c6bd7 286 void mbed_trace_exclude_filters_set(char* filters);
Yogesh Pande 1:506ad37c6bd7 287 const char* mbed_trace_exclude_filters_get(void);
Yogesh Pande 1:506ad37c6bd7 288 void mbed_trace_include_filters_set(char* filters);
Yogesh Pande 1:506ad37c6bd7 289 const char* mbed_trace_include_filters_get(void);
Yogesh Pande 1:506ad37c6bd7 290 void mbed_tracef(uint8_t dlevel, const char* grp, const char *fmt, ...);
Yogesh Pande 1:506ad37c6bd7 291 const char* mbed_trace_last(void);
Yogesh Pande 1:506ad37c6bd7 292 char* mbed_trace_array(const uint8_t* buf, uint16_t len);
Yogesh Pande 1:506ad37c6bd7 293 #if YOTTA_CFG_MBED_TRACE_FEA_IPV6 == 1
Yogesh Pande 1:506ad37c6bd7 294 char* mbed_trace_ipv6(const void *addr_ptr);
Yogesh Pande 1:506ad37c6bd7 295 char* mbed_trace_ipv6_prefix(const uint8_t *prefix, uint8_t prefix_len);
Yogesh Pande 1:506ad37c6bd7 296 #endif // YOTTA_CFG_MBED_TRACE_FEA_IPV6
Yogesh Pande 1:506ad37c6bd7 297
Yogesh Pande 1:506ad37c6bd7 298 #endif // defined(__GNUC__) || defined(__CC_ARM)
Yogesh Pande 1:506ad37c6bd7 299
Yogesh Pande 1:506ad37c6bd7 300
Yogesh Pande 1:506ad37c6bd7 301 #else // YOTTA_CFG_MBED_TRACE
Yogesh Pande 1:506ad37c6bd7 302
Yogesh Pande 1:506ad37c6bd7 303 // trace functionality not supported
Yogesh Pande 1:506ad37c6bd7 304 #define mbed_trace_init(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 305 #define mbed_trace_free(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 306 #define mbed_trace_config_set(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 307 #define mbed_trace_prefix_function_set(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 308 #define mbed_trace_suffix_function_set(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 309 #define mbed_trace_print_function_set(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 310 #define mbed_trace_cmdprint_function_set(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 311 #define mbed_trace_exclude_filters_get(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 312 #define mbed_trace_include_filters_set(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 313 #define mbed_trace_include_filters_get(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 314
Yogesh Pande 1:506ad37c6bd7 315 #define mbed_trace_last(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 316 #define mbed_tracef(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 317 #define mbed_trace_ipv6(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 318 #define mbed_trace_array(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 319 #define mbed_trace_ipv6_prefix(...) ((void) 0)
Yogesh Pande 1:506ad37c6bd7 320
Yogesh Pande 1:506ad37c6bd7 321 #endif //YOTTA_CFG_MBED_TRACE
Yogesh Pande 1:506ad37c6bd7 322
Yogesh Pande 1:506ad37c6bd7 323 #ifdef __cplusplus
Yogesh Pande 1:506ad37c6bd7 324 }
Yogesh Pande 1:506ad37c6bd7 325 #endif
Yogesh Pande 1:506ad37c6bd7 326
Yogesh Pande 1:506ad37c6bd7 327 #endif /* MBED_TRACE_H_ */