Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / ao-tools / lib / cc.h
index 3975cf1b46d8c470cc4debe3670f78bc441278e4..0122695889b022d05ed63617318ea41bff8a6427 100644 (file)
@@ -75,6 +75,7 @@ struct cc_timedata {
        int                     num;
        int                     size;
        struct cc_timedataelt   *data;
+       double                  time_offset;
 };
 
 
@@ -92,8 +93,8 @@ struct cc_gpselt {
 struct cc_gpsdata {
        int                     num;
        int                     size;
-       double                  time_offset;
        struct cc_gpselt        *data;
+       double                  time_offset;
 };
 
 /*
@@ -141,6 +142,9 @@ void
 cc_flightraw_free(struct cc_flightraw *raw);
 
 struct cc_flightcooked {
+       double                  flight_start;
+       double                  flight_stop;
+
        struct cc_perioddata    accel_accel;
        struct cc_perioddata    accel_speed;
        struct cc_perioddata    accel_pos;
@@ -150,6 +154,10 @@ struct cc_flightcooked {
        struct cc_perioddata    gps_lat;
        struct cc_perioddata    gps_lon;
        struct cc_perioddata    gps_alt;
+
+       /* unfiltered, but converted */
+       struct cc_timedata      pres;
+       struct cc_timedata      accel;
        struct cc_timedata      state;
 };
 
@@ -261,10 +269,70 @@ cc_great_circle (double start_lat, double start_lon,
                 double end_lat, double end_lon,
                 double *dist, double *bearing);
 
+void
+cc_timedata_limits(struct cc_timedata *d, double min_time, double max_time, int *start, int *stop);
+
 int
 cc_timedata_min(struct cc_timedata *d, double min_time, double max_time);
 
+int
+cc_timedata_min_mag(struct cc_timedata *d, double min_time, double max_time);
+
 int
 cc_timedata_max(struct cc_timedata *d, double min_time, double max_time);
 
+int
+cc_timedata_max_mag(struct cc_timedata *d, double min_time, double max_time);
+
+double
+cc_timedata_average(struct cc_timedata *d, double min_time, double max_time);
+
+double
+cc_timedata_average_mag(struct cc_timedata *d, double min_time, double max_time);
+
+int
+cc_perioddata_limits(struct cc_perioddata *d, double min_time, double max_time, int *start, int *stop);
+
+int
+cc_perioddata_min(struct cc_perioddata *d, double min_time, double max_time);
+
+int
+cc_perioddata_min_mag(struct cc_perioddata *d, double min_time, double max_time);
+
+int
+cc_perioddata_max(struct cc_perioddata *d, double min_time, double max_time);
+
+int
+cc_perioddata_max_mag(struct cc_perioddata *d, double min_time, double max_time);
+
+double
+cc_perioddata_average(struct cc_perioddata *d, double min_time, double max_time);
+
+double
+cc_perioddata_average_mag(struct cc_perioddata *d, double min_time, double max_time);
+
+double *
+cc_low_pass(double *data, int data_len, double omega_pass, double omega_stop, double error);
+
+struct cc_perioddata *
+cc_period_make(struct cc_timedata *td, double start_time, double stop_time);
+
+struct cc_perioddata *
+cc_period_low_pass(struct cc_perioddata *raw, double omega_pass, double omega_stop, double error);
+
+struct cc_timedata *
+cc_timedata_convert(struct cc_timedata *d, double (*f)(double v, double a), double a);
+
+struct cc_timedata *
+cc_timedata_integrate(struct cc_timedata *d, double min_time, double max_time);
+
+struct cc_perioddata *
+cc_perioddata_differentiate(struct cc_perioddata *i);
+
+struct cc_flightcooked *
+cc_flight_cook(struct cc_flightraw *raw);
+
+void
+cc_flightcooked_free(struct cc_flightcooked *cooked);
+
 #endif /* _CC_H_ */