X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fproduct%2Fao_tracker.c;h=c1c3366cf08b6c25e4efac94d4f353bdff0773f5;hp=80eade5c63d6173383254589247be992f9b147fe;hb=6160ddadeae324b4a68db800c98c339156b63076;hpb=eebcf07950e909e4516b08c32e289a870f772793 diff --git a/src/product/ao_tracker.c b/src/product/ao_tracker.c index 80eade5c..c1c3366c 100644 --- a/src/product/ao_tracker.c +++ b/src/product/ao_tracker.c @@ -26,6 +26,7 @@ enum ao_flight_state ao_flight_state; #define AO_TRACKER_NOT_MOVING 200 static uint8_t ao_tracker_force_telem; +static uint8_t ao_tracker_force_launch; #if HAS_USB_CONNECT static inline uint8_t @@ -36,7 +37,7 @@ ao_usb_connected(void) #else #define ao_usb_connected() 1 #endif - + #define STARTUP_AVERAGE 5 static void @@ -54,7 +55,15 @@ ao_tracker(void) int32_t alt_sum = 0; int nsamples = 0; +#if HAS_ADC ao_timer_set_adc_interval(100); +#endif + + ao_log_scan(); + + ao_rdf_set(1); + + ao_telemetry_set_interval(0); ao_flight_state = ao_flight_startup; for (;;) { @@ -89,16 +98,19 @@ ao_tracker(void) break; case ao_flight_pad: ground_distance = ao_distance(ao_gps_data.latitude, - start_latitude, ao_gps_data.longitude, + start_latitude, start_longitude); height = ao_gps_data.altitude - start_altitude; if (height < 0) height = -height; + if (ground_distance >= ao_config.tracker_start_horiz || - height >= ao_config.tracker_start_vert) + height >= ao_config.tracker_start_vert || + ao_tracker_force_launch) { ao_flight_state = ao_flight_drogue; + ao_wakeup(&ao_flight_state); ao_log_start(); } break; @@ -147,8 +159,11 @@ static void ao_tracker_set_telem(void) { ao_cmd_hex(); - if (ao_cmd_status == ao_cmd_success) - ao_tracker_force_telem = ao_cmd_lex_i; + if (ao_cmd_status == ao_cmd_success) { + ao_tracker_force_telem = (ao_cmd_lex_i & 1) != 0; + ao_tracker_force_launch = (ao_cmd_lex_i & 2) != 0; + printf ("force telem %d force launch %d\n", ao_tracker_force_telem, ao_tracker_force_launch); + } } static const struct ao_cmds ao_tracker_cmds[] = {