*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
import android.widget.Toast;
import android.location.Criteria;
-import org.altusmetrum.altoslib_10.*;
+import org.altusmetrum.altoslib_12.*;
public class TelemetryService extends Service implements AltosIdleMonitorListener {
case MSG_DISCONNECT:
AltosDebug.debug("Disconnect command received");
s.address = null;
+ if (!(Boolean) msg.obj)
+ AltosDroidPreferences.set_active_device(null);
s.disconnect(true);
break;
case MSG_DELETE_SERIAL:
private void telemetry(AltosTelemetry telem) {
AltosState state;
- if (telemetry_state.states.containsKey(telem.serial))
- state = telemetry_state.states.get(telem.serial).clone();
+ if (telemetry_state.states.containsKey(telem.serial()))
+ state = telemetry_state.states.get(telem.serial());
else
- state = new AltosState();
- telem.update_state(state);
- telemetry_state.states.put(telem.serial, state);
+ state = new AltosState(new AltosCalData());
+ telem.provide_data(state, state.cal_data);
+ telemetry_state.states.put(telem.serial(), state);
+ telemetry_state.quiet = false;
if (state != null) {
- AltosPreferences.set_state(state);
+ AltosPreferences.set_state(state,telem.serial());
}
send_to_clients();
}
telemetry_state.latest_serial = AltosPreferences.latest_state();
+ telemetry_state.quiet = true;
+
+ AltosDebug.debug("latest serial %d\n", telemetry_state.latest_serial);
+
for (int serial : serials) {
AltosState saved_state = AltosPreferences.state(serial);
if (saved_state != null) {
AltosDebug.debug("recovered old state serial %d flight %d",
serial,
- saved_state.flight);
+ saved_state.cal_data.flight);
if (saved_state.gps != null)
AltosDebug.debug("\tposition %f,%f",
saved_state.gps.lat,
telemetry_state.states.put(serial, saved_state);
} else {
AltosDebug.debug("Failed to recover state for %d", serial);
+ AltosPreferences.remove_state(serial);
}
}
}
/* AltosIdleMonitorListener */
public void update(AltosState state, AltosListenerState listener_state) {
- telemetry_state.states.put(state.serial, state);
+ telemetry_state.states.put(state.cal_data.serial, state);
telemetry_state.receiver_battery = listener_state.battery;
send_to_clients();
}