#ifndef _KIT_DEBUG_H_ #define _KIT_DEBUG_H_ #ifdef __cplusplus extern "C" { #endif #include "kit_time.h" #include "kit_macro.h" #if defined (DEBUG_ASSERT_RTT) || (DEBUG_ASSERT_UART) #if defined (DEBUG_ASSERT_RTT) #ifndef DEBUG_PRINTF_RTT #define DEBUG_PRINTF_RTT #endif #elif defined (DEBUG_ASSERT_UART) #ifndef DEBUG_PRINTF_UART #define DEBUG_PRINTF_UART #endif #endif void kit_assert_param(uint8_t* file, uint32_t line); void kit_assert_res(uint8_t* file, uint32_t line, uint32_t dev, KitResult res); #define KIT_ASSERT_PARAM(expr) ((expr) ? (void)0 : kit_assert_param((uint8_t *)__FILE__, __LINE__)) #define KIT_ASSERT_RES(dev, res) ((res == 0) ? (void)0 : kit_assert_res((uint8_t *)__FILE__, __LINE__, dev, res)) #else #define KIT_ASSERT_PARAM(expr) ((void)0) #define KIT_ASSERT_RES(dev, res) ((void)0) #endif #if defined (DEBUG_PRINTF_RTT) #include "SEGGER_RTT.h" #define KIT_DEBUG_PRINTF(fmt, args...) \ do\ {\ SEGGER_RTT_printf(0, "%d %s>> ", kit_time_get_tick(), __FUNCTION__);\ SEGGER_RTT_printf(0, fmt, ##args);\ }while(0) #define KIT_MODULE_PRINTF(en, fmt, args...) \ if(en == true) \ {\ SEGGER_RTT_printf(0, "%d %s>> ", kit_time_get_tick(), __FUNCTION__);\ SEGGER_RTT_printf(0, fmt, ##args);\ } #define KIT_DEBUG_PRINTF_TIME() \ do\ {\ SEGGER_RTT_printf(0, "%d %s>> ", kit_time_get_tick(), __FUNCTION__);\ SEGGER_RTT_printf(0, fmt, ##args);\ }while(0) #elif defined (DEBUG_ASSERT_UART) #include "stdio.h" #define KIT_DEBUG_PRINTF(fmt, args...) \ do\ {\ printf("%d %s>> ", kit_time_get_tick(), __FUNCTION__);\ printf(fmt, ##args);\ }while(0) #else #define KIT_DEBUG_PRINTF(fmt, args...) ((void)0) #endif #if defined (DEBUG_PRINTF_RTT) #include "SEGGER_RTT.h" #define KIT_DEBUG_PRINTF_U8_BUF(buf, len) \ do\ {\ uint32_t i = 0; \ uint8_t * _buf = (uint8_t *)buf; \ for(i = 0; i < len; i++) \ { \ SEGGER_RTT_printf(0, "%x ", _buf[i]);\ } \ SEGGER_RTT_printf(0, "\r\n");\ }while(0) #define KIT_DEBUG_PRINTF_U16_BUF(buf, len) \ do\ {\ uint32_t i = 0; \ uint16_t * _buf = (uint16_t *)buf; \ for(i = 0; i < len; i++) \ { \ SEGGER_RTT_printf(0, "%d ", _buf[i]);\ } \ SEGGER_RTT_printf(0, "\r\n");\ }while(0) #define KIT_DEBUG_PRINTF_I32_BUF(buf, len) \ do\ {\ uint32_t i = 0; \ int32_t * _buf = (int32_t *)buf; \ for(i = 0; i < len; i++) \ { \ SEGGER_RTT_printf(0, "%d ", _buf[i]);\ } \ SEGGER_RTT_printf(0, "\r\n");\ }while(0) #elif defined (DEBUG_ASSERT_UART) #include "stdio.h" #define KIT_DEBUG_PRINTF(fmt, args...) \ do\ {\ printf("%d %s>> ", kit_time_get_tick(), __FUNCTION__);\ printf(fmt, ##args);\ }while(0) #else #define KIT_DEBUG_PRINTF_U8_BUF(buf, len) ((void)0) #define KIT_DEBUG_PRINTF_U16_BUF(buf, len) ((void)0) #define KIT_DEBUG_PRINTF_I32_BUF(buf, len) ((void)0) #define KIT_DEBUG_PRINTF(fmt, args...) ((void)0) #define KIT_MODULE_PRINTF(en, fmt, args...) ((void)0) #endif void kit_debug_queue(uint16_t *buf, uint8_t len, uint16_t value); void kit_debug_scope_init(const char* type, uint8_t *buf, uint16_t len); void kit_debug_scope_save(uint16_t tick, uint16_t x, uint16_t y, uint16_t z); #ifdef DEBUG_ASSERT_UART int fputc(int ch, FILE *f); #endif #ifdef __cplusplus } #endif #endif