altosdroid: update to support new state code
[fw/altos] / altosdroid / src / org / altusmetrum / AltosDroid / TelemetryReader.java
index e37019fd67b54edda08cd6ed229063c6c15b695b..cdd1decdc68b9189a77812b6676c5dcee204d76d 100644 (file)
@@ -37,25 +37,29 @@ public class TelemetryReader extends Thread {
        Handler     handler;\r
 \r
        AltosLink   link;\r
-       AltosRecord previous;\r
+       AltosState  state = null;\r
 \r
-       LinkedBlockingQueue<AltosLine> telem;\r
+       LinkedBlockingQueue<AltosLine> telemQueue;\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
-               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
-               previous = null;\r
-               link.remove_monitor(telem);\r
+               state = null;\r
+               link.remove_monitor(telemQueue);\r
                link = null;\r
-               telem.clear();\r
-               telem = null;\r
+               telemQueue.clear();\r
+               telemQueue = null;\r
        }\r
 \r
        public void run() {\r
@@ -64,10 +68,7 @@ public class TelemetryReader extends Thread {
                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
@@ -87,8 +88,8 @@ public class TelemetryReader extends Thread {
                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