2 * Copyright © 2011 Keith Packard <keithp@keithp.com>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 2 of the License.
8 * This program is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * General Public License for more details.
13 * You should have received a copy of the GNU General Public License along
14 * with this program; if not, write to the Free Software Foundation, Inc.,
15 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
21 import java.awt.event.*;
23 import javax.swing.filechooser.FileNameExtensionFilter;
24 import javax.swing.table.*;
28 import java.util.prefs.*;
29 import java.util.concurrent.*;
30 import java.lang.reflect.Array;
34 public class AltosEepromBlock extends ArrayList<AltosEepromRecord> {
46 int hour, minute, second;
47 ParseException parse_exception = null;
49 public AltosEepromBlock (AltosSerial serial_line, int block) throws TimeoutException, InterruptedException {
59 serial_line.printf("e %x\n", block);
60 for (addr = 0; addr < 0x100;) {
62 AltosEepromRecord r = new AltosEepromRecord(serial_line, block * 256 + addr);
64 if (r.cmd == Altos.AO_LOG_FLIGHT) {
69 /* Monitor state transitions to update display */
70 if (r.cmd == Altos.AO_LOG_STATE && r.a <= Altos.ao_flight_landed) {
71 if (!has_state || r.a > state) {
77 if (r.cmd == Altos.AO_LOG_GPS_DATE) {
78 year = 2000 + (r.a & 0xff);
79 month = (r.a >> 8) & 0xff;
83 if (r.cmd == Altos.AO_LOG_GPS_TIME) {
86 second = (r.b & 0xff);
89 if (r.cmd == Altos.AO_LOG_GPS_LAT) {
90 lat = (double) (r.a | (r.b << 16)) / 1e7;
93 if (r.cmd == Altos.AO_LOG_GPS_LON) {
94 lon = (double) (r.a | (r.b << 16)) / 1e7;
99 if (r.cmd == Altos.AO_LOG_STATE && r.a == Altos.ao_flight_landed)
101 } catch (ParseException pe) {
102 AltosEepromRecord r = new AltosEepromRecord(Altos.AO_LOG_INVALID,
104 if (parse_exception == null)
105 parse_exception = pe;