You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by je...@apache.org on 2019/06/19 09:25:41 UTC
[mynewt-core] branch master updated (d63ea13 -> 8528cdf)
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git.
from d63ea13 Merge pull request #1885 from mkiiskila/m33_coredump
new 2c4cebe sensors/bmp280: Fix shell oversample command
new defe36d sensors/bmp280: Dump command redone
new 68a726a sensors/bmp280: Fix write with bus driver enabled
new c84b1c7 sensors/bmp280: Add bus driver support to bmp280 cli
new 8528cdf sensor/creator: Add BMP280 bus driver support
The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
hw/drivers/sensors/bmp280/include/bmp280/bmp280.h | 1 +
hw/drivers/sensors/bmp280/src/bmp280.c | 15 ++
hw/drivers/sensors/bmp280/src/bmp280_shell.c | 181 +++++++++++++++-------
hw/drivers/sensors/bmp280/syscfg.yml | 3 +
hw/sensor/creator/src/sensor_creator.c | 35 ++++-
hw/sensor/creator/syscfg.yml | 31 ++++
6 files changed, 208 insertions(+), 58 deletions(-)
[mynewt-core] 05/05: sensor/creator: Add BMP280 bus driver support
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 8528cdf59c0d02f803e965b596ea35481bbd6b6f
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 12 17:17:49 2019 +0200
sensor/creator: Add BMP280 bus driver support
Now sensor creator can creat BPM280 devices for SPI and I2C
when bus driver is present.
---
hw/sensor/creator/src/sensor_creator.c | 35 ++++++++++++++++++++++++++++++++--
hw/sensor/creator/syscfg.yml | 31 ++++++++++++++++++++++++++++++
2 files changed, 64 insertions(+), 2 deletions(-)
diff --git a/hw/sensor/creator/src/sensor_creator.c b/hw/sensor/creator/src/sensor_creator.c
index c63fe04..2e26856 100644
--- a/hw/sensor/creator/src/sensor_creator.c
+++ b/hw/sensor/creator/src/sensor_creator.c
@@ -225,13 +225,35 @@ static struct icp101xx icp10114;
*#endif
*/
-#if MYNEWT_VAL(I2C_0) && MYNEWT_VAL(BMP280_OFB)
+#if MYNEWT_VAL(BMP280_OFB)
+#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
+#if MYNEWT_VAL(BMP280_OFB_I2C_NUM) >= 0
+static const struct bus_i2c_node_cfg bmp280_node_cfg = {
+ .node_cfg = {
+ .bus_name = MYNEWT_VAL(BMP280_OFB_BUS),
+ },
+ .addr = MYNEWT_VAL(BMP280_OFB_I2C_ADDR),
+ .freq = 400,
+};
+#endif
+#if MYNEWT_VAL(BMP280_OFB_SPI_NUM) >= 0
+struct bus_spi_node_cfg bmp280_node_cfg = {
+ .node_cfg.bus_name = MYNEWT_VAL(BME280_OFB_SPI_BUS),
+ .pin_cs = MYNEWT_VAL(BMP280_OFB_CS),
+ .mode = BUS_SPI_MODE_0,
+ .data_order = HAL_SPI_MSB_FIRST,
+ .freq = MYNEWT_VAL(BMP280_OFB_BAUDRATE),
+};
+#endif
+static struct sensor_itf bmp280_itf;
+#elif MYNEWT_VAL(I2C_0)
static struct sensor_itf i2c_0_itf_bmp = {
.si_type = SENSOR_ITF_I2C,
.si_num = 0,
.si_addr = BMP280_DFLT_I2C_ADDR
};
#endif
+#endif
#if MYNEWT_VAL(SPI_0_MASTER) && MYNEWT_VAL(BME280_OFB)
#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
@@ -1545,10 +1567,19 @@ sensor_dev_create(void)
#endif
#if MYNEWT_VAL(BMP280_OFB)
+#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
+#if MYNEWT_VAL(BMP280_OFB_I2C_NUM) >= 0
+ rc = bmp280_create_i2c_sensor_dev(&bmp280.i2c_node, "bmp280_0",
+ &bmp280_node_cfg, &bmp280_itf);
+#elif MYNEWT_VAL(BMP280_OFB_SPI_NUM) >= 0
+ rc = bmp280_create_spi_sensor_dev(&bmp280.spi_node, "bmp280_0",
+ &bmp280_node_cfg, &bmp280_itf);
+#endif
+#else
rc = os_dev_create((struct os_dev *) &bmp280, "bmp280_0",
OS_DEV_INIT_PRIMARY, 0, bmp280_init, (void *)&i2c_0_itf_bmp);
assert(rc == 0);
-
+#endif
rc = config_bmp280_sensor();
assert(rc == 0);
#endif
diff --git a/hw/sensor/creator/syscfg.yml b/hw/sensor/creator/syscfg.yml
index 756504d..c8d0c7d 100644
--- a/hw/sensor/creator/syscfg.yml
+++ b/hw/sensor/creator/syscfg.yml
@@ -67,6 +67,37 @@ syscfg.defs:
BMP280_OFB:
description: 'BMP280 is present'
value : 0
+ BMP280_OFB_BUS:
+ description: 'I2C or SPI interface used for BMP280'
+ value: '"i2c0"'
+ BMP280_OFB_I2C_NUM:
+ description: 'I2C interface used for BMP280'
+ value: -1
+ restrictions:
+ - '(BMP280_OFB == 0) ||
+ ((BMP280_OFB_I2C_NUM == 0) && (I2C_0 == 1)) ||
+ ((BMP280_OFB_I2C_NUM == 1) && (I2C_1 == 1)) ||
+ ((BMP280_OFB_I2C_NUM == 2) && (I2C_2 == 1)) ||
+ ((BMP280_OFB_I2C_NUM == -1))'
+ BMP280_OFB_SPI_NUM:
+ description: 'SPI interface used for ADXL345'
+ value: -1
+ restrictions:
+ - '(BMP280_OFB == 0) ||
+ ((BMP280_OFB_SPI_NUM == 0) && (SPI_0_MASTER == 1)) ||
+ ((BMP280_OFB_SPI_NUM == 1) && (SPI_1_MASTER == 1)) ||
+ ((BMP280_OFB_SPI_NUM == 2) && (SPI_2_MASTER == 1)) ||
+ ((BMP280_OFB_SPI_NUM == -1))'
+ BMP280_OFB_BAUDRATE:
+ description: 'BMP280 SPI speed'
+ value: 4000
+ BMP280_OFB_I2C_ADDR:
+ description: 'I2C address of BMP280 0x76 or 0x77'
+ value: 0x77
+ range: 0x76,0x77
+ BMP280_OFB_CS:
+ description: 'SPI CS pin for BMP280'
+ value:
TCS34725_OFB:
description: 'TCS34725 is present'
value : 0
[mynewt-core] 02/05: sensors/bmp280: Dump command redone
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit defe36d48e7896285a8845274b7ee7ffdf14e8cf
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 12 12:09:16 2019 +0200
sensors/bmp280: Dump command redone
Each register read was done inside assert() macro which is
not too good.
Having assert for shell command seems a little bit too drastic.
---
hw/drivers/sensors/bmp280/src/bmp280_shell.c | 88 ++++++++++++----------------
1 file changed, 39 insertions(+), 49 deletions(-)
diff --git a/hw/drivers/sensors/bmp280/src/bmp280_shell.c b/hw/drivers/sensors/bmp280/src/bmp280_shell.c
index 50634f2..e48f8d4 100644
--- a/hw/drivers/sensors/bmp280/src/bmp280_shell.c
+++ b/hw/drivers/sensors/bmp280/src/bmp280_shell.c
@@ -303,63 +303,53 @@ err:
return rc;
}
+static void
+bmp280_shell_dump_reg(const char *name, uint8_t addr)
+{
+ uint8_t val = 0;
+ int rc;
+
+ rc = bmp280_readlen(&g_sensor_itf, addr, &val, 1);
+ if (rc == 0) {
+ console_printf("0x%02X (%s): 0x%02X\n", addr, name, val);
+ } else {
+ console_printf("0x%02X (%s): failed (%d)\n", addr, name, rc);
+ }
+}
+
+#define DUMP_REG(name) bmp280_shell_dump_reg(#name, BMP280_REG_ADDR_ ## name)
+
static int
bmp280_shell_cmd_dump(int argc, char **argv)
{
- uint8_t val;
-
if (argc > 3) {
return bmp280_shell_err_too_many_args(argv[1]);
}
/* Dump all the register values for debug purposes */
- val = 0;
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_T1, &val, 1));
- console_printf("0x%02X (DIG_T1): 0x%02X\n", BMP280_REG_ADDR_DIG_T1, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_T2, &val, 1));
- console_printf("0x%02X (DIG_T2): 0x%02X\n", BMP280_REG_ADDR_DIG_T2, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_T3, &val, 1));
- console_printf("0x%02X (DIG_T3): 0x%02X\n", BMP280_REG_ADDR_DIG_T3, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_P1, &val, 1));
- console_printf("0x%02X (DIG_P1): 0x%02X\n", BMP280_REG_ADDR_DIG_P1, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_P2, &val, 1));
- console_printf("0x%02X (DIG_P2): 0x%02X\n", BMP280_REG_ADDR_DIG_P2, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_P3, &val, 1));
- console_printf("0x%02X (DIG_P3): 0x%02X\n", BMP280_REG_ADDR_DIG_P3, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_P4, &val, 1));
- console_printf("0x%02X (DIG_P4): 0x%02X\n", BMP280_REG_ADDR_DIG_P4, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_P5, &val, 1));
- console_printf("0x%02X (DIG_P5): 0x%02X\n", BMP280_REG_ADDR_DIG_P5, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_P6, &val, 1));
- console_printf("0x%02X (DIG_P6): 0x%02X\n", BMP280_REG_ADDR_DIG_P6, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_P7, &val, 1));
- console_printf("0x%02X (DIG_P7): 0x%02X\n", BMP280_REG_ADDR_DIG_P7, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_P8, &val, 1));
- console_printf("0x%02X (DIG_P8): 0x%02X\n", BMP280_REG_ADDR_DIG_P8, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_DIG_P9, &val, 1));
- console_printf("0x%02X (DIG_P9): 0x%02X\n", BMP280_REG_ADDR_DIG_P9, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_CHIPID, &val, 1));
- console_printf("0x%02X (CHIPID): 0x%02X\n", BMP280_REG_ADDR_CHIPID, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_VERSION, &val, 1));
- console_printf("0x%02X (VER): 0x%02X\n", BMP280_REG_ADDR_VERSION, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_STATUS, &val, 1));
- console_printf("0x%02X (STATUS): 0x%02X\n", BMP280_REG_ADDR_STATUS, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_CTRL_MEAS, &val, 1));
- console_printf("0x%02X (CTRL_MEAS): 0x%02X\n", BMP280_REG_ADDR_CTRL_MEAS, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_CONFIG, &val, 1));
- console_printf("0x%02X (CONFIG): 0x%02X\n", BMP280_REG_ADDR_CONFIG, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_PRESS_MSB, &val, 1));
- console_printf("0x%02X (PRESS MSB): 0x%02X\n", BMP280_REG_ADDR_PRESS_MSB, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_PRESS_LSB, &val, 1));
- console_printf("0x%02X (PRESS LSB): 0x%02X\n", BMP280_REG_ADDR_PRESS_LSB, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_PRESS_XLSB, &val, 1));
- console_printf("0x%02X (PRESS XLSB): 0x%02X\n", BMP280_REG_ADDR_PRESS_XLSB, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_TEMP_XLSB, &val, 1));
- console_printf("0x%02X (TEMP MSB): 0x%02X\n", BMP280_REG_ADDR_TEMP_MSB, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_TEMP_LSB, &val, 1));
- console_printf("0x%02X (TEMP LSB): 0x%02X\n", BMP280_REG_ADDR_TEMP_LSB, val);
- assert(0 == bmp280_readlen(&g_sensor_itf, BMP280_REG_ADDR_TEMP_XLSB, &val, 1));
- console_printf("0x%02X (TEMP XLSB): 0x%02X\n", BMP280_REG_ADDR_TEMP_XLSB, val);
+ DUMP_REG(DIG_T1);
+ DUMP_REG(DIG_T2);
+ DUMP_REG(DIG_T3);
+ DUMP_REG(DIG_P1);
+ DUMP_REG(DIG_P2);
+ DUMP_REG(DIG_P3);
+ DUMP_REG(DIG_P4);
+ DUMP_REG(DIG_P5);
+ DUMP_REG(DIG_P6);
+ DUMP_REG(DIG_P7);
+ DUMP_REG(DIG_P8);
+ DUMP_REG(DIG_P9);
+ DUMP_REG(CHIPID);
+ DUMP_REG(VERSION);
+ DUMP_REG(STATUS);
+ DUMP_REG(CTRL_MEAS);
+ DUMP_REG(CONFIG);
+ DUMP_REG(PRESS_MSB);
+ DUMP_REG(PRESS_LSB);
+ DUMP_REG(PRESS_XLSB);
+ DUMP_REG(TEMP_XLSB);
+ DUMP_REG(TEMP_LSB);
+ DUMP_REG(TEMP_XLSB);
return 0;
}
[mynewt-core] 03/05: sensors/bmp280: Fix write with bus driver
enabled
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 68a726a86f5442500854bf0a6cbe9857f7fffe6c
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 12 16:18:50 2019 +0200
sensors/bmp280: Fix write with bus driver enabled
All register definitions have MSB set.
For spi write this bit must be cleared.
Bus driver version of write was not clearing it now it is.
---
hw/drivers/sensors/bmp280/include/bmp280/bmp280.h | 1 +
hw/drivers/sensors/bmp280/src/bmp280.c | 15 +++++++++++++++
2 files changed, 16 insertions(+)
diff --git a/hw/drivers/sensors/bmp280/include/bmp280/bmp280.h b/hw/drivers/sensors/bmp280/include/bmp280/bmp280.h
index c486757..193c1d7 100644
--- a/hw/drivers/sensors/bmp280/include/bmp280/bmp280.h
+++ b/hw/drivers/sensors/bmp280/include/bmp280/bmp280.h
@@ -106,6 +106,7 @@ struct bmp280 {
struct bus_i2c_node i2c_node;
struct bus_spi_node spi_node;
};
+ bool node_is_spi;
#else
struct os_dev dev;
#endif
diff --git a/hw/drivers/sensors/bmp280/src/bmp280.c b/hw/drivers/sensors/bmp280/src/bmp280.c
index 1fe61c2..c383f91 100644
--- a/hw/drivers/sensors/bmp280/src/bmp280.c
+++ b/hw/drivers/sensors/bmp280/src/bmp280.c
@@ -87,6 +87,14 @@ static const struct sensor_driver g_bmp280_sensor_driver = {
.sd_set_config = bmp280_sensor_set_config,
};
+#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
+static bool
+bmp280_uses_spi(struct sensor_itf *itf)
+{
+ return ((struct bmp280 *)(itf->si_dev))->node_is_spi;
+}
+#endif
+
static int
bmp280_default_cfg(struct bmp280_cfg *cfg)
{
@@ -919,6 +927,9 @@ bmp280_writelen(struct sensor_itf *itf, uint8_t addr, uint8_t *payload,
#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
uint8_t data[2] = { addr };
+ if (bmp280_uses_spi(itf)) {
+ data[0] &= ~BMP280_SPI_READ_CMD_BIT;
+ }
do {
data[1] = *(payload++);
rc = bus_node_simple_write(itf->si_dev, data, 2);
@@ -1367,6 +1378,8 @@ bmp280_create_i2c_sensor_dev(struct bus_i2c_node *node, const char *name,
};
int rc;
+ ((struct bmp280 *)(node))->node_is_spi = false;
+
bus_node_set_callbacks((struct os_dev *)node, &cbs);
rc = bus_i2c_node_create(name, node, i2c_cfg, sensor_itf);
@@ -1384,6 +1397,8 @@ bmp280_create_spi_sensor_dev(struct bus_spi_node *node, const char *name,
};
int rc;
+ ((struct bmp280 *)(node))->node_is_spi = true;
+
bus_node_set_callbacks((struct os_dev *)node, &cbs);
rc = bus_spi_node_create(name, node, spi_cfg, sensor_itf);
[mynewt-core] 04/05: sensors/bmp280: Add bus driver support to
bmp280 cli
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit c84b1c7f8dc35fa4c0699c67061b21d4ca84a773
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 12 16:36:26 2019 +0200
sensors/bmp280: Add bus driver support to bmp280 cli
sensor_itf is not enough to access bmp280 when bus driver
is used.
This implementation uses it's own device instance not the
one that sensor_creator could created, reason for this is
that if there is a problem accessing device due to invalid
configuration, sensor_creator created device will assert
during creation when cofiguratio is verified.
---
hw/drivers/sensors/bmp280/src/bmp280_shell.c | 53 ++++++++++++++++++++++++++++
hw/drivers/sensors/bmp280/syscfg.yml | 3 ++
2 files changed, 56 insertions(+)
diff --git a/hw/drivers/sensors/bmp280/src/bmp280_shell.c b/hw/drivers/sensors/bmp280/src/bmp280_shell.c
index e48f8d4..3b0c0e5 100644
--- a/hw/drivers/sensors/bmp280/src/bmp280_shell.c
+++ b/hw/drivers/sensors/bmp280/src/bmp280_shell.c
@@ -24,6 +24,7 @@
#include "hal/hal_gpio.h"
#include "bmp280/bmp280.h"
#include "bmp280_priv.h"
+#include "bsp/bsp.h"
#if MYNEWT_VAL(BMP280_CLI)
@@ -37,12 +38,16 @@ static struct shell_cmd bmp280_shell_cmd_struct = {
.sc_cmd_func = bmp280_shell_cmd
};
+#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
+static struct sensor_itf g_sensor_itf;
+#else
static struct sensor_itf g_sensor_itf = {
.si_type = MYNEWT_VAL(BMP280_SHELL_ITF_TYPE),
.si_num = MYNEWT_VAL(BMP280_SHELL_ITF_NUM),
.si_cs_pin = MYNEWT_VAL(BMP280_SHELL_CSPIN),
.si_addr = MYNEWT_VAL(BMP280_SHELL_ITF_ADDR)
};
+#endif
static int
bmp280_shell_err_too_many_args(char *cmd_name)
@@ -399,11 +404,59 @@ bmp280_shell_cmd(int argc, char **argv)
return bmp280_shell_err_unknown_arg(argv[1]);
}
+#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
+
+#if MYNEWT_VAL(BMP280_SHELL_ITF_TYPE) == SENSOR_ITF_I2C
+struct bmp280 bmp280_raw;
+
+static const struct bus_i2c_node_cfg bmp280_raw_cfg = {
+ .node_cfg = {
+ .bus_name = MYNEWT_VAL(BMP280_SHELL_ITF_BUS),
+ },
+ .addr = MYNEWT_VAL(BMP280_SHELL_ITF_ADDR),
+ .freq = 400,
+};
+#elif MYNEWT_VAL(BMP280_SHELL_ITF_TYPE) == SENSOR_ITF_SPI
+struct bmp280 bmp280_raw = {
+ .node_is_spi = true,
+};
+
+static const struct bus_spi_node_cfg bmp280_raw_cfg = {
+ .node_cfg = {
+ .bus_name = MYNEWT_VAL(BMP280_SHELL_ITF_BUS),
+ },
+ .pin_cs = MYNEWT_VAL(BMP280_SHELL_CSPIN),
+ .data_order = BUS_SPI_DATA_ORDER_MSB,
+ .mode = BUS_SPI_MODE_0,
+ .freq = 4000,
+};
+#endif
+
+#endif
+
int
bmp280_shell_init(void)
{
int rc;
+#if MYNEWT_VAL(BUS_DRIVER_PRESENT)
+ struct os_dev *dev = NULL;
+
+ g_sensor_itf.si_dev = (struct os_dev *)&bmp280_raw;
+#if MYNEWT_VAL(BMP280_SHELL_ITF_TYPE) == SENSOR_ITF_I2C
+ rc = bus_i2c_node_create("bmp280_raw", &bmp280_raw.i2c_node,
+ &bmp280_raw_cfg, &g_sensor_itf);
+#elif MYNEWT_VAL(BMP280_SHELL_ITF_TYPE) == SENSOR_ITF_SPI
+ rc = bus_spi_node_create("bmp280_raw", &bmp280_raw.spi_node,
+ &bmp280_raw_cfg, &g_sensor_itf);
+#endif
+ if (rc == 0) {
+ dev = os_dev_open("bmp280_raw", 0, NULL);
+ }
+ if (rc != 0 || dev == NULL) {
+ console_printf("Failed to create bmp280_raw device\n");
+ }
+#endif
rc = shell_cmd_register(&bmp280_shell_cmd_struct);
SYSINIT_PANIC_ASSERT(rc == 0);
diff --git a/hw/drivers/sensors/bmp280/syscfg.yml b/hw/drivers/sensors/bmp280/syscfg.yml
index 8265acd..263a6eb 100644
--- a/hw/drivers/sensors/bmp280/syscfg.yml
+++ b/hw/drivers/sensors/bmp280/syscfg.yml
@@ -27,6 +27,9 @@ syscfg.defs:
BMP280_SHELL_ITF_TYPE:
description: 'Shell interface type for the BMP280'
value: 1
+ BMP280_SHELL_ITF_BUS:
+ description: 'Shell interface bus for the BMP280 when bus driver is used'
+ value: '"i2c0"'
BMP280_SHELL_CSPIN:
description: 'CS pin for BMP280'
value : -1
[mynewt-core] 01/05: sensors/bmp280: Fix shell oversample command
Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 2c4cebe58b2fde9d9809d6bcda488268cc1880be
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Wed Jun 12 12:03:23 2019 +0200
sensors/bmp280: Fix shell oversample command
Due to various incorrect condition checking oversample
command was broken.
- checking argc > 3 made setting value impossible
(now it checks against 4).
- querying oversampling with 5 6 argument never read any values
from device since driver expected bit mask instead of bit position.
- now 'bmp280 oversample' will print both pressure and temperature
settings.
---
hw/drivers/sensors/bmp280/src/bmp280_shell.c | 40 +++++++++++++++++++++++-----
1 file changed, 33 insertions(+), 7 deletions(-)
diff --git a/hw/drivers/sensors/bmp280/src/bmp280_shell.c b/hw/drivers/sensors/bmp280/src/bmp280_shell.c
index 26dbb9d..50634f2 100644
--- a/hw/drivers/sensors/bmp280/src/bmp280_shell.c
+++ b/hw/drivers/sensors/bmp280/src/bmp280_shell.c
@@ -160,17 +160,43 @@ bmp280_shell_cmd_oversample(int argc, char **argv)
uint8_t oversample;
uint32_t type;
- if (argc > 3) {
+ if (argc > 4) {
return bmp280_shell_err_too_many_args(argv[1]);
}
- /* Display the oversample */
- if (argc == 3) {
- val = parse_ll_bounds(argv[2], 4, 8, &rc);
+ /* Display the oversampling */
+ if (argc == 2) {
+ rc = bmp280_get_oversample(&g_sensor_itf,
+ SENSOR_TYPE_AMBIENT_TEMPERATURE, &oversample);
+ if (rc == 0) {
+ if (oversample == 0) {
+ console_printf("Temperature measurement disabled\n");
+ } else {
+ console_printf("Temperature oversampling %u (x%u)\n",
+ oversample, 1U << (oversample - 1));
+ }
+ } else {
+ console_printf("Error reading temperature oversampling %d\n", rc);
+ }
+ rc = bmp280_get_oversample(&g_sensor_itf, SENSOR_TYPE_PRESSURE,
+ &oversample);
+ if (rc == 0) {
+ if (oversample == 0) {
+ console_printf("Pressure measurement disabled\n");
+ } else {
+ console_printf("Pressure oversampling %u (x%u)\n",
+ oversample, 1U << (oversample - 1));
+ }
+ } else {
+ console_printf("Error reading pressure oversampling %d\n", rc);
+ }
+ } else if (argc == 3) {
+ /* Display the oversample */
+ val = (uint8_t)parse_ll_bounds(argv[2], 5, 6, &rc);
if (rc) {
return bmp280_shell_err_invalid_arg(argv[2]);
}
- rc = bmp280_get_oversample(&g_sensor_itf, val, &oversample);
+ rc = bmp280_get_oversample(&g_sensor_itf, 1U << val, &oversample);
if (rc) {
goto err;
}
@@ -179,12 +205,12 @@ bmp280_shell_cmd_oversample(int argc, char **argv)
/* Update the oversampling */
if (argc == 4) {
- val = parse_ll_bounds(argv[2], 4, 8, &rc);
+ val = (uint8_t)parse_ll_bounds(argv[2], 5, 6, &rc);
if (rc) {
return bmp280_shell_err_invalid_arg(argv[2]);
}
- type = val;
+ type = 1U << val;
val = parse_ll_bounds(argv[3], 0, 5, &rc);
if (rc) {