bugfixes: tinker a bit with the targets command

return error when target can not be found instead of ERROR_OK,
split fn.

Change-Id: Iba5232d3862a490d0995c3bfece23685bd6856e3
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Reviewed-on: http://openocd.zylin.com/131
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
This commit is contained in:
Øyvind Harboe 2011-10-27 23:51:50 +02:00 committed by Spencer Oliver
parent fc553327c0
commit 08815946f6
1 changed files with 35 additions and 24 deletions

View File

@ -1861,26 +1861,36 @@ int target_write_u8(struct target *target, uint32_t address, uint8_t value)
return retval; return retval;
} }
static int find_target(struct command_context *cmd_ctx, const char *name)
{
struct target *target = get_target(name);
if (target == NULL) {
LOG_ERROR("Target: %s is unknown, try one of:\n", name);
return ERROR_FAIL;
}
if (!target->tap->enabled) {
LOG_USER("Target: TAP %s is disabled, "
"can't be the current target\n",
target->tap->dotted_name);
return ERROR_FAIL;
}
cmd_ctx->current_target = target->target_number;
return ERROR_OK;
}
COMMAND_HANDLER(handle_targets_command) COMMAND_HANDLER(handle_targets_command)
{ {
int retval = ERROR_OK;
if (CMD_ARGC == 1) if (CMD_ARGC == 1)
{ {
struct target *target = get_target(CMD_ARGV[0]); retval = find_target(CMD_CTX, CMD_ARGV[0]);
if (target == NULL) { if (retval == ERROR_OK) {
command_print(CMD_CTX,"Target: %s is unknown, try one of:\n", CMD_ARGV[0]); /* we're done! */
goto DumpTargets; return retval;
} }
if (!target->tap->enabled) {
command_print(CMD_CTX,"Target: TAP %s is disabled, "
"can't be the current target\n",
target->tap->dotted_name);
return ERROR_FAIL;
}
CMD_CTX->current_target = target->target_number;
return ERROR_OK;
} }
DumpTargets:;
struct target *target = all_targets; struct target *target = all_targets;
command_print(CMD_CTX, " TargetName Type Endian TapName State "); command_print(CMD_CTX, " TargetName Type Endian TapName State ");
@ -1899,19 +1909,20 @@ DumpTargets:;
marker = '*'; marker = '*';
/* keep columns lined up to match the headers above */ /* keep columns lined up to match the headers above */
command_print(CMD_CTX, "%2d%c %-18s %-10s %-6s %-18s %s", command_print(CMD_CTX,
target->target_number, "%2d%c %-18s %-10s %-6s %-18s %s",
marker, target->target_number,
target_name(target), marker,
target_type_name(target), target_name(target),
Jim_Nvp_value2name_simple(nvp_target_endian, target_type_name(target),
target->endianness)->name, Jim_Nvp_value2name_simple(nvp_target_endian,
target->tap->dotted_name, target->endianness)->name,
state); target->tap->dotted_name,
state);
target = target->next; target = target->next;
} }
return ERROR_OK; return retval;
} }
/* every 300ms we check for reset & powerdropout and issue a "reset halt" if so. */ /* every 300ms we check for reset & powerdropout and issue a "reset halt" if so. */