Max30101 pulse oximeter library

Revision:
6:30640433472a
Parent:
5:2927db6219fc
--- a/max30101.cpp	Wed Nov 22 14:43:43 2017 +0000
+++ b/max30101.cpp	Wed Nov 22 15:49:02 2017 +0000
@@ -10,7 +10,7 @@
 #include "max30101.h"
 #include "max30101_regs.h"
 
-MAX30101::MAX30101(I2C i2c, PinName enablePin): i2c(i2c), _enable(enablePin){
+MAX30101::MAX30101(I2C *i2c, PinName enablePin): i2c(i2c), _enable(enablePin){
     _enable = 0;
     i2cAddress = MAX_I2C_ADDRESS;
 }
@@ -28,7 +28,7 @@
     
     dataToSend[0] = regAddress;
     dataToSend[1] = *data;
-    success = i2c.write(i2cAddress & 0xFE, dataToSend, len + 1); // R/W bit is set low for a write command
+    success = i2c->write(i2cAddress & 0xFE, dataToSend, len + 1); // R/W bit is set low for a write command
     return success;
 }
 
@@ -36,8 +36,8 @@
     uint8_t success;    /* 0 on success (ack), non-0 on failure (nack) */
     char regAddr = regAddress;
     
-    i2c.write(i2cAddress & 0xFE, &regAddr, 1);               // R/W bit is set low for a write command
-    success = i2c.read(i2cAddress | 0x01, dataBuffer, len);     // R/W bit is set high for a read command
+    i2c->write(i2cAddress & 0xFE, &regAddr, 1);               // R/W bit is set low for a write command
+    success = i2c->read(i2cAddress | 0x01, dataBuffer, len);     // R/W bit is set high for a read command
     return success;
 }
 
@@ -110,3 +110,24 @@
     success = writeToReg((char)SP02_CONFIG_REG, &data, 1);
     return success;
 }
+
+void MAX30101::setupRedLED(uint8_t pulseInterval){
+    char data = 0x00;
+    data = 0x02;
+    writeToReg((char)MODE_CONFIG_REG, &data, 1);
+
+    data = (char)pulseInterval;
+    writeToReg((char)LED1_PA, &data, 1);
+        
+    data = 0b00011111;
+    configFifo(&data);
+    
+    data = 0b00000011;
+    writeToReg((char)SP02_CONFIG_REG, &data, 1);
+}
+
+void MAX30101::turnGreenLED(){
+    /*
+    TODO
+    */
+}