X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosdroid%2Fsrc%2Forg%2Faltusmetrum%2FAltosDroid%2FTelemetryService.java;h=d7fa704debe97c767f45749d2247a69f56929839;hp=80694ea74357385264f19c5f5cd0968a25d69b8c;hb=84021b8e0ab9262262345ce47671c3c0c6c43566;hpb=c813c2c8f71017a686128e06b5178fc99ece251c diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 80694ea7..d7fa704d 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -45,7 +45,6 @@ import android.location.Criteria; import org.altusmetrum.altoslib_7.*; - public class TelemetryService extends Service implements LocationListener { static final int MSG_REGISTER_CLIENT = 1; @@ -200,13 +199,11 @@ public class TelemetryService extends Service implements LocationListener { * Messages from TelemetryReader */ case MSG_TELEMETRY: - AltosDebug.debug("MSG_TELEMETRY"); s.telemetry((AltosTelemetry) msg.obj); break; case MSG_CRC_ERROR: // forward crc error messages s.telemetry_state.crc_errors = (Integer) msg.obj; - AltosDebug.debug("MSG_CRC_ERROR"); s.send_to_clients(); break; default: @@ -227,7 +224,6 @@ public class TelemetryService extends Service implements LocationListener { telem.update_state(state); telemetry_state.states.put(telem.serial, state); if (state != null) { - AltosDebug.debug("Save state %d", telem.serial); AltosPreferences.set_state(telem.serial, state, null); } send_to_clients(); @@ -281,7 +277,6 @@ public class TelemetryService extends Service implements LocationListener { private void send_to_client(Messenger client, Message m) { try { - AltosDebug.debug("Send message to client %s", client.toString()); client.send(m); } catch (RemoteException e) { AltosDebug.error("Client %s disappeared", client.toString()); @@ -291,7 +286,6 @@ public class TelemetryService extends Service implements LocationListener { private void send_to_clients() { Message m = message(); - AltosDebug.debug("Send message to %d clients", clients.size()); for (Messenger client : clients) send_to_client(client, m); } @@ -305,6 +299,8 @@ public class TelemetryService extends Service implements LocationListener { if (altos_link != null) altos_link.closing(); + stop_receiver_voltage_timer(); + if (telemetry_reader != null) { AltosDebug.debug("disconnect(): stopping TelemetryReader"); telemetry_reader.interrupt(); @@ -367,6 +363,34 @@ public class TelemetryService extends Service implements LocationListener { send_to_clients(); } + // Timer for receiver battery voltage monitoring + Timer receiver_voltage_timer; + + private void update_receiver_voltage() { + if (altos_link != null) { + try { + double voltage = altos_link.monitor_battery(); + telemetry_state.receiver_battery = voltage; + } catch (InterruptedException ie) { + } + } + } + + private void stop_receiver_voltage_timer() { + if (receiver_voltage_timer != null) { + receiver_voltage_timer.cancel(); + receiver_voltage_timer.purge(); + receiver_voltage_timer = null; + } + } + + private void start_receiver_voltage_timer() { + if (receiver_voltage_timer == null && altos_link.has_monitor_battery()) { + receiver_voltage_timer = new Timer(); + receiver_voltage_timer.scheduleAtFixedRate(new TimerTask() { public void run() {update_receiver_voltage();}}, 1000L, 10000L); + } + } + private void connected() throws InterruptedException { AltosDebug.debug("connected top"); AltosDebug.check_ui("connected\n"); @@ -401,6 +425,8 @@ public class TelemetryService extends Service implements LocationListener { telemetry_logger = new TelemetryLogger(this, altos_link); + start_receiver_voltage_timer(); + AltosDebug.debug("Notify UI of connection"); send_to_clients(); @@ -409,6 +435,12 @@ public class TelemetryService extends Service implements LocationListener { @Override public void onCreate() { + + AltosDebug.init(this); + + // Initialise preferences + AltosDroidPreferences.init(this); + // Get local Bluetooth adapter bluetooth_adapter = BluetoothAdapter.getDefaultAdapter(); @@ -417,9 +449,6 @@ public class TelemetryService extends Service implements LocationListener { Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show(); } - // Initialise preferences - AltosDroidPreferences.init(this); - telemetry_state = new TelemetryState(); // Create a reference to the NotificationManager so that we can update our notifcation text later @@ -484,7 +513,11 @@ public class TelemetryService extends Service implements LocationListener { // Move us into the foreground. startForeground(NOTIFICATION, notification); - if (intent != null) { + /* Start bluetooth if we don't have a connection already */ + if (intent != null && + (telemetry_state.connect == TelemetryState.CONNECT_NONE || + telemetry_state.connect == TelemetryState.CONNECT_DISCONNECTED)) + { String action = intent.getAction(); if (action.equals(AltosDroid.ACTION_BLUETOOTH)) {