Fix include directives to make ArduinoJson optional and fix CI

This commit is contained in:
Mathieu Carbou
2024-09-29 23:16:18 +02:00
parent 6a247c1967
commit 3bd4eb82a4
7 changed files with 109 additions and 57 deletions

View File

@@ -106,6 +106,9 @@ jobs:
- env: ci-arduino-3 - env: ci-arduino-3
board: esp32-h2-devkitm-1 board: esp32-h2-devkitm-1
- env: ci-arduino-3-no-json
board: esp32dev
- env: ci-arduino-310rc1 - env: ci-arduino-310rc1
board: esp32dev board: esp32dev
- env: ci-arduino-310rc1 - env: ci-arduino-310rc1

View File

@@ -19,9 +19,12 @@
#include <ESPAsyncWebServer.h> #include <ESPAsyncWebServer.h>
#if ASYNC_JSON_SUPPORT == 1
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include <AsyncJson.h> #include <AsyncJson.h>
#include <AsyncMessagePack.h> #include <AsyncMessagePack.h>
#endif
#include <LittleFS.h> #include <LittleFS.h>
AsyncWebServer server(80); AsyncWebServer server(80);
@@ -103,8 +106,10 @@ void notFound(AsyncWebServerRequest* request) {
request->send(404, "text/plain", "Not found"); request->send(404, "text/plain", "Not found");
} }
#if ASYNC_JSON_SUPPORT == 1
AsyncCallbackJsonWebHandler* jsonHandler = new AsyncCallbackJsonWebHandler("/json2"); AsyncCallbackJsonWebHandler* jsonHandler = new AsyncCallbackJsonWebHandler("/json2");
AsyncCallbackMessagePackWebHandler* msgPackHandler = new AsyncCallbackMessagePackWebHandler("/msgpack2"); AsyncCallbackMessagePackWebHandler* msgPackHandler = new AsyncCallbackMessagePackWebHandler("/msgpack2");
#endif
void setup() { void setup() {
@@ -293,6 +298,7 @@ void setup() {
request->send(200, "text/plain", "Hello, POST: " + message); request->send(200, "text/plain", "Hello, POST: " + message);
}); });
#if ASYNC_JSON_SUPPORT == 1
// JSON // JSON
// receives JSON and sends JSON // receives JSON and sends JSON
@@ -338,6 +344,7 @@ void setup() {
response->setLength(); response->setLength();
request->send(response); request->send(response);
}); });
#endif
events.onConnect([](AsyncEventSourceClient* client) { events.onConnect([](AsyncEventSourceClient* client) {
if (client->lastId()) { if (client->lastId()) {
@@ -376,8 +383,11 @@ void setup() {
server.addHandler(&events); server.addHandler(&events);
server.addHandler(&ws); server.addHandler(&ws);
#if ASYNC_JSON_SUPPORT == 1
server.addHandler(jsonHandler); server.addHandler(jsonHandler);
server.addHandler(msgPackHandler); server.addHandler(msgPackHandler);
#endif
server.onNotFound(notFound); server.onNotFound(notFound);

View File

@@ -36,6 +36,13 @@ platform = https://github.com/pioarduino/platform-espressif32/releases/download/
; board = esp32-s3-devkitc-1 ; board = esp32-s3-devkitc-1
; board = esp32-c6-devkitc-1 ; board = esp32-c6-devkitc-1
[env:arduino-3-no-json]
platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip
; board = esp32-s3-devkitc-1
; board = esp32-c6-devkitc-1
lib_deps =
mathieucarbou/AsyncTCP @ 3.2.5
[env:arduino-310rc1] [env:arduino-310rc1]
platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.10-rc1/platform-espressif32.zip platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.10-rc1/platform-espressif32.zip
; board = esp32-s3-devkitc-1 ; board = esp32-s3-devkitc-1
@@ -74,6 +81,12 @@ board = ${sysenv.PIO_BOARD}
platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip
board = ${sysenv.PIO_BOARD} board = ${sysenv.PIO_BOARD}
[env:ci-arduino-3-no-json]
platform = https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip
board = ${sysenv.PIO_BOARD}
lib_deps =
mathieucarbou/AsyncTCP @ 3.2.5
[env:ci-arduino-310rc1] [env:ci-arduino-310rc1]
platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.10-rc1/platform-espressif32.zip platform = https://github.com/pioarduino/platform-espressif32/releases/download/53.03.10-rc1/platform-espressif32.zip
board = ${sysenv.PIO_BOARD} board = ${sysenv.PIO_BOARD}

View File

@@ -1,5 +1,7 @@
#include "AsyncJson.h" #include "AsyncJson.h"
#if ASYNC_JSON_SUPPORT == 1
#if ARDUINOJSON_VERSION_MAJOR == 5 #if ARDUINOJSON_VERSION_MAJOR == 5
AsyncJsonResponse::AsyncJsonResponse(bool isArray) : _isValid{false} { AsyncJsonResponse::AsyncJsonResponse(bool isArray) : _isValid{false} {
_code = 200; _code = 200;
@@ -149,3 +151,5 @@ void AsyncCallbackJsonWebHandler::handleBody(AsyncWebServerRequest* request, uin
} }
} }
} }
#endif // ASYNC_JSON_SUPPORT

View File

@@ -34,6 +34,11 @@
*/ */
#ifndef ASYNC_JSON_H_ #ifndef ASYNC_JSON_H_
#define ASYNC_JSON_H_ #define ASYNC_JSON_H_
#if __has_include("ArduinoJson.h")
#define ASYNC_JSON_SUPPORT 1
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include <ESPAsyncWebServer.h> #include <ESPAsyncWebServer.h>
@@ -121,4 +126,9 @@ class AsyncCallbackJsonWebHandler : public AsyncWebHandler {
virtual void handleBody(AsyncWebServerRequest* request, uint8_t* data, size_t len, size_t index, size_t total) override final; virtual void handleBody(AsyncWebServerRequest* request, uint8_t* data, size_t len, size_t index, size_t total) override final;
virtual bool isRequestHandlerTrivial() override final { return !_onRequest; } virtual bool isRequestHandlerTrivial() override final { return !_onRequest; }
}; };
#else // __has_include("ArduinoJson.h")
#define ASYNC_JSON_SUPPORT 0
#endif // __has_include("ArduinoJson.h")
#endif #endif

View File

@@ -1,5 +1,7 @@
#include "AsyncMessagePack.h" #include "AsyncMessagePack.h"
#if ASYNC_MSG_PACK_SUPPORT == 1
AsyncMessagePackResponse::AsyncMessagePackResponse(bool isArray) : _isValid{false} { AsyncMessagePackResponse::AsyncMessagePackResponse(bool isArray) : _isValid{false} {
_code = 200; _code = 200;
_contentType = asyncsrv::T_application_msgpack; _contentType = asyncsrv::T_application_msgpack;
@@ -77,3 +79,5 @@ void AsyncCallbackMessagePackWebHandler::handleBody(AsyncWebServerRequest* reque
} }
} }
} }
#endif // ASYNC_MSG_PACK_SUPPORT

View File

@@ -21,6 +21,10 @@
server.addHandler(handler); server.addHandler(handler);
*/ */
#if __has_include("ArduinoJson.h")
#define ASYNC_MSG_PACK_SUPPORT 1
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include <ESPAsyncWebServer.h> #include <ESPAsyncWebServer.h>
@@ -65,3 +69,7 @@ class AsyncCallbackMessagePackWebHandler : public AsyncWebHandler {
virtual void handleBody(AsyncWebServerRequest* request, uint8_t* data, size_t len, size_t index, size_t total) override final; virtual void handleBody(AsyncWebServerRequest* request, uint8_t* data, size_t len, size_t index, size_t total) override final;
virtual bool isRequestHandlerTrivial() override final { return _onRequest ? false : true; } virtual bool isRequestHandlerTrivial() override final { return _onRequest ? false : true; }
}; };
#else // __has_include("ArduinoJson.h")
#define ASYNC_MSG_PACK_SUPPORT 0
#endif // __has_include("ArduinoJson.h")