diff --git a/include/EggDuino.h b/include/EggDuino.h index 2655f44..f6a19f9 100644 --- a/include/EggDuino.h +++ b/include/EggDuino.h @@ -146,6 +146,7 @@ void handleWebInterface(); void startBleInterface(); void handleBleInterface(); bool bleProtocolWrite(const char *message); +void buildDeviceName(char *nameBuffer, size_t bufferSize); void startWifiProtocolInterface(); void handleWifiProtocolInterface(); bool wifiProtocolWrite(const char *message); @@ -157,6 +158,11 @@ inline bool bleProtocolWrite(const char *message) (void)message; return false; } +inline void buildDeviceName(char *nameBuffer, size_t bufferSize) +{ + (void)nameBuffer; + (void)bufferSize; +} inline void startWifiProtocolInterface() {} inline void handleWifiProtocolInterface() {} inline bool wifiProtocolWrite(const char *message) @@ -168,5 +174,8 @@ inline bool wifiProtocolWrite(const char *message) void Log(const String &message); void Log(const char *message); String buildLogsJson(uint32_t sinceSeq); +void captureIncomingPrintLine(const char *line, ProtocolTransport transport); +String buildIncomingPrintLogText(); +void clearIncomingPrintLog(); #endif diff --git a/lib/SerialCommand/src/SerialCommand.cpp b/lib/SerialCommand/src/SerialCommand.cpp index a14c1a7..663f851 100644 --- a/lib/SerialCommand/src/SerialCommand.cpp +++ b/lib/SerialCommand/src/SerialCommand.cpp @@ -30,6 +30,7 @@ SerialCommand::SerialCommand() : commandList(NULL), commandCount(0), defaultHandler(NULL), + lineHandler(NULL), term('\r'), // default terminator for commands, newline character last(NULL) { @@ -64,6 +65,10 @@ void SerialCommand::setDefaultHandler(void (*function)(const char *)) { defaultHandler = function; } +void SerialCommand::setLineHandler(LineHandler function) { + lineHandler = function; +} + /** * This checks the Serial stream for characters, and assembles them into a buffer. @@ -92,6 +97,10 @@ void SerialCommand::readChar(char inChar) { Serial.println(buffer); #endif + if ((lineHandler != NULL) && (bufPos > 0)) { + (*lineHandler)(buffer); + } + char *command = strtok_r(buffer, delim, &last); // Search for command at start of buffer if (command != NULL) { boolean matched = false; diff --git a/lib/SerialCommand/src/SerialCommand.h b/lib/SerialCommand/src/SerialCommand.h index d52308e..3a39a93 100644 --- a/lib/SerialCommand/src/SerialCommand.h +++ b/lib/SerialCommand/src/SerialCommand.h @@ -44,9 +44,12 @@ class SerialCommand { public: + typedef void (*LineHandler)(const char *); + SerialCommand(); // Constructor void addCommand(const char *command, void(*function)()); // Add a command to the processing dictionary. void setDefaultHandler(void (*function)(const char *)); // A handler to call when no valid command received. + void setLineHandler(LineHandler function); // Optional handler called with each completed input line. void readSerial(); // Main entry point. void readSerial(Stream &stream); // Reads commands from any Stream-compatible transport. @@ -65,6 +68,7 @@ class SerialCommand { // Pointer to the default handler function void (*defaultHandler)(const char *); + LineHandler lineHandler; char delim[2]; // null-terminated list of character to be used as delimeters for tokenizing (default " ") char term; // Character that signals end of command (default '\n') diff --git a/platformio.ini b/platformio.ini index 543d5ac..5b0acea 100644 --- a/platformio.ini +++ b/platformio.ini @@ -29,7 +29,6 @@ board = esp32dev framework = arduino monitor_speed = 115200 monitor_port = /dev/cu.usb* -upload_speed = 115200 upload_port = /dev/cu.usb* lib_deps = arminjo/ServoEasing diff --git a/src/BLE_Interface.cpp b/src/BLE_Interface.cpp index cb488cc..81f01dc 100644 --- a/src/BLE_Interface.cpp +++ b/src/BLE_Interface.cpp @@ -6,7 +6,7 @@ namespace { -constexpr char kBleDeviceNamePrefix[] = "EggDuino_"; +constexpr char kBleDeviceNamePrefix[] = "EggBot_"; constexpr char kBleServiceUuid[] = "6e400001-b5a3-f393-e0a9-e50e24dcca9e"; constexpr char kBleRxCharUuid[] = "6e400002-b5a3-f393-e0a9-e50e24dcca9e"; constexpr char kBleTxCharUuid[] = "6e400003-b5a3-f393-e0a9-e50e24dcca9e"; @@ -30,18 +30,6 @@ void logBleDiag(const String &message) Log(message); } -void buildBleDeviceName(char *nameBuffer, size_t bufferSize) -{ - if ((nameBuffer == NULL) || (bufferSize == 0)) - { - return; - } - - // Tasmota-style chip ID uses the lower 24 bits of the ESP32 efuse MAC. - const uint32_t chipId = static_cast(ESP.getEfuseMac() & 0xFFFFFFULL); - snprintf(nameBuffer, bufferSize, "%s%06X", kBleDeviceNamePrefix, chipId); -} - bool queueBleByte(uint8_t value) { bool queued = false; @@ -112,7 +100,7 @@ class EggDuinoBleRxCallbacks : public NimBLECharacteristicCallbacks void startBleInterface() { char bleDeviceName[32] = {0}; - buildBleDeviceName(bleDeviceName, sizeof(bleDeviceName)); + buildDeviceName(bleDeviceName, sizeof(bleDeviceName)); if (bleDeviceName[0] == '\0') { snprintf(bleDeviceName, sizeof(bleDeviceName), "%sUNKNOWN", kBleDeviceNamePrefix); diff --git a/src/Config_Web.cpp b/src/Config_Web.cpp index fb7e601..9073851 100644 --- a/src/Config_Web.cpp +++ b/src/Config_Web.cpp @@ -8,11 +8,15 @@ namespace const char *kConfigPath = "/config.json"; const size_t kConfigJsonCapacity = 4096; const byte kDnsPort = 53; + const unsigned long kWifiReconnectIntervalMs = 10000; WebServer server(80); DNSServer dnsServer; bool configStoreReady = false; bool apModeActive = false; + bool staReconnectEnabled = false; + bool staConnectionKnown = false; + unsigned long lastStaReconnectAttemptMs = 0; void redirectToRoot() { @@ -82,6 +86,7 @@ button { margin-top: 18px; border: 0; background: #0b5ed7; color: white; padding #status { margin-top: 12px; min-height: 1.2em; } #log { margin-top: 20px; border: 1px solid #d6dfef; border-radius: 8px; background: #0f172a; color: #d2e3ff; padding: 10px; height: 220px; overflow-y: auto; white-space: pre-wrap; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.9rem; } #logTitle { margin-top: 24px; margin-bottom: 8px; font-weight: 700; } +#downloadPrintLog { display: inline-block; margin-top: 8px; color: #0b5ed7; text-decoration: none; font-weight: 600; } @@ -91,6 +96,7 @@ button { margin-top: 18px; border: 0; background: #0b5ed7; color: white; padding
Logs
+Incoming print log herunterladen