diff options
Diffstat (limited to 'ao_log.c')
| -rw-r--r-- | ao_log.c | 24 | 
1 files changed, 15 insertions, 9 deletions
| @@ -125,15 +125,9 @@ ao_log(void)  	log.u.flight.flight = ao_log_dump_flight + 1;  	ao_log_data(&log);  	for (;;) { -		/* Write state change to EEPROM */ -		if (ao_flight_state != ao_log_state) { -			ao_log_state = ao_flight_state; -			log.type = AO_LOG_STATE; -			log.tick = ao_flight_tick; -			log.u.state.state = ao_log_state; -			log.u.state.reason = 0; -			ao_log_data(&log); -		} +		while (!ao_log_running) +			ao_sleep(&ao_log_running); +  		/* Write samples to EEPROM */  		while (ao_log_adc_pos != ao_adc_head) {  			log.type = AO_LOG_SENSOR; @@ -155,6 +149,18 @@ ao_log(void)  			}  			ao_log_adc_pos = ao_adc_ring_next(ao_log_adc_pos);  		} +		/* Write state change to EEPROM */ +		if (ao_flight_state != ao_log_state) { +			ao_log_state = ao_flight_state; +			log.type = AO_LOG_STATE; +			log.tick = ao_flight_tick; +			log.u.state.state = ao_log_state; +			log.u.state.reason = 0; +			ao_log_data(&log); + +			if (ao_log_state == ao_flight_landed) +				ao_log_stop(); +		}  		/* Wait for a while */  		ao_delay(AO_MS_TO_TICKS(100)); | 
