Library for MAX30101, read/write functions for registers implemented.

Dependents:   test_MAX30101 testSensor

Revision:
1:fc677d82d0f1
Parent:
0:4ad9373787e8
Child:
2:c465a8d44b9a
diff -r 4ad9373787e8 -r fc677d82d0f1 MAX30101.cpp
--- a/MAX30101.cpp	Tue Dec 29 06:25:58 2015 +0000
+++ b/MAX30101.cpp	Tue Dec 29 07:40:53 2015 +0000
@@ -33,7 +33,7 @@
 #define REG_TEMP_FRAC      0x20 /* Die Temperature Fraction */
 #define REG_TEMP_EN        0x21 /* Die Temperature Config */
 /* Proximity Function */
-#define REG_PROX_INT_THS   0x30 /* Proximity Interrupt Threshold */
+#define REG_PROX_INT_THR   0x30 /* Proximity Interrupt Threshold */
 /* Part ID */
 #define REG_REV_ID         0xFE /* Revision ID */
 #define REG_PART_ID        0xFF /* Part ID: 0x15 */
@@ -66,4 +66,242 @@
     uint8_t rev ;
     readRegs(REG_REV_ID, &rev, 1) ;
     return( rev ) ;
-}
\ No newline at end of file
+}
+
+uint16_t MAX30101::getIntStatus(void) 
+{
+    uint8_t res[2] ;
+    uint16_t value ;
+    readRegs(REG_INT_MSB, res, 2) ;
+    value = (res[0] << 8) | res[1] ;
+    return( value ) ;
+}
+
+void MAX30101::setIntEnable(uint16_t mask) 
+{
+    uint8_t res[3] ;
+    res[0] = REG_INT_MSB ;
+    res[1] = (mask >> 8) & 0xFF ;
+    res[2] = (mask & 0xFF) ;
+    writeRegs(res, 3) ;
+}
+
+uint8_t MAX30101::getFIFO_WR_PTR(void) 
+{
+    uint8_t data ;
+    readRegs(REG_FIFO_WR_PTR, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setFIFO_WR_PTR(uint8_t data) 
+{
+    uint8_t res[2] ;
+    res[0] = REG_FIFO_WR_PTR ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getOVF_COUNTER(void) 
+{
+    uint8_t data ;
+    readRegs(REG_OVF_COUNTER, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setOVF_COUNTER(uint8_t data) 
+{
+    uint8_t res[2] ;
+    res[0] = REG_OVF_COUNTER ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getFIFO_RD_PTR(void)
+{
+    uint8_t data ;
+    readRegs(REG_FIFO_RD_PTR, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setFIFO_RD_PTR(uint8_t data) 
+{
+    uint8_t res[2] ;
+    res[0] = REG_FIFO_RD_PTR ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getFIFO_DATA(void) 
+{
+    uint8_t data ;
+    readRegs(REG_FIFO_DATA, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setFIFO_DATA(uint8_t data) 
+{
+    uint8_t res[2] ;
+    res[0] = REG_FIFO_DATA ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getFIFO_CONFIG(void) 
+{
+    uint8_t data ;
+    readRegs(REG_FIFO_CONFIG, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setFIFO_CONFIG(uint8_t data) 
+{
+    uint8_t res[2] ;
+    res[0] = REG_FIFO_CONFIG ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getMODE_CONFIG(void)
+{
+    uint8_t data ;
+    readRegs(REG_MODE_CONFIG, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setMODE_CONFIG(uint8_t data) 
+{
+    uint8_t res[2] ;
+    res[0] = REG_MODE_CONFIG ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getSPO2_CONFIG(void)
+{
+    uint8_t data ;
+    readRegs(REG_SPO2_CONFIG, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setSPO2_CONFIG(uint8_t data)
+{
+    uint8_t res[2] ;
+    res[0] = REG_SPO2_CONFIG ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getLED1_PA(void)
+{
+    uint8_t data ;
+    readRegs(REG_LED1_PA, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setLED1_PA(uint8_t data)
+{
+    uint8_t res[2] ;
+    res[0] = REG_LED1_PA ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getLED2_PA(void)
+{
+    uint8_t data ;
+    readRegs(REG_LED2_PA, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setLED2_PA(uint8_t data)
+{
+    uint8_t res[2] ;
+    res[0] = REG_LED2_PA ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getLED3_PA(void)
+{
+    uint8_t data ;
+    readRegs(REG_LED3_PA, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setLED3_PA(uint8_t data)
+{
+    uint8_t res[2] ;
+    res[0] = REG_LED3_PA ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint8_t MAX30101::getPILOT_PA(void) 
+{
+    uint8_t data ;
+    readRegs(REG_PILOT_PA, &data, 1) ;
+    return( data ) ;
+}
+
+void    MAX30101::setPILOT_PA(uint8_t data)
+{
+    uint8_t res[2] ;
+    res[0] = REG_PILOT_PA ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+
+uint16_t MAX30101::getSLOT(void) 
+{
+    uint8_t res[2] ;
+    uint16_t data ;
+    readRegs(REG_SLOT_MSB, res, 2) ;
+    data = (res[0] << 8) | res[1] ;
+    return( data ) ;
+}
+
+void     MAX30101::setSLOT(uint16_t data) 
+{
+    uint8_t res[3] ;
+    res[0] = REG_SLOT_MSB ;
+    res[1] = (data >> 8) & 0xFF ;
+    res[2] = data & 0xFF ;
+    writeRegs(res, 3) ;
+}
+
+uint8_t  MAX30101::getTEMP_INT(void)  
+{
+    uint8_t data ;
+    readRegs(REG_TEMP_INT, &data, 1) ;
+    return( data ) ;
+}
+
+uint8_t  MAX30101::getTEMP_FRAM(void) 
+{
+    uint8_t data ;
+    readRegs(REG_TEMP_FRAC, &data, 1) ;
+    return( data ) ;
+}
+
+uint8_t  MAX30101::getTEMP_EN(void) 
+{
+    uint8_t data ;
+    readRegs(REG_TEMP_EN, &data, 1) ;
+    return( data ) ;
+}
+
+uint8_t  MAX30101::getPROX_INT_THR(void)  
+{
+    uint8_t data ;
+    readRegs(REG_PROX_INT_THR, &data, 1) ;
+    return( data ) ;
+}
+
+void     MAX30101::setPROX_INT_THR(uint8_t data)  
+{
+    uint8_t res[2] ;
+    res[0] = REG_PROX_INT_THR ;
+    res[1] = data ;
+    writeRegs(res, 2) ;
+}
+