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)
{
if(mqttEnabled) mqttClient.loop();
// if(mqttEnabled)
mqttClient.loop();
}
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());
telnetLoginState = TELNET_UNAUTHENTICATED;
telnetLoginAttempt = 0; // Initial attempt
// delete telnetConsole;
// telnetConsole = NULL;
delete telnetConsole;
telnetConsole = NULL;
telnetClient.stop();
}
@ -215,11 +215,16 @@ static void telnetProcessLine(const char* input)
break;
}
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();
} else if(strcasecmp_P(input, PSTR("logoff")) == 0) {
telnetClient.println(F("\r\n" D_USERNAME " "));
telnetLoginState = TELNET_UNAUTHENTICATED;
if(strcmp(input, http_config.password) == 0) {
telnetClient.println(F("\r\n" D_USERNAME " "));
telnetLoginState = TELNET_UNAUTHENTICATED;
} else {
telnetClientDisconnect();
}
} else {
dispatch_text_line(input);
}
@ -245,15 +250,16 @@ void telnetSetup()
telnetServer->setNoDelay(true);
telnetServer->begin();
telnetConsole = new ConsoleInput(&telnetClient, HASP_CONSOLE_BUFFER);
if(telnetConsole != NULL) {
telnetConsole->setLineCallback(telnetProcessLine);
LOG_INFO(TAG_TELN, F(D_TELNET_STARTED));
return;
}
// telnetConsole = new ConsoleInput(&telnetClient, HASP_CONSOLE_BUFFER);
// if(telnetConsole != NULL) {
// telnetConsole->setLineCallback(telnetProcessLine);
// LOG_INFO(TAG_TELN, F(D_TELNET_STARTED));
// return;
// }
LOG_INFO(TAG_TELN, F(D_TELNET_STARTED));
} else {
LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED));
}
LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED));
#endif
}
}
@ -290,6 +296,31 @@ IRAM_ATTR void telnetLoop()
}
}
#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(!telnetClient.connected()) { // nobody is already connected
telnetAcceptClient(); // allow the new client
@ -297,22 +328,7 @@ IRAM_ATTR void telnetLoop()
LOG_WARNING(TAG_TELN, F(D_TELNET_CLIENT_REJECTED));
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