samples/subsys/shell: Introduce Sensor Shell module

Adds the Sensor Shell module sample app.

Signed-off-by: Diego Sueiro <diego.sueiro@gmail.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Diego Sueiro 2018-11-22 06:13:38 +00:00 committed by Anas Nashif
commit e924879ef7
6 changed files with 135 additions and 0 deletions

View file

@ -0,0 +1,16 @@
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.8.2)
macro(set_conf_file)
if(EXISTS ${APPLICATION_SOURCE_DIR}/boards/${BOARD}.conf)
set(CONF_FILE "prj.conf ${APPLICATION_SOURCE_DIR}/boards/${BOARD}.conf")
else()
set(CONF_FILE "prj.conf")
endif()
endmacro()
include($ENV{ZEPHYR_BASE}/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(sensor_shell)
FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources})

View file

@ -0,0 +1,94 @@
.. _sensor_shell_sample:
Sensor Shell Module Sample
##########################
Overview
********
This is a simple shell module to get data from sensors presented in the system.
Building and Running
********************
Build the sample app by choosing the target board that has sensors drivers
enabled, for example:
.. code-block:: console
cmake -DBOARD=reel_board
.. zephyr-app-commands::
:zephyr-app: samples/subsys/shell/sensor_module
:goals: run
Shell Module Command Help
=========================
.. code-block:: console
sensor - Sensor commands
Options:
-h, --help :Show command help.
Subcommands:
get :<device_name> [chanel_idx]
list :List configured sensors
list_channels :<device_name>
**list**: lists all the initialized devices on the system.
Output example (reel_board):
.. code-block:: console
uart:~$ sensor list
devices:
- clk_k32src
- clk_m16src
- UART_0
- ENTROPY_0
- GPIO_0
- GPIO_1
- I2C_0
- APDS9960
- MMA8652FC
- HDC1008
**list_channels**: lists the supported channels (index and name) for a given
sensor device name.
Output example (reel_board):
.. code-block:: console
uart:~$ sensor list_channels MMA8652FC
idx=0 name=accel_x
idx=1 name=accel_y
idx=2 name=accel_z
idx=3 name=accel_xyz
.. note:: A valid sensor device name should be passed otherwise you will get an
undefined behavior like hardware exception. This happens because the shell
subsystem runs in supervisor mode where API callbacks are not checked before
being called.
**get**: prints all the sensor channels data for a given sensor device name.
Optionally, a single channel index can be passed to be printed out.
Output example (reel_board):
.. code-block:: console
uart:~$ sensor get MMA8652FC
channel idx=0 accel_x = -1.379061
channel idx=1 accel_y = 1.991975
channel idx=2 accel_z = -9.576807
channel idx=3 accel_xyz = -1.379061
channel idx=3 accel_xyz = 1.991975
channel idx=3 accel_xyz = -9.576807
.. note:: A valid sensor device name should be passed otherwise you will get an
undefined behavior like hardware exception. This happens because the shell
subsystem runs in supervisor mode where API callbacks are not checked before
being called.

View file

@ -0,0 +1,3 @@
CONFIG_APDS9960=y
CONFIG_FXOS8700=y
CONFIG_TI_HDC=y

View file

@ -0,0 +1,4 @@
CONFIG_SHELL=y
CONFIG_BOOT_BANNER=n
CONFIG_SENSOR=y
CONFIG_SENSOR_SHELL=y

View file

@ -0,0 +1,9 @@
sample:
name: Shell Sensor Module Sample
tests:
test:
filter: ( CONFIG_UART_CONSOLE and CONFIG_SERIAL_SUPPORT_INTERRUPT )
tags: shell
harness: keyboard
min_ram: 20
min_flash: 33

View file

@ -0,0 +1,9 @@
/*
* Copyright (c) 2018 Diego Sueiro
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <logging/log.h>
LOG_MODULE_REGISTER(app);