mma8451q driver

Dependents:   nRF51822_DataLogger_PowerImpulseCounter scpi_sx127x NAMote72_Utility scpi_sx127x_firstTest

Revision:
1:778b685c3ad0
Parent:
0:cb0046a629c1
Child:
2:4bc96749141e
--- a/mma8451q.h	Wed Mar 18 00:58:44 2015 +0000
+++ b/mma8451q.h	Fri May 08 01:31:18 2015 +0000
@@ -10,12 +10,16 @@
 #define MMA8451_SYSMOD                     0x0b // 
 #define MMA8451_INT_SOURCE                 0x0c // 
 #define MMA8451_ID                         0x0d
+#define MMA8451_PL_STATUS                  0x10
+#define MMA8451_FF_MT_SRC                  0x16
 #define MMA8451_TRANSIENT_CFG              0x1d // transient enable
 #define MMA8451_TRANSIENT_SRC              0x1e // transient read/clear interrupt
 #define MMA8451_TRANSIENT_THS              0x1f // transient threshold
 #define MMA8451_TRANSIENT_COUNT            0x20 // transient debounce
+#define MMA8451_PULSE_SRC                  0x22
 #define MMA8451_CTRL_REG1                  0x2a
 #define MMA8451_CTRL_REG2                  0x2b
+#define MMA8451_CTRL_REG3                  0x2c // interrupt control
 #define MMA8451_CTRL_REG4                  0x2d // interrupt enable
 #define MMA8451_CTRL_REG5                  0x2e // interrupt pin selection
 
@@ -40,7 +44,7 @@
         uint8_t SRC_ASLP    : 1;    // 7
     } bits;
     uint8_t octet;
-} int_source_t;
+} mma_int_source_t;
 
 typedef union {
     struct {    // at 0x1d
@@ -109,16 +113,17 @@
 
 class MMA8451Q {
     public:
-        MMA8451Q(I2C& r);
+        MMA8451Q(I2C& r, DigitalIn& int_pin);
         ~MMA8451Q();
         void print_regs(void);
         void set_active(char);
-        uint8_t get_active(void);
+        bool get_active(void);
 
         uint8_t read_single(uint8_t addr);
         void read(uint8_t addr, uint8_t *dst_buf, int length);
         void write(uint8_t addr, uint8_t data);
         void transient_detect(void);
+        void service(void);
 
         mma_out_t out;
         transient_cfg_t transient_cfg;
@@ -128,5 +133,6 @@
         
     private:
         I2C& m_i2c;
+        DigitalIn& m_int_pin;
 };