diff --git a/libraries/AP_IMU/AP_IMU_INS.cpp b/libraries/AP_IMU/AP_IMU_INS.cpp index 9c8befd235..075678315f 100644 --- a/libraries/AP_IMU/AP_IMU_INS.cpp +++ b/libraries/AP_IMU/AP_IMU_INS.cpp @@ -21,11 +21,6 @@ #include "AP_IMU_INS.h" -const AP_Param::GroupInfo AP_IMU_INS::var_info[] PROGMEM = { - AP_GROUPINFO("CAL", 0, AP_IMU_INS, _sensor_cal), - AP_GROUPEND -}; - void AP_IMU_INS::init( Start_style style, void (*delay_cb)(unsigned long t), diff --git a/libraries/AP_IMU/AP_IMU_INS.h b/libraries/AP_IMU/AP_IMU_INS.h index d8f44d870a..6e5311ab7b 100644 --- a/libraries/AP_IMU/AP_IMU_INS.h +++ b/libraries/AP_IMU/AP_IMU_INS.h @@ -64,11 +64,8 @@ public: virtual void ay(const float v) { _sensor_cal[4] = v; } virtual void az(const float v) { _sensor_cal[5] = v; } - static const struct AP_Param::GroupInfo var_info[]; - private: AP_InertialSensor *_ins; ///< INS provides an axis and unit correct sensor source. - AP_Vector6f _sensor_cal; ///< Calibrated sensor offsets virtual void _init_accel(void (*delay_cb)(unsigned long t), void (*flash_leds_cb)(bool on) = NULL); ///< no-save implementation diff --git a/libraries/AP_IMU/IMU.cpp b/libraries/AP_IMU/IMU.cpp index ed77b1b759..913020235b 100644 --- a/libraries/AP_IMU/IMU.cpp +++ b/libraries/AP_IMU/IMU.cpp @@ -1,6 +1,13 @@ #include "IMU.h" +// this allows the sensor calibration to be saved to EEPROM +const AP_Param::GroupInfo IMU::var_info[] PROGMEM = { + AP_GROUPINFO("CAL", 0, IMU, _sensor_cal), + AP_GROUPEND +}; + + /* Empty implementations for the IMU functions. * Although these will never be used, in certain situations with * optimizations turned off, having empty implementations in an object diff --git a/libraries/AP_IMU/IMU.h b/libraries/AP_IMU/IMU.h index f5710d70af..f2ccb2d4a0 100644 --- a/libraries/AP_IMU/IMU.h +++ b/libraries/AP_IMU/IMU.h @@ -104,7 +104,12 @@ public: virtual void ay(const float v); virtual void az(const float v); + static const struct AP_Param::GroupInfo var_info[]; + protected: + + AP_Vector6f _sensor_cal; ///< Calibrated sensor offsets + /// Most recent accelerometer reading obtained by ::update Vector3f _accel; Vector3f _accel_filtered;