altosdroid: update to support new state code
authorMike Beattie <mike@ethernal.org>
Tue, 3 Sep 2013 03:10:23 +0000 (15:10 +1200)
committerKeith Packard <keithp@keithp.com>
Thu, 5 Sep 2013 18:42:22 +0000 (11:42 -0700)
Signed-off-by: Mike Beattie <mike@ethernal.org>
Conflicts:
altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java
altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java
altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java

altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java
altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java
altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java
altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java
altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java
altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java

index 6f3787775cb0868b57661399baadbb6af0087e70..92287476b7dbf56fc654c408e5ddeb8c5ba41fd4 100644 (file)
@@ -147,7 +147,7 @@ public class AltosDroid extends FragmentActivity {
                        case MSG_CRC_ERROR:
                        case MSG_UPDATE_AGE:
                                if (ad.saved_state != null) {
                        case MSG_CRC_ERROR:
                        case MSG_UPDATE_AGE:
                                if (ad.saved_state != null) {
-                                       ad.mAgeView.setText(String.format("%d", (System.currentTimeMillis() - ad.saved_state.report_time + 500) / 1000));
+                                       ad.mAgeView.setText(String.format("%d", (System.currentTimeMillis() - ad.saved_state.received_time + 500) / 1000));
                                }
                                break;
                        }
                                }
                                break;
                        }
@@ -243,11 +243,11 @@ public class AltosDroid extends FragmentActivity {
                }
 
                if (state != null) {
                }
 
                if (state != null) {
-                       mCallsignView.setText(state.data.callsign);
-                       mSerialView.setText(String.format("%d", state.data.serial));
-                       mFlightView.setText(String.format("%d", state.data.flight));
-                       mStateView.setText(state.data.state());
-                       mRSSIView.setText(String.format("%d", state.data.rssi));
+                       mCallsignView.setText(state.callsign);
+                       mSerialView.setText(String.format("%d", state.serial));
+                       mFlightView.setText(String.format("%d", state.flight));
+                       mStateView.setText(state.state_name());
+                       mRSSIView.setText(String.format("%d", state.rssi));
                }
 
                for (AltosDroidTab mTab : mTabs)
                }
 
                for (AltosDroidTab mTab : mTabs)
index df7409c45999099b12d4641bbbc3094d853fc658..c512089f9c1d0fb00e4e058a4e17b66aa966b5ad 100644 (file)
@@ -63,7 +63,7 @@ public class AltosVoice {
 \r
                boolean spoke = false;\r
                if (old_state == null || old_state.state != state.state) {\r
 \r
                boolean spoke = false;\r
                if (old_state == null || old_state.state != state.state) {\r
-                       speak(state.data.state());\r
+                       speak(state.state_name());\r
                        if ((old_state == null || old_state.state <= AltosLib.ao_flight_boost) &&\r
                            state.state > AltosLib.ao_flight_boost) {\r
                                speak(String.format("max speed: %d meters per second.", (int) (state.max_speed() + 0.5)));\r
                        if ((old_state == null || old_state.state <= AltosLib.ao_flight_boost) &&\r
                            state.state > AltosLib.ao_flight_boost) {\r
                                speak(String.format("max speed: %d meters per second.", (int) (state.max_speed() + 0.5)));\r
@@ -132,10 +132,10 @@ public class AltosVoice {
                         */\r
                        if (state.state >= AltosLib.ao_flight_drogue &&\r
                            (last ||\r
                         */\r
                        if (state.state >= AltosLib.ao_flight_drogue &&\r
                            (last ||\r
-                            System.currentTimeMillis() - state.report_time >= 15000 ||\r
+                            System.currentTimeMillis() - state.received_time >= 15000 ||\r
                             state.state == AltosLib.ao_flight_landed))\r
                        {\r
                             state.state == AltosLib.ao_flight_landed))\r
                        {\r
-                               if (Math.abs(state.baro_speed) < 20 && state.height < 100)\r
+                               if (Math.abs(state.speed) < 20 && state.height < 100)\r
                                        speak("rocket landed safely");\r
                                else\r
                                        speak("rocket may have crashed");\r
                                        speak("rocket landed safely");\r
                                else\r
                                        speak("rocket may have crashed");\r
index 69bc68c95f6575b99fe95e09c56b5f909d7c8382..95aaea360b3e3f1fe8546ef737a4d169684d5bd4 100644 (file)
@@ -102,11 +102,11 @@ public class TabAscent extends Fragment implements AltosDroidTab {
                                mLongitudeView.setText("");
                        }
 
                                mLongitudeView.setText("");
                        }
 
-                       mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.drogue_sense));
-                       mApogeeLights.set(state.drogue_sense > 3.2, state.drogue_sense == AltosLib.MISSING);
+                       mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.apogee_voltage));
+                       mApogeeLights.set(state.apogee_voltage > 3.2, state.apogee_voltage == AltosLib.MISSING);
 
 
-                       mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_sense));
-                       mMainLights.set(state.main_sense > 3.2, state.main_sense == AltosLib.MISSING);
+                       mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_voltage));
+                       mMainLights.set(state.main_voltage > 3.2, state.main_voltage == AltosLib.MISSING);
                }
        }
 }
                }
        }
 }
index ee09ea8800356cf9e0aa461b46c0da7f476b5098..6076c401bfb58b152e59ed718e05a2fe75e6e401 100644 (file)
@@ -111,11 +111,11 @@ public class TabDescent extends Fragment implements AltosDroidTab {
                                mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E"));
                        }
 
                                mLongitudeView.setText(AltosDroid.pos(state.gps.lon, "W", "E"));
                        }
 
-                       mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.drogue_sense));
-                       mApogeeLights.set(state.drogue_sense > 3.2, state.drogue_sense == AltosLib.MISSING);
+                       mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.apogee_voltage));
+                       mApogeeLights.set(state.apogee_voltage > 3.2, state.apogee_voltage == AltosLib.MISSING);
 
 
-                       mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_sense));
-                       mMainLights.set(state.main_sense > 3.2, state.main_sense == AltosLib.MISSING);
+                       mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_voltage));
+                       mMainLights.set(state.main_voltage > 3.2, state.main_voltage == AltosLib.MISSING);
                }
        }
 
                }
        }
 
index f9d30b34ea9434356de898f808e2941eaebbf724..2c6732e52e9765ec34df56a3f1b1ffeeaff31971 100644 (file)
@@ -103,26 +103,26 @@ public class TabPad extends Fragment implements AltosDroidTab {
 
        public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver) {
                if (state != null) {
 
        public void update_ui(AltosState state, AltosGreatCircle from_receiver, Location receiver) {
                if (state != null) {
-                       mBatteryVoltageView.setText(AltosDroid.number("%4.2f V", state.battery));
-                       mBatteryLights.set(state.battery > 3.7, state.battery == AltosLib.MISSING);
+                       mBatteryVoltageView.setText(AltosDroid.number("%4.2f V", state.battery_voltage));
+                       mBatteryLights.set(state.battery_voltage > 3.7, state.battery_voltage == AltosLib.MISSING);
 
 
-                       mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.drogue_sense));
-                       mApogeeLights.set(state.drogue_sense > 3.2, state.drogue_sense == AltosLib.MISSING);
+                       mApogeeVoltageView.setText(AltosDroid.number("%4.2f V", state.apogee_voltage));
+                       mApogeeLights.set(state.apogee_voltage > 3.2, state.apogee_voltage == AltosLib.MISSING);
 
 
-                       mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_sense));
-                       mMainLights.set(state.main_sense > 3.2, state.main_sense == AltosLib.MISSING);
+                       mMainVoltageView.setText(AltosDroid.number("%4.2f V", state.main_voltage));
+                       mMainLights.set(state.main_voltage > 3.2, state.main_voltage == AltosLib.MISSING);
 
 
-                       if (state.data.flight != 0) {
-                               if (state.data.state <= AltosLib.ao_flight_pad)
+                       if (state.flight != 0) {
+                               if (state.state <= AltosLib.ao_flight_pad)
                                        mDataLoggingView.setText("Ready to record");
                                        mDataLoggingView.setText("Ready to record");
-                               else if (state.data.state < AltosLib.ao_flight_landed)
+                               else if (state.state < AltosLib.ao_flight_landed)
                                        mDataLoggingView.setText("Recording data");
                                else
                                        mDataLoggingView.setText("Recorded data");
                        } else {
                                mDataLoggingView.setText("Storage full");
                        }
                                        mDataLoggingView.setText("Recording data");
                                else
                                        mDataLoggingView.setText("Recorded data");
                        } else {
                                mDataLoggingView.setText("Storage full");
                        }
-                       mDataLoggingLights.set(state.data.flight != 0, state.data.flight == AltosLib.MISSING);
+                       mDataLoggingLights.set(state.flight != 0, state.flight == AltosLib.MISSING);
 
                        if (state.gps != null) {
                                mGPSLockedView.setText(AltosDroid.integer("%4d sats", state.gps.nsat));
 
                        if (state.gps != null) {
                                mGPSLockedView.setText(AltosDroid.integer("%4d sats", state.gps.nsat));
index e37019fd67b54edda08cd6ed229063c6c15b695b..cdd1decdc68b9189a77812b6676c5dcee204d76d 100644 (file)
@@ -37,25 +37,29 @@ public class TelemetryReader extends Thread {
        Handler     handler;\r
 \r
        AltosLink   link;\r
        Handler     handler;\r
 \r
        AltosLink   link;\r
-       AltosRecord previous;\r
+       AltosState  state = null;\r
 \r
 \r
-       LinkedBlockingQueue<AltosLine> telem;\r
+       LinkedBlockingQueue<AltosLine> telemQueue;\r
 \r
 \r
-       public AltosRecord read() throws ParseException, AltosCRCException, InterruptedException, IOException {\r
-               AltosLine l = telem.take();\r
+       public AltosState read() throws ParseException, AltosCRCException, InterruptedException, IOException {\r
+               AltosLine l = telemQueue.take();\r
                if (l.line == null)\r
                        throw new IOException("IO error");\r
                if (l.line == null)\r
                        throw new IOException("IO error");\r
-               AltosRecord     next = AltosTelemetry.parse(l.line, previous);\r
-               previous = next;\r
-               return next;\r
+               AltosTelemetry telem = AltosTelemetryLegacy.parse(l.line);\r
+               if (state == null)\r
+                       state = new AltosState();\r
+               else\r
+                       state = state.clone();\r
+               telem.update_state(state);\r
+               return state;\r
        }\r
 \r
        public void close() {\r
        }\r
 \r
        public void close() {\r
-               previous = null;\r
-               link.remove_monitor(telem);\r
+               state = null;\r
+               link.remove_monitor(telemQueue);\r
                link = null;\r
                link = null;\r
-               telem.clear();\r
-               telem = null;\r
+               telemQueue.clear();\r
+               telemQueue = null;\r
        }\r
 \r
        public void run() {\r
        }\r
 \r
        public void run() {\r
@@ -64,10 +68,7 @@ public class TelemetryReader extends Thread {
                try {\r
                        for (;;) {\r
                                try {\r
                try {\r
                        for (;;) {\r
                                try {\r
-                                       AltosRecord record = read();\r
-                                       if (record == null)\r
-                                               break;\r
-                                       state = new AltosState(record, state);\r
+                                       state = read();\r
                                        handler.obtainMessage(TelemetryService.MSG_TELEMETRY, state).sendToTarget();\r
                                } catch (ParseException pp) {\r
                                        Log.e(TAG, String.format("Parse error: %d \"%s\"", pp.getErrorOffset(), pp.getMessage()));\r
                                        handler.obtainMessage(TelemetryService.MSG_TELEMETRY, state).sendToTarget();\r
                                } catch (ParseException pp) {\r
                                        Log.e(TAG, String.format("Parse error: %d \"%s\"", pp.getErrorOffset(), pp.getMessage()));\r
@@ -87,8 +88,8 @@ public class TelemetryReader extends Thread {
                link    = in_link;\r
                handler = in_handler;\r
 \r
                link    = in_link;\r
                handler = in_handler;\r
 \r
-               previous = null;\r
-               telem = new LinkedBlockingQueue<AltosLine>();\r
-               link.add_monitor(telem);\r
+               state = null;\r
+               telemQueue = new LinkedBlockingQueue<AltosLine>();\r
+               link.add_monitor(telemQueue);\r
        }\r
 }\r
        }\r
 }\r