Library for MAX30101, read/write functions for registers implemented.
Dependents: test_MAX30101 testSensor
Diff: MAX30101.h
- Revision:
- 4:c6761ad52524
- Parent:
- 3:d28dcc8fe74d
- Child:
- 6:8fbe6e6eeff1
--- a/MAX30101.h Mon Mar 27 05:40:30 2017 +0000 +++ b/MAX30101.h Mon Mar 27 07:10:39 2017 +0000 @@ -1,10 +1,10 @@ +#ifndef _MAX30101_H_ +#define _MAX30101_H_ /** * MAX30101 * High-Sensitivity Pulse Oximeter and * Heart-Rate Sensor for Wearable Health */ -#ifndef _MAX30101_H_ -#define _MAX30101_H_ class MAX30101 { @@ -18,6 +18,9 @@ */ MAX30101(PinName sda, PinName scl, int addr) ; + /** + * MAX30101 destructor + */ ~MAX30101() ; /** @@ -31,42 +34,251 @@ * @returns REV_ID */ uint8_t getRev(void) ; + +/** + * Get interrupt status + * @returns interrupt Status 1 as MSB and interrupt Status 2 as LSB + */ uint16_t getIntStatus(void) ; + +/** + * Get interrupt enable + * @returns interrupt Enable 1 as MSB and interrupt Status 2 as LSB + */ uint16_t getIntEnable(void) ; + +/** + * Set interrupt enable + * @param mask uint16_t MSB for Enable 1 and LSB for Enable 2 + */ void setIntEnable(uint16_t mask) ; + +/** + * Get FIFO Write Pointer + * @returns FIFO_WR_PTR + */ uint8_t getFIFO_WR_PTR(void) ; + +/** + * Set FIFO Write Pointer + * @param data uint8_t FIFO_WR_PTR[4:0] + */ void setFIFO_WR_PTR(uint8_t data) ; + +/** + * Get FIFO Overflow Counter + * @returns OVF_COUNTER + */ uint8_t getOVF_COUNTER(void) ; + +/** + * Set FIFO Overflow Counter + * @param data uint8_t OVF_COUNTER[4:0] + */ void setOVF_COUNTER(uint8_t data) ; + +/** + * Get FIFO Read Pointer + * @returns FIFO_RD_PTR + */ uint8_t getFIFO_RD_PTR(void) ; + +/** + * Set FIFO Read Pointer + * @param data uint8_t FIFO_RD_PTR[4:0] + */ void setFIFO_RD_PTR(uint8_t data) ; + +/** + * Get FIFO Data + * @returns FIFO_DATA + */ uint8_t getFIFO_DATA(void) ; + +/** + * Set FIFO Data + * @param FIFO_DATA[7:0] + */ void setFIFO_DATA(uint8_t data) ; + +/** + * Get FIFO Confuguraion + * @returns FIFO_CONFIG + */ uint8_t getFIFO_CONFIG(void) ; + +/** + * Set FIFO Configuration + * @param data uint8_t + * @note bit[7:5] -> SMP_AVE[2:0] + * @note bit[4] -> FIFO_ROLLOVER_EN + * @note bit[3:0] -> FIFO_A_FULL[3:0] + */ void setFIFO_CONFIG(uint8_t data) ; + +/** + * Get MODE Configuration + * @returns MODE_CONFIG + */ uint8_t getMODE_CONFIG(void) ; + +/** + * Set MODE Configuration + * @param data uint8_t + * @note bit[7] Shutdown Control (SHDN) + * @note bit[6] Reset Control (RESET) + * @note bit[5:3] (reserved) + * @note bit[2:0] Mode Control (MODE) + */ void setMODE_CONFIG(uint8_t data) ; + +/** + * Get SpO2 Configuration + * @returns SPO2_CONFIG + */ uint8_t getSPO2_CONFIG(void) ; + +/** + * Set SpO2 Configuration + * @param data uint8_t + * @note bit[7] (reserved) + * @note bit[6:5] SpO2 ADC Range Control (SPO2_ADC_RGE[1:0]) + * @note bit[4:2] SpO2 Sample Rate Control (SPO2_SR[2:0]) + * @note bit[1:0] LED Pulse Width Control (LED_PW[1:0]) + */ void setSPO2_CONFIG(uint8_t data) ; + +/** + * Get LED1 Pulse Amplitude + * @returns LED1_PA + */ uint8_t getLED1_PA(void) ; + +/** + * Set LED1 Pulse Amplitude + * @param data uint8_t LED1_PA[7:0] + */ void setLED1_PA(uint8_t data) ; + +/** + * Get LED2 Pulse Amplitude + * @returns LED2_PA + */ uint8_t getLED2_PA(void) ; + +/** + * Set LED2 Pulse Amplitude + * @param data uint8_t LED2_PA[7:0] + */ void setLED2_PA(uint8_t data) ; + +/** + * Get LED3 Pulse Amplitude + * @returns LED3_PA + */ uint8_t getLED3_PA(void) ; + +/** + * Set LED3 Pulse Amplitude + * @param data uint8_t LED3_PA[7:0] + */ void setLED3_PA(uint8_t data) ; + +/** + * Get Proximity Mode LED Pulse Amplitude + * @returns PILOT_PA + */ uint8_t getPILOT_PA(void) ; + +/** + * Set Proximity Mode LED Pulse Amplitude + * @param data uint8_t PILOT_PA[7:0] + */ void setPILOT_PA(uint8_t data) ; + +/** + * Get Multi-LED Mode Control Registers + * @returns SLOT2, SLOT1, SLOT4, SLOT3 combined as uint16_t + */ uint16_t getSLOT(void) ; + +/** + * Set Multi-LED Mode Control Registers + * @param data uint16_t + * @note bit[15] (reserved) + * @note bit[14:12] SLOT2[2:0] + * @note bit[11] (reserved) + * @note bit[10:8] SLOT1[2:0] + * @note bit[7] (reserved) + * @note bit[6:4] SLOT4[2:0] + * @note bit[3] (reserved) + * @note bit[2:0] SLOT3[2:0] + */ void setSLOT(uint16_t data) ; + +/** + * Get Temperature Data (Integer part) + * @returns TINT + */ uint8_t getTEMP_INT(void) ; + +/** + * Get Temperature Data (Fraction part) + * @returns TFRAC + */ uint8_t getTEMP_FRAC(void) ; -uint8_t getTEMP_EN(void) ; /* ? */ -void setTEMP_EN(void) ; + +/** + * Get Die Temperature Configure + * @returns TEMP_EN + */ +uint8_t getTEMP_EN(void) ; + +/** + * Get Temperature + * @returns temperature as a float + */ float getTEMP(void) ; + +/** + * Get Proximity Mode Interrupt Threshold + * @returns PROX_INT_THR + */ uint8_t getPROX_INT_THR(void) ; + +/** + * Set Proximity Mode Interrupt Threshold + * @param data uint8_t PROX_INT_THRESH[7:0] + */ void setPROX_INT_THR(uint8_t data) ; + +/** + * Clear FIFO + */ void clearFIFO(void) ; + +/** + * Read FIFO + * @returns FIFO data as uint32_t + * @note FIFO data is always a 3-bytes data + * @note byte1[1:0] : FIFO_DATA[17]-FIFO_DATA[16] + * @note byte2[7:0] : FIFO_DATA[15]-FIFO_DATA[8] + * @note byte3[7:0] : FIFO_DATA[7]-FIFO_DATA[0] + * @note The data is left aligned, so FIFO_DATA[17] + * @note is always MSB, although the data length + * @note can be 18-bit ~ 15-bit * FIFO data is always a 3-bytes data + * @note byte1[1:0] : FIFO_DATA[17]-FIFO_DATA[16] + * @note byte2[7:0] : FIFO_DATA[15]-FIFO_DATA[8] + * @note byte3[7:0] : FIFO_DATA[7]-FIFO_DATA[0] + * @note The data is left aligned, so FIFO_DATA[17] + * @note is always MSB, although the data length + * @note can be 18-bit ~ 15-bit + */ uint32_t readFIFO(void) ; + +/** + * Reset + */ void reset(void) ; /*