mirror of
https://github.com/okalachev/flix.git
synced 2026-08-16 00:38:56 +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
@@ -18,7 +18,7 @@ Rate telemetryMotors(10);
|
|||||||
Rate telemetryIMU(15);
|
Rate telemetryIMU(15);
|
||||||
Rate telemetryTopic(10);
|
Rate telemetryTopic(10);
|
||||||
|
|
||||||
bool mavlinkConnected = false;
|
float mavlinkTime = NAN; // time of last received message
|
||||||
String mavlinkPrintBuffer;
|
String mavlinkPrintBuffer;
|
||||||
|
|
||||||
void processMavlink() {
|
void processMavlink() {
|
||||||
@@ -41,7 +41,7 @@ void sendMavlink() {
|
|||||||
sendMessage(&msg);
|
sendMessage(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mavlinkConnected) return; // send only heartbeat until connected
|
if (!valid(mavlinkTime)) return; // send only heartbeat until connected
|
||||||
|
|
||||||
if (telemetrySlow) {
|
if (telemetrySlow) {
|
||||||
mavlink_msg_extended_sys_state_pack(mavlinkSysId, MAV_COMP_ID_AUTOPILOT1, &msg,
|
mavlink_msg_extended_sys_state_pack(mavlinkSysId, MAV_COMP_ID_AUTOPILOT1, &msg,
|
||||||
@@ -128,7 +128,7 @@ void receiveMavlink() {
|
|||||||
mavlink_status_t status;
|
mavlink_status_t status;
|
||||||
for (int i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
if (mavlink_parse_char(MAVLINK_COMM_0, buf[i], &msg, &status)) {
|
if (mavlink_parse_char(MAVLINK_COMM_0, buf[i], &msg, &status)) {
|
||||||
mavlinkConnected = true;
|
mavlinkTime = t;
|
||||||
handleMavlink(&msg);
|
handleMavlink(&msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -64,7 +64,7 @@ void sendWiFi(const uint8_t *buf, int len) {
|
|||||||
|
|
||||||
if (WiFi.softAPgetStationNum() == 0 && !WiFi.isConnected()) return;
|
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.write(buf, len);
|
||||||
udp.endPacket();
|
udp.endPacket();
|
||||||
}
|
}
|
||||||
@@ -113,7 +113,7 @@ void printWiFiInfo() {
|
|||||||
} else {
|
} else {
|
||||||
print("Mode: Disabled\n");
|
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) {
|
void configWiFi(int mode, const char *first, const char *second) {
|
||||||
|
|||||||
Reference in New Issue
Block a user