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:
parent
fc553327c0
commit
08815946f6
|
@ -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. */
|
||||||
|
|
Loading…
Reference in New Issue