From 508ed7a7c69f74ed889e1b471929d9e68e5c1194 Mon Sep 17 00:00:00 2001
From: kc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Sun, 14 Dec 2008 20:33:01 +0000
Subject: [PATCH] - Update tap_state_strings to correspond to SVF state names -
 Use new jtag_state_name() instead of global tap_state_strings[]

git-svn-id: svn://svn.berlios.de/openocd/trunk@1240 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 src/jtag/bitbang.c |  2 +-
 src/jtag/bitq.c    |  2 +-
 src/jtag/ft2232.c  |  2 +-
 src/jtag/gw16012.c |  2 +-
 src/jtag/jlink.c   |  2 +-
 src/jtag/jtag.c    | 45 ++++++++++++++++++++++++++++++++-----------
 src/jtag/jtag.h    |  8 +++++++-
 src/jtag/usbprog.c |  2 +-
 src/jtag/zy1000.c  | 48 +++++++++++++++++++++++-----------------------
 9 files changed, 71 insertions(+), 42 deletions(-)

diff --git a/src/jtag/bitbang.c b/src/jtag/bitbang.c
index 8c4a3761c..2d04e108a 100644
--- a/src/jtag/bitbang.c
+++ b/src/jtag/bitbang.c
@@ -109,7 +109,7 @@ void bitbang_path_move(pathmove_command_t *cmd)
 		}
 		else
 		{
-			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[cmd->path[state_count]]);
+			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", jtag_state_name(cur_state), jtag_state_name(cmd->path[state_count]));
 			exit(-1);
 		}
 
diff --git a/src/jtag/bitq.c b/src/jtag/bitq.c
index f347f7dc8..6dc9ec969 100644
--- a/src/jtag/bitq.c
+++ b/src/jtag/bitq.c
@@ -172,7 +172,7 @@ void bitq_path_move(pathmove_command_t *cmd)
 		if (tap_transitions[cur_state].low == cmd->path[i]) bitq_io(0, 0, 0);
 		else if (tap_transitions[cur_state].high == cmd->path[i]) bitq_io(1, 0, 0);
 		else {
-			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[cmd->path[i]]);
+			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", jtag_state_name(cur_state), jtag_state_name(cmd->path[i)]);
 			exit(-1);
 		}
 
diff --git a/src/jtag/ft2232.c b/src/jtag/ft2232.c
index 5d79dfb61..773a92e69 100644
--- a/src/jtag/ft2232.c
+++ b/src/jtag/ft2232.c
@@ -525,7 +525,7 @@ void ft2232_add_pathmove(pathmove_command_t *cmd)
 				buf_set_u32(&tms_byte, bit_count++, 1, 0x1);
 			else
 			{
-				LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[cmd->path[state_count]]);
+				LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", jtag_state_name(cur_state), jtag_state_name(cmd->path[state_count]));
 				exit(-1);
 			}
 
diff --git a/src/jtag/gw16012.c b/src/jtag/gw16012.c
index e03cea93a..f9bdec259 100644
--- a/src/jtag/gw16012.c
+++ b/src/jtag/gw16012.c
@@ -240,7 +240,7 @@ void gw16012_path_move(pathmove_command_t *cmd)
 		}
 		else
 		{
-			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[cmd->path[state_count]]);
+			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", jtag_state_name(cur_state), jtag_state_name(cmd->path[state_count]));
 			exit(-1);
 		}
 
diff --git a/src/jtag/jlink.c b/src/jtag/jlink.c
index a764bc8cf..04ce65c31 100644
--- a/src/jtag/jlink.c
+++ b/src/jtag/jlink.c
@@ -376,7 +376,7 @@ void jlink_path_move(int num_states, enum tap_state *path)
 		}
 		else
 		{
-			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[path[i]]);
+			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", jtag_state_name(cur_state), jtag_state_name(path[i]));
 			exit(-1);
 		}
 
diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c
index ca52872f1..467ab7ae8 100644
--- a/src/jtag/jtag.c
+++ b/src/jtag/jtag.c
@@ -41,14 +41,6 @@
 int jtag_error=ERROR_OK;
 
 
-char* tap_state_strings[16] =
-{
-	"tlr",
-	"sds", "cd", "sd", "e1d", "pd", "e2d", "ud",
-	"rti",
-	"sis", "ci", "si", "e1i", "pi", "e2i", "ui"
-};
-
 typedef struct cmd_queue_page_s
 {
 	void *address;
@@ -1004,7 +996,7 @@ void jtag_add_pathmove(int num_states, enum tap_state *path)
 		if ((tap_transitions[cur_state].low != path[i])&&
 				(tap_transitions[cur_state].high != path[i]))
 		{
-			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[path[i]]);
+			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", jtag_state_name(cur_state), jtag_state_name(path[i]));
 			exit(-1);
 		}
 		cur_state = path[i];
@@ -2656,14 +2648,14 @@ int handle_endstate_command(struct command_context_s *cmd_ctx, char *cmd, char *
 	{
 		for (state = 0; state < 16; state++)
 		{
-			if (strcmp(args[0], tap_state_strings[state]) == 0)
+			if (strcmp(args[0], jtag_state_name(state)) == 0)
 			{
 				jtag_add_end_state(state);
 				jtag_execute_queue();
 			}
 		}
 	}
-	command_print(cmd_ctx, "current endstate: %s", tap_state_strings[cmd_queue_end_state]);
+	command_print(cmd_ctx, "current endstate: %s", jtag_state_name(cmd_queue_end_state));
 
 	return ERROR_OK;
 }
@@ -2915,3 +2907,34 @@ void jtag_tap_handle_event( jtag_tap_t * tap, enum jtag_tap_event e)
 				Jim_Nvp_value2name_simple( nvp_jtag_tap_event, e)->name);
 	}
 }
+
+
+/* map state number to SVF state string */
+const char* jtag_state_name(enum tap_state state)
+{
+	const char* ret;
+
+	switch( state )
+	{
+	case TAP_RESET:		ret = "RESET";			break;
+	case TAP_IDLE:		ret = "IDLE";			break;
+	case TAP_DRSELECT:	ret = "DRSELECT";		break;
+	case TAP_DRCAPTURE: ret = "DRCAPTURE";		break;
+	case TAP_DRSHIFT:	ret = "DRSHIFT";			break;
+	case TAP_DREXIT1:	ret = "DREXIT1";			break;
+	case TAP_DRPAUSE:	ret = "DRPAUSE";			break;
+	case TAP_DREXIT2:	ret = "DREXIT2";			break;
+	case TAP_DRUPDATE:	ret = "DRUPDATE";		break;
+	case TAP_IRSELECT:	ret = "IRSELECT";		break;
+	case TAP_IRCAPTURE: ret = "IRCAPTURE";		break;
+	case TAP_IRSHIFT:	ret = "IRSHIFT";			break;
+	case TAP_IREXIT1:	ret = "IREXIT1";			break;
+	case TAP_IRPAUSE:	ret = "IRPAUSE";			break;
+	case TAP_IREXIT2:	ret = "IREXIT2";			break;
+	case TAP_IRUPDATE:	ret = "IRUPDATE";		break;
+	default:				ret = "???";
+	}
+
+	return ret;
+}
+
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index 16eeef544..9a2bc4237 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -50,7 +50,6 @@ typedef struct tap_transition_s
 	enum tap_state low;
 } tap_transition_t;
 
-extern char* tap_state_strings[16];
 extern int tap_move_map[16];	/* map 16 TAP states to 6 stable states */
 extern u8 tap_move[6][6];		/* value scanned to TMS to move from one of six stable states to another */
 extern tap_transition_t tap_transitions[16];	/* describe the TAP state diagram */
@@ -529,4 +528,11 @@ static __inline__ void jtag_add_dr_out(jtag_tap_t *tap,
 	interface_jtag_add_dr_out(tap, num_fields, num_bits, value, cmd_queue_end_state);
 }
 
+/**
+ * Function jtag_state_name
+ * Returns a string suitable for display representing the JTAG tap_state 
+ */
+const char* jtag_state_name(enum tap_state state);
+
+
 #endif /* JTAG_H */
diff --git a/src/jtag/usbprog.c b/src/jtag/usbprog.c
index 872f73394..419ad4e06 100644
--- a/src/jtag/usbprog.c
+++ b/src/jtag/usbprog.c
@@ -282,7 +282,7 @@ void usbprog_path_move(pathmove_command_t *cmd)
 		}
 		else
 		{
-			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[cmd->path[state_count]]);
+			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", jtag_state_name(cur_state), jtag_state_name(cmd->path[state_count]));
 			exit(-1);
 		}
 
diff --git a/src/jtag/zy1000.c b/src/jtag/zy1000.c
index 315b78552..160a51ef8 100644
--- a/src/jtag/zy1000.c
+++ b/src/jtag/zy1000.c
@@ -266,51 +266,51 @@ int zy1000_quit(void)
 int loadFile(const char *fileName, void **data, int *len)
 {
 	FILE * pFile;
-	pFile = fopen (fileName,"rb");
+	pFile = fopen(fileName,"rb");
 	if (pFile==NULL)
 	{
 		LOG_ERROR("Can't open %s\n", fileName);
 		return ERROR_JTAG_DEVICE_ERROR;
 	}
-    if (fseek (pFile, 0, SEEK_END)!=0)
-    {
+	if (fseek(pFile, 0, SEEK_END)!=0)
+	{
 		LOG_ERROR("Can't open %s\n", fileName);
 		fclose(pFile);
 		return ERROR_JTAG_DEVICE_ERROR;
-    }
-    *len=ftell (pFile);
-    if (*len==-1)
-    {
+	}
+	*len=ftell(pFile);
+	if (*len==-1)
+	{
 		LOG_ERROR("Can't open %s\n", fileName);
 		fclose(pFile);
 		return ERROR_JTAG_DEVICE_ERROR;
-    }
+	}
 
-    if (fseek (pFile, 0, SEEK_SET)!=0)
-    {
+	if (fseek(pFile, 0, SEEK_SET)!=0)
+	{
 		LOG_ERROR("Can't open %s\n", fileName);
 		fclose(pFile);
 		return ERROR_JTAG_DEVICE_ERROR;
-    }
-    *data=malloc(*len+1);
-    if (*data==NULL)
-    {
+	}
+	*data=malloc(*len+1);
+	if (*data==NULL)
+	{
 		LOG_ERROR("Can't open %s\n", fileName);
 		fclose(pFile);
 		return ERROR_JTAG_DEVICE_ERROR;
-    }
+	}
 
-    if (fread(*data, 1, *len, pFile)!=*len)
-    {
+	if (fread(*data, 1, *len, pFile)!=*len)
+	{
 		fclose(pFile);
 	free(*data);
 		LOG_ERROR("Can't open %s\n", fileName);
 		return ERROR_JTAG_DEVICE_ERROR;
-    }
-    fclose (pFile);
-    *(((char *)(*data))+*len)=0; /* sentinel */
+	}
+	fclose(pFile);
+	*(((char *)(*data))+*len)=0; /* sentinel */
 
-    return ERROR_OK;
+	return ERROR_OK;
 
 
 
@@ -365,7 +365,7 @@ static cyg_uint32 getShiftValueFlip()
 #if 0
 static void shiftValueInnerFlip(const enum tap_state state, const enum tap_state endState, int repeat, cyg_uint32 value)
 {
-	VERBOSE(LOG_INFO("shiftValueInner %s %s %d %08x (flipped)", tap_state_strings[state], tap_state_strings[endState], repeat, value));
+	VERBOSE(LOG_INFO("shiftValueInner %s %s %d %08x (flipped)", jtag_state_name(state), jtag_state_name(endState), repeat, value));
 	cyg_uint32 a,b;
 	a=state;
 	b=endState;
@@ -476,7 +476,7 @@ static __inline void scanFields(int num_fields, scan_field_t *fields, enum tap_s
 			int r=fields[i].in_handler(inBuffer, fields[i].in_handler_priv, fields+i);
 			if (r!=ERROR_OK)
 			{
-			    /* this will cause jtag_execute_queue() to return an error */
+				/* this will cause jtag_execute_queue() to return an error */
 				jtag_error=r;
 			}
 		}
@@ -703,7 +703,7 @@ int interface_jtag_add_pathmove(int num_states, enum tap_state *path)
 		}
 		else
 		{
-			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[path[state_count]]);
+			LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", jtag_state_name(cur_state), jtag_state_name(path[state_count)]);
 			exit(-1);
 		}
 
-- 
GitLab