mirror of
https://github.com/Links2004/arduinoWebSockets.git
synced 2025-07-17 01:02:05 +02:00
added esp32 support
This commit is contained in:
@ -52,6 +52,8 @@ WebSocketsServer::~WebSocketsServer() {
|
|||||||
|
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
||||||
_server->close();
|
_server->close();
|
||||||
|
#elif (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
|
_server->end();
|
||||||
#else
|
#else
|
||||||
// TODO how to close server?
|
// TODO how to close server?
|
||||||
#endif
|
#endif
|
||||||
@ -75,7 +77,7 @@ void WebSocketsServer::begin(void) {
|
|||||||
client->num = i;
|
client->num = i;
|
||||||
client->status = WSC_NOT_CONNECTED;
|
client->status = WSC_NOT_CONNECTED;
|
||||||
client->tcp = NULL;
|
client->tcp = NULL;
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
client->isSSL = false;
|
client->isSSL = false;
|
||||||
client->ssl = NULL;
|
client->ssl = NULL;
|
||||||
#endif
|
#endif
|
||||||
@ -98,6 +100,9 @@ void WebSocketsServer::begin(void) {
|
|||||||
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
randomSeed(RANDOM_REG32);
|
randomSeed(RANDOM_REG32);
|
||||||
|
#elif defined(ESP32)
|
||||||
|
#define DR_REG_RNG_BASE 0x3ff75144
|
||||||
|
randomSeed(READ_PERI_REG(DR_REG_RNG_BASE));
|
||||||
#else
|
#else
|
||||||
// TODO find better seed
|
// TODO find better seed
|
||||||
randomSeed(millis());
|
randomSeed(millis());
|
||||||
@ -386,7 +391,7 @@ void WebSocketsServer::setAuthorization(const char * auth) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
/**
|
/**
|
||||||
* get an IP for a client
|
* get an IP for a client
|
||||||
* @param num uint8_t client id
|
* @param num uint8_t client id
|
||||||
@ -423,7 +428,7 @@ bool WebSocketsServer::newClient(WEBSOCKETS_NETWORK_CLASS * TCPclient) {
|
|||||||
|
|
||||||
client->tcp = TCPclient;
|
client->tcp = TCPclient;
|
||||||
|
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
client->isSSL = false;
|
client->isSSL = false;
|
||||||
client->tcp->setNoDelay(true);
|
client->tcp->setNoDelay(true);
|
||||||
#endif
|
#endif
|
||||||
@ -432,7 +437,7 @@ bool WebSocketsServer::newClient(WEBSOCKETS_NETWORK_CLASS * TCPclient) {
|
|||||||
client->tcp->setTimeout(WEBSOCKETS_TCP_TIMEOUT);
|
client->tcp->setTimeout(WEBSOCKETS_TCP_TIMEOUT);
|
||||||
#endif
|
#endif
|
||||||
client->status = WSC_HEADER;
|
client->status = WSC_HEADER;
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
IPAddress ip = client->tcp->remoteIP();
|
IPAddress ip = client->tcp->remoteIP();
|
||||||
DEBUG_WEBSOCKETS("[WS-Server][%d] new client from %d.%d.%d.%d\n", client->num, ip[0], ip[1], ip[2], ip[3]);
|
DEBUG_WEBSOCKETS("[WS-Server][%d] new client from %d.%d.%d.%d\n", client->num, ip[0], ip[1], ip[2], ip[3]);
|
||||||
#else
|
#else
|
||||||
@ -496,7 +501,7 @@ void WebSocketsServer::messageReceived(WSclient_t * client, WSopcode_t opcode, u
|
|||||||
void WebSocketsServer::clientDisconnect(WSclient_t * client) {
|
void WebSocketsServer::clientDisconnect(WSclient_t * client) {
|
||||||
|
|
||||||
|
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
if(client->isSSL && client->ssl) {
|
if(client->isSSL && client->ssl) {
|
||||||
if(client->ssl->connected()) {
|
if(client->ssl->connected()) {
|
||||||
client->ssl->flush();
|
client->ssl->flush();
|
||||||
@ -584,10 +589,12 @@ void WebSocketsServer::handleNewClients(void) {
|
|||||||
|
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
||||||
while(_server->hasClient()) {
|
while(_server->hasClient()) {
|
||||||
|
#elif (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
|
while(_server->available()) {
|
||||||
#endif
|
#endif
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
|
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
// store new connection
|
// store new connection
|
||||||
WEBSOCKETS_NETWORK_CLASS * tcpClient = new WEBSOCKETS_NETWORK_CLASS(_server->available());
|
WEBSOCKETS_NETWORK_CLASS * tcpClient = new WEBSOCKETS_NETWORK_CLASS(_server->available());
|
||||||
#else
|
#else
|
||||||
@ -603,7 +610,7 @@ void WebSocketsServer::handleNewClients(void) {
|
|||||||
|
|
||||||
if(!ok) {
|
if(!ok) {
|
||||||
// no free space to handle client
|
// no free space to handle client
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
IPAddress ip = tcpClient->remoteIP();
|
IPAddress ip = tcpClient->remoteIP();
|
||||||
DEBUG_WEBSOCKETS("[WS-Server] no free space new client from %d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);
|
DEBUG_WEBSOCKETS("[WS-Server] no free space new client from %d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);
|
||||||
#else
|
#else
|
||||||
@ -612,11 +619,10 @@ void WebSocketsServer::handleNewClients(void) {
|
|||||||
tcpClient->stop();
|
tcpClient->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
|
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)
|
||||||
delay(0);
|
delay(0);
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user