void Set(const DeviceConfig &config, const DeviceDescriptor &device, const NMEAInfo &basic) { /* if a DeviceDescriptor is "unconfigured" but its DeviceConfig contains a valid configuration, then it got disabled by DeviceConfigOverlaps(), i.e. it's duplicate */ duplicate = !config.IsDisabled() && !device.IsConfigured(); switch (device.GetState()) { case PortState::READY: open = true; error = false; break; case PortState::FAILED: open = false; error = true; break; case PortState::LIMBO: open = false; error = false; break; } alive = basic.alive; location = basic.location_available; gps = basic.gps.fix_quality_available; baro = basic.baro_altitude_available || basic.pressure_altitude_available || basic.static_pressure_available; airspeed = basic.airspeed_available; vario = basic.total_energy_vario_available; traffic = basic.flarm.IsDetected(); debug = device.IsDumpEnabled(); }