Library for MAX30101, read/write functions for registers implemented.
Dependents: test_MAX30101 testSensor
Diff: MAX30101.cpp
- 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) ; +} +