int start_block;
int end_block;
- boolean has_gps;
int year, month, day;
- int hour, minute, second;
- double lat, lon;
boolean download;
boolean delete;
throws InterruptedException, TimeoutException {
int block;
- boolean has_date = false, has_time = false, has_lat = false, has_lon = false;
+ boolean has_date = false;
start_block = in_start_block;
end_block = in_end_block;
in_end_block = in_start_block + 2;
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;
+ AltosEepromChunk eechunk = new AltosEepromChunk(serial_line, block);
+
+ if (block == in_start_block) {
+ if (eechunk.data(0) != Altos.AO_LOG_FLIGHT) {
+ flight = eechunk.data16(0);
+ has_flight = true;
+ break;
+ }
}
- if (eeblock.has_lon) {
- lon = eeblock.lon;
- has_lon = true;
+ 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_time && has_lat && has_lon)
- has_gps = true;
- if (has_gps && has_flight)
+ if (has_date && has_flight)
break;
}
- System.out.printf("Serial %d start block %d end block %d\n",
- serial, start_block, end_block);
- if (has_flight)
- System.out.printf("Flight %d\n", flight);
- if (has_gps)
- System.out.printf("%d-%d-%d %d:%02d:%02d Lat %f Lon %f\n",
- year, month, day, hour, minute, second, lat, lon);
}
}