X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fkernel%2Fao_log_gps.c;h=211707e58221e5789de8d5fb6b00c79c7777735c;hb=bdf0671cb36daca741c4842a37a3fc71744a63a2;hp=bf326c1a7fb972b7e0d601adfaab767b806586a0;hpb=c246a366a6e0117e70abafc30db71c0545b88f6f;p=fw%2Faltos diff --git a/src/kernel/ao_log_gps.c b/src/kernel/ao_log_gps.c index bf326c1a..211707e5 100644 --- a/src/kernel/ao_log_gps.c +++ b/src/kernel/ao_log_gps.c @@ -34,7 +34,7 @@ ao_log_gps_flight(void) } void -ao_log_gps_data(uint16_t tick, struct ao_telemetry_location *gps_data) +ao_log_gps_data(AO_TICK_TYPE tick, struct ao_telemetry_location *gps_data) { ao_log_data.tick = tick; ao_log_data.type = AO_LOG_GPS_TIME; @@ -61,7 +61,7 @@ ao_log_gps_data(uint16_t tick, struct ao_telemetry_location *gps_data) } void -ao_log_gps_tracking(uint16_t tick, struct ao_telemetry_satellite *gps_tracking_data) +ao_log_gps_tracking(AO_TICK_TYPE tick, struct ao_telemetry_satellite *gps_tracking_data) { uint8_t c, n, i; @@ -81,18 +81,31 @@ ao_log_gps_tracking(uint16_t tick, struct ao_telemetry_satellite *gps_tracking_d ao_log_write(&ao_log_data); } +static uint8_t +ao_log_check_empty(void) +{ + uint8_t *b = (void *) &ao_log_data; + unsigned i; + + for (i = 0; i < sizeof (ao_log_type); i++) + if (*b++ != AO_STORAGE_ERASED_BYTE) + return 0; + return 1; +} + int8_t ao_log_check(uint32_t pos) { - if (ao_storage_is_erased(pos & ~(ao_storage_block - 1))) - return 0; - if (!ao_storage_read(pos, &ao_log_data, sizeof (struct ao_log_gps))) return AO_LOG_INVALID; + if (ao_log_check_empty()) + return AO_LOG_EMPTY; + if (!ao_log_check_data()) return AO_LOG_INVALID; + return AO_LOG_VALID; }