int start_block;
int end_block;
- boolean has_gps;
int year, month, day;
- int hour, minute, second;
- double lat, lon;
- boolean download;
- boolean delete;
+ boolean selected;
- public AltosEepromLog(AltosSerial serial_line, int in_serial,
- int in_start_block, int in_end_block)
+ 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, has_time = false, has_lat = false, has_lon = false;
+ boolean has_date = false;
+ flight = in_flight;
+ if (flight != 0)
+ has_flight = true;
start_block = in_start_block;
end_block = in_end_block;
- serial = in_serial;
+ serial = config_data.serial;
/*
- * By default, request that every log be downloaded but not deleted
+ * Select all flights for download
*/
- download = true;
- delete = false;
+ selected = true;
+
/*
- * Only look in the first two blocks so that this
- * process doesn't take a long time
+ * Look in TeleMetrum log data for date
*/
- if (in_end_block > in_start_block + 2)
- in_end_block = in_start_block + 2;
+ 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);
+ for (block = in_start_block; block < in_end_block; block++) {
+ AltosEepromChunk eechunk = new AltosEepromChunk(serial_line, block, block == in_start_block);
- if (block == in_start_block) {
- if (eechunk.data(0) != Altos.AO_LOG_FLIGHT) {
- flight = eechunk.data16(0);
- has_flight = true;
- break;
+ 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;
}
- AltosEepromBlock eeblock = new AltosEepromBlock(eechunk);
- if (eeblock.has_flight) {
- flight = eeblock.flight;
- has_flight = true;
- }
- if (eeblock.has_date) {
- year = eeblock.year;
- month = eeblock.month;
- day = eeblock.day;
- has_date = true;
- }
- if (eeblock.has_time) {
- hour = eeblock.hour;
- minute = eeblock.minute;
- second = eeblock.second;
- has_time = true;
- }
- if (eeblock.has_lat) {
- lat = eeblock.lat;
- has_lat = true;
- }
- if (eeblock.has_lon) {
- lon = eeblock.lon;
- has_lon = true;
- }
- if (has_date && has_time && has_lat && has_lon)
- has_gps = true;
- if (has_gps && has_flight)
- break;
}
}
}