Some dev changes

- Only have 1 baro
- Add MPU9250 beginnings
- print type of baro
- add i2c_dumpregs() to the i2c_scanner()
This commit is contained in:
Pim van Pelt
2018-05-13 12:53:18 +02:00
parent e6f02daa60
commit 449d51aae8

View File

@ -28,9 +28,11 @@
#include <math.h> #include <math.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#define I2CBUSNR 5 #define I2CBUSNR 7
static void i2c_scanner(struct mgos_i2c *i2c) { bool i2c_dumpregs(struct mgos_i2c *i2c, uint8_t i2caddr);
static void i2c_scanner(struct mgos_i2c *i2c, bool dumpregs) {
int i; int i;
if (!i2c) { if (!i2c) {
@ -43,11 +45,11 @@ static void i2c_scanner(struct mgos_i2c *i2c) {
ret = mgos_i2c_read(i2c, i, NULL, 0, true); ret = mgos_i2c_read(i2c, i, NULL, 0, true);
if (ret) { if (ret) {
LOG(LL_INFO, ("I2C Address 0x%02x %s", i, ret ? "true" : "false")); LOG(LL_INFO, ("I2C Address 0x%02x %s", i, ret ? "true" : "false"));
if (dumpregs) i2c_dumpregs(i2c, i);
} }
} }
} }
bool i2c_dumpregs(struct mgos_i2c *i2c, uint8_t i2caddr);
bool i2c_dumpregs(struct mgos_i2c *i2c, uint8_t i2caddr) { bool i2c_dumpregs(struct mgos_i2c *i2c, uint8_t i2caddr) {
uint16_t reg; uint16_t reg;
int value; int value;
@ -169,7 +171,7 @@ static bool do_baro(struct mgos_barometer *sensor) {
if (!mgos_barometer_get_temperature(sensor, &temperature)) if (!mgos_barometer_get_temperature(sensor, &temperature))
temperature=NAN; temperature=NAN;
LOG(LL_INFO, ("temperature=%.2fC pressure=%.0fPa", temperature, pressure)); LOG(LL_INFO, ("type=%s temperature=%.2fC pressure=%.0fPa", mgos_barometer_get_device_name(sensor), temperature, pressure));
return true; return true;
} }
@ -182,7 +184,7 @@ int main(int argc, char **argv, char **environ) {
struct mgos_mcp9808 *mcp9808 = NULL; struct mgos_mcp9808 *mcp9808 = NULL;
struct mgos_ccs811 * ccs811 = NULL; struct mgos_ccs811 * ccs811 = NULL;
struct mgos_mpu9250 *mpu9250 = NULL; struct mgos_mpu9250 *mpu9250 = NULL;
struct mgos_barometer *baro1 = NULL, *baro2 = NULL; struct mgos_barometer *baro = NULL;
if (!mgos_i2c_open(I2CBUSNR)) { if (!mgos_i2c_open(I2CBUSNR)) {
LOG(LL_ERROR, ("Cannot open I2C bus %u", I2CBUSNR)); LOG(LL_ERROR, ("Cannot open I2C bus %u", I2CBUSNR));
@ -193,7 +195,7 @@ int main(int argc, char **argv, char **environ) {
return -2; return -2;
} }
i2c_scanner(i2c); i2c_scanner(i2c, true);
/* /*
* if (!(sht31 = mgos_sht31_create(i2c, 0x44))) * if (!(sht31 = mgos_sht31_create(i2c, 0x44)))
@ -208,7 +210,7 @@ int main(int argc, char **argv, char **environ) {
* LOG(LL_ERROR, ("Cannot create CCS811 device")); * LOG(LL_ERROR, ("Cannot create CCS811 device"));
*/ */
/*
if (!(mpu9250 = mgos_mpu9250_create(i2c, 0x68))) { if (!(mpu9250 = mgos_mpu9250_create(i2c, 0x68))) {
LOG(LL_ERROR, ("Cannot create MPU9250 device")); LOG(LL_ERROR, ("Cannot create MPU9250 device"));
} else { } else {
@ -217,17 +219,11 @@ int main(int argc, char **argv, char **environ) {
mgos_mpu9250_set_magnetometer_scale(mpu9250, SCALE_14_BITS); mgos_mpu9250_set_magnetometer_scale(mpu9250, SCALE_14_BITS);
mgos_mpu9250_set_magnetometer_speed(mpu9250, MAG_100_HZ); mgos_mpu9250_set_magnetometer_speed(mpu9250, MAG_100_HZ);
} }
*/
if (!(baro1=mgos_barometer_create_i2c(i2c, 0x60, BARO_MPL3115))) {
LOG(LL_ERROR, ("Cannot create barometer"));
} else {
mgos_barometer_set_cache_ttl(baro1, 1000);
}
if (!(baro2=mgos_barometer_create_i2c(i2c, 0x76, BARO_BME280))) { if (!(baro=mgos_barometer_create_i2c(i2c, 0x76, BARO_BME280))) {
LOG(LL_ERROR, ("Cannot create barometer")); LOG(LL_ERROR, ("Cannot create barometer"));
} else { } else {
mgos_barometer_set_cache_ttl(baro2, 1000); mgos_barometer_set_cache_ttl(baro, 1000);
} }
for (;;) { for (;;) {
@ -237,8 +233,7 @@ int main(int argc, char **argv, char **environ) {
do_mcp9808(mcp9808); do_mcp9808(mcp9808);
do_ccs811(ccs811); do_ccs811(ccs811);
do_mpu9250(mpu9250); do_mpu9250(mpu9250);
do_baro(baro1); do_baro(baro);
do_baro(baro2);
sleep(1); sleep(1);
} }
@ -248,8 +243,7 @@ int main(int argc, char **argv, char **environ) {
mgos_mcp9808_destroy(&mcp9808); mgos_mcp9808_destroy(&mcp9808);
mgos_ccs811_destroy(&ccs811); mgos_ccs811_destroy(&ccs811);
mgos_mpu9250_destroy(&mpu9250); mgos_mpu9250_destroy(&mpu9250);
mgos_barometer_destroy(&baro1); mgos_barometer_destroy(&baro);
mgos_barometer_destroy(&baro2);
return 0; return 0;
(void)argc; (void)argc;