75 lines
2.2 KiB
C++
75 lines
2.2 KiB
C++
#include <console.h>
|
|
#include <HardwareSerial.h>
|
|
#include <log.h>
|
|
#include <Esp.h>
|
|
#include <WiFi.h>
|
|
#include "mqtt.h"
|
|
#include "wifi.h"
|
|
|
|
char consoleBuffer[64] = "";
|
|
|
|
char *consoleBufferW = consoleBuffer;
|
|
|
|
void consoleLoop() {
|
|
uint8_t i = 0;
|
|
while (Serial.available() > 0 && i++ < 100) {
|
|
const char symbol = static_cast<char>(Serial.read());
|
|
if (symbol == '\n' || symbol == '\r') {
|
|
if (*consoleBuffer != 0) {
|
|
Serial.print('\n');
|
|
info("CONSOLE", "> %s", consoleBuffer);
|
|
consoleHandle(consoleBuffer);
|
|
consoleBufferW = consoleBuffer;
|
|
*consoleBufferW = 0;
|
|
}
|
|
} else if (symbol == '\b') {
|
|
if (consoleBufferW > consoleBuffer) {
|
|
consoleBufferW--;
|
|
*consoleBufferW = 0;
|
|
Serial.print("\b \b");
|
|
}
|
|
} else {
|
|
if (consoleBufferW < consoleBuffer + sizeof consoleBuffer - 1) {
|
|
*consoleBufferW = symbol;
|
|
consoleBufferW++;
|
|
*consoleBufferW = 0;
|
|
Serial.print("\r");
|
|
Serial.print(consoleBuffer);
|
|
} else {
|
|
Serial.print("\nCONSOLE BUFFER OVERFLOW\n");
|
|
Serial.print(consoleBuffer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void consoleHandle(const char *cmd) {
|
|
if (strcmp(cmd, "help") == 0) {
|
|
info("CONSOLE", "help : print this help");
|
|
info("CONSOLE", "net : print network info");
|
|
info("CONSOLE", "reboot : reboot system");
|
|
info("CONSOLE", "wifi : reconnect wifi");
|
|
info("CONSOLE", "mqtt : reconnect mqtt");
|
|
} else if (strcmp(cmd, "net") == 0) {
|
|
info("CONSOLE", "MAC: %17s", WiFi.macAddress().c_str());
|
|
info("CONSOLE", "IP: %17s", WiFi.localIP().toString().c_str());
|
|
info("CONSOLE", "Gateway: %17s", WiFi.gatewayIP().toString().c_str());
|
|
info("CONSOLE", "SSID: %17s", WiFi.SSID().c_str());
|
|
info("CONSOLE", "BSSID: %17s", WiFi.BSSIDstr().c_str());
|
|
info("CONSOLE", "RSSI: %17d", WiFi.RSSI());
|
|
} else if (strcmp(cmd, "reboot") == 0) {
|
|
info("CONSOLE", "Rebooting...");
|
|
delay(500);
|
|
yield();
|
|
ESP.restart();
|
|
} else if (strcmp(cmd, "wifi") == 0) {
|
|
info("CONSOLE", "Reconnecting WiFi...");
|
|
wifiConnect();
|
|
} else if (strcmp(cmd, "mqtt") == 0) {
|
|
info("CONSOLE", "Reconnecting MQTT...");
|
|
mqttDisconnect();
|
|
} else {
|
|
info("CONSOLE", "Unknown command: %s", cmd);
|
|
}
|
|
}
|