Kionix KX123 accelerometer C++ driver. Can be used for some extend also with kx022, kx023, kx122, etc. when used features are present in sensor.

Dependents:   kionix-kx123-hello

Revision:
3:4fd5361ed180
Parent:
2:62891556d47b
--- a/kx123.cpp	Thu Oct 06 10:23:48 2016 +0000
+++ b/kx123.cpp	Thu Oct 06 13:02:55 2016 +0000
@@ -140,7 +140,7 @@
 * @param *buf to uint16_t[3] for results
 * @return true on error, false on read ok.
 **/
-bool KX123::getresults_highpass(uint16_t* buf) {
+bool KX123::getresults_highpass(int16_t* buf) {
     #define RESULTS_LEN 6
     uint8_t tmp[RESULTS_LEN];     //XYZ (lhlhlh)
     uint8_t read_bytes;
@@ -198,6 +198,27 @@
 }
 
 /**
+* Get gravity scaled float XYZ-values from highpass filtered sensor values
+* @param *buf to float[3] for results
+* @return true on error, false on read ok.
+**/
+bool KX123::getresults_highpass_g(float* buf){
+    int16_t raw[3];
+    int read_error;
+
+    read_error = getresults_highpass(&raw[0]);
+    if (read_error){
+        return read_error;
+        }
+
+    //Scale raw values to G-scale
+    buf[0] = ((float)raw[0]) / resolution_divider;
+    buf[1] = ((float)raw[1]) / resolution_divider;
+    buf[2] = ((float)raw[2]) / resolution_divider;
+    return false;
+}
+
+/**
 * Get axes of current tilt and previous tilt
 * @param *current_previous space for storing 2 (uint8_t) values
 * @return true on error
@@ -333,7 +354,7 @@
 * Setup ODR values for Tilt Position, Directional Tap and Motion Detect.
 * @param tilt_position_odr KX122_CNTL3_OTP_* -value or 0xff to skip.
 * @param directional_tap_odr KX122_CNTL3_OTDT_* -value or 0xff to skip.
-* @param motion_wuf_odr KX122_CNTL3_OWUF_* -value or 0xff to skip.
+* @param motion_wuf_odr motion detect/high-pass odr (KX122_CNTL3_OWUF_* -value) or 0xff to skip.
 * @return true on error or setup mode off, false on setup ok.
 **/
 bool KX123::set_cntl3_odrs(uint8_t tilt_position_odr, uint8_t directional_tap_odr, uint8_t motion_wuf_odr){