/** * \page cmd_interior Command Engine, Interior Protocol \section cmd_def_ascii ASCII Command definition and usage
Use the #COMMAND macro to easily create a new terminal command. The first two parameters define the name and usage of the command. The last two define the name of parameters passed to the command function.
Providing the parameter names in the macro has been introduced to make the available variables more transparent than in previous versions.
When a command as invoked, args
points the null-terminated argument string
passed with the command. replyBuffer
points to a buffer of #TERM_BUFSIZE size
and is empty. If nothing is written to this buffer, a positive response "OK" is generated.
Example:
@code COMMAND(test, CMDFLAG_NONE, args, replyBuffer) { String_write(replyBuffer, "test"); } @endcode
will generate a function term_test_cmd as follows.
@code void term_test_cmd(char (*const args ), char (*const replyBuffer))) { String_write(replyBuffer, "test"); } @endcode
See the documentation page on how to document your commands.
\subsection cmd_ascargs Handling argument stringsArgument strings are ASCII strings that can be either command specific, but are usually a space separated list of strings To handle the latter you should use the provided functions (:Cmd_SplitArgs and :Cmd_GetNextArg) to navigate through the argument list.
\section cmd_def_linker Command Declaration internalsBesides creating the function header each command macro creates a forward declaration which is then needed in the following definition of a command_t in the .commands segment. Because all those command_t entries are put into a special segment, commands can be declared anywhere in the code. This way the command lookup-table is defined.
*/