[examples] Fix PinScan telnet functionality

This commit is contained in:
Kuba Szczodrzyński
2022-08-01 11:28:56 +02:00
parent e9511c507a
commit 1b5d6472f7
3 changed files with 22 additions and 10 deletions

View File

@@ -56,17 +56,22 @@ static void irqHandler(void *ptr) {
} }
static void digitalAllIrq() { static void digitalAllIrq() {
#if USE_WIFI
LT_I("Disabling logger");
lt_log_disable();
Serial.end();
#endif
for (pin_size_t i = 0; i < NUM_DIGITAL_PINS; i++) { for (pin_size_t i = 0; i < NUM_DIGITAL_PINS; i++) {
if (pinSkip[0] == i || pinSkip[1] == i) { if (pinSkip[0] == i || pinSkip[1] == i) {
used[i] = false; used[i] = false;
continue; continue;
} }
pinMode(i, INPUT); pinMode(i, INPUT);
// choose interrupt level according to current state
PinStatus status = digitalRead(i) ? FALLING : RISING;
attachInterruptParam(i, irqHandler, status, pins + i);
used[i] = true;
pins[i] = digitalRead(i); pins[i] = digitalRead(i);
used[i] = true;
// choose interrupt level according to current state
PinStatus status = pins[i] ? FALLING : RISING;
attachInterruptParam(i, irqHandler, status, pins + i);
} }
active = true; active = true;
} }
@@ -112,6 +117,11 @@ void digitalDetach() {
} }
active = false; active = false;
pin = -1; pin = -1;
#if USE_WIFI
lt_log_set_port(LT_UART_DEFAULT_LOGGER);
Serial.begin(115200);
LT_I("Logger enabled");
#endif
} }
void runDigital() { void runDigital() {

View File

@@ -32,7 +32,9 @@ void printHelp(uint8_t mode) {
TAB "d - Check digital pins" EOL TAB "d - Check digital pins" EOL
TAB "a - Check analog pins" EOL TAB "a - Check analog pins" EOL
// TAB "p - Check PWM outputs" EOL // TAB "p - Check PWM outputs" EOL
#if !USE_WIFI
TAB "s - Select UART port" EOL TAB "s - Select UART port" EOL
#endif
TAB "t - Toggle ANSI control codes" EOL TAB "t - Toggle ANSI control codes" EOL
TAB "r - Reboot (for uploading)" EOL TAB "r - Reboot (for uploading)" EOL
TAB "q - Go back to menu, at any time" EOL TAB "q - Go back to menu, at any time" EOL

View File

@@ -11,10 +11,10 @@ static WiFiServer server(23);
static WiFiClient client; static WiFiClient client;
#endif #endif
Stream *stream = NULL; Stream *stream = NULL;
uint8_t mode[] = {'q', '\0', '\0', '\0'}; uint8_t mode[] = {'?', '\0', '\0', '\0'};
pin_size_t pinSkip[2]; pin_size_t pinSkip[2] = {255, 255};
int output = -1; int output = -1;
static void parseMode(); static void parseMode();
@@ -54,7 +54,6 @@ void loop() {
} }
if (!stream) { if (!stream) {
client = server.accept(); client = server.accept();
delay(500);
if (client) { if (client) {
stream = &client; stream = &client;
printHelp(); printHelp();
@@ -105,7 +104,8 @@ void loop() {
} }
} }
parseMode(); if (stream)
parseMode();
} }
static void parseMode() { static void parseMode() {