target: rewrite command 'arp_examine' as COMMAND_HANDLER

Change-Id: I8f227b219ca39f198e1e39847ddd36bb9880a328
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7560
Tested-by: jenkins
This commit is contained in:
Antonio Borneo 2023-03-27 11:38:35 +02:00
parent 0f0a4b1452
commit 22ababc12e
1 changed files with 18 additions and 27 deletions

View File

@ -5639,49 +5639,40 @@ static int jim_target_tap_disabled(Jim_Interp *interp)
return JIM_ERR; return JIM_ERR;
} }
static int jim_target_examine(Jim_Interp *interp, int argc, Jim_Obj *const *argv) COMMAND_HANDLER(handle_target_examine)
{ {
bool allow_defer = false; bool allow_defer = false;
struct jim_getopt_info goi; if (CMD_ARGC > 1)
jim_getopt_setup(&goi, interp, argc - 1, argv + 1); return ERROR_COMMAND_SYNTAX_ERROR;
if (goi.argc > 1) {
const char *cmd_name = Jim_GetString(argv[0], NULL); if (CMD_ARGC == 1) {
Jim_SetResultFormatted(goi.interp, if (strcmp(CMD_ARGV[0], "allow-defer"))
"usage: %s ['allow-defer']", cmd_name); return ERROR_COMMAND_ARGUMENT_INVALID;
return JIM_ERR;
}
if (goi.argc > 0 &&
strcmp(Jim_GetString(argv[1], NULL), "allow-defer") == 0) {
/* consume it */
Jim_Obj *obj;
int e = jim_getopt_obj(&goi, &obj);
if (e != JIM_OK)
return e;
allow_defer = true; allow_defer = true;
} }
struct command_context *cmd_ctx = current_command_context(interp); struct target *target = get_current_target(CMD_CTX);
assert(cmd_ctx); if (!target->tap->enabled) {
struct target *target = get_current_target(cmd_ctx); command_print(CMD, "[TAP is disabled]");
if (!target->tap->enabled) return ERROR_FAIL;
return jim_target_tap_disabled(interp); }
if (allow_defer && target->defer_examine) { if (allow_defer && target->defer_examine) {
LOG_INFO("Deferring arp_examine of %s", target_name(target)); LOG_INFO("Deferring arp_examine of %s", target_name(target));
LOG_INFO("Use arp_examine command to examine it manually!"); LOG_INFO("Use arp_examine command to examine it manually!");
return JIM_OK; return ERROR_OK;
} }
int e = target->type->examine(target); int retval = target->type->examine(target);
if (e != ERROR_OK) { if (retval != ERROR_OK) {
target_reset_examined(target); target_reset_examined(target);
return JIM_ERR; return retval;
} }
target_set_examined(target); target_set_examined(target);
return JIM_OK; return ERROR_OK;
} }
COMMAND_HANDLER(handle_target_was_examined) COMMAND_HANDLER(handle_target_was_examined)
@ -6019,7 +6010,7 @@ static const struct command_registration target_instance_command_handlers[] = {
{ {
.name = "arp_examine", .name = "arp_examine",
.mode = COMMAND_EXEC, .mode = COMMAND_EXEC,
.jim_handler = jim_target_examine, .handler = handle_target_examine,
.help = "used internally for reset processing", .help = "used internally for reset processing",
.usage = "['allow-defer']", .usage = "['allow-defer']",
}, },