summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-06-30 09:03:59 +0000
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-06-30 09:03:59 +0000
commit0894ae214a0bb7ab17e772abdc4d512e8991be31 (patch)
tree0f0c3242c46f5781058732283da2c3ac023cb9fb /src
parent5195405da8d872437bb66668f8aa0de1507b979e (diff)
downloadopenocd+libswd-0894ae214a0bb7ab17e772abdc4d512e8991be31.tar.gz
openocd+libswd-0894ae214a0bb7ab17e772abdc4d512e8991be31.tar.bz2
openocd+libswd-0894ae214a0bb7ab17e772abdc4d512e8991be31.tar.xz
openocd+libswd-0894ae214a0bb7ab17e772abdc4d512e8991be31.zip
David Brownell <david-b@pacbell.net>:
Add "jtag names" command, mirroring "target names" but returning TAP names instead of target names. This starts letting TAPs be manipulated in scripts ... much like what works now for targets. It's a bit limited just yet, since "jtag cget $TAPNAME" doesn't expose all TAP attributes. "$TARGETNAME cget" is more functional. git-svn-id: svn://svn.berlios.de/openocd/trunk@2428 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src')
-rw-r--r--src/jtag/tcl.c31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c
index 759f8f7c..dda52961 100644
--- a/src/jtag/tcl.c
+++ b/src/jtag/tcl.c
@@ -391,7 +391,8 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
JTAG_CMD_TAPDISABLE,
JTAG_CMD_TAPISENABLED,
JTAG_CMD_CONFIGURE,
- JTAG_CMD_CGET
+ JTAG_CMD_CGET,
+ JTAG_CMD_NAMES,
};
const Jim_Nvp jtag_cmds[] = {
@@ -403,6 +404,7 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{ .name = "tapdisable" , .value = JTAG_CMD_TAPDISABLE },
{ .name = "configure" , .value = JTAG_CMD_CONFIGURE },
{ .name = "cget" , .value = JTAG_CMD_CGET },
+ { .name = "names" , .value = JTAG_CMD_NAMES },
{ .name = NULL, .value = -1 },
};
@@ -497,7 +499,8 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
case JTAG_CMD_CGET:
if (goi.argc < 2) {
- Jim_WrongNumArgs(goi.interp, 0, NULL, "?tap-name? -option ...");
+ Jim_WrongNumArgs(goi.interp, 0, NULL,
+ "cget tap_name queryparm");
return JIM_ERR;
}
@@ -517,7 +520,8 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
case JTAG_CMD_CONFIGURE:
if (goi.argc < 3) {
- Jim_WrongNumArgs(goi.interp, 0, NULL, "?tap-name? -option ?VALUE? ...");
+ Jim_WrongNumArgs(goi.interp, 0, NULL,
+ "configure tap_name attribute value ...");
return JIM_ERR;
}
@@ -533,6 +537,27 @@ static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
goi.isconfigure = 1;
return jtag_tap_configure_cmd(&goi, t);
}
+ break;
+
+ case JTAG_CMD_NAMES:
+ if (goi.argc != 0) {
+ Jim_WrongNumArgs(goi.interp, 1, goi.argv, "Too many parameters");
+ return JIM_ERR;
+ }
+ Jim_SetResult(goi.interp, Jim_NewListObj(goi.interp, NULL, 0));
+ {
+ jtag_tap_t *tap;
+
+ for (tap = jtag_all_taps(); tap; tap = tap->next_tap) {
+ Jim_ListAppendElement(goi.interp,
+ Jim_GetResult(goi.interp),
+ Jim_NewStringObj(goi.interp,
+ tap->dotted_name, -1));
+ }
+ return JIM_OK;
+ }
+ break;
+
}
return JIM_ERR;