Commit d8512cc2 authored by Don Gagne's avatar Don Gagne

Fix ADSB vehicle timeout

parent f5cd508a
...@@ -3753,12 +3753,7 @@ void Vehicle::_handleADSBVehicle(const mavlink_message_t& message) ...@@ -3753,12 +3753,7 @@ void Vehicle::_handleADSBVehicle(const mavlink_message_t& message)
mavlink_msg_adsb_vehicle_decode(&message, &adsbVehicle); mavlink_msg_adsb_vehicle_decode(&message, &adsbVehicle);
if (adsbVehicle.flags | ADSB_FLAGS_VALID_COORDS) { if (adsbVehicle.flags | ADSB_FLAGS_VALID_COORDS) {
if (_adsbICAOMap.contains(adsbVehicle.ICAO_address)) { if (_adsbICAOMap.contains(adsbVehicle.ICAO_address)) {
if (adsbVehicle.tslc > maxTimeSinceLastSeen) { if (adsbVehicle.tslc <= maxTimeSinceLastSeen) {
ADSBVehicle* vehicle = _adsbICAOMap[adsbVehicle.ICAO_address];
_adsbVehicles.removeOne(vehicle);
_adsbICAOMap.remove(adsbVehicle.ICAO_address);
vehicle->deleteLater();
} else {
_adsbICAOMap[adsbVehicle.ICAO_address]->update(adsbVehicle); _adsbICAOMap[adsbVehicle.ICAO_address]->update(adsbVehicle);
} }
} else if (adsbVehicle.tslc <= maxTimeSinceLastSeen) { } else if (adsbVehicle.tslc <= maxTimeSinceLastSeen) {
...@@ -3876,15 +3871,13 @@ void Vehicle::_trafficUpdate(bool alert, QString traffic_id, QString vehicle_id, ...@@ -3876,15 +3871,13 @@ void Vehicle::_trafficUpdate(bool alert, QString traffic_id, QString vehicle_id,
} }
void Vehicle::_adsbTimerTimeout() void Vehicle::_adsbTimerTimeout()
{ {
// TODO: take into account _adsbICAOMap as well? Needs to be tested, especially the timeout // Remove all expired ADSB vehicle whether from AirMap or ADSB Mavlink
for (int i=_adsbVehicles.count()-1; i>=0; i--) {
for (auto it = _trafficVehicleMap.begin(); it != _trafficVehicleMap.end();) { ADSBVehicle* adsbVehicle = _adsbVehicles.value<ADSBVehicle*>(i);
if (it.value()->expired()) { if (adsbVehicle->expired()) {
_adsbVehicles.removeOne(it.value()); qDebug() << "ADSB expired";
delete it.value(); _adsbVehicles.removeAt(i);
it = _trafficVehicleMap.erase(it); adsbVehicle->deleteLater();
} else {
++it;
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment