diff options
author | Keith Packard <keithp@keithp.com> | 2012-02-23 17:00:48 +1300 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2012-06-02 19:39:55 -0700 |
commit | 69e6df07976a56b49e07c242cd6e5b2cbd2a578d (patch) | |
tree | b2a5bebf3260959a2468ebcdf32f828fa16e035b /altoslib/AltosEepromLog.java | |
parent | 9b659904109f992b8a3e61efb94e81cdb19af1c9 (diff) |
Move altoslib sources to top dir
No sense having them live deep in the file system.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosEepromLog.java')
-rw-r--r-- | altoslib/AltosEepromLog.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/altoslib/AltosEepromLog.java b/altoslib/AltosEepromLog.java new file mode 100644 index 00000000..7fca4bd9 --- /dev/null +++ b/altoslib/AltosEepromLog.java @@ -0,0 +1,100 @@ +/* + * Copyright © 2011 Keith Packard <keithp@keithp.com> + * + * 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; + } + } + } +} |