From 2b23b005aab605f1fb74bd2bbd388728b69ead86 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Sat, 2 Jan 2016 12:24:05 +0100 Subject: [PATCH] allow control of enabling debug and debug level from IDE --- boards.txt | 26 ++++++++++ cores/esp8266/core_esp8266_main.cpp | 3 ++ cores/esp8266/debug.h | 4 +- .../ESP8266HTTPClient/src/ESP8266HTTPClient.h | 6 ++- .../ESP8266WebServer/src/ESP8266WebServer.cpp | 13 +++-- libraries/ESP8266WebServer/src/Parsing.cpp | 50 ++++++++++--------- .../ESP8266WiFi/src/WiFiClientSecure.cpp | 4 +- .../ESP8266httpUpdate/src/ESP8266httpUpdate.h | 6 ++- platform.txt | 6 +-- 9 files changed, 84 insertions(+), 34 deletions(-) diff --git a/boards.txt b/boards.txt index d59c254ee2..cea94eeeba 100644 --- a/boards.txt +++ b/boards.txt @@ -6,6 +6,8 @@ menu.FlashFreq=Flash Frequency menu.UploadTool=Upload Using menu.ResetMethod=Reset Method menu.ESPModule=Module +menu.Debug=Debug port +menu.DebugLevel=Debug Level ############################################################## generic.name=Generic ESP8266 Module @@ -26,6 +28,8 @@ generic.build.core=esp8266 generic.build.variant=generic generic.build.flash_mode=qio generic.build.spiffs_pagesize=256 +generic.build.debug_port= +generic.build.debug_level= generic.menu.UploadTool.esptool=Serial generic.menu.UploadTool.esptool.upload.tool=esptool @@ -166,6 +170,28 @@ generic.menu.ResetMethod.ck.upload.resetmethod=ck generic.menu.ResetMethod.nodemcu=nodemcu generic.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu +generic.menu.Debug.Disabled=Disabled +generic.menu.Debug.Disabled.build.debug_port= +generic.menu.Debug.Serial=Serial +generic.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +generic.menu.Debug.Serial1=Serial1 +generic.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 + +generic.menu.DebugLevel.None=None +generic.menu.DebugLevel.None.build.debug_level= +generic.menu.DebugLevel.Core=Core +generic.menu.DebugLevel.Core.build.debug_level=-DDEBUG_ESP_CORE +generic.menu.DebugLevel.SSL=Core + SSL +generic.menu.DebugLevel.SSL.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL +generic.menu.DebugLevel.HTTPClient=HTTPClient +generic.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT +generic.menu.DebugLevel.HTTPUpdate=HTTPUpdate +generic.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE +generic.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate +generic.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE +generic.menu.DebugLevel.HTTPServer=HTTPServer +generic.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER + # disabled because espressif's bootloader refuses to write above 4M # generic.menu.FlashSize.8M=8M (7M SPIFFS) # generic.menu.FlashSize.8M.build.flash_size=1M diff --git a/cores/esp8266/core_esp8266_main.cpp b/cores/esp8266/core_esp8266_main.cpp index f4a1224150..0c1eb02bfe 100644 --- a/cores/esp8266/core_esp8266_main.cpp +++ b/cores/esp8266/core_esp8266_main.cpp @@ -101,6 +101,9 @@ static void loop_wrapper() { preloop_update_frequency(); if(!setup_done) { setup(); +#ifdef DEBUG_ESP_PORT + DEBUG_ESP_PORT.setDebugOutput(true); +#endif setup_done = true; } loop(); diff --git a/cores/esp8266/debug.h b/cores/esp8266/debug.h index 98bdaf03c7..89d18c05b8 100644 --- a/cores/esp8266/debug.h +++ b/cores/esp8266/debug.h @@ -4,7 +4,9 @@ #include #include -//#define DEBUGV(...) ets_printf(__VA_ARGS__) +#ifdef DEBUG_ESP_CORE +#define DEBUGV(...) ets_printf(__VA_ARGS__) +#endif #ifndef DEBUGV #define DEBUGV(...) diff --git a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h index bcd1cc3a12..704841a8c7 100644 --- a/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h +++ b/libraries/ESP8266HTTPClient/src/ESP8266HTTPClient.h @@ -25,7 +25,11 @@ #ifndef ESP8266HTTPClient_H_ #define ESP8266HTTPClient_H_ -//#define DEBUG_HTTPCLIENT(...) Serial1.printf( __VA_ARGS__ ) +#ifdef DEBUG_ESP_HTTP_CLIENT +#ifdef DEBUG_ESP_PORT +#define DEBUG_HTTPCLIENT(...) DEBUG_ESP_PORT.printf( __VA_ARGS__ ) +#endif +#endif #ifndef DEBUG_HTTPCLIENT #define DEBUG_HTTPCLIENT(...) diff --git a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp index a2c8a9866d..77e59af6ad 100644 --- a/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp +++ b/libraries/ESP8266WebServer/src/ESP8266WebServer.cpp @@ -28,8 +28,13 @@ #include "ESP8266WebServer.h" #include "FS.h" #include "detail/RequestHandlersImpl.h" -// #define DEBUG + +//#define DEBUG_ESP_HTTP_SERVER +#ifdef DEBUG_ESP_PORT +#define DEBUG_OUTPUT DEBUG_ESP_PORT +#else #define DEBUG_OUTPUT Serial +#endif const char * AUTHORIZATION_HEADER = "Authorization"; @@ -155,7 +160,7 @@ void ESP8266WebServer::handleClient() { return; } -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.println("New client"); #endif @@ -416,13 +421,13 @@ void ESP8266WebServer::onNotFound(THandlerFunction fn) { void ESP8266WebServer::_handleRequest() { bool handled = false; if (!_currentHandler){ -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.println("request handler not found"); #endif } else { handled = _currentHandler->handle(*this, _currentMethod, _currentUri); -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER if (!handled) { DEBUG_OUTPUT.println("request handler failed to handle request"); } diff --git a/libraries/ESP8266WebServer/src/Parsing.cpp b/libraries/ESP8266WebServer/src/Parsing.cpp index 26304946b3..7eac20defe 100644 --- a/libraries/ESP8266WebServer/src/Parsing.cpp +++ b/libraries/ESP8266WebServer/src/Parsing.cpp @@ -24,8 +24,12 @@ #include "WiFiClient.h" #include "ESP8266WebServer.h" -//#define DEBUG +//#define DEBUG_ESP_HTTP_SERVER +#ifdef DEBUG_ESP_PORT +#define DEBUG_OUTPUT DEBUG_ESP_PORT +#else #define DEBUG_OUTPUT Serial +#endif bool ESP8266WebServer::_parseRequest(WiFiClient& client) { // Read the first line of HTTP request @@ -41,7 +45,7 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { int addr_start = req.indexOf(' '); int addr_end = req.indexOf(' ', addr_start + 1); if (addr_start == -1 || addr_end == -1) { -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("Invalid request: "); DEBUG_OUTPUT.println(req); #endif @@ -72,7 +76,7 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { } _currentMethod = method; -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("method: "); DEBUG_OUTPUT.print(methodStr); DEBUG_OUTPUT.print(" url: "); @@ -111,7 +115,7 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { headerValue.trim(); _collectHeader(headerName.c_str(),headerValue.c_str()); - #ifdef DEBUG + #ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("headerName: "); DEBUG_OUTPUT.println(headerName); DEBUG_OUTPUT.print("headerValue: "); @@ -142,7 +146,7 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { char *plainBuf = (char*)malloc(plainLen+1); client.readBytes(plainBuf, plainLen); plainBuf[plainLen] = '\0'; -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("Plain: "); DEBUG_OUTPUT.println(plainBuf); #endif @@ -177,7 +181,7 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { headerValue = req.substring(headerDiv + 2); _collectHeader(headerName.c_str(),headerValue.c_str()); - #ifdef DEBUG + #ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("headerName: "); DEBUG_OUTPUT.println(headerName); DEBUG_OUTPUT.print("headerValue: "); @@ -192,7 +196,7 @@ bool ESP8266WebServer::_parseRequest(WiFiClient& client) { } client.flush(); -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("Request: "); DEBUG_OUTPUT.println(url); DEBUG_OUTPUT.print(" Arguments: "); @@ -213,7 +217,7 @@ bool ESP8266WebServer::_collectHeader(const char* headerName, const char* header } void ESP8266WebServer::_parseArguments(String data) { -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("args: "); DEBUG_OUTPUT.println(data); #endif @@ -233,7 +237,7 @@ void ESP8266WebServer::_parseArguments(String data) { ++i; ++_currentArgCount; } -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("args count: "); DEBUG_OUTPUT.println(_currentArgCount); #endif @@ -244,7 +248,7 @@ void ESP8266WebServer::_parseArguments(String data) { for (iarg = 0; iarg < _currentArgCount;) { int equal_sign_index = data.indexOf('=', pos); int next_arg_index = data.indexOf('&', pos); -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("pos "); DEBUG_OUTPUT.print(pos); DEBUG_OUTPUT.print("=@ "); @@ -253,7 +257,7 @@ void ESP8266WebServer::_parseArguments(String data) { DEBUG_OUTPUT.println(next_arg_index); #endif if ((equal_sign_index == -1) || ((equal_sign_index > next_arg_index) && (next_arg_index != -1))) { -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("arg missing value: "); DEBUG_OUTPUT.println(iarg); #endif @@ -265,7 +269,7 @@ void ESP8266WebServer::_parseArguments(String data) { RequestArgument& arg = _currentArgs[iarg]; arg.key = data.substring(pos, equal_sign_index); arg.value = urlDecode(data.substring(equal_sign_index + 1, next_arg_index)); -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("arg "); DEBUG_OUTPUT.print(iarg); DEBUG_OUTPUT.print(" key: "); @@ -279,7 +283,7 @@ void ESP8266WebServer::_parseArguments(String data) { pos = next_arg_index + 1; } _currentArgCount = iarg; -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("args count: "); DEBUG_OUTPUT.println(_currentArgCount); #endif @@ -308,7 +312,7 @@ uint8_t ESP8266WebServer::_uploadReadByte(WiFiClient& client){ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t len){ -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("Parse Form: Boundary: "); DEBUG_OUTPUT.print(boundary); DEBUG_OUTPUT.print(" Length: "); @@ -346,14 +350,14 @@ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t argFilename = argName.substring(nameStart+2, argName.length() - 1); argName = argName.substring(0, argName.indexOf('"')); argIsFile = true; -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("PostArg FileName: "); DEBUG_OUTPUT.println(argFilename); #endif //use GET to set the filename if uploading using blob if (argFilename == "blob" && hasArg("filename")) argFilename = arg("filename"); } -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("PostArg Name: "); DEBUG_OUTPUT.println(argName); #endif @@ -366,7 +370,7 @@ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t client.readStringUntil('\r'); client.readStringUntil('\n'); } -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("PostArg Type: "); DEBUG_OUTPUT.println(argType); #endif @@ -378,7 +382,7 @@ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t if (argValue.length() > 0) argValue += "\n"; argValue += line; } -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("PostArg Value: "); DEBUG_OUTPUT.println(argValue); DEBUG_OUTPUT.println(); @@ -389,7 +393,7 @@ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t arg.value = argValue; if (line == ("--"+boundary+"--")){ -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.println("Done Parsing POST"); #endif break; @@ -401,7 +405,7 @@ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t _currentUpload.type = argType; _currentUpload.totalSize = 0; _currentUpload.currentSize = 0; -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("Start File: "); DEBUG_OUTPUT.print(_currentUpload.filename); DEBUG_OUTPUT.print(" Type: "); @@ -450,7 +454,7 @@ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t _currentUpload.status = UPLOAD_FILE_END; if(_currentHandler && _currentHandler->canUpload(_currentUri)) _currentHandler->upload(*this, _currentUri, _currentUpload); -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("End File: "); DEBUG_OUTPUT.print(_currentUpload.filename); DEBUG_OUTPUT.print(" Type: "); @@ -461,7 +465,7 @@ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t line = client.readStringUntil(0x0D); client.readStringUntil(0x0A); if (line == "--"){ -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.println("Done Parsing POST"); #endif break; @@ -507,7 +511,7 @@ bool ESP8266WebServer::_parseForm(WiFiClient& client, String boundary, uint32_t if (postArgs) delete[] postArgs; return true; } -#ifdef DEBUG +#ifdef DEBUG_ESP_HTTP_SERVER DEBUG_OUTPUT.print("Error: line: "); DEBUG_OUTPUT.println(line); #endif diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp index 484a23fc06..1c6b3bb370 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -41,7 +41,9 @@ extern "C" #include "include/ClientContext.h" #include "c_types.h" -//#define DEBUG_SSL +#ifdef DEBUG_ESP_SSL +#define DEBUG_SSL +#endif #ifdef DEBUG_SSL #define SSL_DEBUG_OPTS SSL_DISPLAY_STATES diff --git a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.h b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.h index ddfefb44bc..81f03385f6 100644 --- a/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.h +++ b/libraries/ESP8266httpUpdate/src/ESP8266httpUpdate.h @@ -32,7 +32,11 @@ #include #include -//#define DEBUG_HTTP_UPDATE(...) Serial1.printf( __VA_ARGS__ ) +#ifdef DEBUG_ESP_HTTP_UPDATE +#ifdef DEBUG_ESP_PORT +#define DEBUG_HTTP_UPDATE(...) DEBUG_ESP_PORT.printf( __VA_ARGS__ ) +#endif +#endif #ifndef DEBUG_HTTP_UPDATE #define DEBUG_HTTP_UPDATE(...) diff --git a/platform.txt b/platform.txt index efeb816e97..52c5eac5e7 100644 --- a/platform.txt +++ b/platform.txt @@ -61,13 +61,13 @@ compiler.objcopy.eep.extra_flags= compiler.elf2hex.extra_flags= ## Compile c files -recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -DF_CPU={build.f_cpu} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" ## Compile c++ files -recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -DF_CPU={build.f_cpu} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" ## Compile S files -recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" +recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -DF_CPU={build.f_cpu} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" ## Create archives recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/arduino.ar" "{object_file}"