Library for MAX30101, read/write functions for registers implemented.
Dependents: test_MAX30101 testSensor
MAX30101.h
- Committer:
- Rhyme
- Date:
- 2017-03-27
- Revision:
- 2:c465a8d44b9a
- Parent:
- 1:fc677d82d0f1
- Child:
- 3:d28dcc8fe74d
File content as of revision 2:c465a8d44b9a:
/** * MAX30101 * High-Sensitivity Pulse Oximeter and * Heart-Rate Sensor for Wearable Health */ #ifndef _MAX30101_H_ #define _MAX30101_H_ class MAX30101 { public: /** * MAX30101 constructor * * @param sda SDA pin * @param scl SCL pin * @param addr 7bit address of the I2C peripheral */ MAX30101(PinName sda, PinName scl, int addr) ; ~MAX30101() ; uint8_t getID(void) ; uint8_t getRev(void) ; uint16_t getIntStatus(void) ; uint16_t getIntEnable(void) ; void setIntEnable(uint16_t mask) ; uint8_t getFIFO_WR_PTR(void) ; void setFIFO_WR_PTR(uint8_t data) ; uint8_t getOVF_COUNTER(void) ; void setOVF_COUNTER(uint8_t data) ; uint8_t getFIFO_RD_PTR(void) ; void setFIFO_RD_PTR(uint8_t data) ; uint8_t getFIFO_DATA(void) ; void setFIFO_DATA(uint8_t data) ; uint8_t getFIFO_CONFIG(void) ; void setFIFO_CONFIG(uint8_t data) ; uint8_t getMODE_CONFIG(void) ; void setMODE_CONFIG(uint8_t data) ; uint8_t getSPO2_CONFIG(void) ; void setSPO2_CONFIG(uint8_t data) ; uint8_t getLED1_PA(void) ; void setLED1_PA(uint8_t data) ; uint8_t getLED2_PA(void) ; void setLED2_PA(uint8_t data) ; uint8_t getLED3_PA(void) ; void setLED3_PA(uint8_t data) ; uint8_t getPILOT_PA(void) ; void setPILOT_PA(uint8_t data) ; uint16_t getSLOT(void) ; void setSLOT(uint16_t data) ; uint8_t getTEMP_INT(void) ; uint8_t getTEMP_FRAC(void) ; uint8_t getTEMP_EN(void) ; /* ? */ void setTEMP_EN(void) ; float getTEMP(void) ; uint8_t getPROX_INT_THR(void) ; void setPROX_INT_THR(uint8_t data) ; void clearFIFO(void) ; uint32_t readFIFO(void) ; void reset(void) ; /* * some member functions here (yet to be written) */ private: I2C m_i2c; int m_addr; void readRegs(int addr, uint8_t *data, int len) ; void writeRegs(uint8_t *data, int len) ; } ; /* bits of Interrupt Status register */ /* In this class Interrupt Status 1 and * Interrupt Status 2 are combined to be a uint16_t */ #define INT_ST_A_FULL 0x8000 /* FIFO Almost Full Flag */ #define INT_ST_PPG_RGY 0x4000 /* New FIFO Data Ready */ #define INT_ST_ALC_OVF 0x2000 /* Ambient Light Cancellation Overflow */ #define INT_ST_PROX_INT 0x1000 /* Proximity Threshold Triggered */ #define INT_ST_PWR_RDY 0x0100 /* Power Ready Flag */ #define INT_ST_DIE_TEMP_RDY 0x0002 /* Internal Temperature Ready Flag */ /* bits of Interrupt Enable register */ #define INT_EN_A_FULL 0x8000 /* FIFO Almost Full Flag */ #define INT_EN_PPG_RGY 0x4000 /* New FIFO Data Ready */ #define INT_EN_ALC_OVF 0x2000 /* Ambient Light Cancellation Overflow */ #define INT_EN_PROX_INT 0x1000 /* Proximity Threshold Triggered */ #define INT_EN_DIE_TEMP_RDY 0x0002 /* Internal Temperature Ready Flag */ /* Mode configuration bits */ #define MODE_HR 0x02 /* Heart Rate mode */ #define MODE_SPO2 0x03 /* SpO2 mode */ #define MODE_MULTI_LED 0x07 /* Multi-LED mode */ #define MODE_RESET 0x40 /* Reset Control, this bit is auto clear */ #define MODE_SHDN 0x80 /* Shutdown Control */ #endif /* _MAX30101_H_ */