Detect Ctrl-C and Ctrl-D in Putty #291

This commit is contained in:
fvanroie 2023-02-24 21:21:44 +01:00
parent b2a3e7425a
commit f309e7cc25

View File

@ -26,7 +26,7 @@ static WiFiServer* telnetServer;
WiFiClient telnetClient; WiFiClient telnetClient;
static WiFiServer* telnetServer; static WiFiServer* telnetServer;
#else #else
//#include <STM32Ethernet.h> // #include <STM32Ethernet.h>
EthernetClient telnetClient; EthernetClient telnetClient;
static EthernetServer telnetServer(23); static EthernetServer telnetServer(23);
#endif #endif
@ -376,7 +376,18 @@ IRAM_ATTR void telnetLoop()
/* Active Client: Process user input */ /* Active Client: Process user input */
if(telnetClient.connected()) { if(telnetClient.connected()) {
if(telnetConsole) { if(telnetConsole) {
while(telnetConsole->readKey()) { while(int16_t key = telnetConsole->readKey()) {
switch(key) {
case 0xf8:
case KEY_CTRL('C'): // ^C = Cancel (Quit)
telnetClientDisconnect();
break;
case 0xec:
case KEY_CTRL('D'): // ^D = Disconnect (Logout)
LOG_DEBUG(TAG_TELN, "Ctrl-D");
break;
}
if(!telnetConsole) return; // the telnetConsole was destroyed if(!telnetConsole) return; // the telnetConsole was destroyed
if(bufferedTelnetClient.available() <= 0) bufferedTelnetClient.flush(); // flush pending updates if(bufferedTelnetClient.available() <= 0) bufferedTelnetClient.flush(); // flush pending updates
}; };
@ -385,6 +396,7 @@ IRAM_ATTR void telnetLoop()
telnetConsole = new ConsoleInput(&bufferedTelnetClient, HASP_CONSOLE_BUFFER); telnetConsole = new ConsoleInput(&bufferedTelnetClient, HASP_CONSOLE_BUFFER);
if(telnetConsole) { if(telnetConsole) {
telnetConsole->setLineCallback(telnetProcessLine); telnetConsole->setLineCallback(telnetProcessLine);
telnetConsole->setDebug(true);
} else { } else {
telnetClientDisconnect(); telnetClientDisconnect();
LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED)); LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED));