/* * Copyright (c) 2012-2022 DSR Corporation, Denver CO, USA * Copyright (c) 2021-2022 Espressif Systems (Shanghai) PTE LTD * All rights reserved. * * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form, except as embedded into a Espressif Systems * integrated circuit in a product or a software update for such product, * must reproduce the above copyright notice, this list of conditions and * the following disclaimer in the documentation and/or other materials * provided with the distribution. * * 3. Neither the name of the copyright holder nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * 4. Any software provided in binary form under this license must not be reverse * engineered, decompiled, modified and/or disassembled. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /* PURPOSE: ZigBee trace. Application should include it. */ #ifndef ZB_LOGGER_H #define ZB_LOGGER_H 1 #ifdef ZB_TRACE_USE_VA_LIST #include #endif /** @cond DOXYGEN_DEBUG_SECTION */ /** * @addtogroup ZB_TRACE Debug trace * @{ */ /** @cond DSR_TRACE */ /** * @addtogroup ZB_TRACE_CONFIG Trace configuration * @{ */ /** @endcond */ /* DSR_TRACE */ #if defined(ZB_TRACE_LEVEL) /** @cond DOXYGEN_INTERNAL_DOC */ extern zb_uint8_t g_trace_level, g_o_trace_level; extern zb_uint32_t g_trace_mask; extern zb_uint_t g_trace_inside_intr; /** @endcond */ /* DOXYGEN_INTERNAL_DOC */ /** Set trace level at runtime That macro can switch trace level on and off. Trace level must be included into build at compile time by setting ZB_TRACE_LEVEL compiler time define. @param l - new trace level. @par Example @snippet thermostat/thermostat_zr/thermostat_zr.c set_trace @par */ #define ZB_SET_TRACE_LEVEL(l) g_trace_level = (l) /** Switch off all trace at runtime */ #define ZB_SET_TRACE_OFF() g_o_trace_level = g_trace_level, g_trace_level = 0U /** Switch on trace at runtime That macro enables trace which was active before call to ZB_SET_TRACE_OFF(). @snippet light_sample/dimmable_light/bulb.c switch_trace_on */ #define ZB_SET_TRACE_ON() g_trace_level = g_o_trace_level /** Set trace mask at runtime That macro can switch trace mask on and off. Trace mask must be included into build at compile time by setting ZB_TRACE_MASK compiler time define. @param m - new trace mask. @par Example @snippet thermostat/thermostat_zr/thermostat_zr.c set_trace @par */ #define ZB_SET_TRACE_MASK(m) g_trace_mask = (m) #else #define ZB_SET_TRACE_OFF() #define ZB_SET_TRACE_LEVEL(l) #define ZB_SET_TRACE_ON() #define ZB_SET_TRACE_MASK(m) #endif /* defined(ZB_TRACE_LEVEL) */ /** @cond DSR_TRACE */ /** @} */ /* ZB_TRACE_CONFIG */ /** @endcond */ /* DSR_TRACE */ /** @cond DSR_TRACE */ /** * @addtogroup TRACE_SUBSYSTEMS * @{ */ #define TRACE_SUBSYSTEM_COMMON 0x0001U /**< Common subsystem. */ #define TRACE_SUBSYSTEM_MEM 0x0002U /**< MEM subsystem (buffers pool). */ #define TRACE_SUBSYSTEM_MAC 0x0004U /**< MAC subsystem. */ #define TRACE_SUBSYSTEM_NWK 0x0008U /**< NWK subsystem. */ #define TRACE_SUBSYSTEM_APS 0x0010U /**< APS subsystem. */ #define TRACE_SUBSYSTEM_ZSE 0x0020U /**< ZSE subsystem. */ #define TRACE_SUBSYSTEM_ZDO 0x0040U /**< ZDO subsystem. */ #define TRACE_SUBSYSTEM_SECUR 0x0080U /**< Security subsystem. */ #define TRACE_SUBSYSTEM_ZCL 0x0100U /**< ZCL subsystem. */ /** @cond DOXYGEN_TOUCHLINK_FEATURE */ #define TRACE_SUBSYSTEM_ZLL 0x0200U /**< ZLL/Touchlink subsystem. */ /** @endcond */ /* DOXYGEN_TOUCHLINK_FEATURE */ /** @cond DOXYGEN_INTERNAL_DOC */ #define TRACE_SUBSYSTEM_SSL 0x0400U /**< SSL subsystem - not really used */ #define TRACE_SUBSYSTEM_NCP_TRANSPORT TRACE_SUBSYSTEM_SSL #define TRACE_SUBSYSTEM_MACSPLIT TRACE_SUBSYSTEM_NCP_TRANSPORT /** @endcond */ /* DOXYGEN_INTERNAL_DOC */ /** @endcond */ /* DSR_TRACE */ #define TRACE_SUBSYSTEM_APP 0x0800U /**< User Application */ /** @cond DOXYGEN_INTERNAL_DOC */ #define TRACE_SUBSYSTEM_LWIP 0x1000U /* LWIP is used, else free */ #define TRACE_SUBSYSTEM_ALIEN 0x2000U /* Some special debug */ /** @endcond */ /* DOXYGEN_INTERNAL_DOC */ #define TRACE_SUBSYSTEM_ZGP 0x4000U /**< ZGP subsystem */ /** @cond DOXYGEN_INTERNAL_DOC */ #define TRACE_SUBSYSTEM_MAC_API 0x8000U /**< MAC API subsystem */ #define TRACE_SUBSYSTEM_MACLL 0x10000U /**< MAC LL subsystem */ #define TRACE_SUBSYSTEM_SPECIAL1 0x20000U /**< Special subsystem */ #define TRACE_SUBSYSTEM_BATTERY 0x40000U /**< Battery subsystem */ #define TRACE_SUBSYSTEM_OTA 0x80000U /**< OTA subsystem */ #define TRACE_SUBSYSTEM_TRANSPORT 0x100000U /**< Transport subsystem */ #define TRACE_SUBSYSTEM_USB 0x200000U /**< USB subsystem */ #define TRACE_SUBSYSTEM_SPI 0x400000U /**< SPI subsystem */ #define TRACE_SUBSYSTEM_UART 0x800000U /**< UART subsystem */ #define TRACE_SUBSYSTEM_JSON 0x1000000U /**< JSON subsystem */ #define TRACE_SUBSYSTEM_HTTP 0x2000000U /**< HTTP subsystem */ #define TRACE_SUBSYSTEM_CLOUD 0x4000000U /**< Interface to the Cloud */ #define TRACE_SUBSYSTEM_ZBDIRECT 0x8000000U /**< Zigbee Direct subsystem */ #define TRACE_SUBSYSTEM_DIAGNOSTIC 0x10000000U /**< Diagnostic subsystem */ #define TRACE_SUBSYSTEM_NS 0x20000000U /**< Network simulator subsystem */ #define TRACE_SUBSYSTEM_TEST 0x40000000U /**< Subsystem for tests and CI */ /** @endcond */ /* DOXYGEN_INTERNAL_DOC */ #define TRACE_SUBSYSTEM_INFO ((zb_uint_t)-1) /**< Common subsystem */ /* to be continued... */ /** @cond DSR_TRACE */ /** @} */ /* TRACE_SUBSYSTEMS */ /** @endcond */ /* DSR_TRACE */ /** @} */ /* ZB_TRACE */ /** * @addtogroup ZB_TRACE Debug trace * @{ */ #if defined ZB_TRACE_LEVEL || defined DOXYGEN /** * @addtogroup ZB_TRACE_CONFIG Trace configuration * @{ */ #ifndef DOXYGEN #define TRACE_ENABLED_(mask,lev) ((lev) <= ZB_TRACE_LEVEL && ((mask) & ZB_TRACE_MASK)) #endif /* DOXYGEN */ /** * @brief Check that trace is enabled for provided level. * To be used in constructions like: * @code * if (TRACE_ENABLED(TRACE_APS3)) * { * call_some_complex_trace(); * } * @endcode * @param m - trace level macro. * @return 1 if enabled, 0 if disabled. */ #ifndef TRACE_ENABLED #define TRACE_ENABLED(m) TRACE_ENABLED_(m) #endif /* TRACE_ENABLED */ #ifndef DOXYGEN zb_uint32_t zb_trace_get_counter(void); #endif /* DOXYGEN */ #ifdef DOXYGEN /** Trace file ID used by win_com_dump to identify source file. Must be first define in the .c file, just before first include directive. @par Example @snippet light_sample/dimmable_light/bulb.c trace_file_id @par */ #define ZB_TRACE_FILE_ID 12345U #endif /** @} */ /* ZB_TRACE_CONFIG */ /** @cond DOXYGEN_INTERNAL_DOC */ #ifdef ZB_INTERRUPT_SAFE_CALLBACKS /* If HW can detect that we are inside ISR, let's use it and do not trace from ISR. */ zb_bool_t zb_osif_is_inside_isr(void); #define ZB_HW_IS_INSIDE_ISR() zb_osif_is_inside_isr() #else #define ZB_HW_IS_INSIDE_ISR() 0 #endif #define TRACE_ENTER_INT() g_trace_inside_intr = 1U #define TRACE_LEAVE_INT() g_trace_inside_intr = 0U #define ZB_TRACE_INSIDE_INTR() (g_trace_inside_intr || ZB_HW_IS_INSIDE_ISR()) #ifndef ZB_TRACE_FROM_INTR #define ZB_TRACE_INSIDE_INTR_BLOCK() ZB_TRACE_INSIDE_INTR() #else #define ZB_TRACE_INSIDE_INTR_BLOCK() 0 #endif /** @endcond */ /* DOXYGEN_INTERNAL_DOC */ /** * @brief A universal way to print raw string as trace message. */ void zb_trace_str(const zb_char_t *str); #if defined ZB_TRACE_TO_FILE || defined ZB_TRACE_TO_SYSLOG || defined DOXYGEN /** @cond DOXYGEN_INTERNAL_DOC */ /** \par Trace to file means trace to disk file using printf() or its analog. Tricks to decrease code size by excluding format strings are not used. */ void zb_trace_init_file(zb_char_t *name); void zb_trace_deinit_file(void); void zb_trace_file_commit(void); void zb_trace_disable_deinit(void); zb_bool_t zb_trace_is_disable_deinit(void); void zb_trace_file_flush(void); #ifdef ZB_USE_LOGFILE_ROTATE void zb_trace_check_rotate(void); #endif /** Initialize trace subsystem @param name - trace file name component */ #define TRACE_INIT(name) zb_trace_init_file(name) /** @endcond */ /* DOXYGEN_INTERNAL_DOC */ /** Deinitialize trace subsystem */ #define TRACE_DEINIT zb_trace_deinit_file /** @cond DOXYGEN_INTERNAL_DOC */ #define ZB_T0_TRACE(...) __VA_ARGS__ #if defined ZB_TRACE_USE_VA_LIST && (defined ZB_BINARY_AND_TEXT_TRACE_MODE || defined ZB_TRACE_TO_SYSLOG || !defined ZB_BINARY_TRACE) /** * @brief Print trace message. Option with va_list */ void zb_trace_msg_txt_file_vl( zb_uint_t mask, zb_uint_t level, const zb_char_t *format, const zb_char_t *file_name, zb_int_t line_number, zb_int_t args_size, va_list arglist); #endif #if defined ZB_BINARY_TRACE && !defined ZB_TRACE_TO_SYSLOG /** * @brief Print binary trace message. */ void zb_trace_msg_bin_file( zb_uint_t mask, zb_uint_t level, #if defined ZB_BINARY_AND_TEXT_TRACE_MODE zb_char_t *file_name, #endif zb_uint16_t file_id, zb_int_t line_number, zb_int_t args_size, ...); #ifdef ZB_TRACE_USE_VA_LIST /** * @brief Print binary trace message. Option with va_list */ void zb_trace_msg_bin_file_vl( zb_uint_t mask, zb_uint_t level, zb_uint16_t file_id, zb_int_t line_number, zb_int_t args_size, va_list arglist); #endif #if defined ZB_BINARY_AND_TEXT_TRACE_MODE #define ZB_TRACE_MODE_BINARY 0U #define ZB_TRACE_MODE_TEXT 1U extern zb_uint8_t g_trace_text_mode; void zb_trace_set_mode(zb_uint8_t mode); /** * @brief Print trace message. */ void zb_trace_msg_txt_file( zb_uint_t mask, zb_uint_t level, const zb_char_t *format, const zb_char_t *file_name, zb_uint16_t file_id, zb_int_t line_number, zb_int_t args_size, ...); #define ZB_T1_TRACE(s, l, fmts, args) \ if ((zb_int_t)ZB_TRACE_LEVEL>=(zb_int_t)l && \ ((s) & ZB_TRACE_MASK)) \ { \ if (g_trace_text_mode == 0U) \ { \ zb_trace_msg_bin_file(s, l, ZB_T0_TRACE args); \ } \ else \ { \ zb_trace_msg_txt_file(s, l, fmts, ZB_T0_TRACE args); \ } \ } #else #define ZB_T1_TRACE(s, l, fmts, args) if ((zb_int_t)ZB_TRACE_LEVEL>=(zb_int_t)l && ((s) & ZB_TRACE_MASK)) zb_trace_msg_bin_file(s, l, ZB_T0_TRACE args) #endif #else /** * @brief Print trace message. */ void zb_trace_msg_txt_file( zb_uint_t mask, zb_uint_t level, const zb_char_t *format, const zb_char_t *file_name, zb_int_t line_number, zb_int_t args_size, ...); #define ZB_T1_TRACE(s, l, fmts, args) if ((zb_int_t)ZB_TRACE_LEVEL>=(zb_int_t)l && ((s) & ZB_TRACE_MASK)) zb_trace_msg_txt_file(s, l, fmts, ZB_T0_TRACE args) #endif /** @endcond */ /* DOXYGEN_INTERNAL_DOC */ /** * @brief Put trace output. * @param lm - trace subsystem and level marker. * @param fmts - printf()-like format string. * @param args - format string substitution parameters with a size marker. * * @par Example * @snippet light_sample/dimmable_light/bulb.c trace_msg * @par */ #define TRACE_MSG(lm, fmts, args) \ do { \ ZB_T1_TRACE(lm, fmts, args); \ } while (0) /** @cond DOXYGEN_INTERNAL_DOC */ #elif (defined ZB_TRACE_TO_PORT || defined ZB_TRACE_OVER_SIF) /* 8051 trace does not use format string in the code to save code space. - will modify trace at device only, Linux will work as before - trace implementation will hex dump all arguments as set of bytes - external utility will parse dump, divide trace arguments dump into separate arguments and convert hex-int, unsigned etc. - utility will get argument strings from the source files (trace macros) and find it by file:line - Add one more parameter to the trace macro: sum of the trace argument sizes. Define readable constants like #define FMT_D_HD_X 5 - create script/program to modify existing trace calls - combine dump parse utility functionality with win_com_dump, so it will produce human-readable trace */ #if defined ZB_TRACE_OVER_SIF #define TRACE_INIT(name) zb_osif_sif_init() #elif ! defined ZB_SERIAL_FOR_TRACE || defined ZB_TRACE_OVER_JTAG #define TRACE_INIT(name) #else #define TRACE_INIT(name) zb_serial_trace_init(name) #endif /* defined ZB_TRACE_OVER_SIF */ /* No trace deinit */ #define TRACE_DEINIT() #ifndef ZB_BINARY_TRACE void zb_trace_msg_port( const zb_char_t ZB_IAR_CODE *file_name, zb_int_t line_number, zb_uint8_t args_size, ...); #else #ifndef ZB_TRACE_FILE_ID #ifndef ZB_DONT_NEED_TRACE_FILE_ID #warning ZB_TRACE_FILE_ID undefined! Insert #define ZB_TRACE_FILE_ID NNN before 1-st #include #endif #define ZB_TRACE_FILE_ID 0 #else ZB_ASSERT_COMPILE_DECL(ZB_TRACE_FILE_ID < ZB_UINT16_MAX); #endif void zb_trace_msg_port( zb_uint_t mask, zb_uint_t level, zb_uint16_t file_id, zb_uint16_t line_number, zb_uint_t args_size, ...); #ifdef ZB_TRACE_USE_VA_LIST /* Option with va_list */ void zb_trace_msg_port_vl( zb_uint_t mask, zb_uint_t level, zb_uint16_t file_id, zb_uint16_t line_number, zb_uint_t args_size, va_list arglist); #endif #endif #ifdef ZB_BINARY_TRACE #define ZB_T0_TRACE(...) __VA_ARGS__ #ifndef ZB_T1_TRACE #define ZB_T1_TRACE(s, l, args) if ((zb_int_t)ZB_TRACE_LEVEL>=(zb_int_t)l && ((s) == (zb_uint_t)-1 || (s) & ZB_TRACE_MASK) && !ZB_TRACE_INSIDE_INTR_BLOCK()) zb_trace_msg_port(s, l, ZB_T0_TRACE args) #endif /* ZB_T1_TRACE */ #else #define ZB_T1_TRACE(s, l, args) \ if ((zb_int_t)ZB_TRACE_LEVEL>=(zb_int_t)l && ((s) == -1 || ((s) & ZB_TRACE_MASK)) && !ZB_TRACE_INSIDE_INTR_BLOCK()) zb_trace_msg_port args #endif #define TRACE_MSG(lm, fmt, args) \ do { \ ZB_T1_TRACE(lm, fmt, args); \ } while (0) #else #error Must define either ZB_TRACE_TO_FILE or ZB_TRACE_TO_PORT || ZB_TRACE_OVER_SIF #endif /* trace type */ #else /* if trace off */ #ifndef KEIL #define TRACE_MSG(...) ((void)0) #else /* Keil does not support vararg macros */ #define TRACE_MSG(a,b,c) ((void)0) #endif #define TRACE_INIT(name) #define TRACE_DEINIT(c) #define TRACE_ENABLED(m) ZB_FALSE #define TRACE_ENTER_INT() #define TRACE_LEAVE_INT() #endif /* trace on/off */ /** @endcond */ /* DOXYGEN_INTERNAL_DOC */ /** @cond DSR_TRACE */ /** * @addtogroup TRACE_DATA_FORMAT_ADDITIONAL Trace data format for keys * @{ */ #if defined ZB_TRACE_TO_FILE || defined ZB_TRACE_TO_SYSLOG || defined ZB_TRACE_TO_PORT || defined DOXYGEN /** Trace format for 64-bit address. @snippet light_sample/dimmable_light/bulb.c trace_64_example_variable @snippet light_sample/dimmable_light/bulb.c trace_64_example */ #define TRACE_FORMAT_64 "%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx" /** Trace format for 128-bit number (key etc). @snippet se/energy_service_interface/se_esi_zc.c TRACE_128 */ #define TRACE_FORMAT_128 "%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx:%02hx" /** Trace format arguments for 64-bit address. @snippet light_sample/dimmable_light/bulb.c trace_64_example_variable @snippet light_sample/dimmable_light/bulb.c trace_64_example */ #define TRACE_ARG_64(a) (zb_uint8_t)((a)[7]),(zb_uint8_t)((a)[6]),(zb_uint8_t)((a)[5]),(zb_uint8_t)((a)[4]),(zb_uint8_t)((a)[3]),(zb_uint8_t)((a)[2]),(zb_uint8_t)((a)[1]),(zb_uint8_t)((a)[0]) /** Trace format arguments for 128-bit number. @snippet se/energy_service_interface/se_esi_zc.c TRACE_128 */ #define TRACE_ARG_128(a) (zb_uint8_t)((a)[0]),(zb_uint8_t)((a)[1]),(zb_uint8_t)((a)[2]),(zb_uint8_t)((a)[3]),(zb_uint8_t)((a)[4]),(zb_uint8_t)((a)[5]),(zb_uint8_t)((a)[6]),(zb_uint8_t)((a)[7]),(zb_uint8_t)((a)[8]),(zb_uint8_t)((a)[9]),(zb_uint8_t)((a)[10]),(zb_uint8_t)((a)[11]),(zb_uint8_t)((a)[12]),(zb_uint8_t)((a)[13]),(zb_uint8_t)((a)[14]),(zb_uint8_t)((a)[15]) #else /** @brief Trace format for 64-bit address - single argument for 8051. */ #define TRACE_FORMAT_64 "%A" #define TRACE_FORMAT_128 "%A:%A" /** @endcond */ /* DSR_TRACE */ /** @cond internals_doc */ typedef struct zb_addr64_struct_s { zb_64bit_addr_t addr; } ZB_PACKED_STRUCT zb_addr64_struct_t; typedef struct zb_byte128_struct_s { zb_uint8_t d[16]; } ZB_PACKED_STRUCT zb_byte128_struct_t; /* Pass 8-bytes address as structure by value */ #define TRACE_ARG_64(a) *((zb_addr64_struct_t *)a) /* Pass 16-bytes key as structure by value */ #define TRACE_ARG_128(a) *((zb_byte128_struct_t *)a) /** @endcond */ /* internals_doc */ /** @cond DSR_TRACE */ #endif /* ti file / !to file */ /** @} */ /* TRACE_DATA_FORMAT_ADDITIONAL */ /** @endcond */ /* DSR_TRACE */ /** @cond DSR_TRACE */ /** * @addtogroup TRACE_GENERAL_MESSAGES * @{ */ /** @brief Error message. */ #define TRACE_ERROR TRACE_SUBSYSTEM_INFO, 0U /** @brief Information message level 1. */ #define TRACE_INFO1 TRACE_SUBSYSTEM_INFO, 1U /** @brief Information message level 2. */ #define TRACE_INFO2 TRACE_SUBSYSTEM_INFO, 2U /** @brief Information message level 3. */ #define TRACE_INFO3 TRACE_SUBSYSTEM_INFO, 3U /** @} */ /* TRACE_GENERAL_MESSAGES */ #ifdef ZB_TRACE_LEVEL #ifndef ZB_TRACE_MASK #define ZB_TRACE_MASK ((zb_uint_t)-1) #endif /* if not defined trace_mask */ #endif /* if defined trace level */ /** * @addtogroup TRACE_DATA_FORMAT * @{ */ /* Trace format constants for serial trace */ /* Keil and sdcc put byte values to the stack as is, but IAR/8051 casts it to 16-bit * integers, so constant lengths differs */ /** * @brief Calculates trace argument size. * @param n_h - number of Hs/Cs. * @param n_d - number of Ds. * @param n_l - number of Ls. * @param n_p - number of Ps. * @param n_a - number of As. * @hideinitializer */ #ifdef KEIL /* Keil pass 1-byte to varargs as is, pointer is 3-bytes, short is 2-bytes */ #ifndef ZB_BINARY_TRACE #define TRACE_ARG_SIZE(n_h, n_d, n_l, n_p, n_a) __FILE__,__LINE__, (n_h + n_d*2 + n_l*4 + n_p*3 + n_a*8) #else #define TRACE_ARG_SIZE(n_h, n_d, n_l, n_p, n_a) ZB_TRACE_FILE_ID,__LINE__, (n_h + n_d*2 + n_l*4 + n_p*3 + n_a*8) #endif #elif defined ZB_PLATFORM_XAP5 #ifndef __XAP5_NEAR__ /* XAP5 passes bytes as shorts */ #ifndef ZB_BINARY_TRACE #define TRACE_ARG_SIZE(n_h, n_d, n_l, n_p, n_a) __FILE__,__LINE__, (n_h*2 + n_d*2 + n_l*4 + n_p*4 + n_a*8) #else #define TRACE_ARG_SIZE(n_h, n_d, n_l, n_p, n_a) ZB_TRACE_FILE_ID,__LINE__, (n_h*2 + n_d*2 + n_l*4 + n_p*4 + n_a*8) #endif #else #ifndef ZB_BINARY_TRACE #define TRACE_ARG_SIZE(n_h, n_d, n_l, n_p, n_a) __FILE__,__LINE__, (n_h*2 + n_d*2 + n_l*4 + n_p*2 + n_a*8) #else #define TRACE_ARG_SIZE(n_h, n_d, n_l, n_p, n_a) ZB_TRACE_FILE_ID,__LINE__, (n_h*2 + n_d*2 + n_l*4 + n_p*2 + n_a*8) #endif #endif #else /* IAR & GCC - 32-bit */ /* IAR for Cortex passes 1-byte abd 2-bytes arguments as 4-bytes to vararg functions. * Pointers are 4-bytes. */ #if defined ZB_BINARY_TRACE && !defined ZB_TRACE_TO_SYSLOG #if defined ZB_BINARY_AND_TEXT_TRACE_MODE #define TRACE_ARG_SIZE(n_h, n_d, n_l, n_p, n_a) __FILE__,ZB_TRACE_FILE_ID,__LINE__, (n_h*4 + n_d*4 + n_l*4 + n_p*4 + n_a*8) #else #define TRACE_ARG_SIZE(n_h, n_d, n_l, n_p, n_a) ZB_TRACE_FILE_ID,__LINE__, (n_h*4 + n_d*4 + n_l*4 + n_p*4 + n_a*8) #endif #else #define TRACE_ARG_SIZE(n_h, n_d, n_l, n_p, n_a) __FILE__,__LINE__, (n_h*4 + n_d*4 + n_l*4 + n_p*4 + n_a*8) #endif #endif #define FMT__0 TRACE_ARG_SIZE(0,0,0,0,0) #define FMT__A TRACE_ARG_SIZE(0,0,0,0,1) #define FMT__A_A TRACE_ARG_SIZE(0,0,0,0,2) #define FMT__A_A_A_A TRACE_ARG_SIZE(0,0,0,0,4) #define FMT__A_D_A_P TRACE_ARG_SIZE(0,1,0,1,2) #define FMT__A_D_D TRACE_ARG_SIZE(0,2,0,0,1) #define FMT__A_D_D_D TRACE_ARG_SIZE(0,3,0,0,1) #define FMT__A_D_D_P_H TRACE_ARG_SIZE(1,2,0,1,1) #define FMT__A_D_H TRACE_ARG_SIZE(1,1,0,0,1) #define FMT__A_D_H_H TRACE_ARG_SIZE(2,1,0,0,1) #define FMT__A_D_P_H_H_H TRACE_ARG_SIZE(3,1,0,1,1) #define FMT__A_H TRACE_ARG_SIZE(1,0,0,0,1) #define FMT__A_H_H TRACE_ARG_SIZE(2,0,0,0,1) #define FMT__A_H_H_H TRACE_ARG_SIZE(3,0,0,0,1) #define FMT__A_D_H_H_H TRACE_ARG_SIZE(3,1,0,0,1) #define FMT__A_P TRACE_ARG_SIZE(0,0,0,1,1) #define FMT__AA TRACE_ARG_SIZE(0,0,0,0,2) #define FMT__C TRACE_ARG_SIZE(1,0,0,0,0) #define FMT__C_C TRACE_ARG_SIZE(2,0,0,0,0) #define FMT__C_C_C TRACE_ARG_SIZE(3,0,0,0,0) #define FMT__C_C_C_C TRACE_ARG_SIZE(4,0,0,0,0) #define FMT__C_C_C_C_C TRACE_ARG_SIZE(5,0,0,0,0) #define FMT__C_C_H_H TRACE_ARG_SIZE(4,0,0,0,0) #define FMT__C_H TRACE_ARG_SIZE(2,0,0,0,0) #define FMT__D TRACE_ARG_SIZE(0,1,0,0,0) #define FMT__D_A TRACE_ARG_SIZE(0,1,0,0,1) #define FMT__D_A_A_H TRACE_ARG_SIZE(1,1,0,0,2) #define FMT__D_A_D_D_D_D_D_D_D_D TRACE_ARG_SIZE(0,9,0,0,1) #define FMT__D_A_D_P_H_H_H TRACE_ARG_SIZE(3,2,0,1,1) #define FMT__D_A_H_H TRACE_ARG_SIZE(2,1,0,0,1) #define FMT__D_A_P TRACE_ARG_SIZE(0,1,0,1,1) #define FMT__D_C TRACE_ARG_SIZE(1,1,0,0,0) #define FMT__D_D TRACE_ARG_SIZE(0,2,0,0,0) #define FMT__D_D_A TRACE_ARG_SIZE(0,2,0,0,1) #define FMT__D_D_A_A TRACE_ARG_SIZE(0,2,0,0,2) #define FMT__D_D_A_D TRACE_ARG_SIZE(0,3,0,0,1) #define FMT__D_D_A_D_D_D_D TRACE_ARG_SIZE(0,6,0,0,1) #define FMT__D_D_D TRACE_ARG_SIZE(0,3,0,0,0) #define FMT__D_D_D_C TRACE_ARG_SIZE(1,3,0,0,0) #define FMT__D_D_D_D TRACE_ARG_SIZE(0,4,0,0,0) #define FMT__D_D_D_D_D TRACE_ARG_SIZE(0,5,0,0,0) #define FMT__D_D_D_D_D_D TRACE_ARG_SIZE(0,6,0,0,0) #define FMT__D_D_D_D_D_D_D TRACE_ARG_SIZE(0,7,0,0,0) #define FMT__D_D_D_D_D_D_D_D TRACE_ARG_SIZE(0,8,0,0,0) #define FMT__D_D_D_D_D_D_D_D_D_D_D TRACE_ARG_SIZE(0,11,0,0,0) #define FMT__D_D_D_D_D_D_D_D_D_D_D_D_D_D TRACE_ARG_SIZE(0,14,0,0,0) #define FMT__D_D_D_D_D_D_D_D_D_D_D_D_D_D_D TRACE_ARG_SIZE(0,15,0,0,0) #define FMT__D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D TRACE_ARG_SIZE(0,17,0,0,0) #define FMT__D_D_D_D_D_D_P TRACE_ARG_SIZE(0,6,0,1,0) #define FMT__D_D_D_D_H TRACE_ARG_SIZE(1,4,0,0,0) #define FMT__D_D_D_H TRACE_ARG_SIZE(1,3,0,0,0) #define FMT__D_D_D_H_H TRACE_ARG_SIZE(2,3,0,0,0) #define FMT__D_D_D_L TRACE_ARG_SIZE(0,3,1,0,0) #define FMT__D_D_D_L_L TRACE_ARG_SIZE(0,3,2,0,0) #define FMT__D_D_D_P TRACE_ARG_SIZE(0,3,0,1,0) #define FMT__D_D_H TRACE_ARG_SIZE(1,2,0,0,0) #define FMT__D_D_H_D_H TRACE_ARG_SIZE(2,3,0,0,0) #define FMT__D_D_H_H TRACE_ARG_SIZE(2,2,0,0,0) #define FMT__D_D_H_P_D TRACE_ARG_SIZE(1,3,0,1,0) #define FMT__D_D_L TRACE_ARG_SIZE(0,2,1,0,0) #define FMT__D_D_L_P TRACE_ARG_SIZE(0,2,1,1,0) #define FMT__D_D_P TRACE_ARG_SIZE(0,2,0,1,0) #define FMT__D_D_P_D TRACE_ARG_SIZE(0,3,0,1,0) #define FMT__D_P_P_D TRACE_ARG_SIZE(0,2,0,2,0) #define FMT__D_P_P_P TRACE_ARG_SIZE(0,1,0,3,0) #define FMT__D_D_P_D_D TRACE_ARG_SIZE(0,4,0,1,0) #define FMT__D_D_P_D_L TRACE_ARG_SIZE(0,3,1,1,0) #define FMT__D_D_P_H TRACE_ARG_SIZE(1,2,0,1,0) #define FMT__D_D_P_H_H_H TRACE_ARG_SIZE(3,2,0,1,0) #define FMT__D_D_P_P_P TRACE_ARG_SIZE(0,2,0,3,0) #define FMT__D_H TRACE_ARG_SIZE(1,1,0,0,0) #define FMT__D_H_A_D_D_D_H TRACE_ARG_SIZE(2,4,0,0,1) #define FMT__D_H_D TRACE_ARG_SIZE(1,2,0,0,0) #define FMT__D_H_D_D TRACE_ARG_SIZE(1,3,0,0,0) #define FMT__D_H_D_D_H TRACE_ARG_SIZE(2,3,0,0,0) #define FMT__D_H_D_D_H_D TRACE_ARG_SIZE(2,4,0,0,0) #define FMT__D_H_D_H TRACE_ARG_SIZE(2,2,0,0,0) #define FMT__D_H_D_H_H TRACE_ARG_SIZE(3,2,0,0,0) #define FMT__D_H_D_P TRACE_ARG_SIZE(1,2,0,1,0) #define FMT__D_H_D_P_D TRACE_ARG_SIZE(1,3,0,1,0) #define FMT__D_H_H TRACE_ARG_SIZE(2,1,0,0,0) #define FMT__D_H_H_D TRACE_ARG_SIZE(2,2,0,0,0) #define FMT__D_H_H_D_H TRACE_ARG_SIZE(3,2,0,0,0) #define FMT__D_H_H_D_H_D TRACE_ARG_SIZE(3,3,0,0,0) #define FMT__D_H_H_D_D_D_D TRACE_ARG_SIZE(2,5,0,0,0) #define FMT__D_H_H_H TRACE_ARG_SIZE(3,1,0,0,0) #define FMT__D_H_H_H_H TRACE_ARG_SIZE(4,1,0,0,0) #define FMT__D_H_H_H_H_H TRACE_ARG_SIZE(5,1,0,0,0) #define FMT__D_H_H_H_H_H_H_D_D_D_D TRACE_ARG_SIZE(6,5,0,0,0) #define FMT__D_H_L TRACE_ARG_SIZE(1,1,1,0,0) #define FMT__D_H_P TRACE_ARG_SIZE(1,1,0,1,0) #define FMT__D_L TRACE_ARG_SIZE(0,1,1,0,0) #define FMT__D_L_L TRACE_ARG_SIZE(0,1,2,0,0) #define FMT__D_L_L_D TRACE_ARG_SIZE(0,2,2,0,0) #define FMT__D_L_L_H TRACE_ARG_SIZE(1,1,2,0,0) #define FMT__D_L_L_L TRACE_ARG_SIZE(0,1,3,0,0) #define FMT__D_P TRACE_ARG_SIZE(0,1,0,1,0) #define FMT__D_P_D TRACE_ARG_SIZE(0,2,0,1,0) #define FMT__D_P_D_D TRACE_ARG_SIZE(0,3,0,1,0) #define FMT__D_P_H_H_D_D TRACE_ARG_SIZE(2,3,0,1,0) #define FMT__D_P_H_H_D_H_H TRACE_ARG_SIZE(4,2,0,1,0) #define FMT__D_P_H_H_H_H TRACE_ARG_SIZE(4,1,0,1,0) #define FMT__D_P_H_H_H_H_H TRACE_ARG_SIZE(5,1,0,1,0) #define FMT__D_P_H_H_H_H_H_H TRACE_ARG_SIZE(6,1,0,1,0) #define FMT__D_P_H_P TRACE_ARG_SIZE(1,1,0,1,0) #define FMT__D_P_P TRACE_ARG_SIZE(0,1,0,2,0) #define FMT__D_P_P_D_D TRACE_ARG_SIZE(0,3,0,2,0) #define FMT__D_P_P_D_D_P TRACE_ARG_SIZE(0,3,0,3,0) #define FMT__D_P_P_D_D_H_H TRACE_ARG_SIZE(2,3,0,2,0) #define FMT__D_P_P_H TRACE_ARG_SIZE(1,1,0,2,0) #define FMT__H TRACE_ARG_SIZE(1,0,0,0,0) #define FMT__H_A TRACE_ARG_SIZE(1,0,0,0,1) #define FMT__H_A_A TRACE_ARG_SIZE(1,0,0,0,2) #define FMT__H_A_A_H_H TRACE_ARG_SIZE(3,0,0,0,2) #define FMT__H_A_H TRACE_ARG_SIZE(2,0,0,0,1) #define FMT__H_A_H_H_H TRACE_ARG_SIZE(4,0,0,0,1) #define FMT__H_A_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(9,0,0,0,1) #define FMT__H_C_D_C TRACE_ARG_SIZE(3,1,0,0,0) #define FMT__H_C_H_C TRACE_ARG_SIZE(4,0,0,0,0) #define FMT__H_D TRACE_ARG_SIZE(1,1,0,0,0) #define FMT__H_D_L TRACE_ARG_SIZE(1,1,1,0,0) #define FMT__H_D_A TRACE_ARG_SIZE(1,1,0,0,1) #define FMT__H_D_A_H_D TRACE_ARG_SIZE(2,2,0,0,1) #define FMT__H_D_A_H_H TRACE_ARG_SIZE(3,1,0,0,1) #define FMT__H_D_A_H_H_H_H TRACE_ARG_SIZE(5,1,0,0,1) #define FMT__H_D_D TRACE_ARG_SIZE(1,2,0,0,0) #define FMT__H_D_D_D TRACE_ARG_SIZE(1,3,0,0,0) #define FMT__H_D_D_D_D TRACE_ARG_SIZE(1,4,0,0,0) #define FMT__H_D_D_D_D_H TRACE_ARG_SIZE(2,4,0,0,0) #define FMT__H_D_D_D_H_H_D TRACE_ARG_SIZE(3,4,0,0,0) #define FMT__H_D_D_H TRACE_ARG_SIZE(2,2,0,0,0) #define FMT__H_D_D_H_D TRACE_ARG_SIZE(2,3,0,0,0) #define FMT__H_D_D_H_D_H TRACE_ARG_SIZE(3,3,0,0,0) #define FMT__H_D_D_H_H TRACE_ARG_SIZE(3,2,0,0,0) #define FMT__H_D_D_H_H_H TRACE_ARG_SIZE(4,2,0,0,0) #define FMT__H_D_D_H_H_H_H TRACE_ARG_SIZE(5,2,0,0,0) #define FMT__H_D_D_H_P TRACE_ARG_SIZE(2,2,0,1,0) #define FMT__H_D_D_P TRACE_ARG_SIZE(1,2,0,1,0) #define FMT__H_D_H TRACE_ARG_SIZE(2,1,0,0,0) #define FMT__H_D_H_D TRACE_ARG_SIZE(2,2,0,0,0) #define FMT__H_D_H_D_D TRACE_ARG_SIZE(2,3,0,0,0) #define FMT__H_D_H_D_H TRACE_ARG_SIZE(3,2,0,0,0) #define FMT__H_D_H_D_H_H TRACE_ARG_SIZE(4,2,0,0,0) #define FMT__H_D_H_A TRACE_ARG_SIZE(2,1,0,0,1) #define FMT__H_D_H_H TRACE_ARG_SIZE(3,1,0,0,0) #define FMT__H_D_H_P_D TRACE_ARG_SIZE(2,2,0,1,0) #define FMT__H_D_H_H_H TRACE_ARG_SIZE(4,1,0,0,0) #define FMT__H_D_H_H_H_H TRACE_ARG_SIZE(5,1,0,0,0) #define FMT__H_D_H_H_H_H_H_H TRACE_ARG_SIZE(7,1,0,0,0) #define FMT__H_D_P_H_H_H_H_H TRACE_ARG_SIZE(6,1,0,1,0) #define FMT__H_D_P_H_H_H_H_H_H_H TRACE_ARG_SIZE(8,1,0,1,0) #define FMT__H_D_P_P_P TRACE_ARG_SIZE(1,1,0,3,0) #define FMT__H_H TRACE_ARG_SIZE(2,0,0,0,0) #define FMT__H_H_A TRACE_ARG_SIZE(2,0,0,0,1) #define FMT__H_H_A_A TRACE_ARG_SIZE(2,0,0,0,2) #define FMT__H_H_D TRACE_ARG_SIZE(2,1,0,0,0) #define FMT__H_H_D_A TRACE_ARG_SIZE(2,1,0,0,1) #define FMT__H_H_D_D TRACE_ARG_SIZE(2,2,0,0,0) #define FMT__H_H_D_D_D TRACE_ARG_SIZE(2,3,0,0,0) #define FMT__H_H_D_H TRACE_ARG_SIZE(3,1,0,0,0) #define FMT__H_H_D_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(10,1,0,0,0) #define FMT__D_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(8,1,0,0,0) #define FMT__H_H_D_H_P TRACE_ARG_SIZE(3,1,0,1,0) #define FMT__H_D_P TRACE_ARG_SIZE(1,1,0,1,0) #define FMT__H_H_D_P TRACE_ARG_SIZE(2,1,0,1,0) #define FMT__H_H_H TRACE_ARG_SIZE(3,0,0,0,0) #define FMT__H_H_H_D TRACE_ARG_SIZE(3,1,0,0,0) #define FMT__H_H_H_D_D TRACE_ARG_SIZE(3,2,0,0,0) #define FMT__H_H_H_D_D_H_A_H_A TRACE_ARG_SIZE(5,2,0,0,2) #define FMT__H_D_H_H_H_D_D_H_A_H_A TRACE_ARG_SIZE(6,3,0,0,2) #define FMT__D_H_H_H_D_D_H_A_H_A TRACE_ARG_SIZE(5,3,0,0,2) #define FMT__H_H_H_D_D_D TRACE_ARG_SIZE(3,3,0,0,0) #define FMT__H_H_H_D_H TRACE_ARG_SIZE(4,1,0,0,0) #define FMT__H_H_H_D_H_P TRACE_ARG_SIZE(4,1,0,1,0) #define FMT__H_H_H_H TRACE_ARG_SIZE(4,0,0,0,0) #define FMT__H_H_H_H_D TRACE_ARG_SIZE(4,1,0,0,0) #define FMT__H_H_H_H_D_H TRACE_ARG_SIZE(5,1,0,0,0) #define FMT__H_H_H_H_H TRACE_ARG_SIZE(5,0,0,0,0) #define FMT__H_H_H_H_H_H TRACE_ARG_SIZE(6,0,0,0,0) #define FMT__H_H_H_H_H_H_H TRACE_ARG_SIZE(7,0,0,0,0) #define FMT__H_H_H_H_H_H_H_H TRACE_ARG_SIZE(8,0,0,0,0) #define FMT__H_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(9,0,0,0,0) #define FMT__H_H_H_H_H_H_H_H_P_P TRACE_ARG_SIZE(8,0,0,2,0) #define FMT__H_H_H_H_H_H_P_P TRACE_ARG_SIZE(6,0,0,2,0) #define FMT__H_H_H_H_H_H_P_P_P_P TRACE_ARG_SIZE(6,2,0,4,0) #define FMT__H_H_H_H_P_P_P TRACE_ARG_SIZE(4,0,0,3,0) #define FMT__H_H_H_P TRACE_ARG_SIZE(3,0,0,1,0) #define FMT__H_D_H_P TRACE_ARG_SIZE(2,1,0,1,0) #define FMT__H_H_L TRACE_ARG_SIZE(2,0,1,0,0) #define FMT__H_H_L_H TRACE_ARG_SIZE(3,0,1,0,0) #define FMT__H_H_H_L TRACE_ARG_SIZE(3,0,1,0,0) #define FMT__H_H_H_H_L TRACE_ARG_SIZE(4,0,1,0,0) #define FMT__H_H_L_H_P TRACE_ARG_SIZE(3,0,1,4,0) #define FMT__H_H_P TRACE_ARG_SIZE(2,0,0,1,0) #define FMT__H_H_P_D TRACE_ARG_SIZE(2,1,0,1,0) #define FMT__H_H_P_P_P TRACE_ARG_SIZE(2,0,0,3,0) #define FMT__H_L TRACE_ARG_SIZE(1,0,1,0,0) #define FMT__H_L_A TRACE_ARG_SIZE(1,0,1,0,1) #define FMT__H_L_D TRACE_ARG_SIZE(1,1,1,0,0) #define FMT__H_L_L TRACE_ARG_SIZE(1,0,2,0,0) #define FMT__H_L_H TRACE_ARG_SIZE(2,0,1,0,0) #define FMT__H_L_D_D TRACE_ARG_SIZE(1,2,1,0,0) #define FMT__H_L_D_D_D TRACE_ARG_SIZE(1,3,1,0,0) #define FMT__H_L_D_P TRACE_ARG_SIZE(1,1,1,1,0) #define FMT__H_L_H_D TRACE_ARG_SIZE(2,1,1,0,0) #define FMT__H_L_H_D_D TRACE_ARG_SIZE(2,2,1,0,0) #define FMT__H_L_H_H_H_H_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(13,0,1,0,0) #define FMT__H_D_H_H_H_H_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(13,1,0,0,0) #define FMT__H_L_H_H_P TRACE_ARG_SIZE(3,0,1,4,0) #define FMT__H_L_L_H_A TRACE_ARG_SIZE(2,0,2,0,1) #define FMT__H_L_D_D_H TRACE_ARG_SIZE(2,2,1,0,0) #define FMT__H_P_D_P TRACE_ARG_SIZE(1,1,0,2,0) #define FMT__H_P_P_D_P TRACE_ARG_SIZE(1,1,0,3,0) #define FMT__H_P_D_D_H TRACE_ARG_SIZE(2,2,0,1,0) #define FMT__H_P TRACE_ARG_SIZE(1,0,0,1,0) #define FMT__H_P_D TRACE_ARG_SIZE(1,1,0,1,0) #define FMT__H_P_D_D_H_P TRACE_ARG_SIZE(2,2,0,2,0) #define FMT__H_P_D_D_P TRACE_ARG_SIZE(1,2,0,2,0) #define FMT__H_P_H TRACE_ARG_SIZE(2,0,0,1,0) #define FMT__H_P_H_D TRACE_ARG_SIZE(2,1,0,1,0) #define FMT__H_P_H_D_H TRACE_ARG_SIZE(3,1,0,1,0) #define FMT__H_P_H_H TRACE_ARG_SIZE(3,0,0,1,0) #define FMT__H_P_H_H_H TRACE_ARG_SIZE(4,0,0,1,0) #define FMT__H_P_H_H_D TRACE_ARG_SIZE(3,1,0,1,0) #define FMT__H_P_H_H_H_H TRACE_ARG_SIZE(5,0,0,1,0) #define FMT__H_P_H_P TRACE_ARG_SIZE(2,0,0,2,0) #define FMT__H_P_H_P_H TRACE_ARG_SIZE(3,0,0,2,0) #define FMT__H_P_H_P_H_H TRACE_ARG_SIZE(4,0,0,2,0) #define FMT__H_P_H_P_H_H_P TRACE_ARG_SIZE(4,0,0,3,0) #define FMT__H_P_L_H TRACE_ARG_SIZE(2,0,1,1,0) #define FMT__H_P_P_P TRACE_ARG_SIZE(1,0,0,3,0) #define FMT__H_P_P_P_D_P_P TRACE_ARG_SIZE(1,1,0,5,0) #define FMT__H_P_P_P_P TRACE_ARG_SIZE(1,0,0,4,0) #define FMT__H_P_P_P_P_P TRACE_ARG_SIZE(1,0,0,5,0) #define FMT__L TRACE_ARG_SIZE(0,0,1,0,0) #define FMT__L_A TRACE_ARG_SIZE(0,0,1,0,1) #define FMT__L_D TRACE_ARG_SIZE(0,1,1,0,0) #define FMT__L_D_D TRACE_ARG_SIZE(0,2,1,0,0) #define FMT__L_D_D_D TRACE_ARG_SIZE(0,3,1,0,0) #define FMT__L_H TRACE_ARG_SIZE(1,0,1,0,0) #define FMT__L_H_H TRACE_ARG_SIZE(2,0,1,0,0) #define FMT__L_H_H_H TRACE_ARG_SIZE(3,0,1,0,0) #define FMT__L_L TRACE_ARG_SIZE(0,0,2,0,0) #define FMT__L_L_L TRACE_ARG_SIZE(0,0,3,0,0) #define FMT__L_L_L_H TRACE_ARG_SIZE(1,0,3,0,0) #define FMT__L_L_A_A TRACE_ARG_SIZE(0,0,2,0,2) #define FMT__L_D_A TRACE_ARG_SIZE(0,1,1,0,1) #define FMT__L_D_A_A TRACE_ARG_SIZE(0,1,1,0,2) #define FMT__L_L_A_A_H_L_H_H_H_H_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(13,0,3,0,2) #define FMT__L_L_D_D TRACE_ARG_SIZE(0,2,2,0,0) #define FMT__L_L_H_L_H_H_H_H_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(13,0,3,0,0) #define FMT__L_L_L_D TRACE_ARG_SIZE(0,1,3,0,0) #define FMT__L_L_L_D_L_D TRACE_ARG_SIZE(0,2,4,0,0) #define FMT__L_L_L_L TRACE_ARG_SIZE(0,0,4,0,0) #define FMT__L_L_L_L_L TRACE_ARG_SIZE(0,0,5,0,0) #define FMT__L_L_L_L_L_L TRACE_ARG_SIZE(0,0,6,0,0) #define FMT__L_L_L_L_L_L_L TRACE_ARG_SIZE(0,0,7,0,0) #define FMT__L_P TRACE_ARG_SIZE(0,0,1,1,0) #define FMT__L_P_L TRACE_ARG_SIZE(0,0,2,1,0) #define FMT__P TRACE_ARG_SIZE(0,0,0,1,0) #define FMT__P_A TRACE_ARG_SIZE(0,0,0,1,1) #define FMT__P_D TRACE_ARG_SIZE(0,1,0,1,0) #define FMT__P_D_D TRACE_ARG_SIZE(0,2,0,1,0) #define FMT__P_D_D_D TRACE_ARG_SIZE(0,3,0,1,0) #define FMT__P_D_D_D_D TRACE_ARG_SIZE(0,4,0,1,0) #define FMT__P_D_D_H_D TRACE_ARG_SIZE(1,3,0,1,0) #define FMT__P_D_D_D_D_D TRACE_ARG_SIZE(0,5,0,1,0) #define FMT__P_D_D_D_D_D_D TRACE_ARG_SIZE(0,6,0,1,0) #define FMT__P_D_D_D_D_D_D_D TRACE_ARG_SIZE(0,7,0,1,0) #define FMT__P_D_D_D_H_D TRACE_ARG_SIZE(1,4,0,1,0) #define FMT__P_D_D_H TRACE_ARG_SIZE(1,2,0,1,0) #define FMT__P_D_D_L_L_P TRACE_ARG_SIZE(0,2,2,2,0) #define FMT__P_D_H TRACE_ARG_SIZE(1,1,0,1,0) #define FMT__P_D_P TRACE_ARG_SIZE(0,1,0,2,0) #define FMT__P_D_L TRACE_ARG_SIZE(0,1,1,1,0) #define FMT__P_D_P_D TRACE_ARG_SIZE(0,2,0,2,0) #define FMT__P_D_P_P TRACE_ARG_SIZE(0,1,0,3,0) #define FMT__P_H TRACE_ARG_SIZE(1,0,0,1,0) #define FMT__P_H_D TRACE_ARG_SIZE(1,1,0,1,0) #define FMT__P_H_D_D TRACE_ARG_SIZE(1,2,0,1,0) #define FMT__P_H_D_D_H TRACE_ARG_SIZE(2,2,0,1,0) #define FMT__P_H_D_P TRACE_ARG_SIZE(1,1,0,2,0) #define FMT__P_H_D_H TRACE_ARG_SIZE(2,1,0,1,0) #define FMT__P_H_D_L TRACE_ARG_SIZE(1,1,1,1,0) #define FMT__P_H_H TRACE_ARG_SIZE(2,0,0,1,0) #define FMT__P_H_H_D_D TRACE_ARG_SIZE(2,2,0,1,0) #define FMT__P_H_H_H TRACE_ARG_SIZE(3,0,0,1,0) #define FMT__P_H_H_H_A TRACE_ARG_SIZE(3,0,0,1,1) #define FMT__P_H_H_H_D TRACE_ARG_SIZE(3,1,0,1,0) #define FMT__P_H_H_H_H TRACE_ARG_SIZE(4,0,0,1,0) #define FMT__P_H_H_H_H_D TRACE_ARG_SIZE(4,1,0,1,0) #define FMT__P_H_H_H_H_H_H TRACE_ARG_SIZE(6,0,0,1,0) #define FMT__P_H_H_H_H_H_H_H TRACE_ARG_SIZE(7,0,0,1,0) #define FMT__P_H_H_H_L TRACE_ARG_SIZE(3,0,1,1,0) #define FMT__P_H_H_L TRACE_ARG_SIZE(2,0,1,1,0) #define FMT__P_H_L TRACE_ARG_SIZE(1,0,1,1,0) #define FMT__P_H_L_H_L TRACE_ARG_SIZE(2,0,2,1,0) #define FMT__P_H_P TRACE_ARG_SIZE(1,0,0,2,0) #define FMT__P_H_P_D TRACE_ARG_SIZE(1,1,0,2,0) #define FMT__P_H_P_D_D TRACE_ARG_SIZE(1,2,0,2,0) #define FMT__P_H_P_D_D_D TRACE_ARG_SIZE(1,3,0,2,0) #define FMT__P_H_P_H TRACE_ARG_SIZE(2,0,0,2,0) #define FMT__P_H_P_H_L TRACE_ARG_SIZE(2,0,1,2,0) #define FMT__P_H_P_P TRACE_ARG_SIZE(1,0,0,3,0) #define FMT__P_H_P_L TRACE_ARG_SIZE(1,0,1,2,0) #define FMT__P_H_P_P_H TRACE_ARG_SIZE(2,0,0,3,0) #define FMT__P_H_P_P_P TRACE_ARG_SIZE(1,0,0,4,0) #define FMT__P_L TRACE_ARG_SIZE(0,0,1,1,0) #define FMT__P_L_D TRACE_ARG_SIZE(0,1,1,1,0) #define FMT__P_L_H TRACE_ARG_SIZE(1,0,1,1,0) #define FMT__P_L_P TRACE_ARG_SIZE(0,0,1,2,0) #define FMT__P_L_L_D TRACE_ARG_SIZE(0,1,2,1,0) #define FMT__P_L_L_L TRACE_ARG_SIZE(0,0,3,1,0) #define FMT__P_L_P_L TRACE_ARG_SIZE(0,0,2,2,0) #define FMT__P_L_P_P_P TRACE_ARG_SIZE(0,0,1,4,0) #define FMT__P_P TRACE_ARG_SIZE(0,0,0,2,0) #define FMT__P_P_L TRACE_ARG_SIZE(0,0,1,2,0) #define FMT__P_P_D TRACE_ARG_SIZE(0,1,0,2,0) #define FMT__P_P_D_D TRACE_ARG_SIZE(0,2,0,2,0) #define FMT__P_P_D_D_H TRACE_ARG_SIZE(1,2,0,2,0) #define FMT__P_P_D_D_P TRACE_ARG_SIZE(0,2,0,3,0) #define FMT__P_P_D_H_H TRACE_ARG_SIZE(2,1,0,2,0) #define FMT__P_P_D_H_P TRACE_ARG_SIZE(1,1,0,3,0) #define FMT__P_P_D_P TRACE_ARG_SIZE(0,1,0,3,0) #define FMT__P_P_D_P_D TRACE_ARG_SIZE(0,2,0,3,0) #define FMT__P_P_D_P_H TRACE_ARG_SIZE(1,1,0,3,0) #define FMT__P_P_H TRACE_ARG_SIZE(1,0,0,2,0) #define FMT__P_P_H_D TRACE_ARG_SIZE(1,1,0,2,0) #define FMT__P_P_H_H TRACE_ARG_SIZE(2,0,0,2,0) #define FMT__P_P_H_H_P TRACE_ARG_SIZE(2,0,0,3,0) #define FMT__P_P_H_H_H TRACE_ARG_SIZE(3,0,0,2,0) #define FMT__P_P_H_P TRACE_ARG_SIZE(1,0,0,3,0) #define FMT__P_P_H_P_D_P TRACE_ARG_SIZE(1,2,0,4,0) #define FMT__P_P_H_P_H TRACE_ARG_SIZE(2,0,0,3,0) #define FMT__P_P_L_D TRACE_ARG_SIZE(0,1,1,2,0) #define FMT__P_P_L_L_H TRACE_ARG_SIZE(1,0,2,2,0) #define FMT__P_P_P TRACE_ARG_SIZE(0,0,0,3,0) #define FMT__P_P_P_H TRACE_ARG_SIZE(1,0,0,3,0) #define FMT__P_P_P_D TRACE_ARG_SIZE(0,1,0,3,0) #define FMT__P_P_P_D_P TRACE_ARG_SIZE(0,1,0,4,0) #define FMT__P_P_P_H_H TRACE_ARG_SIZE(2,0,0,3,0) #define FMT__P_P_P_L_H TRACE_ARG_SIZE(1,0,1,3,0) #define FMT__P_P_P_L_D_H TRACE_ARG_SIZE(1,1,1,3,0) #define FMT__P_P_P_P TRACE_ARG_SIZE(0,0,0,4,0) #define FMT__P_L_H_H TRACE_ARG_SIZE(2,0,1,1,0) #define FMT__P_P_P_P_P TRACE_ARG_SIZE(0,0,0,5,0) #define FMT__D_D_L_D TRACE_ARG_SIZE(0,3,1,0,0) #define FMT__D_D_L_L TRACE_ARG_SIZE(0,2,2,0,0) #define FMT__D_D_D_D_L_L TRACE_ARG_SIZE(0,4,2,0,0) #define FMT__L_D_D_D_D_L_L TRACE_ARG_SIZE(0,4,3,0,0) #define FMT__L_L_L_D_D TRACE_ARG_SIZE(0,2,3,0,0) #define FMT__D_H_P_H TRACE_ARG_SIZE(2,1,0,1,0) #define FMT__H_D_H_H_D TRACE_ARG_SIZE(3,2,0,0,0) #define FMT__D_A_B_H_H TRACE_ARG_SIZE(2,1,0,0,3) #define FMT__A_A_P TRACE_ARG_SIZE(0,0,0,1,2) #define FMT__B TRACE_ARG_SIZE(0,0,0,0,2) #define FMT__B_H_B TRACE_ARG_SIZE(1,0,0,0,4) #define FMT__B_B_B TRACE_ARG_SIZE(0,0,0,0,6) #define FMT__D_H_D_B TRACE_ARG_SIZE(1,2,0,0,2) #define FMT__D_H_H_B TRACE_ARG_SIZE(2,1,0,0,2) #define FMT__H_H_A_B TRACE_ARG_SIZE(2,0,0,0,3) #define FMT__A_D TRACE_ARG_SIZE(0,1,0,0,1) #define FMT__L_D_P_H TRACE_ARG_SIZE(1,1,1,1,0) #define FMT__D_D_H_H_H TRACE_ARG_SIZE(3,2,0,0,0) #define FMT__P_B_D_D TRACE_ARG_SIZE(0,2,0,1,2) #define FMT__H_B_H_B TRACE_ARG_SIZE(2,0,0,0,4) #define FMT__B_A TRACE_ARG_SIZE(0,0,0,0,3) #define FMT__D_H_A TRACE_ARG_SIZE(1,1,0,0,1) #define FMT__D_H_A_H TRACE_ARG_SIZE(2,1,0,0,1) #define FMT__D_A_H TRACE_ARG_SIZE(1,1,0,0,1) #define FMT__D_D_D_A_B TRACE_ARG_SIZE(0,3,0,0,3) #define FMT__D_B_A TRACE_ARG_SIZE(0,1,0,0,3) #define FMT__H_B_A TRACE_ARG_SIZE(1,0,0,0,3) #define FMT__D_D_H_H_D_D_D_D TRACE_ARG_SIZE(2,6,0,0,0) #define FMT__P_D_H_H_H_A TRACE_ARG_SIZE(3,1,0,1,1) #define FMT__H_A_H_H_H_H_H TRACE_ARG_SIZE(6,0,0,0,1) #define FMT__H_D_A_H TRACE_ARG_SIZE(2,1,0,0,1) #define FMT__D_A_H_D TRACE_ARG_SIZE(1,2,0,0,1) #define FMT__D_D_A_H TRACE_ARG_SIZE(1,2,0,0,1) #define FMT__P_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(8,0,0,1,0) #define FMT__D_D_H_L_H_H TRACE_ARG_SIZE(3,2,1,0,0) #define FMT__D_H_L_H_H TRACE_ARG_SIZE(3,1,1,0,0) #define FMT__D_H_L_L_D_D_D TRACE_ARG_SIZE(1,4,2,0,0) #define FMT__H_D_H_L_H_H TRACE_ARG_SIZE(4,1,1,0,0) #define FMT__D_H_D_H_L_H_H TRACE_ARG_SIZE(4,2,1,0,0) #define FMT__D_D_H_H_H_D_D_D_D TRACE_ARG_SIZE(3,6,0,0,0) #define FMT__H_D_H_L TRACE_ARG_SIZE(2,1,1,0,0) #define FMT__H_H_L_L TRACE_ARG_SIZE(2,0,2,0,0) #define FMT__D_D_H_H_D_H_D_D_D_D TRACE_ARG_SIZE(3,7,0,0,0) #define FMT__D_A_D_A TRACE_ARG_SIZE(0,2,0,0,2) #define FMT__H_H_H_L_H_H_H TRACE_ARG_SIZE(6,0,1,0,0) #define FMT__H_D_D_D_D_D TRACE_ARG_SIZE(1,5,0,0,0) #define FMT__P_P_D_D_L TRACE_ARG_SIZE(0,2,1,2,0) #define FMT__P_L_L TRACE_ARG_SIZE(0,0,2,1,0) #define FMT__P_P_L_L TRACE_ARG_SIZE(0,0,2,2,0) #define FMT__D_D_H_D_D_H TRACE_ARG_SIZE(2,4,0,0,0) #define FMT__NC(N) TRACE_ARG_SIZE(N,0,0,0,0) #define FMT__H_L_H_H TRACE_ARG_SIZE(3,0,1,0,0) #define FMT__A_B TRACE_ARG_SIZE(0,0,0,1,1) #define FMT__D_H_H_L_D_D_D TRACE_ARG_SIZE(2,4,1,0,0) #define FMT__H_H_D_D_H TRACE_ARG_SIZE(3,3,0,0,0) #define FMT__L_D_H_H_H_H TRACE_ARG_SIZE(4,1,1,0,0) #define FMT__P_A_A TRACE_ARG_SIZE(0,0,0,1,2) #define FMT__D_D_P_H_H_H_H TRACE_ARG_SIZE(4,2,1,0,0) #define FMT__P_P_D_D_D TRACE_ARG_SIZE(0,3,0,2,0) #define FMT__P_P_D_D_D_P TRACE_ARG_SIZE(0,3,0,3,0) #define FMT__P_P_P_D_D_D_P TRACE_ARG_SIZE(0,3,0,4,0) #define FMT__D_D_H_H_H_H TRACE_ARG_SIZE(2,4,0,0,0) #define FMT__P_D_P_D_P_P TRACE_ARG_SIZE(4,2,0,0,0) #define FMT__D_A_D TRACE_ARG_SIZE(0,2,0,0,1) #define FMT__D_H_D_D_D_D TRACE_ARG_SIZE(1,5,0,0,0) #define FMT__H_D_D_D_H_H TRACE_ARG_SIZE(3,3,0,0,0) #define FMT__P_H_D_D_D_H_H TRACE_ARG_SIZE(3,3,1,0,0) #define FMT__H_H_H_D_H_L_H_H TRACE_ARG_SIZE(6,1,1,0,0) #define FMT__D_D_P_P TRACE_ARG_SIZE(0,2,0,2,0) #define FMT__D_D_P_P_D_D TRACE_ARG_SIZE(0,4,0,2,0) #define FMT__H_P_P_H_H TRACE_ARG_SIZE(3,0,0,2,0) #define FMT__H_P_H_H_P TRACE_ARG_SIZE(3,0,0,2,0) #define FMT__H_P_P TRACE_ARG_SIZE(1,0,0,2,0) #define FMT__H_P_P_H TRACE_ARG_SIZE(2,0,0,2,0) #define FMT__D_P_D_D_P TRACE_ARG_SIZE(0,3,0,2,0) #define FMT__D_D_D_A_A TRACE_ARG_SIZE(0,3,0,0,2) #define FMT__H_D_A_D_D_D TRACE_ARG_SIZE(1,4,0,0,1) #define FMT__H_D_A_P TRACE_ARG_SIZE(1,1,0,1,1) #define FMT__H_H_H_H_H_H_H_H_H_H TRACE_ARG_SIZE(10,0,0,0,0) /** @} */ /* TRACE_DATA_FORMAT */ /** * @addtogroup TRACE_FIRST_ARG * @{ */ #define TRACE_COMMON1 TRACE_SUBSYSTEM_COMMON, 1U #define TRACE_COMMON2 TRACE_SUBSYSTEM_COMMON, 2U #define TRACE_COMMON3 TRACE_SUBSYSTEM_COMMON, 3U #define TRACE_COMMON4 TRACE_SUBSYSTEM_COMMON, 4U /* osif subsystem is nearly not used. Place it to the same with common and free * 1 bit for buffers. */ #define TRACE_OSIF1 TRACE_SUBSYSTEM_COMMON, 1U #define TRACE_OSIF2 TRACE_SUBSYSTEM_COMMON, 2U #define TRACE_OSIF3 TRACE_SUBSYSTEM_COMMON, 3U #define TRACE_OSIF4 TRACE_SUBSYSTEM_COMMON, 4U #define TRACE_MAC1 TRACE_SUBSYSTEM_MAC, 1U #define TRACE_MAC2 TRACE_SUBSYSTEM_MAC, 2U #define TRACE_MAC3 TRACE_SUBSYSTEM_MAC, 3U #define TRACE_MAC4 TRACE_SUBSYSTEM_MAC, 4U #define TRACE_MACSPLIT1 TRACE_SUBSYSTEM_MACSPLIT, 1U #define TRACE_MACSPLIT2 TRACE_SUBSYSTEM_MACSPLIT, 2U #define TRACE_MACSPLIT3 TRACE_SUBSYSTEM_MACSPLIT, 3U #define TRACE_MACSPLIT4 TRACE_SUBSYSTEM_MACSPLIT, 4U #define TRACE_MACLL1 TRACE_SUBSYSTEM_MACLL, 1U #define TRACE_MACLL2 TRACE_SUBSYSTEM_MACLL, 2U #define TRACE_MACLL3 TRACE_SUBSYSTEM_MACLL, 3U #define TRACE_MACLL4 TRACE_SUBSYSTEM_MACLL, 4U #define TRACE_NWK1 TRACE_SUBSYSTEM_NWK, 1U #define TRACE_NWK2 TRACE_SUBSYSTEM_NWK, 2U #define TRACE_NWK3 TRACE_SUBSYSTEM_NWK, 3U #define TRACE_NWK4 TRACE_SUBSYSTEM_NWK, 4U #define TRACE_APS1 TRACE_SUBSYSTEM_APS, 1U #define TRACE_APS2 TRACE_SUBSYSTEM_APS, 2U #define TRACE_APS3 TRACE_SUBSYSTEM_APS, 3U #define TRACE_APS4 TRACE_SUBSYSTEM_APS, 4U #define TRACE_AF1 TRACE_SUBSYSTEM_AF, 1U #define TRACE_AF2 TRACE_SUBSYSTEM_AF, 2U #define TRACE_AF3 TRACE_SUBSYSTEM_AF, 3U #define TRACE_AF4 TRACE_SUBSYSTEM_AF, 4U #define TRACE_ZDO1 TRACE_SUBSYSTEM_ZDO, 1U #define TRACE_ZDO2 TRACE_SUBSYSTEM_ZDO, 2U #define TRACE_ZDO3 TRACE_SUBSYSTEM_ZDO, 3U #define TRACE_ZDO4 TRACE_SUBSYSTEM_ZDO, 4U #define TRACE_SECUR1 TRACE_SUBSYSTEM_SECUR, 1U #define TRACE_SECUR2 TRACE_SUBSYSTEM_SECUR, 2U #define TRACE_SECUR3 TRACE_SUBSYSTEM_SECUR, 3U #define TRACE_SECUR4 TRACE_SUBSYSTEM_SECUR, 4U #define TRACE_ZCL1 TRACE_SUBSYSTEM_ZCL, 1U #define TRACE_ZCL2 TRACE_SUBSYSTEM_ZCL, 2U #define TRACE_ZCL3 TRACE_SUBSYSTEM_ZCL, 3U #define TRACE_ZCL4 TRACE_SUBSYSTEM_ZCL, 4U #define TRACE_ZLL1 TRACE_SUBSYSTEM_ZLL, 1U #define TRACE_ZLL2 TRACE_SUBSYSTEM_ZLL, 2U #define TRACE_ZLL3 TRACE_SUBSYSTEM_ZLL, 3U #define TRACE_ZLL4 TRACE_SUBSYSTEM_ZLL, 4U #define TRACE_ZGP1 TRACE_SUBSYSTEM_ZGP, 1U #define TRACE_ZGP2 TRACE_SUBSYSTEM_ZGP, 2U #define TRACE_ZGP3 TRACE_SUBSYSTEM_ZGP, 3U #define TRACE_ZGP4 TRACE_SUBSYSTEM_ZGP, 4U #define TRACE_ZSE1 TRACE_SUBSYSTEM_ZSE, 1U #define TRACE_ZSE2 TRACE_SUBSYSTEM_ZSE, 2U #define TRACE_ZSE3 TRACE_SUBSYSTEM_ZSE, 3U #define TRACE_ZSE4 TRACE_SUBSYSTEM_ZSE, 4U #ifndef DOXYGEN #define TRACE_SPI1 TRACE_SUBSYSTEM_SPI, 1U #define TRACE_SPI2 TRACE_SUBSYSTEM_SPI, 2U #define TRACE_SPI3 TRACE_SUBSYSTEM_SPI, 3U #define TRACE_SPI4 TRACE_SUBSYSTEM_SPI, 4U #define TRACE_SSL1 TRACE_SUBSYSTEM_SSL, 1U #define TRACE_SSL2 TRACE_SUBSYSTEM_SSL, 2U #define TRACE_SSL3 TRACE_SUBSYSTEM_SSL, 3U #define TRACE_SSL4 TRACE_SUBSYSTEM_SSL, 4U #endif /* DOXYGEN */ #define TRACE_APP1 TRACE_SUBSYSTEM_APP, 1U #define TRACE_APP2 TRACE_SUBSYSTEM_APP, 2U #define TRACE_APP3 TRACE_SUBSYSTEM_APP, 3U #define TRACE_APP4 TRACE_SUBSYSTEM_APP, 4U #ifndef DOXYGEN #define TRACE_SPECIAL1 TRACE_SUBSYSTEM_SPECIAL1, 1U #define TRACE_SPECIAL2 TRACE_SUBSYSTEM_SPECIAL1, 2U #define TRACE_SPECIAL3 TRACE_SUBSYSTEM_SPECIAL1, 3U #define TRACE_SPECIAL4 TRACE_SUBSYSTEM_SPECIAL1, 4U #define TRACE_USB1 TRACE_SUBSYSTEM_USB, 1U #define TRACE_USB2 TRACE_SUBSYSTEM_USB, 2U #define TRACE_USB3 TRACE_SUBSYSTEM_USB, 3U #define TRACE_USB4 TRACE_SUBSYSTEM_USB, 4U #define TRACE_MEMDBG1 TRACE_SUBSYSTEM_MEM, 1U #define TRACE_MEMDBG2 TRACE_SUBSYSTEM_MEM, 2U #define TRACE_MEMDBG3 TRACE_SUBSYSTEM_MEM, 3U #define TRACE_MEMDBG4 TRACE_SUBSYSTEM_MEM, 4U #define TRACE_CLOUD1 TRACE_SUBSYSTEM_CLOUD, 1U #define TRACE_CLOUD2 TRACE_SUBSYSTEM_CLOUD, 2U #define TRACE_CLOUD3 TRACE_SUBSYSTEM_CLOUD, 3U #define TRACE_CLOUD4 TRACE_SUBSYSTEM_CLOUD, 4U #define TRACE_HTTP1 TRACE_SUBSYSTEM_HTTP, 1U #define TRACE_HTTP2 TRACE_SUBSYSTEM_HTTP, 2U #define TRACE_HTTP3 TRACE_SUBSYSTEM_HTTP, 3U #define TRACE_HTTP4 TRACE_SUBSYSTEM_HTTP, 4U #define TRACE_JSON1 TRACE_SUBSYSTEM_JSON, 1U #define TRACE_JSON2 TRACE_SUBSYSTEM_JSON, 2U #define TRACE_JSON3 TRACE_SUBSYSTEM_JSON, 3U #define TRACE_JSON4 TRACE_SUBSYSTEM_JSON, 4U #define TRACE_LWIP1 TRACE_SUBSYSTEM_LWIP, 1U #define TRACE_LWIP2 TRACE_SUBSYSTEM_LWIP, 2U #define TRACE_LWIP3 TRACE_SUBSYSTEM_LWIP, 3U #define TRACE_LWIP4 TRACE_SUBSYSTEM_LWIP, 4U #define TRACE_VENSTAR1 TRACE_SUBSYSTEM_VENSTAR, 1U #define TRACE_VENSTAR2 TRACE_SUBSYSTEM_VENSTAR, 2U #define TRACE_VENSTAR3 TRACE_SUBSYSTEM_VENSTAR, 3U #define TRACE_VENSTAR4 TRACE_SUBSYSTEM_VENSTAR, 4U #define TRACE_TRANSPORT1 TRACE_SUBSYSTEM_TRANSPORT, 1U #define TRACE_TRANSPORT2 TRACE_SUBSYSTEM_TRANSPORT, 2U #define TRACE_TRANSPORT3 TRACE_SUBSYSTEM_TRANSPORT, 3U #define TRACE_TRANSPORT4 TRACE_SUBSYSTEM_TRANSPORT, 4U #define TRACE_UART1 TRACE_SUBSYSTEM_UART, 1U #define TRACE_UART2 TRACE_SUBSYSTEM_UART, 2U #define TRACE_UART3 TRACE_SUBSYSTEM_UART, 3U #define TRACE_UART4 TRACE_SUBSYSTEM_UART, 4U #define TRACE_BATTERY1 TRACE_SUBSYSTEM_BATTERY, 1U #define TRACE_BATTERY2 TRACE_SUBSYSTEM_BATTERY, 2U #define TRACE_BATTERY3 TRACE_SUBSYSTEM_BATTERY, 3U #define TRACE_BATTERY4 TRACE_SUBSYSTEM_BATTERY, 4U #define TRACE_OTA1 TRACE_SUBSYSTEM_OTA, 1U #define TRACE_OTA2 TRACE_SUBSYSTEM_OTA, 2U #define TRACE_OTA3 TRACE_SUBSYSTEM_OTA, 3U #define TRACE_OTA4 TRACE_SUBSYSTEM_OTA, 4U #define TRACE_MAC_API1 TRACE_SUBSYSTEM_MAC_API, 1U #define TRACE_MAC_API2 TRACE_SUBSYSTEM_MAC_API, 2U #define TRACE_MAC_API3 TRACE_SUBSYSTEM_MAC_API, 3U #define TRACE_MAC_API4 TRACE_SUBSYSTEM_MAC_API, 4U #define TRACE_ZBDIRECT1 TRACE_SUBSYSTEM_ZBDIRECT, 1U #define TRACE_ZBDIRECT2 TRACE_SUBSYSTEM_ZBDIRECT, 2U #define TRACE_ZBDIRECT3 TRACE_SUBSYSTEM_ZBDIRECT, 3U #define TRACE_ZBDIRECT4 TRACE_SUBSYSTEM_ZBDIRECT, 4U #define TRACE_DIAG1 TRACE_SUBSYSTEM_DIAGNOSTIC, 1U #define TRACE_DIAG2 TRACE_SUBSYSTEM_DIAGNOSTIC, 2U #define TRACE_DIAG3 TRACE_SUBSYSTEM_DIAGNOSTIC, 3U #define TRACE_DIAG4 TRACE_SUBSYSTEM_DIAGNOSTIC, 4U #define TRACE_NS1 TRACE_SUBSYSTEM_NS, 1U #define TRACE_NS2 TRACE_SUBSYSTEM_NS, 2U #define TRACE_NS3 TRACE_SUBSYSTEM_NS, 3U #define TRACE_NS4 TRACE_SUBSYSTEM_NS, 4U #define TRACE_TEST1 TRACE_SUBSYSTEM_TEST, 1U #define TRACE_TEST2 TRACE_SUBSYSTEM_TEST, 2U #define TRACE_TEST3 TRACE_SUBSYSTEM_TEST, 3U #define TRACE_TEST4 TRACE_SUBSYSTEM_TEST, 4U #endif /* DOXYGEN */ #ifndef ZB_SET_TRACE_LEVEL /* empty definitions if not implemented */ #define ZB_SET_TRACE_LEVEL(l) #define ZB_SET_TRACE_MASK(m) #define ZB_SET_TRACE_OFF() #define ZB_SET_TRACE_ON() #endif /** @} */ /* TRACE_FIRST_ARG */ /** @endcond */ /* DSR_TRACE */ /** @} */ /* Debug trace */ #if defined ZB_TRAFFIC_DUMP_ON || defined DOXYGEN /** @addtogroup DUMP_ON_OFF @{ */ /** @cond DOXYGEN_INTERNAL_DOC */ extern zb_uint8_t g_traf_dump; /** @endcond */ /* DOXYGEN_INTERNAL_DOC */ static ZB_INLINE zb_uint8_t zb_get_traf_dump_state(void) { return g_traf_dump; } /** * Switch Zigbee traffic dump OFF */ #define ZB_SET_TRAF_DUMP_OFF() g_traf_dump = 0U /** * Switch Zigbee traffic dump ON * * That function works only if traffic dump is enabled at compile time. */ #define ZB_SET_TRAF_DUMP_ON() g_traf_dump = 1U #define ZB_GET_TRAF_DUMP_STATE() zb_get_traf_dump_state() /** @} */ /* DUMP_ON_OFF */ #else #define ZB_SET_TRAF_DUMP_OFF() #define ZB_SET_TRAF_DUMP_ON() #define ZB_GET_TRAF_DUMP_STATE() 0U #endif /** @endcond */ /* DOXYGEN_DEBUG_SECTION */ #endif /* ZB_LOGGER_H */