Max30101 pulse oximeter library
Diff: max30101.cpp
- 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, ®Addr, 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, ®Addr, 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 + */ +}