- state = 0; state_block = 0;
- for (block = 0; !done && block < 511; block++) {
- serial_line.printf("e %x\n", block);
- any_valid = false;
- monitor.set_value(state_names[state], state, block - state_block);
- for (addr = 0; addr < 0x100;) {
- String line = serial_line.get_reply(5000);
- if (line == null)
- throw new TimeoutException();
- int[] values = ParseHex(line);
-
- if (values == null) {
- System.out.printf("invalid line: %s\n", line);
- continue;
- } else if (values[0] != addr) {
- System.out.printf("data address out of sync at 0x%x\n",
- block * 256 + values[0]);
- } else if (checksum(values) != 0) {
- System.out.printf("invalid checksum at 0x%x\n",
- block * 256 + values[0]);
- } else {
- any_valid = true;
- int cmd = values[1];
- int tick = values[3] + (values[4] << 8);
- int a = values[5] + (values[6] << 8);
- int b = values[7] + (values[8] << 8);
-
- if (cmd == Altos.AO_LOG_FLIGHT) {
- flight = b;
- monitor.set_flight(flight);
- }
-
- /* Monitor state transitions to update display */
- if (cmd == Altos.AO_LOG_STATE && a <= Altos.ao_flight_landed) {
- if (a > Altos.ao_flight_pad)
- want_file = true;
- if (a > state)
- state_block = block;
- state = a;
- }
+ state = 0; state_block = log.start_block;
+ for (block = log.start_block; !done && block < log.end_block; block++) {
+ monitor.set_value(Altos.state_to_string[state], state, block - state_block);