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_ */