From: Keith Packard Date: Tue, 3 Jan 2012 05:05:02 +0000 (-0800) Subject: altosui: Move more eeprom stuff to altoslib X-Git-Tag: 1.0.9.6~115 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=346df410f570a67cda057550a067fa2b451b785d altosui: Move more eeprom stuff to altoslib Signed-off-by: Keith Packard --- diff --git a/altosui/AltosEepromLog.java b/altosui/AltosEepromLog.java deleted file mode 100644 index a24e82c0..00000000 --- a/altosui/AltosEepromLog.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright © 2011 Keith Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package altosui; - -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; -import javax.swing.filechooser.FileNameExtensionFilter; -import javax.swing.table.*; -import java.io.*; -import java.util.*; -import java.text.*; -import java.util.prefs.*; -import java.util.concurrent.*; -import org.altusmetrum.AltosLib.*; - -import libaltosJNI.*; - -/* - * Extract a bit of information from an eeprom-stored flight log. - */ - -public class AltosEepromLog { - int serial; - boolean has_flight; - int flight; - int start_block; - int end_block; - - int year, month, day; - - boolean selected; - - public AltosEepromLog(AltosConfigData config_data, - AltosSerial serial_line, - int in_flight, int in_start_block, - int in_end_block) - throws InterruptedException, TimeoutException { - - int block; - boolean has_date = false; - - flight = in_flight; - if (flight != 0) - has_flight = true; - start_block = in_start_block; - end_block = in_end_block; - serial = config_data.serial; - - /* - * Select all flights for download - */ - selected = true; - - /* - * Look in TeleMetrum log data for date - */ - if (config_data.log_format == Altos.AO_LOG_FORMAT_UNKNOWN || - config_data.log_format == Altos.AO_LOG_FORMAT_FULL) - { - /* - * 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++) { - AltosEepromChunk eechunk = new AltosEepromChunk(serial_line, block, block == in_start_block); - - 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_flight) - break; - } - } - } -} diff --git a/altosui/AltosEepromSelect.java b/altosui/AltosEepromSelect.java index e0fbeead..4ad78896 100644 --- a/altosui/AltosEepromSelect.java +++ b/altosui/AltosEepromSelect.java @@ -27,6 +27,7 @@ import libaltosJNI.libaltos; import libaltosJNI.altos_device; import libaltosJNI.SWIGTYPE_p_altos_file; import libaltosJNI.SWIGTYPE_p_altos_list; +import org.altusmetrum.AltosLib.*; class AltosEepromItem implements ActionListener { AltosEepromLog log; diff --git a/altosui/Makefile.am b/altosui/Makefile.am index a168b6fc..84482dc2 100644 --- a/altosui/Makefile.am +++ b/altosui/Makefile.am @@ -40,7 +40,6 @@ altosui_JAVA = \ AltosEepromDelete.java \ AltosEepromDownload.java \ AltosEepromList.java \ - AltosEepromLog.java \ AltosEepromManage.java \ AltosEepromMonitor.java \ AltosEepromTeleScience.java \ diff --git a/altosui/altoslib/Makefile.am b/altosui/altoslib/Makefile.am index ad4d2d98..32f0ecfb 100644 --- a/altosui/altoslib/Makefile.am +++ b/altosui/altoslib/Makefile.am @@ -16,6 +16,7 @@ AltosLib_JAVA = \ $(SRC)/AltosCRCException.java \ $(SRC)/AltosEepromChunk.java \ $(SRC)/AltosEepromIterable.java \ + $(SRC)/AltosEepromLog.java \ $(SRC)/AltosEepromRecord.java \ $(SRC)/AltosFrequency.java \ $(SRC)/AltosGPS.java \ diff --git a/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosConfigData.java b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosConfigData.java index fec1a042..4ad4e58a 100644 --- a/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosConfigData.java +++ b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosConfigData.java @@ -27,33 +27,33 @@ import org.altusmetrum.AltosLib.*; public class AltosConfigData implements Iterable { /* Version information */ - String manufacturer; - String product; - String version; - int log_format; - int serial; + public String manufacturer; + public String product; + public String version; + public int log_format; + public int serial; /* Strings returned */ - LinkedList lines; + public LinkedList lines; /* Config information */ - int config_major; - int config_minor; - int main_deploy; - int apogee_delay; - int radio_channel; - int radio_setting; - int radio_frequency; - String callsign; - int accel_cal_plus, accel_cal_minus; - int radio_calibration; - int flight_log_max; - int ignite_mode; - int stored_flight; - int storage_size; - int storage_erase_unit; - - static String get_string(String line, String label) throws ParseException { + public int config_major; + public int config_minor; + public int main_deploy; + public int apogee_delay; + public int radio_channel; + public int radio_setting; + public int radio_frequency; + public String callsign; + public int accel_cal_plus, accel_cal_minus; + public int radio_calibration; + public int flight_log_max; + public int ignite_mode; + public int stored_flight; + public int storage_size; + public int storage_erase_unit; + + public static String get_string(String line, String label) throws ParseException { if (line.startsWith(label)) { String quoted = line.substring(label.length()).trim(); @@ -66,7 +66,7 @@ public class AltosConfigData implements Iterable { throw new ParseException("mismatch", 0); } - static int get_int(String line, String label) throws NumberFormatException, ParseException { + public static int get_int(String line, String label) throws NumberFormatException, ParseException { if (line.startsWith(label)) { String tail = line.substring(label.length()).trim(); String[] tokens = tail.split("\\s+"); diff --git a/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromChunk.java b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromChunk.java index 4a9a2679..6d889723 100644 --- a/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromChunk.java +++ b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromChunk.java @@ -24,8 +24,8 @@ import java.util.concurrent.*; public class AltosEepromChunk { - static final int chunk_size = 256; - static final int per_line = 8; + public static final int chunk_size = 256; + public static final int per_line = 8; public int data[]; public int address; @@ -44,20 +44,20 @@ public class AltosEepromChunk { return array; } - int data(int offset) { + public int data(int offset) { return data[offset]; } - int data16(int offset) { + public int data16(int offset) { return data[offset] | (data[offset + 1] << 8); } - int data32(int offset) { + public int data32(int offset) { return data[offset] | (data[offset + 1] << 8) | (data[offset+2] << 16) | (data[offset+3] << 24); } - boolean erased(int start, int len) { + public boolean erased(int start, int len) { for (int i = 0; i < len; i++) if (data[start+i] != 0xff) return false; diff --git a/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromLog.java b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromLog.java new file mode 100644 index 00000000..7fca4bd9 --- /dev/null +++ b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromLog.java @@ -0,0 +1,100 @@ +/* + * Copyright © 2011 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.AltosLib; + +import java.io.*; +import java.util.*; +import java.text.*; +import java.util.prefs.*; +import java.util.concurrent.*; + +/* + * Extract a bit of information from an eeprom-stored flight log. + */ + +public class AltosEepromLog { + public int serial; + public boolean has_flight; + public int flight; + public int start_block; + public int end_block; + + public int year, month, day; + + public boolean selected; + + public AltosEepromLog(AltosConfigData config_data, + AltosLink link, + int in_flight, int in_start_block, + int in_end_block) + throws InterruptedException, TimeoutException { + + int block; + boolean has_date = false; + + flight = in_flight; + if (flight != 0) + has_flight = true; + start_block = in_start_block; + end_block = in_end_block; + serial = config_data.serial; + + /* + * Select all flights for download + */ + selected = true; + + /* + * Look in TeleMetrum log data for date + */ + if (config_data.log_format == AltosLib.AO_LOG_FORMAT_UNKNOWN || + config_data.log_format == AltosLib.AO_LOG_FORMAT_FULL) + { + /* + * 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++) { + AltosEepromChunk eechunk = new AltosEepromChunk(link, block, block == in_start_block); + + for (int i = 0; i < eechunk.chunk_size; i += AltosEepromRecord.record_length) { + try { + AltosEepromRecord r = new AltosEepromRecord(eechunk, i); + + if (r.cmd == AltosLib.AO_LOG_FLIGHT) { + flight = r.b; + has_flight = true; + } + if (r.cmd == AltosLib.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_flight) + break; + } + } + } +} diff --git a/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromRecord.java b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromRecord.java index b2f23c52..1e845f46 100644 --- a/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromRecord.java +++ b/altosui/altoslib/src/org/altusmetrum/AltosLib/AltosEepromRecord.java @@ -31,7 +31,7 @@ public class AltosEepromRecord { public String data; public boolean tick_valid; - static final int record_length = 8; + public static final int record_length = 8; public AltosEepromRecord (AltosEepromChunk chunk, int start) throws ParseException {