mirror of
https://github.com/luc-github/ESP3D.git
synced 2026-03-09 01:16:47 +01:00
Add WebSocket Subprotocol support per @terjeio suggestion Change ESP800 report to use FlashFileSystem instead of FileSystem per @terjeio suggestion for consistency Add Host Path support for files hosted in subdirectory (WIP) Add createPath flag for upload to create full path if does not exists Update embedded page to support new ESP800 flags Update WebSocket library to avoid warning Update Features.md Bump platformIO to 5.1.0 Bumb version to 204
110 lines
2.8 KiB
C++
110 lines
2.8 KiB
C++
/*
|
|
websocket_server.h - websocket functions class
|
|
|
|
Copyright (c) 2014 Luc Lebosse. All rights reserved.
|
|
|
|
This code is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2.1 of the License, or (at your option) any later version.
|
|
|
|
This code is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with This code; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
|
|
#ifndef _WEBSOCKET_SERVER_H_
|
|
#define _WEBSOCKET_SERVER_H_
|
|
|
|
#include "Print.h"
|
|
#define TXBUFFERSIZE 1200
|
|
#define RXBUFFERSIZE 256
|
|
#define FLUSHTIMEOUT 500
|
|
class WebSocketsServer;
|
|
class WebSocket_Server: public Print
|
|
{
|
|
public:
|
|
WebSocket_Server(const char* protocol="arduino");
|
|
~WebSocket_Server();
|
|
size_t write(uint8_t c);
|
|
size_t write(const uint8_t *buffer, size_t size);
|
|
|
|
inline size_t write(const char * s)
|
|
{
|
|
return write((uint8_t*) s, strlen(s));
|
|
}
|
|
inline size_t write(unsigned long n)
|
|
{
|
|
return write((uint8_t) n);
|
|
}
|
|
inline size_t write(long n)
|
|
{
|
|
return write((uint8_t) n);
|
|
}
|
|
inline size_t write(unsigned int n)
|
|
{
|
|
return write((uint8_t) n);
|
|
}
|
|
inline size_t write(int n)
|
|
{
|
|
return write((uint8_t) n);
|
|
}
|
|
bool begin(uint16_t port=0);
|
|
uint16_t port()
|
|
{
|
|
return _port;
|
|
}
|
|
void end();
|
|
int available();
|
|
int availableForWrite();
|
|
void pushMSG (const char * data);
|
|
void pushMSG (uint num, const char * data);
|
|
void flush(void);
|
|
void handle();
|
|
operator bool() const;
|
|
void set_currentID(uint8_t current_id);
|
|
uint8_t get_currentID();
|
|
void closeClients();
|
|
void enableOnly (uint num);
|
|
bool started()
|
|
{
|
|
return _started;
|
|
}
|
|
void push2RXbuffer(uint8_t * sbuf, size_t len);
|
|
const char * getProtocol()
|
|
{
|
|
return _protocol.c_str();
|
|
}
|
|
uint16_t getPort()
|
|
{
|
|
return _port;
|
|
}
|
|
private:
|
|
bool _started;
|
|
uint16_t _port;
|
|
uint32_t _lastTXflush;
|
|
uint32_t _lastRXflush;
|
|
WebSocketsServer * _websocket_server;
|
|
String _protocol;
|
|
uint8_t _TXbuffer[TXBUFFERSIZE];
|
|
uint16_t _TXbufferSize;
|
|
uint8_t _current_id;
|
|
void flushTXbuffer();
|
|
void flushRXbuffer();
|
|
uint8_t *_RXbuffer;
|
|
uint16_t _RXbufferSize;
|
|
};
|
|
|
|
extern WebSocket_Server websocket_terminal_server;
|
|
|
|
#if defined(WS_DATA_FEATURE)
|
|
extern WebSocket_Server websocket_data_server;
|
|
#endif //WS_DATA_FEATURE
|
|
#endif //_WEBSOCKET_SERVER_H_
|