X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao_telemetry.c;h=90cf2e4ef254aec2a61a055910953255c46831fb;hp=092918d4b5ee32801f246479a6c6be5ef0a4800f;hb=d87e9c25947d7cc2eba8894a524977f2c55a089a;hpb=43c8f7012102cdb591ace899420c10e4a78385ad diff --git a/ao_telemetry.c b/ao_telemetry.c index 092918d4..90cf2e4e 100644 --- a/ao_telemetry.c +++ b/ao_telemetry.c @@ -21,29 +21,23 @@ uint8_t ao_serial_number = 2; -void -ao_telemetry_send(__xdata struct ao_telemetry *telemetry) __reentrant -{ - if (ao_flight_state != ao_flight_idle && ao_flight_state != ao_flight_startup) { - telemetry->addr = ao_serial_number; - telemetry->flight_state = ao_flight_state; - ao_radio_send(telemetry); - } -} - void ao_telemetry(void) { - static __xdata struct ao_radio_recv recv; + static __xdata struct ao_telemetry telemetry; static uint8_t state; while (ao_flight_state == ao_flight_startup || ao_flight_state == ao_flight_idle) ao_sleep(DATA_TO_XDATA(&ao_flight_state)); - recv.telemetry.type = AO_TELEMETRY_SENSOR; for (;;) { - ao_adc_get(&recv.telemetry.u.adc); - ao_telemetry_send(&recv.telemetry); + telemetry.addr = ao_serial_number; + telemetry.flight_state = ao_flight_state; + ao_adc_get(&telemetry.adc); + ao_mutex_get(&ao_gps_mutex); + memcpy(&telemetry.gps, &ao_gps_data, sizeof (struct ao_gps_data)); + ao_mutex_put(&ao_gps_mutex); + ao_radio_send(&telemetry); ao_delay(AO_MS_TO_TICKS(1000)); } }