Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Marek Slowinski ba8742c1b8 tests: robot: renode: Use precise pause for UART keywords 3 months ago
..
boards samples: shell_module: add imx93 board support 10 months ago
src samples: subsys: shell: shell_module: Incorrect help message of sub_cmd1 6 months ago
CMakeLists.txt samples: shell_module: move login cmds into a separate file 10 months ago
Kconfig
README.rst samples: shell: shell_module: Add README 1 year ago
bt.overlay everywhere: reindent `.overlay` files with tabs 1 year ago
overlay-bt.conf bluetooth: nus: Change Kconfigs prefix to BT_ZEPHYR_NUS 1 year ago
overlay-usb.conf samples: disable CDC ACM logging 9 months ago
prj.conf posix: create kconfig options for pse51, pse52, pse53 1 year ago
prj_getopt.conf posix: create kconfig options for pse51, pse52, pse53 1 year ago
prj_login.conf posix: create kconfig options for pse51, pse52, pse53 1 year ago
prj_minimal.conf
prj_minimal_rtt.conf
sample.yaml drivers uart_native_posix: rename to native_pty and support N instances 4 months ago
shell_module.robot tests: robot: renode: Use precise pause for UART keywords 3 months ago
test_shell.yml twister: shell harness with commands alongside the harness_config 5 months ago
usb.overlay

README.rst

.. zephyr:code-sample:: shell-module
:name: Custom Shell module
:relevant-api: shell_api

Register shell commands using the Shell API

Overview
********

This is a simple application demonstrating how to write and register commands
using the :ref:`Shell API <shell_api>`:

Register Static commands
``version`` is a static command that prints the kernel version.

Conditionally Register commands
``login`` and ``logout`` are conditionally registered commands depending
on :kconfig:option:`CONFIG_SHELL_START_OBSCURED`.

Register Dynamic commands
See ``dynamic`` command and :zephyr_file:`samples/subsys/shell/shell_module/src/dynamic_cmd.c`
for details on how dynamic commands are implemented.

Register Dictionary commands
``dictionary`` implements subsect of dictionary commands.

Set a Bypass callback
``bypass`` implements the bypass callback.

Set a Login command
``login`` and ``logout`` implement the login and logout mechanism, respectively.

Obscure user-input with asterisks
``login`` and ``logout`` implement the feature of enabling and disabling
this functionality, respectively.

Requirements
************

* A target configured with the shell interface, exposed through any of
its :ref:`backends <backends>`.

Building and Running
********************

This sample can be found under :zephyr_file:`samples/subsys/shell/shell_module`
in the Zephyr tree.

The sample can be built for several platforms.

Emulation Targets
=================

The sample may run on emulation targets. The following commands build the
application for the qemu_x86.

.. zephyr-app-commands::
:zephyr-app: samples/subsys/shell/shell_module
:host-os: unix
:board: qemu_x86
:goals: run
:compact:

After running the application, the console displays the shell interface, and
shows the shell prompt, at which point the user may start the interaction.

On-Hardware
===========

.. zephyr-app-commands::
:zephyr-app: samples/subsys/shell/shell_module
:host-os: unix
:board: nrf52840dk/nrf52840
:goals: flash
:compact:

Sample Output
*************

.. code-block:: console

uart:~$
bypass clear date
demo device devmem
dynamic help history
kernel log log_test
rem resize retval
section_cmd shell shell_uart_release
stats version
uart:~$ demo
demo - Demo commands
Subcommands:
dictionary : Dictionary commands
hexdump : Hexdump params command.
params : Print params command.
ping : Ping command.
board : Show board name command.
uart:~$ dynamic
dynamic - Demonstrate dynamic command usage.
Subcommands:
add : Add a new dynamic command.
Example usage: [ dynamic add test ] will add a dynamic command
'test'.
In this example, command name length is limited to 32 chars. You can
add up to 20 commands. Commands are automatically sorted to ensure
correct shell completion.
execute : Execute a command.
remove : Remove a command.
show : Show all added dynamic commands.
uart:~$

Details on Shell Subsystem
==========================

For more details on the Shell subsystem, check the general :ref:`Shell documentation <shell_api>`.