- if (selected_serial == 0 || telemetry_state.get(selected_serial) == null) {
- AltosDebug.debug("selected serial set to %d", selected_serial);
+ if (selected_frequency != AltosLib.MISSING) {
+ AltosState selected_state = telemetry_state.get(selected_serial);
+ AltosState latest_state = telemetry_state.get(telemetry_state.latest_serial);
+
+ if (selected_state != null && selected_state.frequency == selected_frequency) {
+ selected_frequency = AltosLib.MISSING;
+ } else if ((selected_state == null || selected_state.frequency != selected_frequency) &&
+ (latest_state != null && latest_state.frequency == selected_frequency))
+ {
+ selected_frequency = AltosLib.MISSING;
+ selected_serial = telemetry_state.latest_serial;
+ }
+ }
+
+ if (!telemetry_state.containsKey(selected_serial)) {