Forked version of the FXOS8700CQ library which maintains its own memory

Dependents:   fxos8700cq_example

Fork of FXOS8700CQ by Thomas Murphy

Files at this revision

API Documentation at this revision

Comitter:
janjongboom
Date:
Thu Mar 02 17:12:06 2017 +0000
Parent:
2:4c2f8a3549a9
Commit message:
The library should maintain its own memory

Changed in this revision

FXOS8700CQ.cpp Show annotated file Show diff for this revision Revisions of this file
FXOS8700CQ.h Show annotated file Show diff for this revision Revisions of this file
--- a/FXOS8700CQ.cpp	Wed May 28 17:08:33 2014 +0000
+++ b/FXOS8700CQ.cpp	Thu Mar 02 17:12:06 2017 +0000
@@ -6,6 +6,9 @@
 // Construct class and its contents
 FXOS8700CQ::FXOS8700CQ(PinName sda, PinName scl, int addr) : dev_i2c(sda, scl), dev_addr(addr)
 {
+    accel_data = new SRAWDATA();
+    magn_data = new SRAWDATA();
+    
     // Initialization of the FXOS8700CQ
     dev_i2c.frequency(I2C_400K); // Use maximum I2C frequency
     uint8_t data[6] = {0, 0, 0, 0, 0, 0}; // target device write address, single byte to write at address
@@ -76,7 +79,10 @@
 }
 
 // Destruct class
-FXOS8700CQ::~FXOS8700CQ(void) {}
+FXOS8700CQ::~FXOS8700CQ(void) {
+    if (accel_data) delete accel_data;
+    if (magn_data) delete magn_data;
+}
 
 
 void FXOS8700CQ::enable(void)
@@ -115,7 +121,7 @@
     return databyte;
 }
 
-uint8_t FXOS8700CQ::get_data(SRAWDATA *accel_data, SRAWDATA *magn_data)
+uint8_t FXOS8700CQ::get_data()
 {
     if(!enabled) {
         return 1;
@@ -147,6 +153,14 @@
     return 0;
 }
 
+int16_t FXOS8700CQ::getAccelX() { return accel_data->x; }
+int16_t FXOS8700CQ::getAccelY() { return accel_data->y; }
+int16_t FXOS8700CQ::getAccelZ() { return accel_data->z; }
+
+int16_t FXOS8700CQ::getMagnetX() { return magn_data->x; }
+int16_t FXOS8700CQ::getMagnetY() { return magn_data->y; }
+int16_t FXOS8700CQ::getMagnetZ() { return magn_data->z; }
+
 uint8_t FXOS8700CQ::get_accel_scale(void)
 {
     uint8_t data = 0x00;
--- a/FXOS8700CQ.h	Wed May 28 17:08:33 2014 +0000
+++ b/FXOS8700CQ.h	Thu Mar 02 17:12:06 2017 +0000
@@ -143,11 +143,9 @@
     /**
     * Data retrieval from the FXOS8700CQ
     *
-    * @param accel_data destination XYZ accelerometer data struct
-    * @param magn_data destination XYZ magnetometer data struct
     * @return 0 on success, non-zero on failure
     */
-    uint8_t get_data(SRAWDATA *accel_data, SRAWDATA *magn_data);
+    uint8_t get_data();
     
     /**
     * Retrieve the full-range scale value of the accelerometer
@@ -155,6 +153,13 @@
     * @return 2, 4, or 8, depending on part configuration; 0 on error
     */
     uint8_t get_accel_scale(void);
+    
+    int16_t getAccelX();
+    int16_t getAccelY();
+    int16_t getAccelZ();
+    int16_t getMagnetX();
+    int16_t getMagnetY();
+    int16_t getMagnetZ();
 
 
 
@@ -166,6 +171,9 @@
     // I2C helper methods
     void read_regs(int reg_addr, uint8_t* data, int len);
     void write_regs(uint8_t* data, int len);
+    
+    SRAWDATA *accel_data;
+    SRAWDATA *magn_data;
 
 };