projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Add initial TeleLCO-v3 bits
[fw/altos]
/
src
/
kernel
/
ao_log_gps.c
diff --git
a/src/kernel/ao_log_gps.c
b/src/kernel/ao_log_gps.c
index 7284932cf6f2c98d2558931ff3895964258179d2..96f8140fdf04a171107eaef814599aed6e918611 100644
(file)
--- a/
src/kernel/ao_log_gps.c
+++ b/
src/kernel/ao_log_gps.c
@@
-28,15
+28,15
@@
void
ao_log_gps_flight(void)
{
ao_log_data.type = AO_LOG_FLIGHT;
ao_log_gps_flight(void)
{
ao_log_data.type = AO_LOG_FLIGHT;
- ao_log_data.tick = ao_time();
+ ao_log_data.tick =
(uint16_t)
ao_time();
ao_log_data.u.flight.flight = ao_flight_number;
ao_log_write(&ao_log_data);
}
void
ao_log_data.u.flight.flight = ao_flight_number;
ao_log_write(&ao_log_data);
}
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.tick =
(uint16_t)
tick;
ao_log_data.type = AO_LOG_GPS_TIME;
ao_log_data.u.gps.latitude = gps_data->latitude;
ao_log_data.u.gps.longitude = gps_data->longitude;
ao_log_data.type = AO_LOG_GPS_TIME;
ao_log_data.u.gps.latitude = gps_data->latitude;
ao_log_data.u.gps.longitude = gps_data->longitude;
@@
-61,11
+61,11
@@
ao_log_gps_data(uint16_t tick, struct ao_telemetry_location *gps_data)
}
void
}
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;
{
uint8_t c, n, i;
- ao_log_data.tick = tick;
+ ao_log_data.tick =
(uint16_t)
tick;
ao_log_data.type = AO_LOG_GPS_SAT;
i = 0;
n = gps_tracking_data->channels;
ao_log_data.type = AO_LOG_GPS_SAT;
i = 0;
n = gps_tracking_data->channels;
@@
-81,6
+81,18
@@
ao_log_gps_tracking(uint16_t tick, struct ao_telemetry_satellite *gps_tracking_d
ao_log_write(&ao_log_data);
}
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)
{
int8_t
ao_log_check(uint32_t pos)
{
@@
-89,10
+101,11
@@
ao_log_check(uint32_t pos)
sizeof (struct ao_log_gps)))
return AO_LOG_INVALID;
sizeof (struct ao_log_gps)))
return AO_LOG_INVALID;
- if (ao_log_check_
clear
())
+ if (ao_log_check_
empty
())
return AO_LOG_EMPTY;
if (!ao_log_check_data())
return AO_LOG_INVALID;
return AO_LOG_EMPTY;
if (!ao_log_check_data())
return AO_LOG_INVALID;
+
return AO_LOG_VALID;
}
return AO_LOG_VALID;
}