diff options
-rw-r--r-- | src/helper/command.c | 2 | ||||
-rw-r--r-- | src/openocd.c | 3 | ||||
-rw-r--r-- | src/startup.tcl | 16 | ||||
-rw-r--r-- | src/target/target.c | 39 |
4 files changed, 20 insertions, 40 deletions
diff --git a/src/helper/command.c b/src/helper/command.c index 45b66d60..c1eacc00 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -100,6 +100,8 @@ command_t* register_command(command_context_t *context, command_t *parent, char } /* accumulate help text in Tcl helptext list. */ Jim_Obj *helptext=Jim_GetGlobalVariableStr(interp, "ocd_helptext", JIM_ERRMSG); + if (Jim_IsShared(helptext)) + helptext = Jim_DuplicateObj(interp, helptext); Jim_Obj *cmd_entry=Jim_NewListObj(interp, NULL, 0); Jim_Obj *cmd_list=Jim_NewListObj(interp, NULL, 0); diff --git a/src/openocd.c b/src/openocd.c index b36347cd..2d7e7747 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -734,6 +734,9 @@ void add_jim(const char *name, int (*cmd)(Jim_Interp *interp, int argc, Jim_Obj /* FIX!!! it would be prettier to invoke add_help_text... accumulate help text in Tcl helptext list. */ Jim_Obj *helptext=Jim_GetGlobalVariableStr(interp, "ocd_helptext", JIM_ERRMSG); + if (Jim_IsShared(helptext)) + helptext = Jim_DuplicateObj(interp, helptext); + Jim_Obj *cmd_entry=Jim_NewListObj(interp, NULL, 0); Jim_Obj *cmd_list=Jim_NewListObj(interp, NULL, 0); diff --git a/src/startup.tcl b/src/startup.tcl index dc3a0895..1f1d1e21 100644 --- a/src/startup.tcl +++ b/src/startup.tcl @@ -11,7 +11,6 @@ # Commands can be more than one word and they are stored # as "flash banks" "help text x x x" -global ocd_helptext set ocd_helptext {} proc add_help_text {cmd cmd_help} { @@ -123,3 +122,18 @@ proc unknown {args} { # the command twice. return "" } + + +proc target_script {target_num eventname scriptname} { + if {[string compare $eventname reset]==0} { + set eventname post_reset + } + + # This is the script we invoke + proc "target_[set eventname]_[set target_num]" {} "script $scriptname" + +} + +#add_help_text target_script "xxx" +add_help_text target_script "<target#> <event=reset/pre_reset/post_halt/pre_resume/gdb_program_config> <script_file>" + diff --git a/src/target/target.c b/src/target/target.c index bd334da2..06a0d487 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -52,7 +52,6 @@ int cli_target_callback_event_handler(struct target_s *target, enum target_event int handle_target_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); int handle_targets_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); -int handle_target_script_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); int handle_run_and_halt_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); int handle_working_area_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc); @@ -952,8 +951,6 @@ int target_register_commands(struct command_context_s *cmd_ctx) { register_command(cmd_ctx, NULL, "target", handle_target_command, COMMAND_CONFIG, "target <cpu> [reset_init default - DEPRECATED] <chainpos> <endianness> <variant> [cpu type specifc args]"); register_command(cmd_ctx, NULL, "targets", handle_targets_command, COMMAND_EXEC, NULL); - register_command(cmd_ctx, NULL, "target_script", handle_target_script_command, COMMAND_CONFIG, - "target_script <target#> <event=reset/pre_reset/post_halt/pre_resume/gdb_program_config> <script_file>"); register_command(cmd_ctx, NULL, "run_and_halt_time", handle_run_and_halt_time_command, COMMAND_CONFIG, "<target> <run time ms>"); register_command(cmd_ctx, NULL, "working_area", handle_working_area_command, COMMAND_ANY, "working_area <target#> <address> <size> <'backup'|'nobackup'> [virtual address]"); register_command(cmd_ctx, NULL, "virt2phys", handle_virt2phys_command, COMMAND_ANY, "virt2phys <virtual address>"); @@ -1491,42 +1488,6 @@ int target_invoke_script(struct command_context_s *cmd_ctx, target_t *target, ch name, get_num_by_target(target)); } -int handle_target_script_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) -{ - target_t *target = NULL; - - if (argc < 3) - { - LOG_ERROR("incomplete target_script command"); - return ERROR_COMMAND_SYNTAX_ERROR; - } - - target = get_target_by_num(strtoul(args[0], NULL, 0)); - - if (!target) - { - return ERROR_COMMAND_SYNTAX_ERROR; - } - - const char *event=args[1]; - if (strcmp("reset", event)==0) - { - /* synonymous */ - event="post_reset"; - } - - /* Define a tcl procedure which we'll invoke upon some event */ - command_run_linef(cmd_ctx, - "proc target_%s_%d {} {" - "openocd {script %s} ; return \"\"" - "}", - event, - get_num_by_target(target), - args[2]); - - return ERROR_OK; -} - int handle_run_and_halt_time_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc) { target_t *target = NULL; |