X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosdroid%2Fsrc%2Forg%2Faltusmetrum%2FAltosDroid%2FTelemetryService.java;h=1903cc1de2d8c2084cebfebda7cdabad9a3590ac;hb=a9ec3c96288b7ea4e40586321a0a98edf0c8fee5;hp=cf7ae6da452a312dd095d7810ca052b2877db7a8;hpb=2c5513c51b187ad26a59b193b401f38c35141d27;p=fw%2Faltos diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index cf7ae6da..1903cc1d 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -61,12 +61,13 @@ public class TelemetryService extends Service { //private NotificationManager mNM; ArrayList mClients = new ArrayList(); // Keeps track of all current registered clients. - final Messenger mMessenger = new Messenger(new IncomingHandler()); // Target we publish for clients to send messages to IncomingHandler. + final Handler mHandler = new IncomingHandler(this); + final Messenger mMessenger = new Messenger(mHandler); // Target we publish for clients to send messages to IncomingHandler. // Name of the connected device private String mConnectedDeviceName = null; private AltosBluetooth mAltosBluetooth = null; - + private int state = STATE_NONE; LinkedBlockingQueue telem; // Handler of incoming messages from clients. @@ -92,6 +93,8 @@ public class TelemetryService extends Service { break; case MSG_CONNECTED: if (D) Log.d(TAG, "Connected to device"); + s.setState(STATE_CONNECTED); + s.mAltosBluetooth.add_monitor(s.telem); break; default: super.handleMessage(msg); @@ -100,6 +103,7 @@ public class TelemetryService extends Service { } private void stopAltosBluetooth() { + setState(STATE_READY); if (mAltosBluetooth != null) { mAltosBluetooth.close(); mAltosBluetooth = null; @@ -108,8 +112,15 @@ public class TelemetryService extends Service { } private void startAltosBluetooth(BluetoothDevice d) { - mAltosBluetooth = new AltosBluetooth(d); - mAltosBluetooth.add_monitor(telem); + mAltosBluetooth = new AltosBluetooth(d, mHandler); + setState(STATE_CONNECTING); + } + + private synchronized void setState(int s) { + if (D) Log.d(TAG, "setState() " + state + " -> " + s); + state = s; + + sendMessageToClients(Message.obtain(null, AltosDroid.MSG_STATE_CHANGE, state, -1)); } @Override @@ -118,6 +129,7 @@ public class TelemetryService extends Service { //mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); telem = new LinkedBlockingQueue(); + setState(STATE_READY); } @Override