- for (block = in_start_block; block < in_end_block; block++) {
- AltosEepromBlock eeblock = new AltosEepromBlock(serial_line, block);
- 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;
+ /*
+ * 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;