nRF5 SDK for Thread and Zigbee v1.0.0
Modules | Macros

Modules

 DUMP_ON_OFF
 

Macros

#define TRACE_ENABLED(m)   TRACE_ENABLED_(m)
 Check that trace is enabled for provided level. To be used in constructions like: More...
 
#define ZB_TRACE_FILE_ID   12345
 
#define TRACE_MSG(lm, fmts, args)
 Put trace output. More...
 
#define ZB_SET_TRACE_LEVEL(l)   g_trace_level = (l);
 
#define ZB_SET_TRACE_MASK(m)   g_trace_mask = (m);
 
#define ZB_SET_TRACE_OFF()   g_o_trace_level = g_trace_level, g_trace_level = 0
 
#define ZB_SET_TRACE_ON()   g_trace_level = g_o_trace_level
 
#define TRACE_FORMAT_64   "%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx"
 
#define TRACE_FORMAT_128   "%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx"
 
#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])
 
#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])
 

General trace messages

#define TRACE_ERROR   (zb_uint_t)-1, 1
 Error message.
 
#define TRACE_INFO1   (zb_uint_t)-1, 2
 Information message level 1.
 
#define TRACE_INFO2   (zb_uint_t)-1, 3
 Information message level 2.
 
#define TRACE_INFO3   (zb_uint_t)-1, 4
 Information message level 3.
 

Trace subsystems.

#define TRACE_SUBSYSTEM_COMMON   0x0001
 
#define TRACE_SUBSYSTEM_MEM   0x0002
 
#define TRACE_SUBSYSTEM_MAC   0x0004
 
#define TRACE_SUBSYSTEM_NWK   0x0008
 
#define TRACE_SUBSYSTEM_APS   0x0010
 
#define TRACE_SUBSYSTEM_CLOUD   0x0020
 
#define TRACE_SUBSYSTEM_ZDO   0x0040
 
#define TRACE_SUBSYSTEM_SECUR   0x0080
 
#define TRACE_SUBSYSTEM_ZCL   0x0100
 
#define TRACE_SUBSYSTEM_ZLL   0x0200
 
#define TRACE_SUBSYSTEM_JSON   TRACE_SUBSYSTEM_ZLL
 
#define TRACE_SUBSYSTEM_SSL   0x0400
 
#define TRACE_SUBSYSTEM_APP   0x0800
 
#define TRACE_SUBSYSTEM_LWIP   0x1000 /* LWIP is used, else free */
 
#define TRACE_SUBSYSTEM_ALIEN   0x2000 /* Some special debug */
 
#define TRACE_SUBSYSTEM_MACLL   TRACE_SUBSYSTEM_ALIEN
 
#define TRACE_SUBSYSTEM_VENSTAR   TRACE_SUBSYSTEM_ALIEN
 
#define TRACE_SUBSYSTEM_ZGP   0x4000
 
#define TRACE_SUBSYSTEM_USB   0x8000
 
#define TRACE_SUBSYSTEM_SPI   TRACE_SUBSYSTEM_USB
 
#define TRACE_SUBSYSTEM_HTTP
 
#define TRACE_SUBSYSTEM_OTA   TRACE_SUBSYSTEM_ZGP
 
#define TRACE_SUBSYSTEM_TRANSPORT   TRACE_SUBSYSTEM_LWIP
 
#define TRACE_SUBSYSTEM_UART   TRACE_SUBSYSTEM_LWIP
 
#define TRACE_SUBSYSTEM_SPECIAL1   TRACE_SUBSYSTEM_ALIEN
 
#define TRACE_SUBSYSTEM_BATTERY   TRACE_SUBSYSTEM_SSL
 
#define TRACE_SUBSYSTEM_MAC_API   TRACE_SUBSYSTEM_SSL
 

Trace data format definitions.

#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)
 
#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_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_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_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_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   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_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_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_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_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_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_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_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_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_H   TRACE_ARG_SIZE(4,2,0,0,0)
 
#define FMT__H_D_H_H   TRACE_ARG_SIZE(3,1,0,0,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_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_H_A_H_A   TRACE_ARG_SIZE(5,2,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_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_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_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_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_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_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_A_A   TRACE_ARG_SIZE(0,0,2,0,2)
 
#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_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_L   TRACE_ARG_SIZE(0,0,7,0,0)
 
#define FMT__L_P   TRACE_ARG_SIZE(0,0,1,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_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_P_D   TRACE_ARG_SIZE(0,2,0,2,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_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_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_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_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_P   TRACE_ARG_SIZE(0,0,0,4,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__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_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__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__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__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,4,2,0,0)
 

First argument to ZB_TRACE

#define TRACE_COMMON1   TRACE_SUBSYSTEM_COMMON, 1
 
#define TRACE_COMMON2   TRACE_SUBSYSTEM_COMMON, 2
 
#define TRACE_COMMON3   TRACE_SUBSYSTEM_COMMON, 3
 

Detailed Description

Trace.
Debug trace API are macros with printf-like syntax defined as empty in release builds. Debug messages separated by level and subsystem, levels and subsystems can be switched at compile time. See zb_trace.h for details.

MCU platforms has not too much code space while extensive trace eats code space very quickly. Special care taken to decrease code space: trace format strings are not included into compiled code. Additional utility parses trace dump seeking for format strings in the sources producing readable trace file.

ZBOSS trace has 2 parameters to switch log messages on/off: mask and level. Mask used to exclude some layers (subsystems) trace. Level used to trace more or less detailed messages from the same layer. Trace can be switched ON at compile time using 2 defines. ZB_TRACE_LEVEL is mandatory, ZB_TRACE_MASK is optional. No trace code compiled if ZB_TRACE_LEVEL is not defined; ZB_TRACE_MASK is ~0 (all 1) by default.

Trace call looks like:

TRACE_COMMON3,
"%p calling cb %p param %hd",
(FMT_P_P_H, (void*)ent, ent->func, ent->param));

FMT_P_P_H and similar constants are defined in zb_trace.h and are sum of argument sizes. Actual for trace to serial, ignored in case of trace to file.

For more information see Using TRACE subsystem and samples.

MAC traffic dump
All data passed to/from transceiver can be dumped and used for analyze. Dump can be switched on/off at compile or runtime. Linux build use files for the dump, 8051 sends it to the UART multiplexing with debug trace. Dump format is: type-length-timestamp-data. Its first 2 bytes corresponds to the multiplexing protocol to pass trace and MAC dump over UART. Mac dump can be analyzed by WireShark sniffer using UZ24x0 registers and ZigBee traffic analyze module. WireShark wants files in the pcap format, so special converter utility developed.

Macro Definition Documentation

#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])

Trace format arguments for 128-bit numver.

TRACE_MSG(TRACE_ERROR, "KEY: tclk_key1 = " TRACE_FORMAT_128,
(FMT__A_A, TRACE_ARG_128(s_tclk_key1)));
#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 64-bit address.

#define TRACE_ENABLED (   m)    TRACE_ENABLED_(m)

Check that trace is enabled for provided level. To be used in constructions like:

if (TRACE_ENABLED(TRACE_APS3))
{
call_some_complex_trace();
}
Parameters
m- trace level macro.
Returns
1 if enabled, 0 if disabled.
#define TRACE_FORMAT_128   "%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx"

Trace format for 128-bit number (key etc).

TRACE_MSG(TRACE_ERROR, "KEY: tclk_key1 = " TRACE_FORMAT_128,
(FMT__A_A, TRACE_ARG_128(s_tclk_key1)));
#define TRACE_FORMAT_64   "%hx.%hx.%hx.%hx.%hx.%hx.%hx.%hx"

Trace format for 64-bit address.

#define TRACE_MSG (   lm,
  fmts,
  args 
)
Value:
do { \
_T1(lm, fmts, args); \
} while (0)

Put trace output.

Parameters
lm- trace subsystem and level marker.
fmts- printf()-like format string.
args- format string substitution parameters with a size marker.
Example
#define TRACE_SUBSYSTEM_APP   0x0800

User Application

#define TRACE_SUBSYSTEM_APS   0x0010

APS subsystem.

#define TRACE_SUBSYSTEM_CLOUD   0x0020

Interface to the Cloud if used, else free

#define TRACE_SUBSYSTEM_COMMON   0x0001

Common subsystem.

#define TRACE_SUBSYSTEM_HTTP
Value:
TRACE_SUBSYSTEM_USB /* HTTP == LWIP usage (tcp),
* but not SSL */
#define TRACE_SUBSYSTEM_JSON   TRACE_SUBSYSTEM_ZLL

JSON decoding is used in app, else free

#define TRACE_SUBSYSTEM_MAC   0x0004

MAC subsystem.

#define TRACE_SUBSYSTEM_MEM   0x0002

MEM subsystem (buffers pool).

#define TRACE_SUBSYSTEM_NWK   0x0008

NWK subsystem.

#define TRACE_SUBSYSTEM_SECUR   0x0080

Security subsystem.

#define TRACE_SUBSYSTEM_SSL   0x0400

SSL subsystem

#define TRACE_SUBSYSTEM_ZCL   0x0100

ZCL subsystem.

#define TRACE_SUBSYSTEM_ZDO   0x0040

ZDO subsystem.

#define TRACE_SUBSYSTEM_ZGP   0x4000

ZGP subsystem

#define TRACE_SUBSYSTEM_ZLL   0x0200

ZLL subsystem.

#define ZB_SET_TRACE_LEVEL (   l)    g_trace_level = (l);

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.

Parameters
l- new trace level.
Example
#define ZB_SET_TRACE_MASK (   m)    g_trace_mask = (m);

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.

Parameters
m- new trace mask.
Example
#define ZB_SET_TRACE_OFF ( )    g_o_trace_level = g_trace_level, g_trace_level = 0

Switch off all trace at runtime

#define ZB_SET_TRACE_ON ( )    g_trace_level = g_o_trace_level

Switch on trace at runtime

That macro enables trace which was active before call to ZB_SET_TRACE_OFF().

#define ZB_TRACE_FILE_ID   12345

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.

Example

Documentation feedback | Developer Zone | Subscribe | Updated