zephyr/samples/sensor/sensor_shell
Marc Herbert 2cd51a33ce samples: make find_package(Zephyr...) REQUIRED
This provides a better error message when building with CMake and
forgetting ZEPHYR_BASE or not registering Zephyr in the CMake package
registry. See parent commit for more details (split from parent for
better readability).

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2020-05-29 10:47:25 +02:00
..
boards
src
CMakeLists.txt
README.rst
prj.conf
sample.yaml

README.rst

.. _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.