From 8911be0f320df6ad457783058df1365eec8ede06 Mon Sep 17 00:00:00 2001 From: William Clark Date: Wed, 22 Nov 2023 11:48:03 +0000 Subject: [PATCH] user-provided 'sleep' func, for targets without usleep() --- bme680.c | 7 ++----- bme680.h | 1 + example/continuous.c | 5 +++++ example/iterate_setpoint.c | 5 +++++ i2c.c | 6 ++++++ main.c | 4 ++++ spi.c | 6 ++++++ 7 files changed, 29 insertions(+), 5 deletions(-) diff --git a/bme680.c b/bme680.c index 6d845d4..22cbdd6 100644 --- a/bme680.c +++ b/bme680.c @@ -1,7 +1,4 @@ -#define _DEFAULT_SOURCE - #include -#include #include "bme680.h" #include "registers.h" @@ -147,7 +144,7 @@ int bme680_reset(bme680_t *bme680) { } ret = bme680->dev.write(reg, magic); - usleep(2000); /* sleep for 2 ms */ + bme680->dev.sleep(2000); /* sleep for 2 ms */ return ret; } @@ -215,7 +212,7 @@ int bme680_poll(bme680_t *bme680) { do { - usleep(5000); /* 5 ms */ + bme680->dev.sleep(5000); /* 5 ms */ err |= read_dev(bme680, REG_MEAS_STATUS, &meas_status, 1); gas_measuring = (meas_status >> 6) & 1; any_measuring = (meas_status >> 5) & 1; diff --git a/bme680.h b/bme680.h index 87b1865..2fff9f0 100644 --- a/bme680.h +++ b/bme680.h @@ -50,6 +50,7 @@ struct bme680_dev { int (*init) (void); int (*read) (uint8_t reg, uint8_t *dst, uint32_t size); int (*write) (uint8_t reg, uint8_t value); + int (*sleep) (uint32_t dur_ms); int (*deinit) (void); }; diff --git a/example/continuous.c b/example/continuous.c index dcaab7a..f9372a1 100644 --- a/example/continuous.c +++ b/example/continuous.c @@ -1,3 +1,6 @@ +/* for usleep() */ +#define _DEFAULT_SOURCE + #include #include @@ -23,6 +26,8 @@ int main(void) { bme680.dev.write = spi_write; bme680.dev.deinit = spi_deinit; + bme680.dev.sleep = usleep; + mode = BME680_MODE_FLOAT | BME680_SPI | BME680_ENABLE_GAS; if (bme680_init(&bme680, mode) != 0) { diff --git a/example/iterate_setpoint.c b/example/iterate_setpoint.c index 705b46b..9798d55 100644 --- a/example/iterate_setpoint.c +++ b/example/iterate_setpoint.c @@ -1,3 +1,6 @@ +/* for usleep() */ +#define _DEFAULT_SOURCE + #include #include @@ -28,6 +31,8 @@ int main(void) { bme680.dev.write = spi_write; bme680.dev.deinit = spi_deinit; + bme680.dev.sleep = usleep; + mode = BME680_MODE_FLOAT | BME680_SPI | BME680_ENABLE_GAS; if (bme680_init(&bme680, mode) != 0) { diff --git a/i2c.c b/i2c.c index 57f65d6..6e8e22c 100644 --- a/i2c.c +++ b/i2c.c @@ -1,3 +1,9 @@ +/* + +Example I2C use on linux/raspberry pi + +*/ + #include #include #include diff --git a/main.c b/main.c index 28b1dea..6b3d181 100644 --- a/main.c +++ b/main.c @@ -1,3 +1,5 @@ +/* for usleep() */ +#define _DEFAULT_SOURCE #include #include @@ -28,6 +30,8 @@ int main(void) { bme680.dev.write = spi_write; bme680.dev.deinit = spi_deinit; + bme680.dev.sleep = usleep; + /* 2. set the device mode */ mode = BME680_MODE_FLOAT | BME680_SPI | BME680_ENABLE_GAS; /* BME680_MODE_INT | BME680_I2C; */ diff --git a/spi.c b/spi.c index 5e31024..48b88c6 100644 --- a/spi.c +++ b/spi.c @@ -1,3 +1,9 @@ +/* + +Example SPI use on linux/raspberry pi + +*/ + #include #include #include