diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2024-01-15 17:51:42 +0100 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2024-01-15 17:51:42 +0100 |
commit | 7f1f4aeee136c006ae16f4207eb7589af80e9d31 (patch) | |
tree | 974c3a261e264a2d51cde877986047a0b99ff12a | |
parent | 480c55a52673f555ab774233fa482b700278cdd4 (diff) |
MAX444006: Implement setAmbientConfig
-rw-r--r-- | include/driver/max44006.h | 3 | ||||
-rw-r--r-- | src/app/datalogger/main.cc | 8 | ||||
-rw-r--r-- | src/driver/max44006.cc | 28 |
3 files changed, 27 insertions, 12 deletions
diff --git a/include/driver/max44006.h b/include/driver/max44006.h index 4aac90f..4b3a519 100644 --- a/include/driver/max44006.h +++ b/include/driver/max44006.h @@ -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; diff --git a/src/app/datalogger/main.cc b/src/app/datalogger/main.cc index 5e3208f..de0a782 100644 --- a/src/app/datalogger/main.cc +++ b/src/app/datalogger/main.cc @@ -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 diff --git a/src/driver/max44006.cc b/src/driver/max44006.cc index 3d8d206..6de2c4d 100644 --- a/src/driver/max44006.cc +++ b/src/driver/max44006.cc @@ -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() |