Adding lsm303dlhc test code to slinky - Adding support for arduino_zero - Changing shell output to be integer instead of float since baslibc does not support printing float. - Using I2C_5 to talk to LSM303 on the arduino(Device driver creation required in the bsp)
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/d983810d Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/d983810d Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/d983810d Branch: refs/heads/develop Commit: d983810dbded549a3f2e9cebe631ac1dc2686a5f Parents: 2681044 Author: Vipul Rahane <[email protected]> Authored: Tue Jan 24 18:25:45 2017 -0800 Committer: Vipul Rahane <[email protected]> Committed: Tue Jan 24 18:25:45 2017 -0800 ---------------------------------------------------------------------- apps/slinky/pkg.yml | 1 + apps/slinky/src/main.c | 46 +++++++++++++++++--- .../lsm303dlhc/include/lsm303dlhc/lsm303dlhc.h | 1 + hw/sensor/src/sensor_shell.c | 6 +-- 4 files changed, 46 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/d983810d/apps/slinky/pkg.yml ---------------------------------------------------------------------- diff --git a/apps/slinky/pkg.yml b/apps/slinky/pkg.yml index 52a08ef..8515446 100644 --- a/apps/slinky/pkg.yml +++ b/apps/slinky/pkg.yml @@ -32,6 +32,7 @@ pkg.deps: - kernel/os - hw/sensor - hw/drivers/sensors/sim + - hw/drivers/sensors/lsm303dlhc - boot/bootutil - sys/shell - sys/config http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/d983810d/apps/slinky/src/main.c ---------------------------------------------------------------------- diff --git a/apps/slinky/src/main.c b/apps/slinky/src/main.c index 27d6177..cd585a4 100755 --- a/apps/slinky/src/main.c +++ b/apps/slinky/src/main.c @@ -30,7 +30,7 @@ #include <stats/stats.h> #include <config/config.h> #include <sensor/sensor.h> -#include <sim/sim_accel.h> +#include <lsm303dlhc/lsm303dlhc.h> #include "flash_map/flash_map.h" #include <hal/hal_system.h> #if MYNEWT_VAL(SPLIT_LOADER) @@ -235,11 +235,47 @@ init_tasks(void) TASK2_PRIO, OS_WAIT_FOREVER, pstack, TASK2_STACK_SIZE); } +#ifdef ARCH_arduino_zero static int -config_sim_sensor(void) +config_sensor(void) { struct os_dev *dev; - struct sim_accel_cfg cfg; + struct lsm303dlhc_cfg cfg; + int rc; + + dev = (struct os_dev *) os_dev_open("accel0", OS_TIMEOUT_NEVER, NULL); + assert(dev != NULL); + + rc = lsm303dlhc_init(dev, NULL); + if (rc != 0) { + os_dev_close(dev); + goto err; + } + + /* read once per sec. API should take this value in ms. */ + cfg.accel_rate = LSM303DLHC_ACCEL_RATE_1; + cfg.accel_range = LSM303DLHC_ACCEL_RANGE_2; + + rc = lsm303dlhc_config((struct lsm303dlhc *) dev, &cfg); + if (rc != 0) { + os_dev_close(dev); + goto err; + } + + os_dev_close(dev); + + return (0); +err: + return (rc); +} +#endif + +#ifdef ARCH_sim +static int +config_sensor(void) +{ + struct os_dev *dev; + struct cfg; int rc; dev = (struct os_dev *) os_dev_open("simaccel0", OS_TIMEOUT_NEVER, NULL); @@ -268,7 +304,7 @@ config_sim_sensor(void) err: return (rc); } - +#endif /** * main @@ -323,7 +359,7 @@ main(int argc, char **argv) } #endif - config_sim_sensor(); + config_sensor(); /* * As the last thing, process events from default event queue. http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/d983810d/hw/drivers/sensors/lsm303dlhc/include/lsm303dlhc/lsm303dlhc.h ---------------------------------------------------------------------- diff --git a/hw/drivers/sensors/lsm303dlhc/include/lsm303dlhc/lsm303dlhc.h b/hw/drivers/sensors/lsm303dlhc/include/lsm303dlhc/lsm303dlhc.h index 8bc3307..453097b 100644 --- a/hw/drivers/sensors/lsm303dlhc/include/lsm303dlhc/lsm303dlhc.h +++ b/hw/drivers/sensors/lsm303dlhc/include/lsm303dlhc/lsm303dlhc.h @@ -22,6 +22,7 @@ #include "os/os.h" #include "os/os_dev.h" +#include "sensor/sensor.h" #ifdef __cplusplus extern "C" { http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/d983810d/hw/sensor/src/sensor_shell.c ---------------------------------------------------------------------- diff --git a/hw/sensor/src/sensor_shell.c b/hw/sensor/src/sensor_shell.c index 1cf9613..a5ee643 100644 --- a/hw/sensor/src/sensor_shell.c +++ b/hw/sensor/src/sensor_shell.c @@ -95,13 +95,13 @@ sensor_shell_read_listener(struct sensor *sensor, void *arg, void *data) if (ctx->type == SENSOR_TYPE_ACCELEROMETER) { sad = (struct sensor_accel_data *) data; if (sad->sad_x != SENSOR_ACCEL_DATA_UNUSED) { - console_printf("x = %f, ", sad->sad_x); + console_printf("x = %x, ", (uint32_t)sad->sad_x * 1000000000); } if (sad->sad_y != SENSOR_ACCEL_DATA_UNUSED) { - console_printf("y = %f, ", sad->sad_y); + console_printf("y = %x, ", (uint32_t)sad->sad_y * 1000000000); } if (sad->sad_z != SENSOR_ACCEL_DATA_UNUSED) { - console_printf("z = %f", sad->sad_z); + console_printf("z = %x.", (uint32_t)sad->sad_z * 1000000000); } console_printf("\n"); }
