cortex_m: Fix single stepping will not return to debug mode sometimes
[fw/openocd] / src / hello.c
index 6f0249487fd94ff5cffadeb831e48b08293d1727..903123c492588983a24dd3b1028935884fd1c936 100644 (file)
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
-#include "log.h"
+#include <helper/log.h>
 
 COMMAND_HANDLER(handle_foo_command)
 {
        if (CMD_ARGC < 1 || CMD_ARGC > 2)
-       {
-               LOG_ERROR("%s: incorrect number of arguments", CMD_NAME);
                return ERROR_COMMAND_SYNTAX_ERROR;
-       }
 
        uint32_t address;
        COMMAND_PARSE_NUMBER(u32, CMD_ARGV[0], address);
 
        const char *msg = "<unchanged>";
-       if (CMD_ARGC == 2)
-       {
+       if (CMD_ARGC == 2) {
                bool enable;
                COMMAND_PARSE_ENABLE(CMD_ARGV[1], enable);
                msg = enable ? "enable" : "disable";
@@ -50,7 +46,7 @@ static bool foo_flag;
 COMMAND_HANDLER(handle_flag_command)
 {
        return CALL_COMMAND_HANDLER(handle_command_parse_bool,
-                       &foo_flag, "foo flag");
+               &foo_flag, "foo flag");
 }
 
 static const struct command_registration foo_command_handlers[] = {
@@ -58,46 +54,34 @@ static const struct command_registration foo_command_handlers[] = {
                .name = "bar",
                .handler = &handle_foo_command,
                .mode = COMMAND_ANY,
-               .help = "<address> [enable|disable] - an example command",
+               .usage = "address ['enable'|'disable']",
+               .help = "an example command",
        },
        {
                .name = "baz",
                .handler = &handle_foo_command,
                .mode = COMMAND_ANY,
-               .help = "<address> [enable|disable] - a sample command",
+               .usage = "address ['enable'|'disable']",
+               .help = "a sample command",
        },
        {
                .name = "flag",
                .handler = &handle_flag_command,
                .mode = COMMAND_ANY,
-               .help = "[on|off] - set a flag",
+               .usage = "[on|off]",
+               .help = "set a flag",
        },
        COMMAND_REGISTRATION_DONE
 };
 
-int foo_register_commands(struct command_context *cmd_ctx)
-{
-       // register several commands under the foo command
-       struct command *cmd = COMMAND_REGISTER(cmd_ctx, NULL, "foo",
-                       NULL, COMMAND_ANY, "example command handler skeleton");
-
-
-       return register_commands(cmd_ctx, cmd, foo_command_handlers);
-}
-
 static COMMAND_HELPER(handle_hello_args, const char **sep, const char **name)
 {
        if (CMD_ARGC > 1)
-       {
-               LOG_ERROR("%s: too many arguments", CMD_NAME);
                return ERROR_COMMAND_SYNTAX_ERROR;
-       }
-       if (1 == CMD_ARGC)
-       {
+       if (1 == CMD_ARGC) {
                *sep = " ";
                *name = CMD_ARGV[0];
-       }
-       else
+       } else
                *sep = *name = "";
 
        return ERROR_OK;
@@ -111,20 +95,20 @@ COMMAND_HANDLER(handle_hello_command)
        return retval;
 }
 
-static const struct command_registration hello_command_handlers[] = {
+const struct command_registration hello_command_handlers[] = {
        {
                .name = "hello",
-               .handler = &handle_hello_command,
+               .handler = handle_hello_command,
                .mode = COMMAND_ANY,
                .help = "prints a warm welcome",
-               .usage = "[<name>]",
+               .usage = "[name]",
+       },
+       {
+               .name = "foo",
+               .mode = COMMAND_ANY,
+               .help = "example command handler skeleton",
+
+               .chain = foo_command_handlers,
        },
        COMMAND_REGISTRATION_DONE
 };
-
-int hello_register_commands(struct command_context *cmd_ctx)
-{
-       foo_register_commands(cmd_ctx);
-
-       return register_commands(cmd_ctx, NULL, hello_command_handlers);
-}