• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

boards/29-Dec-2025-12674

src/29-Dec-2025-801595

CMakeLists.txtD29-Dec-2025448 118

KconfigD29-Dec-2025396 2113

README.rstD29-Dec-20253.3 KiB11387

bt.overlayD29-Dec-2025324 1916

overlay-bt.confD29-Dec-2025383 1713

overlay-usb.confD29-Dec-2025264 87

prj.confD29-Dec-2025357 1716

prj_getopt.confD29-Dec-2025274 1413

prj_login.confD29-Dec-2025375 1816

prj_minimal.confD29-Dec-2025237 1311

prj_minimal_rtt.confD29-Dec-2025324 1814

sample.yamlD29-Dec-20252.1 KiB7877

shell_module.robotD29-Dec-2025409 1310

test_shell.ymlD29-Dec-2025122 54

usb.overlayD29-Dec-2025249 1815

README.rst

1.. zephyr:code-sample:: shell-module
2   :name: Custom Shell module
3   :relevant-api: shell_api
4
5   Register shell commands using the Shell API
6
7Overview
8********
9
10This is a simple application demonstrating how to write and register commands
11using the :ref:`Shell API <shell_api>`:
12
13Register Static commands
14   ``version`` is a static command that prints the kernel version.
15
16Conditionally Register commands
17   ``login`` and ``logout`` are conditionally registered commands depending
18   on :kconfig:option:`CONFIG_SHELL_START_OBSCURED`.
19
20Register Dynamic commands
21   See ``dynamic`` command and :zephyr_file:`samples/subsys/shell/shell_module/src/dynamic_cmd.c`
22   for details on how dynamic commands are implemented.
23
24Register Dictionary commands
25   ``dictionary`` implements subsect of dictionary commands.
26
27Set a Bypass callback
28   ``bypass`` implements the bypass callback.
29
30Set a Login command
31   ``login`` and ``logout`` implement the login and logout mechanism, respectively.
32
33Obscure user-input with asterisks
34   ``login`` and ``logout`` implement the feature of enabling and disabling
35   this functionality, respectively.
36
37Requirements
38************
39
40* A target configured with the shell interface, exposed through any of
41  its :ref:`backends <backends>`.
42
43Building and Running
44********************
45
46The sample can be built for several platforms.
47
48Emulation Targets
49=================
50
51The sample may run on emulation targets. The following commands build the
52application for the qemu_x86.
53
54.. zephyr-app-commands::
55   :zephyr-app: samples/subsys/shell/shell_module
56   :host-os: unix
57   :board: qemu_x86
58   :goals: run
59   :compact:
60
61After running the application, the console displays the shell interface, and
62shows the shell prompt, at which point the user may start the interaction.
63
64On-Hardware
65===========
66
67.. zephyr-app-commands::
68   :zephyr-app: samples/subsys/shell/shell_module
69   :host-os: unix
70   :board: nrf52840dk/nrf52840
71   :goals: flash
72   :compact:
73
74Sample Output
75*************
76
77.. code-block:: console
78
79   uart:~$
80     bypass              clear               date
81     demo                device              devmem
82     dynamic             help                history
83     kernel              log                 log_test
84     rem                 resize              retval
85     section_cmd         shell               shell_uart_release
86     stats               version
87   uart:~$ demo
88   demo - Demo commands
89   Subcommands:
90     dictionary  : Dictionary commands
91     hexdump     : Hexdump params command.
92     params      : Print params command.
93     ping        : Ping command.
94     board       : Show board name command.
95   uart:~$ dynamic
96   dynamic - Demonstrate dynamic command usage.
97   Subcommands:
98     add      : Add a new dynamic command.
99               Example usage: [ dynamic add test ] will add a dynamic command
100               'test'.
101               In this example, command name length is limited to 32 chars. You can
102               add up to 20 commands. Commands are automatically sorted to ensure
103               correct shell completion.
104     execute  : Execute a command.
105     remove   : Remove a command.
106     show     : Show all added dynamic commands.
107   uart:~$
108
109Details on Shell Subsystem
110==========================
111
112For more details on the Shell subsystem, check the general :ref:`Shell documentation <shell_api>`.
113