Merge branch 'prefs_interface' into altosdroid
authorMike Beattie <mike@ethernal.org>
Sun, 16 Sep 2012 10:27:04 +0000 (22:27 +1200)
committerMike Beattie <mike@ethernal.org>
Sun, 16 Sep 2012 10:27:04 +0000 (22:27 +1200)
altoslib/AltosEepromIterable.java
altosui/AltosAscent.java
altosui/AltosDescent.java
altosui/AltosKML.java
altosui/AltosLanded.java
altosui/AltosPad.java
src/cc1111/ao_arch.h
src/cc1111/ao_string.c

index 2ac10e85eb0d47cfa2c29066d174ce6f84b62d34..986b7a2cacf2f32f5e477b16a3933c43d42677e3 100644 (file)
@@ -23,15 +23,7 @@ import java.text.*;
 
 public class AltosEepromIterable extends AltosRecordIterable {
 
-       static final int        seen_flight = 1;
-       static final int        seen_sensor = 2;
-       static final int        seen_temp_volt = 4;
-       static final int        seen_deploy = 8;
-       static final int        seen_gps_time = 16;
-       static final int        seen_gps_lat = 32;
-       static final int        seen_gps_lon = 64;
-
-       static final int        seen_basic = seen_flight|seen_sensor;
+       static final int        seen_basic = AltosRecord.seen_flight|AltosRecord.seen_sensor;
 
        boolean                 has_accel;
        boolean                 has_gps;
@@ -64,7 +56,7 @@ public class AltosEepromIterable extends AltosRecordIterable {
                state.tick = record.tick;
                switch (record.cmd) {
                case AltosLib.AO_LOG_FLIGHT:
-                       eeprom.seen |= seen_flight;
+                       eeprom.seen |= AltosRecord.seen_flight;
                        state.ground_accel = record.a;
                        state.flight_accel = record.a;
                        state.flight = record.b;
@@ -82,10 +74,10 @@ public class AltosEepromIterable extends AltosRecordIterable {
                                state.flight_pres = (state.flight_pres * 15 + state.pres) / 16;
                        }
                        state.flight_accel = (state.flight_accel * 15 + state.accel) / 16;
-                       if ((eeprom.seen & seen_sensor) == 0)
+                       if ((eeprom.seen & AltosRecord.seen_sensor) == 0)
                                eeprom.sensor_tick = record.tick - 1;
                        state.flight_vel += (state.accel_plus_g - state.accel) * (record.tick - eeprom.sensor_tick);
-                       eeprom.seen |= seen_sensor;
+                       eeprom.seen |= AltosRecord.seen_sensor;
                        eeprom.sensor_tick = record.tick;
                        has_accel = true;
                        break;
@@ -96,17 +88,17 @@ public class AltosEepromIterable extends AltosRecordIterable {
                                eeprom.n_pad_samples++;
                                state.ground_pres = state.pres;
                        }
-                       eeprom.seen |= seen_sensor;
+                       eeprom.seen |= AltosRecord.seen_sensor;
                        break;
                case AltosLib.AO_LOG_TEMP_VOLT:
                        state.temp = record.a;
                        state.batt = record.b;
-                       eeprom.seen |= seen_temp_volt;
+                       eeprom.seen |= AltosRecord.seen_temp_volt;
                        break;
                case AltosLib.AO_LOG_DEPLOY:
                        state.drogue = record.a;
                        state.main = record.b;
-                       eeprom.seen |= seen_deploy;
+                       eeprom.seen |= AltosRecord.seen_deploy;
                        has_ignite = true;
                        break;
                case AltosLib.AO_LOG_STATE:
@@ -114,6 +106,7 @@ public class AltosEepromIterable extends AltosRecordIterable {
                        break;
                case AltosLib.AO_LOG_GPS_TIME:
                        eeprom.gps_tick = state.tick;
+                       eeprom.seen |= AltosRecord.seen_gps_time;
                        AltosGPS old = state.gps;
                        state.gps = new AltosGPS();
 
@@ -136,10 +129,12 @@ public class AltosEepromIterable extends AltosRecordIterable {
                        has_gps = true;
                        break;
                case AltosLib.AO_LOG_GPS_LAT:
+                       eeprom.seen |= AltosRecord.seen_gps_lat;
                        int lat32 = record.a | (record.b << 16);
                        state.gps.lat = (double) lat32 / 1e7;
                        break;
                case AltosLib.AO_LOG_GPS_LON:
+                       eeprom.seen |= AltosRecord.seen_gps_lon;
                        int lon32 = record.a | (record.b << 16);
                        state.gps.lon = (double) lon32 / 1e7;
                        break;
index 945af7e26104665951e0768093e218d8df7358fb..007c74ec639694ea46aeda47d960e1886b3d06be 100644 (file)
@@ -43,6 +43,20 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {
                }
 
                void show(AltosState state, int crc_errors) {}
+
+               void show(String s) {
+                       show();
+                       value.setText(s);
+               }
+               
+               void show(AltosUnits units, double v) {
+                       show(units.show(8, v));
+               }
+
+               void show(String format, double v) {
+                       show(String.format(format, v));
+               }
+
                void reset() {
                        value.setText("");
                        lights.set(false);
@@ -104,6 +118,19 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {
                        value.setVisible(true);
                }
 
+               void show(String s) {
+                       show();
+                       value.setText(s);
+               }
+               
+               void show(AltosUnits units, double v) {
+                       show(units.show(8, v));
+               }
+
+               void show(String format, double v) {
+                       show(String.format(format, v));
+               }
+
                void hide() {
                        label.setVisible(false);
                        value.setVisible(false);
@@ -260,8 +287,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {
 
        class Apogee extends AscentStatus {
                void show (AltosState state, int crc_errors) {
-                       show();
-                       value.setText(String.format("%4.2f V", state.drogue_sense));
+                       show("%4.2f V", state.drogue_sense);
                        lights.set(state.drogue_sense > 3.2);
                }
                public Apogee (GridBagLayout layout, int y) {
@@ -273,8 +299,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {
 
        class Main extends AscentStatus {
                void show (AltosState state, int crc_errors) {
-                       show();
-                       value.setText(String.format("%4.2f V", state.main_sense));
+                       show("%4.2f V", state.main_sense);
                        lights.set(state.main_sense > 3.2);
                }
                public Main (GridBagLayout layout, int y) {
@@ -286,11 +311,10 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {
 
        class Lat extends AscentValue {
                void show (AltosState state, int crc_errors) {
-                       show();
                        if (state.gps != null)
-                               value.setText(pos(state.gps.lat,"N", "S"));
+                               show(pos(state.gps.lat,"N", "S"));
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Lat (GridBagLayout layout, int y) {
                        super (layout, y, "Latitude");
@@ -301,11 +325,10 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay {
 
        class Lon extends AscentValue {
                void show (AltosState state, int crc_errors) {
-                       show();
                        if (state.gps != null)
-                               value.setText(pos(state.gps.lon,"E", "W"));
+                               show(pos(state.gps.lon,"E", "W"));
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Lon (GridBagLayout layout, int y) {
                        super (layout, y, "Longitude");
index 61709afe0e769aaae0333819b1b2c21d6f4c1413..e9ff590b735e6d79dbec25187ad421426bd9f8f0 100644 (file)
@@ -37,6 +37,15 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {
                        lights.setVisible(true);
                }
 
+               void show(String s) {
+                       show();
+                       value.setText(s);
+               }
+
+               void show(String format, double value) {
+                       show(String.format(format, value));
+               }
+
                void hide() {
                        label.setVisible(false);
                        value.setVisible(false);
@@ -111,16 +120,17 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {
                        value.setVisible(false);
                }
 
-               void show(AltosUnits units, double v) {
-                       value.setText(units.show(8, v));
+               void show(String v) {
+                       show();
+                       value.setText(v);
                }
 
-               void show(String format, double v) {
-                       value.setText(String.format(format, v));
+               void show(AltosUnits units, double v) {
+                       show(units.show(8, v));
                }
 
-               void show(String v) {
-                       value.setText(v);
+               void show(String format, double v) {
+                       show(String.format(format, v));
                }
 
                void set_font() {
@@ -297,10 +307,22 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {
 
        Lon lon;
 
+       class Distance extends DescentValue {
+               void show(AltosState state, int crc_errors) {
+                       show(AltosConvert.distance, state.from_pad.distance);
+               }
+
+               public Distance (GridBagLayout layout, int x, int y) {
+                       super(layout, x, y, "Ground Distance");
+               }
+       }
+
+       Distance distance;
+               
+
        class Apogee extends DescentStatus {
                void show (AltosState state, int crc_errors) {
-                       show();
-                       value.setText(String.format("%4.2f V", state.drogue_sense));
+                       show("%4.2f V", state.drogue_sense);
                        lights.set(state.drogue_sense > 3.2);
                }
                public Apogee (GridBagLayout layout, int y) {
@@ -312,8 +334,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {
 
        class Main extends DescentStatus {
                void show (AltosState state, int crc_errors) {
-                       show();
-                       value.setText(String.format("%4.2f V", state.main_sense));
+                       show("%4.2f V", state.main_sense);
                        lights.set(state.main_sense > 3.2);
                }
                public Main (GridBagLayout layout, int y) {
@@ -369,6 +390,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {
                speed.reset();
                bearing.reset();
                range.reset();
+               distance.reset();
                elevation.reset();
                main.reset();
                apogee.reset();
@@ -381,6 +403,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {
                speed.set_font();
                bearing.set_font();
                range.set_font();
+               distance.set_font();
                elevation.set_font();
                main.set_font();
                apogee.set_font();
@@ -392,12 +415,14 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {
                if (state.gps != null && state.gps.connected) {
                        bearing.show(state, crc_errors);
                        range.show(state, crc_errors);
+                       distance.show(state, crc_errors);
                        elevation.show(state, crc_errors);
                        lat.show(state, crc_errors);
                        lon.show(state, crc_errors);
                } else {
                        bearing.hide();
                        range.hide();
+                       distance.hide();
                        elevation.hide();
                        lat.hide();
                        lon.hide();
@@ -423,10 +448,11 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay {
                elevation = new Elevation(layout, 0, 1);
                range = new Range(layout, 2, 1);
                bearing = new Bearing(layout, 0, 2);
-               lat = new Lat(layout, 0, 3);
-               lon = new Lon(layout, 2, 3);
+               distance = new Distance(layout, 0, 3);
+               lat = new Lat(layout, 0, 4);
+               lon = new Lon(layout, 2, 4);
 
-               apogee = new Apogee(layout, 4);
-               main = new Main(layout, 5);
+               apogee = new Apogee(layout, 5);
+               main = new Main(layout, 6);
        }
 }
index 952fb14147b4b223154551ea7e2fb3eb83cb56ff..57339b1962fd8dd87368817eee9680e361f64721 100644 (file)
@@ -130,6 +130,7 @@ public class AltosKML implements AltosWriter {
 
                if (gps == null)
                        return;
+
                if ((record.seen & (AltosRecord.seen_flight)) == 0)
                        return;
                if ((record.seen & (AltosRecord.seen_gps_lat)) == 0)
index c6ef55fd02a8e42b616c1d4d68aede7824290f1d..57c2d476989e9b5b50d1ff2701ea85d59a2d9ca1 100644 (file)
@@ -40,6 +40,19 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                        value.setVisible(true);
                }
 
+               void show(String s) {
+                       show();
+                       value.setText(s);
+               }
+               
+               void show(AltosUnits units, double v) {
+                       show(units.show(8, v));
+               }
+
+               void show(String format, double v) {
+                       show(String.format(format, v));
+               }
+
                public void set_font() {
                        label.setFont(Altos.label_font);
                        value.setFont(Altos.value_font);
@@ -50,12 +63,6 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                        value.setVisible(false);
                }
 
-               void show(String format, double v) {
-                       show();
-                       value.setText(String.format(format, v));
-               }
-
-
                public LandedValue (GridBagLayout layout, int y, String text) {
                        GridBagConstraints      c = new GridBagConstraints();
                        c.weighty = 1;
@@ -96,11 +103,10 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
 
        class Lat extends LandedValue {
                void show (AltosState state, int crc_errors) {
-                       show();
                        if (state.gps != null && state.gps.connected)
-                               value.setText(pos(state.gps.lat,"N", "S"));
+                               show(pos(state.gps.lat,"N", "S"));
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Lat (GridBagLayout layout, int y) {
                        super (layout, y, "Latitude");
@@ -113,9 +119,9 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                void show (AltosState state, int crc_errors) {
                        show();
                        if (state.gps != null && state.gps.connected)
-                               value.setText(pos(state.gps.lon,"E", "W"));
+                               show(pos(state.gps.lon,"E", "W"));
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Lon (GridBagLayout layout, int y) {
                        super (layout, y, "Longitude");
@@ -130,7 +136,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                        if (state.from_pad != null)
                                show("%3.0f°", state.from_pad.bearing);
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Bearing (GridBagLayout layout, int y) {
                        super (layout, y, "Bearing");
@@ -143,9 +149,9 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
                void show (AltosState state, int crc_errors) {
                        show();
                        if (state.from_pad != null)
-                               show("%6.0f m", state.from_pad.distance);
+                               show(AltosConvert.distance, state.from_pad.distance);
                        else
-                               value.setText("???");
+                               show("???");
                }
                public Distance (GridBagLayout layout, int y) {
                        super (layout, y, "Distance");
@@ -156,7 +162,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
 
        class Height extends LandedValue {
                void show (AltosState state, int crc_errors) {
-                       show("%6.0f m", state.max_height);
+                       show(AltosConvert.height, state.max_height);
                }
                public Height (GridBagLayout layout, int y) {
                        super (layout, y, "Maximum Height");
@@ -167,7 +173,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
 
        class Speed extends LandedValue {
                void show (AltosState state, int crc_errors) {
-                       show("%6.0f m/s", state.max_speed);
+                       show(AltosConvert.speed, state.max_speed);
                }
                public Speed (GridBagLayout layout, int y) {
                        super (layout, y, "Maximum Speed");
@@ -178,7 +184,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio
 
        class Accel extends LandedValue {
                void show (AltosState state, int crc_errors) {
-                       show("%6.0f m/s²", state.max_acceleration);
+                       show(AltosConvert.accel, state.max_acceleration);
                }
                public Accel (GridBagLayout layout, int y) {
                        super (layout, y, "Maximum Acceleration");
index f2deb165ef5ea7bbf9b48a1b7f3f9177e83a5252..2d9c832317845545b53ca303634732332faa8363 100644 (file)
@@ -30,6 +30,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
                AltosLights     lights;
 
                void show(AltosState state, int crc_errors) {}
+
                void reset() {
                        value.setText("");
                        lights.set(false);
@@ -41,6 +42,19 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
                        lights.setVisible(true);
                }
 
+               void show(String s) {
+                       show();
+                       value.setText(s);
+               }
+
+               void show(String format, double value) {
+                       show(String.format(format, value));
+               }
+
+               void show(String format, int value) {
+                       show(String.format(format, value));
+               }
+
                public void hide() {
                        label.setVisible(false);
                        value.setVisible(false);
@@ -108,9 +122,23 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
                        value.setFont(Altos.value_font);
                }
 
+               void show(String s) {
+                       show();
+                       value.setText(s);
+               }
+
+               void show(AltosUnits units, double v) {
+                       show(units.show(8, v));
+               }
+
+               void show(String format, double v) {
+                       show(String.format(format, v));
+               }
+
                void reset() {
                        value.setText("");
                }
+
                public LaunchValue (GridBagLayout layout, int y, String text) {
                        GridBagConstraints      c = new GridBagConstraints();
                        c.insets = new Insets(Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad);
@@ -140,7 +168,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
 
        class Battery extends LaunchStatus {
                void show (AltosState state, int crc_errors) {
-                       value.setText(String.format("%4.2f V", state.battery));
+                       show("%4.2f V", state.battery);
                        lights.set(state.battery > 3.7);
                }
                public Battery (GridBagLayout layout, int y) {
@@ -152,8 +180,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
 
        class Apogee extends LaunchStatus {
                void show (AltosState state, int crc_errors) {
-                       show();
-                       value.setText(String.format("%4.2f V", state.drogue_sense));
+                       show("%4.2f V", state.drogue_sense);
                        lights.set(state.drogue_sense > 3.2);
                }
                public Apogee (GridBagLayout layout, int y) {
@@ -165,8 +192,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
 
        class Main extends LaunchStatus {
                void show (AltosState state, int crc_errors) {
-                       show();
-                       value.setText(String.format("%4.2f V", state.main_sense));
+                       show("%4.2f V", state.main_sense);
                        lights.set(state.main_sense > 3.2);
                }
                public Main (GridBagLayout layout, int y) {
@@ -178,17 +204,16 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
 
        class LoggingReady extends LaunchStatus {
                void show (AltosState state, int crc_errors) {
-                       show();
                        if (state.data.flight != 0) {
                                if (state.data.state <= Altos.ao_flight_pad)
-                                       value.setText("Ready to record");
+                                       show("Ready to record");
                                else if (state.data.state < Altos.ao_flight_landed)
-                                       value.setText("Recording data");
+                                       show("Recording data");
                                else
-                                       value.setText("Recorded data");
+                                       show("Recorded data");
                        }
                        else
-                               value.setText("Storage full");
+                               show("Storage full");
                        lights.set(state.data.flight != 0);
                }
                public LoggingReady (GridBagLayout layout, int y) {
@@ -200,8 +225,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
 
        class GPSLocked extends LaunchStatus {
                void show (AltosState state, int crc_errors) {
-                       show();
-                       value.setText(String.format("%4d sats", state.gps.nsat));
+                       show("%4d sats", state.gps.nsat);
                        lights.set(state.gps.locked && state.gps.nsat >= 4);
                }
                public GPSLocked (GridBagLayout layout, int y) {
@@ -213,11 +237,10 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
 
        class GPSReady extends LaunchStatus {
                void show (AltosState state, int crc_errors) {
-                       show();
                        if (state.gps_ready)
-                               value.setText("Ready");
+                               show("Ready");
                        else
-                               value.setText(String.format("Waiting %d", state.gps_waiting));
+                               show("Waiting %d", state.gps_waiting);
                        lights.set(state.gps_ready);
                }
                public GPSReady (GridBagLayout layout, int y) {
@@ -240,8 +263,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
 
        class PadLat extends LaunchValue {
                void show (AltosState state, int crc_errors) {
-                       show();
-                       value.setText(pos(state.pad_lat,"N", "S"));
+                       show(pos(state.pad_lat,"N", "S"));
                }
                public PadLat (GridBagLayout layout, int y) {
                        super (layout, y, "Pad Latitude");
@@ -252,8 +274,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
 
        class PadLon extends LaunchValue {
                void show (AltosState state, int crc_errors) {
-                       show();
-                       value.setText(pos(state.pad_lon,"E", "W"));
+                       show(pos(state.pad_lon,"E", "W"));
                }
                public PadLon (GridBagLayout layout, int y) {
                        super (layout, y, "Pad Longitude");
@@ -264,7 +285,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {
 
        class PadAlt extends LaunchValue {
                void show (AltosState state, int crc_errors) {
-                       value.setText(String.format("%4.0f m", state.pad_alt));
+                       show("%4.0f m", state.pad_alt);
                }
                public PadAlt (GridBagLayout layout, int y) {
                        super (layout, y, "Pad Altitude");
index a97515a7547509d31b1a4328d2f272fa7bd0e28e..7fdfad80825cbbd22fffe62d6e0b89e7d52bd0f3 100644 (file)
@@ -229,17 +229,17 @@ ao_button_clear(void) __critical;
 /* ao_string.c */
 
 void
-_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint8_t count);
+_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint16_t count);
 
 #define ao_xmemcpy(d,s,c) _ao_xmemcpy(d,s,c)
 
 void
-_ao_xmemset(__xdata void *dst, uint8_t value, uint8_t count);
+_ao_xmemset(__xdata void *dst, uint8_t value, uint16_t count);
 
 #define ao_xmemset(d,v,c) _ao_xmemset(d,v,c)
 
 int8_t
-_ao_xmemcmp(__xdata void *a, __xdata void *b, uint8_t count);
+_ao_xmemcmp(__xdata void *a, __xdata void *b, uint16_t count);
 
 #define ao_xmemcmp(d,s,c) _ao_xmemcmp((d), (s), (c))
 
index 3a07e47ed5c3d9effb73b37ef6d657c08375dd8d..85d6383e878c321b1aeb598b44eab63fb318a54d 100644 (file)
@@ -18,7 +18,7 @@
 #include "ao.h"
 
 void
-_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint8_t count)
+_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint16_t count)
 {
        while (count--) {
                *(__xdata uint8_t *) dst = *(__xdata uint8_t *) src;
@@ -28,7 +28,7 @@ _ao_xmemcpy(__xdata void *dst, __xdata void *src, uint8_t count)
 }
 
 void
-_ao_xmemset(__xdata void *dst, uint8_t v, uint8_t count)
+_ao_xmemset(__xdata void *dst, uint8_t v, uint16_t count)
 {
        while (count--) {
                *(__xdata uint8_t *) dst = v;
@@ -37,7 +37,7 @@ _ao_xmemset(__xdata void *dst, uint8_t v, uint8_t count)
 }
 
 int8_t
-_ao_xmemcmp(__xdata void *a, __xdata void *b, uint8_t count)
+_ao_xmemcmp(__xdata void *a, __xdata void *b, uint16_t count)
 {
        while (count--) {
                int8_t  d = *(__xdata int8_t *) a - *(__xdata int8_t *) b;