-#ifdef DBG_RAW_DATA
-#define MAX_RAW_DATA_COUNT 2000
-static FILE *raw_data = NULL;
-static FILE *raw_data_selected = NULL;
-static int raw_data_count = 0;
-int file_no = 0;
-#endif
-
-#define CAL_STEPS 5
-
-/* 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.15, 0.2, 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 (struct compass_cal* data)
+
+/* Compass defines */
+#define COMPASS_CALIBRATION_PATH "/data/compass.conf"
+#define EPSILON 0.000000001
+
+#define MAGNETIC_LOW 960 /* 31 micro tesla squared */
+#define CAL_STEPS 5
+
+/* 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)