zephyr/samples/sensor/sensor_shell
..
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.