#ifndef DEBUG_H #define DEBUG_H #include #include "Platforms.h" /* extern "C" { #include "ets_sys.h" #include "c_types.h" #include "osapi.h" //#include "gpio.h" //#include "os_type.h" //#include "user_config.h" #include "user_interface.h" //#include "wpa2_enterprise.h" //#include "inttypes.h" #include "mem.h" #include "espconn.h" #include "ESP8266lib/c++.h" #include "driver/uart.h" } */ class Log { public: template static inline void addInfo(const char* module, const char* fmt, Args... args) { add('i', module, fmt, args...); } template static inline void addError(const char* module, const char* fmt, Args... args) { add('e', module, fmt, args...); //while(true) {} } private: #if defined(WITH_LOG) template static void add(char level, const char* module, const char* fmt, Args... args) { // temporal buffer (NOTE! MUST NOT BE TOO LARGE OR IT CAN KILL THE STACK!) char buf[512]; char* dst = buf; char* end = buf + sizeof(buf); dst = dst + snprintf(dst, (end-dst), "%c[%-10s] ", level, module); dst = dst + snprintf(dst, (end-dst)-2, fmt, args...); dst = dst + snprintf(dst, (end-dst), "\n"); #if IS_DESKTOP printf(buf); #elif IS_TEENSY Serial.print(buf); #elif IS_ESP8266 //os_printf(buf); printf(buf); #elif IS_ESP32 printf(buf); #else #error "unsupported platform" #endif } #else template static void add(char , const char* , const char* , Args... ) {} #endif }; /* #if (!defined(DEBUG)) // #define debug(str) // #define debugMod(module, str) // #define debugMod1(module, str, val) // #define debugMod2(module, str, v1, v2) // #define debugMod3(module, str, v1, v2, v3) // #define debugMod4(module, str, v1, v2, v3, v4) // #define debugMod5(module, str, v1, v2, v3, v4, v5) // #define debugMod6(module, str, v1, v2, v3, v4, v5, v6) // #define debugMod7(module, str, v1, v2, v3, v4, v5, v6, v7) // #define debugMod8(module, str, v1, v2, v3, v4, v5, v6, v7, v8) // #define debugMod9(module, str, v1, v2, v3, v4, v5, v6, v7, v8, v9) // #define IF_DEBUG(a) // #define debugShow(a, b) // #warning "not using debug output" #elif IS_ESP8266 #define debug(str) os_printf(str) #define debugMod(module, str) os_printf("[%s] %s\n", module, str) #define debugMod1(module, str, val) os_printf("[%s] ", module); os_printf(str, val); os_printf("\n"); #define debugMod2(module, str, v1, v2) os_printf("[%s] ", module); os_printf(str, v1, v2); os_printf("\n"); #define debugMod3(module, str, v1, v2, v3) os_printf("[%s] ", module); os_printf(str, v1, v2, v3); os_printf("\n"); #define debugMod4(module, str, v1, v2, v3, v4) os_printf("[%s] ", module); os_printf(str, v1, v2, v3, v4); os_printf("\n"); #define debugMod5(module, str, v1, v2, v3, v4, v5) os_printf("[%s] ", module); os_printf(str, v1, v2, v3, v4, v5); os_printf("\n"); #define debugMod6(module, str, v1, v2, v3, v4, v5, v6) os_printf("[%s] ", module); os_printf(str, v1, v2, v3, v4, v5, v6); os_printf("\n"); #define debugMod7(module, str, v1, v2, v3, v4, v5, v6, v7) os_printf("[%s] ", module); os_printf(str, v1, v2, v3, v4, v5, v6, v7); os_printf("\n"); #define debugMod8(module, str, v1, v2, v3, v4, v5, v6, v7, v8) os_printf("[%s] ", module); os_printf(str, v1, v2, v3, v4, v5, v6, v7, v8); os_printf("\n"); #define debugMod9(module, str, v1, v2, v3, v4, v5, v6, v7, v8, v9) os_printf("[%s] ", module); os_printf(str, v1, v2, v3, v4, v5, v6, v7, v8, v9); os_printf("\n"); #define IF_DEBUG(a) a #define debugShow(buf, len) hexdump(buf,len) void hexdump(const uint8_t* buf, uint8_t len) { for (int i = 0; i < len; ++i) { os_printf("%02x ", buf[i]); } os_printf("\n"); } #elif IS_ESP32 #ifndef CONFIG_LOG_DEFAULT_LEVEL #define CONFIG_LOG_DEFAULT_LEVEL 3 #endif #include "esp_log.h" #define debug(str) printf(str); #define debugMod(module, str) printf("i[%-10s] ", module); printf(str); printf("\n"); #define debugMod1(module, str, v1) printf("i[%-10s] ", module); printf(str, v1); printf("\n"); #define debugMod2(module, str, v1, v2) printf("i[%-10s] ", module); printf(str, v1, v2); printf("\n"); #define debugMod3(module, str, v1, v2, v3) printf("i[%-10s] ", module); printf(str, v1, v2, v3); printf("\n"); #define debugMod4(module, str, v1, v2, v3, v4) printf("i[%-10s] ", module); printf(str, v1, v2, v3, v4); printf("\n"); #define errorMod(module, str) printf("e[%-10s] ", module); printf(str); printf("\n"); esp_restart(); #define errorMod1(module, str, v1) printf("e[%-10s] ", module); printf(str, v1); printf("\n"); esp_restart(); #define IF_DEBUG(a) a #define debugShow(buf, len) hexdump(buf,len) #elif IS_TEENSY #define debugMod(module, str) {char buf[64]; sprintf(buf, "i[%-10s] ", module); Serial.print(buf); Serial.println(str);} #define debugMod1(module, str, v1) {char buf[64]; sprintf(buf, "i[%-10s] ", module); Serial.print(buf); sprintf(buf, str, v1); Serial.println(buf);} #define debugMod2(module, str, v1, v2) {char buf[64]; sprintf(buf, "i[%-10s] ", module); Serial.print(buf); sprintf(buf, str, v1, v2); Serial.println(buf);} #define debugMod3(module, str, v1, v2, v3) {char buf[64]; sprintf(buf, "i[%-10s] ", module); Serial.print(buf); sprintf(buf, str, v1, v2, v3); Serial.println(buf);} #define debugMod4(module, str, v1, v2, v3, v4) {char buf[64]; sprintf(buf, "i[%-10s] ", module); Serial.print(buf); sprintf(buf, str, v1, v2, v3, v4); Serial.println(buf);} #define debugMod5(module, str, v1, v2, v3, v4, v5) {char buf[64]; sprintf(buf, "i[%-10s] ", module); Serial.print(buf); sprintf(buf, str, v1, v2, v3, v4, v5); Serial.println(buf);} #define errorMod(module, str) debugMod(module, str); while(true) {} #else #error "unsupported platform" #endif */ #endif // DEBUG_H