21 #include "../../include/esp3d_config.h"
23 #if defined (TELNET_FEATURE)
24 #include <WiFiServer.h>
25 #include <WiFiClient.h>
27 #include "../../core/settings_esp3d.h"
28 #include "../../core/esp3doutput.h"
29 #include "../../core/commands.h"
33 #define TIMEOUT_TELNET_FLUSH 1500
38 _telnetClients.stop();
44 if ( !_started || _telnetserver == NULL) {
48 if (_telnetserver->hasClient()) {
50 if (!_telnetClients || !_telnetClients.connected()) {
52 _telnetClients.stop();
54 _telnetClients = _telnetserver->available();
58 if (_telnetserver->hasClient()) {
60 _telnetserver->available().stop();
62 return _telnetClients.connected();
69 if (_telnetClients && _telnetClients.connected()) {
70 res = _telnetClients.remoteIP().toString();
83 _telnetserver =
nullptr;
113 _telnetserver=
new WiFiServer(_port);
114 if (!_telnetserver) {
117 _telnetserver->setNoDelay(
true);
119 _telnetserver->begin();
121 _lastflush = millis();
135 delete _telnetserver;
136 _telnetserver =
nullptr;
164 size_t len = _telnetClients.available();
167 uint8_t * sbuf = (uint8_t *)malloc(len);
169 size_t count = _telnetClients.read(sbuf, len);
172 push2buffer(sbuf, count);
187 void Telnet_Server::flushbuffer()
189 if (!_buffer || !_started) {
194 _buffer[_buffer_size] = 0x0;
197 _lastflush = millis();
201 void Telnet_Server::push2buffer(uint8_t * sbuf,
size_t len)
206 for (
size_t i = 0; i < len; i++) {
207 _lastflush = millis();
209 if (
char(sbuf[i]) ==
'\n') {
211 _buffer[_buffer_size] = sbuf[i];
215 }
else if (isPrintable (
char(sbuf[i]) ) ||
char(sbuf[i]) ==
'\r') {
217 _buffer[_buffer_size] = sbuf[i];
221 _buffer[_buffer_size] = sbuf[i];
226 if (_buffer_size > 0) {
230 _buffer[_buffer_size] = sbuf[i];
247 return _telnetClients.write(buffer, size);
249 size_t sizetosend = size;
251 uint8_t *buffertmp=(uint8_t *)buffer;
252 uint32_t starttime = millis();
254 while (sizetosend>0 && ((millis() - starttime) < 100)) {
277 #ifdef ARDUINO_ARCH_ESP32
279 #endif //ARDUINO_ARCH_ESP32
280 #ifdef ARDUINO_ARCH_ESP8266
281 return _telnetClients.availableForWrite();
282 #endif //ARDUINO_ARCH_ESP8266
288 return _telnetClients.available();
296 if(_telnetClients.available() > 0) {
297 return _telnetClients.read();
306 if(_telnetClients.available() > 0) {
307 return _telnetClients.read(sbuf, len);
316 _telnetClients.flush();
319 #endif //TELNET_FEATURE