stop doing automatic tag push during builds
[fw/altos] / altosui / AltosEepromLog.java
index 36289b427f48c8a8d5a3786488df4300d691e4ad..0cf420d9c7d2a45b5bf89abb4d32bbfa551c45a0 100644 (file)
@@ -30,6 +30,10 @@ import java.util.concurrent.*;
 
 import libaltosJNI.*;
 
+/*
+ * Extract a bit of information from an eeprom-stored flight log.
+ */
+
 public class AltosEepromLog {
        int             serial;
        boolean         has_flight;
@@ -37,62 +41,64 @@ public class AltosEepromLog {
        int             start_block;
        int             end_block;
 
-       boolean         has_gps;
        int             year, month, day;
-       int             hour, minute, second;
-       double          lat, lon;
+
+       boolean         download;
+       boolean         delete;
 
        public AltosEepromLog(AltosSerial serial_line, int in_serial,
-                             int in_start_block, int in_end_block)
+                             int in_flight, int in_start_block,
+                             int in_end_block)
                throws InterruptedException, TimeoutException {
 
                int             block;
-               boolean         has_date = false, has_time = false, has_lat = false, has_lon = false;
+               boolean         has_date = false;
 
                start_block = in_start_block;
                end_block = in_end_block;
                serial = in_serial;
 
+               /*
+                * By default, request that every log be downloaded but not deleted
+                */
+               download = true;
+               delete = false;
+               /*
+                * Only look in the first two blocks so that this
+                * process doesn't take a long time
+                */
                if (in_end_block > in_start_block + 2)
                        in_end_block = in_start_block + 2;
 
                for (block = in_start_block; block < in_end_block; block++) {
-                       AltosEepromBlock eeblock = new AltosEepromBlock(serial_line, block);
-                       if (eeblock.has_flight) {
-                               flight = eeblock.flight;
-                               has_flight = true;
-                       }
-                       if (eeblock.has_date) {
-                               year = eeblock.year;
-                               month = eeblock.month;
-                               day = eeblock.day;
-                               has_date = true;
-                       }
-                       if (eeblock.has_time) {
-                               hour = eeblock.hour;
-                               minute = eeblock.minute;
-                               second = eeblock.second;
-                               has_time = true;
-                       }
-                       if (eeblock.has_lat) {
-                               lat = eeblock.lat;
-                               has_lat = true;
+                       AltosEepromChunk eechunk = new AltosEepromChunk(serial_line, block);
+
+                       if (block == in_start_block) {
+                               if (eechunk.data16(0) == in_flight) {
+                                       flight = in_flight;
+                                       has_flight = true;
+                                       break;
+                               }
                        }
-                       if (eeblock.has_lon) {
-                               lon = eeblock.lon;
-                               has_lon = true;
+                       for (int i = 0; i < eechunk.chunk_size; i += AltosEepromRecord.record_length) {
+                               try {
+                                       AltosEepromRecord r = new AltosEepromRecord(eechunk, i);
+
+                                       if (r.cmd == Altos.AO_LOG_FLIGHT) {
+                                               flight = r.b;
+                                               has_flight = true;
+                                       }
+                                       if (r.cmd == Altos.AO_LOG_GPS_DATE) {
+                                               year = 2000 + (r.a & 0xff);
+                                               month = (r.a >> 8) & 0xff;
+                                               day = (r.b & 0xff);
+                                               has_date = true;
+                                       }
+                               } catch (ParseException pe) {
+                               }
                        }
-                       if (has_date && has_time && has_lat && has_lon)
-                               has_gps = true;
-                       if (has_gps && has_flight)
+                       if (has_date && has_flight)
                                break;
                }
-               System.out.printf("Serial %d start block %d end block %d\n",
-                                 serial, start_block, end_block);
-               if (has_flight)
-                       System.out.printf("Flight %d\n", flight);
-               if (has_gps)
-                       System.out.printf("%d-%d-%d %d:%02d:%02d Lat %f Lon %f\n",
-                                         year, month, day, hour, minute, second, lat, lon);
        }
 }