summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2022-05-15 16:14:44 +0200
committerDaniel Friesel <derf@finalrewind.org>2022-05-15 16:14:44 +0200
commit14e405f5152c99e3e2db9948a8cee780e1af04a3 (patch)
tree0fc3186d18e7307a2a0f3f10f5ef3b14021f88f9
parentc257eb1d7f455d79b8e59e0cb5081925ede83296 (diff)
scd4x.read(): indicate whether read was successful
-rw-r--r--include/driver/scd4x.h2
-rw-r--r--src/app/datalogger/main.cc21
-rw-r--r--src/driver/scd4x.cc12
3 files changed, 21 insertions, 14 deletions
diff --git a/include/driver/scd4x.h b/include/driver/scd4x.h
index d99c4fc..0a2924b 100644
--- a/include/driver/scd4x.h
+++ b/include/driver/scd4x.h
@@ -25,7 +25,7 @@ class SCD4x {
void startLowPower();
- void read();
+ bool read();
};
extern SCD4x scd4x;
diff --git a/src/app/datalogger/main.cc b/src/app/datalogger/main.cc
index bf34b10..5800b1b 100644
--- a/src/app/datalogger/main.cc
+++ b/src/app/datalogger/main.cc
@@ -189,14 +189,17 @@ void loop(void)
#endif
#ifdef CONFIG_driver_scd4x
- scd4x.read();
- kout << dec << "CO₂: " << scd4x.co2 << " ppm" << endl;
- kout << "Temperature: ";
- kout.printf_float(((175.0 * scd4x.rawTemperature) / 65536) - 45);
- kout << " °c" << endl;
- kout << "Humidity: ";
- kout.printf_float((100.0 * scd4x.rawHumidity) / 65536);
- kout << " %" << endl;
+ if (scd4x.read()) {
+ kout << dec << "CO₂: " << scd4x.co2 << " ppm" << endl;
+ kout << "Temperature: ";
+ kout.printf_float(((175.0 * scd4x.rawTemperature) / 65536) - 45);
+ kout << " °c" << endl;
+ kout << "Humidity: ";
+ kout.printf_float((100.0 * scd4x.rawHumidity) / 65536);
+ kout << " %" << endl;
+ } else {
+ kout << "SCD4x error" << endl;
+ }
#endif
#ifdef CONFIG_driver_veml6075
@@ -301,7 +304,9 @@ int main(void)
#endif
#ifdef CONFIG_driver_mpu9250
+ kout << "MPU9250 init" << endl;
mpu9250.init();
+ kout << "MPU9250 nineAxis" << endl;
mpu9250.nineAxis();
#endif
diff --git a/src/driver/scd4x.cc b/src/driver/scd4x.cc
index 3ad34a0..365cde8 100644
--- a/src/driver/scd4x.cc
+++ b/src/driver/scd4x.cc
@@ -32,16 +32,18 @@ void SCD4x::startLowPower()
i2c.xmit(address, 2, txbuf, 0, rxbuf);
}
-void SCD4x::read()
+bool SCD4x::read()
{
txbuf[0] = 0xec;
txbuf[1] = 0x05;
- if (i2c.xmit(address, 2, txbuf, 9, rxbuf) == 0) {
- co2 = (rxbuf[0] << 8) + rxbuf[1];
- rawTemperature = ((rxbuf[3] << 8) + rxbuf[4]);
- rawHumidity = (rxbuf[6] << 8) + rxbuf[7];
+ if (i2c.xmit(address, 2, txbuf, 9, rxbuf)) {
+ return false;
}
+ co2 = (rxbuf[0] << 8) + rxbuf[1];
+ rawTemperature = ((rxbuf[3] << 8) + rxbuf[4]);
+ rawHumidity = (rxbuf[6] << 8) + rxbuf[7];
+ return true;
}
SCD4x scd4x;