feat: Support Arduino Nano 33 IoT, MKR WIFI 1010 (#898)

This commit is contained in:
Aruna Tennakoon
2024-08-11 14:09:47 +07:00
committed by GitHub
parent dc6fd04a98
commit dcfb0df665
11 changed files with 257 additions and 9 deletions

View File

@@ -99,6 +99,12 @@
#define WEBSOCKETS_YIELD() yield()
#define WEBSOCKETS_YIELD_MORE() delay(1)
#elif defined(ARDUINO_SAMD_MKRWIFI1010) || defined(ARDUINO_SAMD_NANO_33_IOT)
#define WEBSOCKETS_MAX_DATA_SIZE (15 * 1024)
#define WEBSOCKETS_YIELD() yield()
#define WEBSOCKETS_YIELD_MORE() delay(1)
#else
// atmega328p has only 2KB ram!
@@ -121,6 +127,8 @@
#define NETWORK_ESP32_ETH (5)
#define NETWORK_RP2040 (6)
#define NETWORK_UNOWIFIR4 (7)
#define NETWORK_WIFI_NINA (8)
// max size of the WS Message Header
#define WEBSOCKETS_MAX_HEADER_SIZE (14)
@@ -142,6 +150,9 @@
#elif defined(ARDUINO_UNOWIFIR4)
#define WEBSOCKETS_NETWORK_TYPE NETWORK_UNOWIFIR4
#elif defined(ARDUINO_SAMD_MKRWIFI1010) || defined(ARDUINO_SAMD_NANO_33_IOT)
#define WEBSOCKETS_NETWORK_TYPE NETWORK_WIFI_NINA
#else
#define WEBSOCKETS_NETWORK_TYPE NETWORK_W5100
@@ -241,6 +252,18 @@
#define WEBSOCKETS_NETWORK_CLASS WiFiClient
#define WEBSOCKETS_NETWORK_SERVER_CLASS WiFiServer
#define WEBSOCKETS_NETWORK_CLASS WiFiClient
#define WEBSOCKETS_NETWORK_SERVER_CLASS WiFiServer
#elif(WEBSOCKETS_NETWORK_TYPE == NETWORK_WIFI_NINA)
#if __has_include(<WiFiNINA.h>)
#include <WiFiNINA.h>
#else
#error "Please install WiFiNINA library!"
#endif
#define WEBSOCKETS_NETWORK_CLASS WiFiClient
#define WEBSOCKETS_NETWORK_SERVER_CLASS WiFiServer
#else
#error "no network type selected!"
#endif

View File

@@ -534,7 +534,11 @@ void WebSocketsClient::clientDisconnect(WSclient_t * client) {
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC)
client->status = WSC_NOT_CONNECTED;
#else
delete client->tcp;
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_WIFI_NINA)
// does not support delete (no destructor)
#else
delete client->tcp;
#endif
#endif
client->tcp = NULL;
}

View File

@@ -65,7 +65,11 @@ WebSocketsServerCore::~WebSocketsServerCore() {
}
WebSocketsServer::~WebSocketsServer() {
delete _server;
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_WIFI_NINA)
// does not support delete (no destructor)
#else
delete _server;
#endif
}
/**
@@ -539,6 +543,8 @@ void WebSocketsServerCore::dropNativeClient(WSclient_t * client) {
}
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC)
client->status = WSC_NOT_CONNECTED;
#elif(WEBSOCKETS_NETWORK_TYPE == NETWORK_WIFI_NINA)
// does not support delete (no destructor)
#else
delete client->tcp;
#endif
@@ -655,7 +661,12 @@ void WebSocketsServer::handleNewClients(void) {
#endif
// store new connection
WEBSOCKETS_NETWORK_CLASS * tcpClient = new WEBSOCKETS_NETWORK_CLASS(_server->accept());
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_WIFI_NINA)
WEBSOCKETS_NETWORK_CLASS * tcpClient = new WEBSOCKETS_NETWORK_CLASS(_server->available());
#else
WEBSOCKETS_NETWORK_CLASS * tcpClient = new WEBSOCKETS_NETWORK_CLASS(_server->accept());
#endif
if(!tcpClient) {
DEBUG_WEBSOCKETS("[WS-Client] creating Network class failed!");
return;

View File

@@ -25,12 +25,12 @@
#ifndef WEBSOCKETSVERSION_H_
#define WEBSOCKETSVERSION_H_
#define WEBSOCKETS_VERSION "2.5.2"
#define WEBSOCKETS_VERSION "2.5.3"
#define WEBSOCKETS_VERSION_MAJOR 2
#define WEBSOCKETS_VERSION_MINOR 5
#define WEBSOCKETS_VERSION_PATCH 2
#define WEBSOCKETS_VERSION_PATCH 3
#define WEBSOCKETS_VERSION_INT 2005002
#define WEBSOCKETS_VERSION_INT 2005003
#endif /* WEBSOCKETSVERSION_H_ */