Skip to content
Snippets Groups Projects
Unverified Commit 7f1f4aee authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

MAX444006: Implement setAmbientConfig

parent 480c55a5
No related branches found
No related tags found
No related merge requests found
Pipeline #65 failed
......@@ -69,10 +69,11 @@ class MAX44006 {
MAX44006(unsigned char const addr = 0x45) : address(addr), ambientConfig(TEMPEN) {}
uint8_t init();
bool init();
uint16_t getTemperature();
bool getLight(float *red, float *green, float *blue, float *clear, float *ir);
bool setAmbientConfig(AmbientConfig config);
};
extern MAX44006 max44006;
......
......@@ -365,9 +365,11 @@ int main(void)
#endif
#ifdef CONFIG_driver_max44006
unsigned char ret;
if ((ret = max44006.init()) != 0) {
kout << "MAX44006 Initialization failed: " << ret << endl;
if (!max44006.init()) {
kout << "MAX44006 Initialization failed" << endl;
}
if (!max44006.setAmbientConfig(max44006.AMBPGA_11)) {
kout << "MAX44006 setAmbientConfig failed" << endl;
}
#endif
......
......@@ -15,41 +15,53 @@
#include "arch.h"
uint8_t MAX44006::init()
bool MAX44006::init()
{
txbuf[0] = interruptStatusReg;
if (i2c.xmit(address, 1, txbuf, 1, rxbuf) != 0) {
return 1;
return false;
}
if (rxbuf[0] & ~PWRON) {
// reset sensor
txbuf[1] = 0x10;
if (i2c.xmit(address, 2, txbuf, 0, rxbuf) != 0) {
return 1;
return false;
}
arch.delay_ms(200);
if (i2c.xmit(address, 1, txbuf, 1, rxbuf) != 0) {
return 1;
return false;
}
if (rxbuf[0] & ~PWRON) {
return 2;
return false;
}
}
txbuf[0] = ambientConfigReg;
txbuf[1] = ambientConfig;
if (i2c.xmit(address, 2, txbuf, 0, rxbuf) != 0) {
return 1;
return false;
}
txbuf[0] = mainConfigReg;
txbuf[1] = MODE_10; // MODE = 10 -> Clear + RGB + IR measurement
if (i2c.xmit(address, 2, txbuf, 0, rxbuf) != 0) {
return 1;
return false;
}
return 0;
return true;
}
bool MAX44006::setAmbientConfig(AmbientConfig config)
{
txbuf[0] = ambientConfigReg;
txbuf[1] = config;
if (i2c.xmit(address, 2, txbuf, 0, rxbuf) != 0) {
return false;
}
ambientConfig = config;
return true;
}
uint16_t MAX44006::getTemperature()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment