ben-pololu-imu

Changeset

9:ecbfb0661aab
2014-12-16 Paul Boddie raw files shortlog changelog graph Moved magnetometer calibration into a separate function.
measure.c (file) measure.h (file)
     1.1 --- a/measure.c	Tue Dec 16 18:03:11 2014 +0000
     1.2 +++ b/measure.c	Tue Dec 16 18:03:54 2014 +0000
     1.3 @@ -32,10 +32,6 @@
     1.4  void ui_calibrate(bool using_filter, int (*print)(const char *, ...), void (*flush)())
     1.5  {
     1.6      vectorf tmpB[1];
     1.7 -    FILE *magnetcfg;
     1.8 -    char fieldmins[3][8], fieldmaxs[3][8], *endptr;
     1.9 -    double value;
    1.10 -    int i;
    1.11  
    1.12      print("Calibrating...\n");
    1.13      flush();
    1.14 @@ -60,6 +56,20 @@
    1.15      print("Calibrated using (%.4f, %.4f, %.4f).\n", acceleration0.x, acceleration0.y, acceleration0.z);
    1.16      flush();
    1.17  
    1.18 +    mag_calibrate();
    1.19 +
    1.20 +    print("Calibrated using (%.1f, %.1f, %.1f), (%.1f, %.1f, %.1f).\n",
    1.21 +        fieldmin.x, fieldmin.y, fieldmin.z,
    1.22 +        fieldmax.x, fieldmax.y, fieldmax.z);
    1.23 +}
    1.24 +
    1.25 +void mag_calibrate()
    1.26 +{
    1.27 +    FILE *magnetcfg;
    1.28 +    char fieldmins[3][8], fieldmaxs[3][8], *endptr;
    1.29 +    double value;
    1.30 +    int i;
    1.31 +
    1.32      /* Read magnetometer settings, if possible. */
    1.33  
    1.34      magnetcfg = fopen(IMU_MAGNET_SETTINGS_FILE, "r");
    1.35 @@ -80,10 +90,6 @@
    1.36                  fieldmax.axis[i] = value;
    1.37          }
    1.38  
    1.39 -        print("Calibrated using (%.1f, %.1f, %.1f), (%.1f, %.1f, %.1f).\n",
    1.40 -            fieldmin.x, fieldmin.y, fieldmin.z,
    1.41 -            fieldmax.x, fieldmax.y, fieldmax.z);
    1.42 -
    1.43          fclose(magnetcfg);
    1.44      }
    1.45  }
     2.1 --- a/measure.h	Tue Dec 16 18:03:11 2014 +0000
     2.2 +++ b/measure.h	Tue Dec 16 18:03:54 2014 +0000
     2.3 @@ -20,6 +20,7 @@
     2.4  /* Function definitions. */
     2.5  
     2.6  void ui_calibrate(bool using_filter, int (*print)(const char *, ...), void (*flush)());
     2.7 +void mag_calibrate();
     2.8  void *get_measurements(void *arg);
     2.9  
    2.10  #ifdef __MEASURE_H_PRIVATE__