X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fcore%2Fao_telemetry.c;h=8385c6d038c9f48dc9862af73f299e8cf64a438b;hb=refs%2Fheads%2Fpwmin;hp=3c747520ee2c227e2a77e30efdd84b4f6f48acd6;hpb=dd623b21cb904238c6d903b6936ff2f8ebf6f339;p=fw%2Faltos diff --git a/src/core/ao_telemetry.c b/src/core/ao_telemetry.c index 3c747520..8385c6d0 100644 --- a/src/core/ao_telemetry.c +++ b/src/core/ao_telemetry.c @@ -22,9 +22,6 @@ static __pdata uint16_t ao_telemetry_interval; static __pdata uint8_t ao_rdf = 0; static __pdata uint16_t ao_rdf_time; -#define AO_RDF_INTERVAL_TICKS AO_SEC_TO_TICKS(5) -#define AO_RDF_LENGTH_MS 500 - #if defined(MEGAMETRUM) #define AO_SEND_MEGA 1 #endif @@ -141,9 +138,9 @@ ao_send_mega_data(void) telemetry.mega_data.v_batt = packet->adc.v_batt; telemetry.mega_data.v_pyro = packet->adc.v_pbatt; - /* XXX figure out right shift value; 4 might suffice */ + /* ADC range is 0-4095, so shift by four to save the high 8 bits */ for (i = 0; i < AO_ADC_NUM_SENSE; i++) - telemetry.mega_data.sense[i] = packet->adc.sense[i] >> 8; + telemetry.mega_data.sense[i] = packet->adc.sense[i] >> 4; telemetry.mega_data.ground_pres = ao_ground_pres; telemetry.mega_data.ground_accel = ao_ground_accel; @@ -286,6 +283,12 @@ ao_telemetry(void) while (!ao_flight_number) ao_sleep(&ao_flight_number); +#if RADIO_DELAY_AFTER_BOOST + while (ao_flight_state < ao_flight_boost) + ao_sleep(DATA_TO_XDATA(&ao_flight_state)); + ao_delay(AO_SEC_TO_TICKS(RADIO_DELAY_AFTER_BOOST)); +#endif + telemetry.generic.serial = ao_serial_number; for (;;) { while (ao_telemetry_interval == 0) @@ -317,8 +320,16 @@ ao_telemetry(void) if (ao_rdf && (int16_t) (ao_time() - ao_rdf_time) >= 0) { +#if HAS_IGNITE_REPORT + uint8_t c; +#endif ao_rdf_time = ao_time() + AO_RDF_INTERVAL_TICKS; - ao_radio_rdf(AO_MS_TO_RDF_LEN(AO_RDF_LENGTH_MS)); +#if HAS_IGNITE_REPORT + if (ao_flight_state == ao_flight_pad && (c = ao_report_igniter())) + ao_radio_continuity(c); + else +#endif + ao_radio_rdf(); } #endif time += ao_telemetry_interval; @@ -330,6 +341,7 @@ ao_telemetry(void) } else time = ao_time(); + bottom: ; } } }