An eCompass library only for use on FPU enabled platforms like the K64F

Dependents:   K64F_eCompass_LCD rtos_compass K64F_eCompass GPS_6Axis_DataLogger_SD_UDP ... more

Fork of eCompass_Lib by Jim Carver

Revision:
6:37bc03c3b1f9
Parent:
5:aeaceeb90d58
diff -r aeaceeb90d58 -r 37bc03c3b1f9 eCompass_Lib.cpp
--- a/eCompass_Lib.cpp	Mon Apr 14 17:13:59 2014 +0000
+++ b/eCompass_Lib.cpp	Mon May 05 17:38:37 2014 +0000
@@ -5,13 +5,21 @@
 extern void init_eCompass(void);
 extern void calibrate_eCompass(void);
 
-extern void hal_map(int16_t * acc_raw, int16_t * mag_raw);
+extern void hal_map(MotionSensorDataCounts * acc_raw, MotionSensorDataCounts * mag_raw);
 
 axis6_t axis6;
 uint32_t seconds;
 uint32_t compass_type;
 int32_t tcount;
 uint8_t cdebug;    
+
+/*
+typedef struct MotionSensorDataCounts
+{
+    int16_t x, y, z;
+} MotionSensorDataCounts;
+*/
+ 
 eCompass::eCompass()
 {
 init_eCompass();
@@ -26,36 +34,36 @@
 
 //eCompass::~eCompass() { }
 
-void eCompass::run(int16_t * acc_raw, int16_t * mag_raw)
+void eCompass::run(MotionSensorDataCounts &acc_raw, MotionSensorDataCounts &mag_raw)
 {
     axis6.timestamp = tcount;
-    hal_map(acc_raw, mag_raw);
+    hal_map(&acc_raw, &mag_raw);
     //
     // raw data
-    axis6.acc_x = acc_raw[0];
-    axis6.acc_y = acc_raw[1];
-    axis6.acc_z = acc_raw[2];
-    axis6.mag_x = mag_raw[0];
-    axis6.mag_y = mag_raw[1];
-    axis6.mag_z = mag_raw[2];
+    axis6.acc_x = acc_raw.x;
+    axis6.acc_y = acc_raw.y;
+    axis6.acc_z = acc_raw.z;
+    axis6.mag_x = mag_raw.x;
+    axis6.mag_y = mag_raw.y;
+    axis6.mag_z = mag_raw.z;
     //
     // raw data converted to floating ouing
-    axis6.fax = (float) acc_raw[0];
-    axis6.fay = (float) acc_raw[1];
-    axis6.faz = (float) acc_raw[2];
-    axis6.fmx = (float) mag_raw[0];
-    axis6.fmy = (float) mag_raw[1];
-    axis6.fmz = (float) mag_raw[2];
+    axis6.fax = (float) acc_raw.x;
+    axis6.fay = (float) acc_raw.y;
+    axis6.faz = (float) acc_raw.z;
+    axis6.fmx = (float) mag_raw.x;
+    axis6.fmy = (float) mag_raw.y;
+    axis6.fmz = (float) mag_raw.z;
     //
     // Accelerometer data converted to Gs
-    axis6.fGax = ((float) acc_raw[0]) / 4096.0f;
-    axis6.fGay = ((float) acc_raw[1]) / 4096.0f;
-    axis6.fGaz = ((float) acc_raw[2]) / 4096.0f;
+    axis6.fGax = ((float) acc_raw.x) / 4096.0f;
+    axis6.fGay = ((float) acc_raw.y) / 4096.0f;
+    axis6.fGaz = ((float) acc_raw.z) / 4096.0f;
     //
     // Magnetometer data converted to microteslas
-    axis6.fUTmx = ((float) mag_raw[0]) / 10.0f;
-    axis6.fUTmy = ((float) mag_raw[1]) / 10.0f;
-    axis6.fUTmz = ((float) mag_raw[2]) / 10.0f; 
+    axis6.fUTmx = ((float) mag_raw.x) / 10.0f;
+    axis6.fUTmy = ((float) mag_raw.y) / 10.0f;
+    axis6.fUTmz = ((float) mag_raw.z) / 10.0f; 
     //printf("r");
     if(!cdebug) run_eCompass();
     }