Allow hot reconnection from another gcs over wifi

Switch back to udp broadcasting if no messages from gcs for 5 seconds
This commit is contained in:
Oleg Kalachev
2026-08-07 18:24:45 +03:00
parent 8e276bde38
commit aee43c6548
2 changed files with 5 additions and 5 deletions
+3 -3
View File
@@ -17,7 +17,7 @@ Rate telemetryRC(10);
Rate telemetryMotors(10);
Rate telemetryIMU(15);
bool mavlinkConnected = false;
float mavlinkTime = NAN; // time of last received message
String mavlinkPrintBuffer;
void processMavlink() {
@@ -40,7 +40,7 @@ void sendMavlink() {
sendMessage(&msg);
}
if (!mavlinkConnected) return; // send only heartbeat until connected
if (!valid(mavlinkTime)) return; // send only heartbeat until connected
if (telemetrySlow) {
mavlink_msg_extended_sys_state_pack(mavlinkSysId, MAV_COMP_ID_AUTOPILOT1, &msg,
@@ -101,7 +101,7 @@ void receiveMavlink() {
mavlink_status_t status;
for (int i = 0; i < len; i++) {
if (mavlink_parse_char(MAVLINK_COMM_0, buf[i], &msg, &status)) {
mavlinkConnected = true;
mavlinkTime = t;
handleMavlink(&msg);
}
}
+2 -2
View File
@@ -64,7 +64,7 @@ void sendWiFi(const uint8_t *buf, int len) {
if (WiFi.softAPgetStationNum() == 0 && !WiFi.isConnected()) return;
udp.beginPacket(udpRemoteIP, udpRemotePort);
udp.beginPacket(t - mavlinkTime < 5 ? udpRemoteIP : IPAddress(255, 255, 255, 255), udpRemotePort); // broadcast if lost connection
udp.write(buf, len);
udp.endPacket();
}
@@ -113,7 +113,7 @@ void printWiFiInfo() {
} else {
print("Mode: Disabled\n");
}
print("MAVLink connected: %d\n", mavlinkConnected);
print("MAVLink connected: %d\n", valid(mavlinkTime));
}
void configWiFi(int mode, const char *first, const char *second) {