summaryrefslogtreecommitdiff
path: root/src/driver
diff options
context:
space:
mode:
authorBirte Kristina Friesel <derf@finalrewind.org>2024-01-15 17:51:42 +0100
committerBirte Kristina Friesel <derf@finalrewind.org>2024-01-15 17:51:42 +0100
commit7f1f4aeee136c006ae16f4207eb7589af80e9d31 (patch)
tree974c3a261e264a2d51cde877986047a0b99ff12a /src/driver
parent480c55a52673f555ab774233fa482b700278cdd4 (diff)
MAX444006: Implement setAmbientConfig
Diffstat (limited to 'src/driver')
-rw-r--r--src/driver/max44006.cc28
1 files changed, 20 insertions, 8 deletions
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()