From 7923d93336a40a31fb2028fcaa2216f975b1bacf Mon Sep 17 00:00:00 2001 From: Mathieu Carbou Date: Wed, 16 Oct 2024 11:52:34 +0200 Subject: [PATCH] Added test case --- examples/Issue85/Issue85.ino | 108 +++++++++++++++++++++++++++++++++++ platformio.ini | 3 +- 2 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 examples/Issue85/Issue85.ino diff --git a/examples/Issue85/Issue85.ino b/examples/Issue85/Issue85.ino new file mode 100644 index 0000000..3aac35f --- /dev/null +++ b/examples/Issue85/Issue85.ino @@ -0,0 +1,108 @@ +#include +#ifdef ESP8266 + #include +#endif +#ifdef ESP32 + #include +#endif +#include + +void connect_wifi() { + WiFi.mode(WIFI_AP); + WiFi.softAP("esp-captive"); + + // Serial.print("Connecting"); + // while (WiFi.status() != WL_CONNECTED) { + // delay(500); + // Serial.print("."); + // } + // Serial.println(); + + // Serial.print("Connected, IP address: "); + // Serial.println(WiFi.localIP()); +} + +void notFound(AsyncWebServerRequest* request) { + request->send(404, "text/plain", "Not found"); +} + +AsyncWebServer server(80); +AsyncWebSocket ws("/ws"); + +// initial stack +char* stack_start; + +void printStackSize() { + char stack; + Serial.print(F("stack size ")); + Serial.print(stack_start - &stack); + Serial.print(F(" | Heap free:")); + Serial.print(ESP.getFreeHeap()); +#ifdef ESP8266 + Serial.print(F(" frag:")); + Serial.print(ESP.getHeapFragmentation()); + Serial.print(F(" maxFreeBlock:")); + Serial.print(ESP.getMaxFreeBlockSize()); +#endif + Serial.println(); +} + +void onWsEventEmpty(AsyncWebSocket* server, AsyncWebSocketClient* client, AwsEventType type, void* arg, uint8_t* data, size_t len) { + printStackSize(); + // Just answer + client->text("PONGTEST"); +} + +void serve_upload(AsyncWebServerRequest* request, const String& filename, size_t index, uint8_t* data, size_t len, bool final) { + Serial.print("> onUpload "); + Serial.print("index: "); + Serial.print(index); + Serial.print(" len:"); + Serial.print(len); + Serial.print(" final:"); + Serial.print(final); + Serial.println(); +} + +void setup() { + char stack; + stack_start = &stack; + + Serial.begin(115200); + Serial.println("\n\n\nStart"); + Serial.printf("stack_start: %p\n", stack_start); + + connect_wifi(); + + server.onNotFound(notFound); + + ws.onEvent(onWsEventEmpty); + server.addHandler(&ws); + + server.on("/upload", HTTP_POST, [](AsyncWebServerRequest* request) { request->send(200); }, serve_upload); + + server.begin(); + Serial.println("Server started"); +} + +String msg = ""; +uint32_t count = 0; +void loop() { + + ws.cleanupClients(); + + count += 1; + + // Concatenate some string, and clear it after some time + static unsigned long millis_string = millis(); + if (millis() - millis_string > 1) { + millis_string += 100; + if (count % 100 == 0) { + // printStackSize(); + // Serial.print(msg); + msg = String(); + } else { + msg += 'T'; + } + } +} \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index 7a36c11..2fd60e7 100644 --- a/platformio.ini +++ b/platformio.ini @@ -2,9 +2,10 @@ default_envs = arduino-2, arduino-3, arduino-310rc1, esp8266, raspberrypi lib_dir = . ; src_dir = examples/CaptivePortal -src_dir = examples/SimpleServer +; src_dir = examples/SimpleServer ; src_dir = examples/StreamFiles ; src_dir = examples/Filters +src_dir = examples/Issue85 [env] framework = arduino