added connection status to the webUI

This commit is contained in:
2026-01-20 09:50:22 +01:00
parent 536ecaa7d9
commit 48059da373

View File

@@ -156,6 +156,7 @@ uint16_t calOverrideSwitch;
uint8_t selectedCalChannel = 0; uint8_t selectedCalChannel = 0;
bool overrideActive[NUM_CHANNELS] = {false}; bool overrideActive[NUM_CHANNELS] = {false};
uint16_t connectionStatusLabel;
// ------------------------------- // -------------------------------
// Calibration interpolation // Calibration interpolation
@@ -270,6 +271,26 @@ void calOverrideSwitchCallback(Control *sender, int type) {
} }
} }
void updateConnectionStatusUI(ConnectionState state) {
const char* text = "Unknown";
switch (state) {
case STATE_DISCONNECTED:
text = "Disconnected";
break;
case STATE_CONNECTING:
text = "Connecting...";
break;
case STATE_WAIT_FOR_FIRST_PACKET:
text = "Waiting for first UDP packet";
break;
case STATE_CONNECTED:
text = "Connected";
break;
}
ESPUI.updateControlValue(connectionStatusLabel, text);
}
// ------------------------------- // -------------------------------
// Setup // Setup
@@ -379,7 +400,39 @@ void setup() {
// Row simulation: Port input + Save button // Row simulation: Port input + Save button
// ------------------------------------------------------ // ------------------------------------------------------
// UDP Port Number input (shared label) // -------------------------------------------
// Connection Status section
// -------------------------------------------
ESPUI.addControl(
ControlType::Separator,
"Connection Status",
"",
ControlColor::None,
tabSettings
);
// Live-updating connection status label
connectionStatusLabel = ESPUI.addControl(
ControlType::Label,
"Status",
"Disconnected",
ControlColor::Wetasphalt,
tabSettings
);
// -------------------------------------------
// UDP Telemetry Connection Settings section
// -------------------------------------------
ESPUI.addControl(
ControlType::Separator,
"UDP Telemetry Connection Settings",
"",
ControlColor::None,
tabSettings
);
// UDP Port Number input
portInput = ESPUI.addControl( portInput = ESPUI.addControl(
ControlType::Number, ControlType::Number,
"UDP Port", "UDP Port",
@@ -389,7 +442,7 @@ void setup() {
portInputCallback portInputCallback
); );
// Save & Apply button (same label) // Save & Apply button
ESPUI.addControl( ESPUI.addControl(
ControlType::Button, ControlType::Button,
"UDP Port", "UDP Port",
@@ -399,7 +452,7 @@ void setup() {
savePortCallback savePortCallback
); );
// Separator line // Existing separator (leave as-is)
ESPUI.addControl( ESPUI.addControl(
ControlType::Separator, ControlType::Separator,
"", "",
@@ -408,7 +461,7 @@ void setup() {
tabSettings tabSettings
); );
// Restart button at the bottom // Restart button (unchanged)
ESPUI.addControl( ESPUI.addControl(
ControlType::Button, ControlType::Button,
"Restart ESP32", "Restart ESP32",
@@ -555,6 +608,7 @@ void loop() {
// First valid packet after being disconnected → start CONNECTING // First valid packet after being disconnected → start CONNECTING
Serial.println("STATE CHANGE: DISCONNECTED → CONNECTING (UDP connection established)"); Serial.println("STATE CHANGE: DISCONNECTED → CONNECTING (UDP connection established)");
connectionState = STATE_CONNECTING; connectionState = STATE_CONNECTING;
updateConnectionStatusUI(connectionState);
// Initialize fade-in: start from 0 on all non-override channels // Initialize fade-in: start from 0 on all non-override channels
for (int ch = 0; ch < NUM_CHANNELS; ch++) { for (int ch = 0; ch < NUM_CHANNELS; ch++) {
@@ -584,6 +638,7 @@ void loop() {
slewStartTime = millis(); slewStartTime = millis();
lastPacketTime = millis(); lastPacketTime = millis();
connectionState = STATE_CONNECTED; connectionState = STATE_CONNECTED;
updateConnectionStatusUI(connectionState);
// Debug output // Debug output
Serial.println("Received UDP packet (first after fade-in):"); Serial.println("Received UDP packet (first after fade-in):");
@@ -643,6 +698,7 @@ void loop() {
if (now - lastPacketTime > watchdogTimeout) { if (now - lastPacketTime > watchdogTimeout) {
Serial.println("STATE CHANGE: CONNECTED → DISCONNECTED (UDP connection lost)"); Serial.println("STATE CHANGE: CONNECTED → DISCONNECTED (UDP connection lost)");
connectionState = STATE_DISCONNECTED; connectionState = STATE_DISCONNECTED;
updateConnectionStatusUI(connectionState);
break; break;
} }
@@ -667,6 +723,7 @@ void loop() {
if (now - lastPacketTime > watchdogTimeout) { if (now - lastPacketTime > watchdogTimeout) {
Serial.println("STATE CHANGE: CONNECTING → DISCONNECTED (no packets during fade-in)"); Serial.println("STATE CHANGE: CONNECTING → DISCONNECTED (no packets during fade-in)");
connectionState = STATE_DISCONNECTED; connectionState = STATE_DISCONNECTED;
updateConnectionStatusUI(connectionState);
break; break;
} }
@@ -698,6 +755,7 @@ void loop() {
if (allReached) { if (allReached) {
Serial.println("STATE CHANGE: CONNECTING → STATE_WAIT_FOR_FIRST_PACKET (fade-in complete)"); Serial.println("STATE CHANGE: CONNECTING → STATE_WAIT_FOR_FIRST_PACKET (fade-in complete)");
connectionState = STATE_WAIT_FOR_FIRST_PACKET; connectionState = STATE_WAIT_FOR_FIRST_PACKET;
updateConnectionStatusUI(connectionState);
} }
} }
} break; } break;