Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / src / kernel / ao_tracker.c
index b7e634656285a2b823c9ff6cb088fbe4c81c5736..e45653a69fc9ef529b88b54fb2fa35470ab1b78b 100644 (file)
@@ -55,14 +55,14 @@ static uint8_t      tracker_mutex;
 static uint8_t log_started;
 static struct ao_telemetry_location gps_data;
 static uint8_t tracker_running;
-static uint16_t tracker_interval;
+static uint8_t tracker_interval;
 
 static void
 ao_tracker(void)
 {
        uint8_t new;
-       int32_t ground_distance;
-       int16_t height;
+       uint32_t ground_distance;
+       gps_alt_t height;
        AO_TICK_TYPE gps_tick;
        uint8_t new_tracker_running;
 
@@ -134,8 +134,8 @@ ao_tracker(void)
                                                height = -height;
 
                                        if (ao_tracker_force_telem > 1)
-                                               printf("head %d ring %d ground_distance %ld height %d\n", gps_head, ring, (long) ground_distance, height);
-                                       if (ground_distance > ao_config.tracker_motion ||
+                                               printf("head %d ring %d ground_distance %lu height %ld\n", gps_head, ring, (long) ground_distance, height);
+                                       if (ground_distance > (uint32_t) ao_config.tracker_motion ||
                                            height > (ao_config.tracker_motion << 1))
                                        {
                                                moving = 1;
@@ -186,9 +186,9 @@ ao_gps_lock(void)
 static uint8_t erasing_current;
 
 void
-ao_tracker_erase_start(uint16_t flight)
+ao_tracker_erase_start(int32_t flight)
 {
-       erasing_current = flight == ao_flight_number;
+       erasing_current = flight == (int32_t) ao_flight_number;
        if (erasing_current) {
                ao_mutex_get(&tracker_mutex);
                ao_log_stop();
@@ -211,9 +211,9 @@ static struct ao_task ao_tracker_task;
 static void
 ao_tracker_set_telem(void)
 {
-       uint16_t r = ao_cmd_hex();
+       uint32_t r = ao_cmd_hex();
        if (ao_cmd_status == ao_cmd_success)
-               ao_tracker_force_telem = r;
+               ao_tracker_force_telem = r != 0;
        ao_cmd_status = ao_cmd_success;
        printf ("flight: %d\n", ao_flight_number);
        printf ("force_telem: %d\n", ao_tracker_force_telem);