diff options
| -rw-r--r-- | ao-tools/altosui/AltosCSV.java | 1 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosDataPointReader.java | 77 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosGraphDataChooser.java | 20 | ||||
| -rw-r--r-- | ao-tools/altosui/Makefile.am | 5 | 
4 files changed, 95 insertions, 8 deletions
diff --git a/ao-tools/altosui/AltosCSV.java b/ao-tools/altosui/AltosCSV.java index c01d55a8..3a9e48f8 100644 --- a/ao-tools/altosui/AltosCSV.java +++ b/ao-tools/altosui/AltosCSV.java @@ -23,7 +23,6 @@ import java.text.*;  import java.util.*;  import altosui.AltosRecord; -import altosui.AltosReader;  public class AltosCSV {  	File			name; diff --git a/ao-tools/altosui/AltosDataPointReader.java b/ao-tools/altosui/AltosDataPointReader.java new file mode 100644 index 00000000..4d7831e4 --- /dev/null +++ b/ao-tools/altosui/AltosDataPointReader.java @@ -0,0 +1,77 @@ + +// Copyright (c) 2010 Anthony Towns +// GPL v2 or later + +package altosui; + +import java.io.IOException; +import java.text.ParseException; +import java.lang.UnsupportedOperationException; +import java.util.NoSuchElementException; +import java.util.Iterator; + +import altosui.AltosDataPoint; +import altosui.AltosRecordIterable; +import altosui.AltosRecord; +import altosui.AltosState; + +class AltosDataPointReader implements Iterable<AltosDataPoint> { +    Iterator<AltosRecord> iter; +    AltosState state; +    AltosRecord record; + +    public AltosDataPointReader(Iterable<AltosRecord> reader) { +        this.iter = reader.iterator(); +        this.state = null; +    } + +    private void read_next_record()  +        throws NoSuchElementException +    { +        record = iter.next(); +        state = new AltosState(record, state); +    } + +    private AltosDataPoint current_dp() { +        assert this.record != null; +         +        return new AltosDataPoint() { +            public int version() { return record.version; } +            public int serial() { return record.serial; } +            public int flight() { return record.flight; } +            public String callsign() { return record.callsign; } +            public double time() { return record.time; } +            public double rssi() { return record.rssi; } + +            public int state() { return record.state; } +            public String state_name() { return record.state(); } + +            public double acceleration() { return record.acceleration(); } +            public double pressure() { return record.raw_pressure(); } +            public double altitude() { return record.raw_altitude(); } +            public double height() { return record.raw_height(); } +            public double accel_speed() { return record.accel_speed(); } +            public double baro_speed() { return state.baro_speed; } +            public double temperature() { return record.temperature(); } +            public double battery_voltage() { return record.battery_voltage(); } +            public double drogue_voltage() { return record.drogue_voltage(); } +            public double main_voltage() { return record.main_voltage(); } +        }; +    } + +    public Iterator<AltosDataPoint> iterator() { +        return new Iterator<AltosDataPoint>() { +            public void remove() {  +                throw new UnsupportedOperationException();  +            } +            public boolean hasNext() { +                return iter.hasNext(); +            } +            public AltosDataPoint next() { +                read_next_record(); +                return current_dp(); +            } +        }; +    } +} + diff --git a/ao-tools/altosui/AltosGraphDataChooser.java b/ao-tools/altosui/AltosGraphDataChooser.java index 1bf28454..667d99f7 100644 --- a/ao-tools/altosui/AltosGraphDataChooser.java +++ b/ao-tools/altosui/AltosGraphDataChooser.java @@ -28,10 +28,10 @@ import java.text.*;  import java.util.prefs.*;  import altosui.AltosPreferences; -import altosui.AltosReader;  import altosui.AltosCsvReader; -import altosui.AltosEepromReader; -import altosui.AltosTelemetryReader; +import altosui.AltosDataPointReader; +import altosui.AltosEepromIterable; +import altosui.AltosTelemetryIterable;  public class AltosGraphDataChooser extends JFileChooser {  	JFrame	frame; @@ -56,7 +56,17 @@ public class AltosGraphDataChooser extends JFileChooser {  				return null;  			filename = file.getName();  			try { -				return new AltosCsvReader(new FileReader(file)); +                if (filename.endsWith("eeprom")) { +                    FileInputStream in = new FileInputStream(file); +                    return new AltosDataPointReader(new AltosEepromIterable(in)); +                } else if (filename.endsWith("telem")) { +                    FileInputStream in = new FileInputStream(file); +                    return new AltosDataPointReader(new AltosTelemetryIterable(in)); +                } else if (filename.endsWith("csv")) { +				    return new AltosCsvReader(new FileReader(file)); +                } else { +                    throw new FileNotFoundException(); +                }  			} catch (FileNotFoundException fe) {  				JOptionPane.showMessageDialog(frame,  							      filename, @@ -71,7 +81,7 @@ public class AltosGraphDataChooser extends JFileChooser {  		frame = in_frame;  		setDialogTitle("Select Flight Record File");  		setFileFilter(new FileNameExtensionFilter("Flight data file", -							  "csv")); +							  "csv", "telem", "eeprom"));  		setCurrentDirectory(AltosPreferences.logdir());  	}  } diff --git a/ao-tools/altosui/Makefile.am b/ao-tools/altosui/Makefile.am index ab8ca7d4..7510c88a 100644 --- a/ao-tools/altosui/Makefile.am +++ b/ao-tools/altosui/Makefile.am @@ -5,7 +5,7 @@ man_MANS=altosui.1  altoslibdir=$(libdir)/altos -CLASSPATH_ENV=mkdir -p $(JAVAROOT); CLASSPATH=".:classes:../libaltos:$(JFREECHART)/*:$(FREETTS)/*:/usr/share/java/*" +CLASSPATH_ENV=mkdir -p $(JAVAROOT); CLASSPATH=".:classes:../libaltos:$(FREETTS)/*:/usr/share/java/*"  bin_SCRIPTS=altosui @@ -53,6 +53,7 @@ altosui_JAVA = \  	AltosTelemetry.java \  	AltosTelemetryIterable.java \  	AltosUI.java \ +    AltosDataPointReader.java \      AltosCsvReader.java \      AltosDataPoint.java \      AltosGraph.java \ @@ -168,7 +169,7 @@ $(FATJAR): classaltosui.stamp Manifest-fat.txt $(FREETTS_CLASS) $(JFREECHART_CLA  Manifest.txt: Makefile  	echo 'Main-Class: altosui.AltosUI' > $@ -	echo "Class-Path: $(FREETTS)/freetts.jar $(JFREECHART)/jfreechart.jar $(JFREECHAR)/jcommon.jar $(JFREECHART)/csv.jar" >> $@ +	echo "Class-Path: $(FREETTS)/freetts.jar $(FREETTS)/jfreechart.jar $(FREETTS)/jcommon.jar $(FREETTS)/csv.jar" >> $@  Manifest-fat.txt:  	echo 'Main-Class: altosui.AltosUI' > $@  | 
