Speedup loop

This commit is contained in:
fvanroie 2021-05-15 05:23:59 +02:00
parent 8755f78b4a
commit 55961c5b4f
2 changed files with 46 additions and 29 deletions

View File

@ -342,7 +342,8 @@ void mqttSetup()
IRAM_ATTR void mqttLoop(void) IRAM_ATTR void mqttLoop(void)
{ {
if(mqttEnabled) mqttClient.loop(); // if(mqttEnabled)
mqttClient.loop();
} }
void mqttEvery5Seconds(bool networkIsConnected) void mqttEvery5Seconds(bool networkIsConnected)

View File

@ -44,8 +44,8 @@ void telnetClientDisconnect()
LOG_TRACE(TAG_TELN, F(D_TELNET_CLOSING_CONNECTION), telnetClient.remoteIP().toString().c_str()); LOG_TRACE(TAG_TELN, F(D_TELNET_CLOSING_CONNECTION), telnetClient.remoteIP().toString().c_str());
telnetLoginState = TELNET_UNAUTHENTICATED; telnetLoginState = TELNET_UNAUTHENTICATED;
telnetLoginAttempt = 0; // Initial attempt telnetLoginAttempt = 0; // Initial attempt
// delete telnetConsole; delete telnetConsole;
// telnetConsole = NULL; telnetConsole = NULL;
telnetClient.stop(); telnetClient.stop();
} }
@ -215,11 +215,16 @@ static void telnetProcessLine(const char* input)
break; break;
} }
default: default:
if(strcasecmp_P(input, PSTR("exit")) == 0) { if(strcasecmp_P(input, PSTR("exit")) == 0 || strcasecmp_P(input, PSTR("quit")) == 0 ||
strcasecmp_P(input, PSTR("bye")) == 0) {
telnetClientDisconnect(); telnetClientDisconnect();
} else if(strcasecmp_P(input, PSTR("logoff")) == 0) { } else if(strcasecmp_P(input, PSTR("logoff")) == 0) {
if(strcmp(input, http_config.password) == 0) {
telnetClient.println(F("\r\n" D_USERNAME " ")); telnetClient.println(F("\r\n" D_USERNAME " "));
telnetLoginState = TELNET_UNAUTHENTICATED; telnetLoginState = TELNET_UNAUTHENTICATED;
} else {
telnetClientDisconnect();
}
} else { } else {
dispatch_text_line(input); dispatch_text_line(input);
} }
@ -245,15 +250,16 @@ void telnetSetup()
telnetServer->setNoDelay(true); telnetServer->setNoDelay(true);
telnetServer->begin(); telnetServer->begin();
telnetConsole = new ConsoleInput(&telnetClient, HASP_CONSOLE_BUFFER); // telnetConsole = new ConsoleInput(&telnetClient, HASP_CONSOLE_BUFFER);
if(telnetConsole != NULL) { // if(telnetConsole != NULL) {
telnetConsole->setLineCallback(telnetProcessLine); // telnetConsole->setLineCallback(telnetProcessLine);
// LOG_INFO(TAG_TELN, F(D_TELNET_STARTED));
// return;
// }
LOG_INFO(TAG_TELN, F(D_TELNET_STARTED)); LOG_INFO(TAG_TELN, F(D_TELNET_STARTED));
return; } else {
}
}
LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED)); LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED));
}
#endif #endif
} }
} }
@ -290,6 +296,31 @@ IRAM_ATTR void telnetLoop()
} }
} }
#else #else
/* Active Client: Process user input */
if(telnetClient.connected()) {
if(telnetConsole) {
int16_t keypress = telnetConsole->readKey();
} else {
telnetConsole = new ConsoleInput(&telnetClient, HASP_CONSOLE_BUFFER);
if(telnetConsole) {
telnetConsole->setLineCallback(telnetProcessLine);
} else {
telnetClientDisconnect();
LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED));
}
}
}
#endif
}
void telnetEverySecond(void)
{
if(!telnetClient.connected() && telnetLoginState != TELNET_UNAUTHENTICATED) {
telnetClientDisconnect(); // active client disconnected
}
if(telnetServer && telnetServer->hasClient()) { // a new client has connected if(telnetServer && telnetServer->hasClient()) { // a new client has connected
if(!telnetClient.connected()) { // nobody is already connected if(!telnetClient.connected()) { // nobody is already connected
telnetAcceptClient(); // allow the new client telnetAcceptClient(); // allow the new client
@ -297,22 +328,7 @@ IRAM_ATTR void telnetLoop()
LOG_WARNING(TAG_TELN, F(D_TELNET_CLIENT_REJECTED)); LOG_WARNING(TAG_TELN, F(D_TELNET_CLIENT_REJECTED));
telnetServer->available().stop(); // already have a client, block new connections telnetServer->available().stop(); // already have a client, block new connections
} }
} else {
if(!telnetClient.connected() && telnetLoginState != TELNET_UNAUTHENTICATED) {
telnetClientDisconnect(); // active client disconnected
} else {
/* Active Client: Process user input */
if(telnetConsole && telnetClient.connected()) {
int16_t keypress = telnetConsole->readKey();
switch(keypress) {
case ConsoleInput::KEY_PAUSE:
break;
} }
}
}
}
#endif
} }
#if HASP_USE_CONFIG > 0 #if HASP_USE_CONFIG > 0