From b0b8203fec39ec921808438d7716c5b13e2557ad Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Tue, 21 Dec 2021 19:01:43 +0100 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B8=D0=B7?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/extensions.json | 7 + .../{CircularBuffer.h => TCircularBuffer.h} | 9 +- include/WebSocket.h | 2 +- src/Class/CircularBuffer.cpp | 3 - src/Class/TCircularBuffer.cpp | 4 + src/Tests.cpp | 29 ++- src/WebServer.cpp | 2 +- src/WebSocket.cpp | 198 +++++++++--------- src/main.cpp | 2 + 9 files changed, 137 insertions(+), 119 deletions(-) create mode 100644 .vscode/extensions.json rename include/Class/{CircularBuffer.h => TCircularBuffer.h} (91%) delete mode 100644 src/Class/CircularBuffer.cpp create mode 100644 src/Class/TCircularBuffer.cpp diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..e80666bf --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ] +} diff --git a/include/Class/CircularBuffer.h b/include/Class/TCircularBuffer.h similarity index 91% rename from include/Class/CircularBuffer.h rename to include/Class/TCircularBuffer.h index d44bb300..33cdb81a 100644 --- a/include/Class/CircularBuffer.h +++ b/include/Class/TCircularBuffer.h @@ -4,11 +4,11 @@ template -class CircularBuffer { +class TCircularBuffer { public: - CircularBuffer() : _head{0}, _tail{0}, _full{false} {} + TCircularBuffer() : _head{0}, _tail{0}, _full{false} {} - ~CircularBuffer() {} + ~TCircularBuffer() {} void reset() { _head = _tail = _full = 0; @@ -103,4 +103,5 @@ class CircularBuffer { bool _full; }; -extern CircularBuffer *myWsBuffer; +extern TCircularBuffer *myTCircularBuffer; +extern TCircularBuffer *myWsBuffer; diff --git a/include/WebSocket.h b/include/WebSocket.h index f022f2ce..34da91ed 100644 --- a/include/WebSocket.h +++ b/include/WebSocket.h @@ -1,5 +1,5 @@ #pragma once -#include "Class/CircularBuffer.h" +#include "Class/TCircularBuffer.h" #include "Global.h" void wsInit(); void wsSendSetup(); diff --git a/src/Class/CircularBuffer.cpp b/src/Class/CircularBuffer.cpp deleted file mode 100644 index a972ac39..00000000 --- a/src/Class/CircularBuffer.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include "Class/CircularBuffer.h" - -CircularBuffer *myWsBuffer; \ No newline at end of file diff --git a/src/Class/TCircularBuffer.cpp b/src/Class/TCircularBuffer.cpp new file mode 100644 index 00000000..51932714 --- /dev/null +++ b/src/Class/TCircularBuffer.cpp @@ -0,0 +1,4 @@ +#include "Class/TCircularBuffer.h" + +TCircularBuffer *myTCircularBuffer; +TCircularBuffer *myWsBuffer; diff --git a/src/Tests.cpp b/src/Tests.cpp index 191d062b..95264086 100644 --- a/src/Tests.cpp +++ b/src/Tests.cpp @@ -1,7 +1,7 @@ #include "Tests.h" #include "BufferExecute.h" -#include "Class/CircularBuffer.h" +#include "Class/TCircularBuffer.h" #include "Global.h" #include "ItemsList.h" #include "Macro.h" @@ -11,20 +11,19 @@ void testsPerform() { Serial.println("====some tests section===="); //ТЕСТ КОЛЬЦЕВОГО БУФЕРА============================================================================= - // CircularBuffer* myCircularBuffer; - // myCircularBuffer = new CircularBuffer; - // - // char* buf = "text"; - // - // for (int i = 1; i <= 5; i++) { - // myCircularBuffer->push(buf); - //} - // - // char* item; - // - // while (myCircularBuffer->pop(item)) { - // Serial.println(item); - //} + myTCircularBuffer = new TCircularBuffer; + + char* buf = "text"; + + for (int i = 1; i <= 5; i++) { + myTCircularBuffer->push(buf); + } + + char* item; + + while (myTCircularBuffer->pop(item)) { + Serial.println(item); + } //=================================================================================================== // String str = "0;1;2;3;4"; // char* mychar = new char[str.length() + 1]; diff --git a/src/WebServer.cpp b/src/WebServer.cpp index 10747b44..0263892d 100644 --- a/src/WebServer.cpp +++ b/src/WebServer.cpp @@ -11,7 +11,7 @@ AsyncWebSocket ws("/ws"); AsyncEventSource events("/events"); void HttpServerinit() { - wsInit(); + String login = jsonReadStr(configSetupJson, "weblogin"); String pass = jsonReadStr(configSetupJson, "webpass"); #ifdef ESP32 diff --git a/src/WebSocket.cpp b/src/WebSocket.cpp index f94b03ca..70bb8480 100644 --- a/src/WebSocket.cpp +++ b/src/WebSocket.cpp @@ -1,11 +1,12 @@ #include "WebSocket.h" #include "ArduinoJson.h" -#include "Class/CircularBuffer.h" #include "Class/NotAsync.h" +#include "Class/TCircularBuffer.h" #include "Global.h" void wsInit() { + myWsBuffer = new TCircularBuffer; // myNotAsyncActions->add( // do_webSocketSendSetup, [&](void*) { // delay(100); @@ -24,104 +25,111 @@ void wsPublishData(String topic, String data) { } //отправка setup массива в sockets способом через буфер string, рабочий способ но буфер стринг - плохой метод -void wsSendSetup() { - File file = seekFile("/setup.json"); - DynamicJsonDocument doc(2048); - int i = 0; - file.find("["); - SerialPrint("I", F("WS"), F("start send config")); - do { - i++; - deserializeJson(doc, file); - wsBuf += doc.as() + "\n"; - } while (file.findUntil(",", "]")); - SerialPrint("I", F("WS"), F("completed send config")); -} +// void wsSendSetup3() { +// File file = seekFile("/setup.json"); +// DynamicJsonDocument doc(2048); +// int i = 0; +// file.find("["); +// SerialPrint("I", F("WS"), F("start send config")); +// do { +// i++; +// deserializeJson(doc, file); +// wsBuf += doc.as() + "\n"; +// } while (file.findUntil(",", "]")); +// SerialPrint("I", F("WS"), F("completed send config")); +//} -void loopWsExecute() { - static int attampts = wsAttempts; - if (wsBuf.length()) { - if (attampts > 0) { - if (ws.availableForWriteAll()) { - String tmp = selectToMarker(wsBuf, "\n"); - wsPublishData("config", tmp); - wsBuf = deleteBeforeDelimiter(wsBuf, "\n"); - attampts = wsAttempts; - } else { - attampts--; - SerialPrint("I", F("WS"), String(attampts)); - } - } else { - SerialPrint("I", F("WS"), F("socket fatal error")); - attampts = wsAttempts; - } - } -} +// void loopWsExecute3() { +// static int attampts = wsAttempts; +// if (wsBuf.length()) { +// if (attampts > 0) { +// if (ws.availableForWriteAll()) { +// String tmp = selectToMarker(wsBuf, "\n"); +// wsPublishData("config", tmp); +// wsBuf = deleteBeforeDelimiter(wsBuf, "\n"); +// attampts = wsAttempts; +// } else { +// attampts--; +// SerialPrint("I", F("WS"), String(attampts)); +// } +// } else { +// SerialPrint("I", F("WS"), F("socket fatal error")); +// attampts = wsAttempts; +// } +// } +// } -//отправка setup массива в sockets способом через кольщевой буфер char -void wsSendSetup2() { - // myWsBuffer = new CircularBuffer; - // File file = seekFile("/setup.json"); - // DynamicJsonDocument doc(2048); - // int i = 0; - // file.find("["); - // SerialPrint("I", F("WS"), F("start send config")); - // do { - // i++; - // deserializeJson(doc, file); - // char* element = ""; - // serializeJson(doc, (char*)element, 1024); - // Serial.println(element); - // myWsBuffer->push(element); - // - //} while (file.findUntil(",", "]")); - // SerialPrint("I", F("WS"), F("completed send config")); -} +//отправка setup массива в sockets способом через кольцевой буфер char +// void wsSendSetup() { +// File file = seekFile("/setup.json"); +// DynamicJsonDocument doc(2048); +// int i = 0; +// file.find("["); +// SerialPrint("I", F("WS"), F("start send config")); +// do { +// i++; +// deserializeJson(doc, file); +// char* element; +// char* element = new char[1024]; +// serializeJson(doc, (char*)element, 1024); +// Serial.println(element); +// +// } while (file.findUntil(",", "]")); +// SerialPrint("I", F("WS"), F("completed send config")); +// +// char* itemsend = "element"; +// myWsBuffer->push(itemsend); +// +// char* item; +// while (myWsBuffer->pop(item)) { +// Serial.println(item); +// } +//} -void loopWsExecute2() { - // char* item; - // if (myWsBuffer->pop(item)) { - // Serial.println(item); - // } -} +// void loopWsExecute() { +// char* item; +// if (myWsBuffer->pop(item)) { +// Serial.println(item); +// } +// } //отправка setup массива в sockets способом прямой загрузки в ws buffer -void wsSendSetupBuffer() { - File file = seekFile("/setup.json"); - DynamicJsonDocument doc(2048); - int i = 0; - file.find("["); - SerialPrint("I", F("WS"), F("start send config")); - do { - i++; - deserializeJson(doc, file); - size_t len = measureJson(doc); - AsyncWebSocketMessageBuffer* buffer = ws.makeBuffer(len); - if (buffer) { - serializeJson(doc, (char*)buffer->get(), len); - if (ws.enabled()) { - if (ws.availableForWriteAll()) { - ws.textAll(buffer); - } - } - } - // Serial.println(doc.as()); - } while (file.findUntil(",", "]")); - SerialPrint("I", F("WS"), F("completed send config")); -} +// void wsSendSetupBuffer() { +// File file = seekFile("/setup.json"); +// DynamicJsonDocument doc(2048); +// int i = 0; +// file.find("["); +// SerialPrint("I", F("WS"), F("start send config")); +// do { +// i++; +// deserializeJson(doc, file); +// size_t len = measureJson(doc); +// AsyncWebSocketMessageBuffer* buffer = ws.makeBuffer(len); +// if (buffer) { +// serializeJson(doc, (char*)buffer->get(), len); +// if (ws.enabled()) { +// if (ws.availableForWriteAll()) { +// ws.textAll(buffer); +// } +// } +// } +// // Serial.println(doc.as()); +// } while (file.findUntil(",", "]")); +// SerialPrint("I", F("WS"), F("completed send config")); +//} //Пример прямого доступа к web socket buffer переделанный для arduino json 6 -void sendDataWs() { - DynamicJsonDocument doc(1024); - doc["a"] = "abc"; - doc["b"] = "abcd"; - doc["c"] = "abcde"; - doc["d"] = "abcdef"; - doc["e"] = "abcdefg"; - size_t len = measureJson(doc); - AsyncWebSocketMessageBuffer* buffer = ws.makeBuffer(len); - if (buffer) { - serializeJson(doc, (char*)buffer->get(), len); - ws.textAll(buffer); - } -} +// void sendDataWs() { +// DynamicJsonDocument doc(1024); +// doc["a"] = "abc"; +// doc["b"] = "abcd"; +// doc["c"] = "abcde"; +// doc["d"] = "abcdef"; +// doc["e"] = "abcdefg"; +// size_t len = measureJson(doc); +// AsyncWebSocketMessageBuffer* buffer = ws.makeBuffer(len); +// if (buffer) { +// serializeJson(doc, (char*)buffer->get(), len); +// ws.textAll(buffer); +// } +//} diff --git a/src/main.cpp b/src/main.cpp index ae88d4fc..b9652bfe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -53,6 +53,8 @@ void setup() { myNotAsyncActions = new NotAsync(do_LAST); myScenario = new Scenario(); + wsInit(); + //=========================================initialisation============================================================== setChipId(); fileSystemInit();