diff --git a/include/utils/SerialPrint.h b/include/utils/SerialPrint.h index ee3a2d82..73e6c787 100644 --- a/include/utils/SerialPrint.h +++ b/include/utils/SerialPrint.h @@ -3,4 +3,4 @@ #include "utils/TimeUtils.h" #include "classes/IoTItem.h" -void SerialPrint(String errorLevel, String module, String msg, String itemId = ""); \ No newline at end of file +void SerialPrint(const String& errorLevel, const String& module, const String& msg, const String& itemId = ""); \ No newline at end of file diff --git a/include/utils/StringUtils.h b/include/utils/StringUtils.h index 9f2f9d75..7f5b7f90 100644 --- a/include/utils/StringUtils.h +++ b/include/utils/StringUtils.h @@ -8,29 +8,29 @@ void hex2string(byte array[], unsigned int len, char buffer[]); int string2hex(const char* str, unsigned char* bytes); -uint8_t hexStringToUint8(String hex); +uint8_t hexStringToUint8(const String& hex); -uint16_t hexStringToUint16(String hex); +uint16_t hexStringToUint16(const String& hex); -String selectToMarkerLast(String str, String found); +String selectToMarkerLast(String str, const String& found); -String selectToMarker(String str, String found); +String selectToMarker(String str, const String& found); String extractInner(String str); -String deleteAfterDelimiter(String str, String found); +String deleteAfterDelimiter(String str, const String& found); -String deleteBeforeDelimiter(String str, String found); +String deleteBeforeDelimiter(String str, const String& found); -String deleteBeforeDelimiterTo(String str, String found); +String deleteBeforeDelimiterTo(String str, const String& found); -String deleteToMarkerLast(String str, String found); +String deleteToMarkerLast(String str, const String& found); -String selectFromMarkerToMarker(String str, String found, int number); +String selectFromMarkerToMarker(String str, const String& found, int number); size_t itemsCount2(String str, const String& separator); -char* stringToChar(String& str); +char* stringToChar(const String& str); //size_t itemsCount(String& str, const char* delim); @@ -42,4 +42,4 @@ String prettyBytes(size_t size); String uint64ToString(uint64_t input, uint8_t base = 10); -String cleanString(String str); +void cleanString(String& str); diff --git a/src/utils/SerialPrint.cpp b/src/utils/SerialPrint.cpp index 22e8b96c..3e32547a 100644 --- a/src/utils/SerialPrint.cpp +++ b/src/utils/SerialPrint.cpp @@ -1,23 +1,16 @@ #include "utils/SerialPrint.h" -void SerialPrint(String errorLevel, String module, String msg, String itemId) { +void SerialPrint(const String& errorLevel, const String& module, const String& msg, const String& itemId) { String tosend = prettyMillis(millis()); - tosend = tosend + " [" + errorLevel + "] [" + module + "] " + msg; + tosend += " ["; + tosend += errorLevel; + tosend += "] ["; + tosend += module; + tosend += "] "; + tosend += msg; Serial.println(tosend); - if (errorLevel == "E") { - msg = cleanString(msg); - // создаем событие об ошибке для возможной реакции в сценарии - if (itemId != "") { - IoTItems.push_back((IoTItem *)new externalVariable("{\"id\":\"" + itemId + "_onError\",\"val\":\"" + msg + "\",\"int\":1}")); - generateEvent(itemId + "_onError", "1"); - } else { - IoTItems.push_back((IoTItem *)new externalVariable("{\"id\":\"onError\",\"val\":\"" + module + " " + msg + "\",\"int\":1}")); - generateEvent("onError", "1"); - } - } - if (isNetworkActive()) { if (jsonReadInt(settingsFlashJson, F("log")) != 0) { // String pl = "/log|" + tosend; @@ -25,4 +18,18 @@ void SerialPrint(String errorLevel, String module, String msg, String itemId) { sendStringToWs("corelg", tosend, -1); } } + + if (errorLevel == "E") { + cleanString(tosend); + // создаем событие об ошибке для возможной реакции в сценарии + if (itemId != "") { + IoTItems.push_back((IoTItem *)new externalVariable("{\"id\":\"" + itemId + "_onError\",\"val\":\"" + tosend + "\",\"int\":1}")); + generateEvent(itemId + "_onError", "1"); + } else { + IoTItems.push_back((IoTItem *)new externalVariable("{\"id\":\"onError\",\"val\":\"" + module + " " + tosend + "\",\"int\":1}")); + generateEvent("onError", "1"); + } + } + + } \ No newline at end of file diff --git a/src/utils/StringUtils.cpp b/src/utils/StringUtils.cpp index eb869812..a2a425d4 100644 --- a/src/utils/StringUtils.cpp +++ b/src/utils/StringUtils.cpp @@ -8,12 +8,12 @@ void writeUint8tToString(uint8_t* payload, size_t length, size_t headerLenth, St } } -String selectToMarkerLast(String str, String found) { +String selectToMarkerLast(String str, const String& found) { int p = str.lastIndexOf(found); return str.substring(p + found.length()); } -String selectToMarker(String str, String found) { +String selectToMarker(String str, const String& found) { int p = str.indexOf(found); return str.substring(0, p); } @@ -24,32 +24,32 @@ String extractInner(String str) { return str.substring(p1 + 1, p2); } -String deleteAfterDelimiter(String str, String found) { +String deleteAfterDelimiter(String str, const String& found) { int p = str.indexOf(found); return str.substring(0, p); } -String deleteBeforeDelimiter(String str, String found) { +String deleteBeforeDelimiter(String str, const String& found) { int p = str.indexOf(found) + found.length(); return str.substring(p); } -String deleteBeforeDelimiterTo(String str, String found) { +String deleteBeforeDelimiterTo(String str, const String& found) { int p = str.indexOf(found); return str.substring(p); } -String deleteToMarkerLast(String str, String found) { +String deleteToMarkerLast(String str, const String& found) { int p = str.lastIndexOf(found); return str.substring(0, p); } -String selectToMarkerPlus(String str, String found, int plus) { +String selectToMarkerPlus(String str, const String& found, int plus) { int p = str.indexOf(found); return str.substring(0, p + plus); } -String selectFromMarkerToMarker(String str, String tofind, int number) { +String selectFromMarkerToMarker(String str, const String& tofind, int number) { if (str.indexOf(tofind) == -1) { return "not found"; } @@ -98,14 +98,14 @@ int string2hex(const char* str, unsigned char* bytes) { return i; } -uint8_t hexStringToUint8(String hex) { +uint8_t hexStringToUint8(const String& hex) { uint8_t tmp = strtol(hex.c_str(), NULL, 0); if (tmp >= 0x00 && tmp <= 0xFF) { return tmp; } } -uint16_t hexStringToUint16(String hex) { +uint16_t hexStringToUint16(const String& hex) { uint16_t tmp = strtol(hex.c_str(), NULL, 0); if (tmp >= 0x0000 && tmp <= 0xFFFF) { return tmp; @@ -141,7 +141,7 @@ size_t itemsCount2(String str, const String& separator) { // return cnt; // } -char* stringToChar(String& str) { +char* stringToChar(const String& str) { char* mychar = new char[str.length() + 1]; strcpy(mychar, str.c_str()); return mychar; @@ -199,11 +199,9 @@ String uint64ToString(uint64_t input, uint8_t base) { return result; } -String cleanString(String str) { - String clearStr = ""; - const String allowedChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя.!-+ "; +void cleanString(String& str) { + const String allowedChars = F("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя.!-+ "); for (size_t i = 0; i < str.length(); i++) { - if (allowedChars.indexOf(str.charAt(i)) != -1) clearStr += str.charAt(i); + if (allowedChars.indexOf(str.charAt(i)) == -1) str.setCharAt(i, ' '); } - return clearStr; } \ No newline at end of file