Shell management

Shell management allows passing commands to the shell subsystem over the SMP protocol.

Shell management group defines following commands:

Command ID

Command description

0

Shell command line execute

Shell command line execute

The command allows to execute command line in a similar way to typing it into a shell, but both a request and a response are transported over SMP.

Shell command line execute request

Execute command request header:

OP

Group ID

Command ID

2

9

0

CBOR data of request:

{
    (str)"argv"     : [
        (str)<cmd>
        (str,opt)<arg>
        ...
    ]
}

where:

“argv”

array consisting of strings representing command and its arguments.

<cmd>

command to be executed.

<arg>

optional arguments to command.

Shell command line execute response

Command line execute response header fields:

OP

Group ID

Command ID

3

9

0

CBOR data of successful response:

{
    (str)"o"            : (str)
    (str)"ret"          : (int)
}

In case of error the CBOR data takes the form:

{
    (str)"err" : {
        (str)"group"    : (uint)
        (str)"rc"       : (uint)
    }
}

where:

“o”

command output.

“ret”

return code from shell command execution.

“err” -> “group”

mcumgr_group_t group of the group-based error code. Only appears if an error is returned when using SMP version 2.

“err” -> “rc”

contains the index of the group-based error code. Only appears if non-zero (error condition) when using SMP version 2.

“rc”

mcumgr_err_t only appears if non-zero (error condition) when using SMP version 1 or for SMP errors when using SMP version 2.

Note

In older versions of Zephyr, “rc” was used for both the mcumgr status code and shell command execution return code, this legacy behaviour can be restored by enabling CONFIG_MCUMGR_GRP_SHELL_LEGACY_RC_RETURN_CODE