+#define MAGNETIC_LOW 960 /* 31 micro tesla squared */
+#define CAL_STEPS 5
+#define CAL_VERSION 1.0
+
+/* We'll have multiple calibration levels so that we can provide an estimation as fast as possible */
+static const float min_diffs [CAL_STEPS] = {0.2, 0.25, 0.4, 0.6, 1.0};
+static const float max_sqr_errs [CAL_STEPS] = {10.0, 10.0, 8.0, 5.0, 3.5};
+static const unsigned int lookback_counts [CAL_STEPS] = {2, 3, 4, 5, 6 };
+
+
+/* Reset calibration algorithm */
+static void reset_sample (compass_cal_t* data)