mirror of
https://github.com/okalachev/flix.git
synced 2026-08-15 16:29:00 +00:00
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:
+3
-3
@@ -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
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user