From f9596e96c9835101343603b7ad9c02682b3e7485 Mon Sep 17 00:00:00 2001
From: zwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Tue, 9 Jun 2009 08:40:46 +0000
Subject: [PATCH] Move the jtag_error helper routines out of header file: -
 Makes jtag_error static, add new get helper function for completeness. -
 Improve and add documentation and style for these helpers.

git-svn-id: svn://svn.berlios.de/openocd/trunk@2162 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 src/jtag/core.c | 33 +++++++++++++++++++++++++++++----
 src/jtag/jtag.h | 33 ++++++++-------------------------
 2 files changed, 37 insertions(+), 29 deletions(-)

diff --git a/src/jtag/core.c b/src/jtag/core.c
index 0a587487e..85b2a32e9 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -46,10 +46,17 @@ static int jtag_flush_queue_count;
 static void jtag_add_scan_check(void (*jtag_add_scan)(int in_num_fields, const scan_field_t *in_fields, tap_state_t state),
 		int in_num_fields, scan_field_t *in_fields, tap_state_t state);
 
-/* note that this is not marked as static as it must be available from outside core.c for those
-   that implement the jtag_xxx() minidriver layer
-*/
-int jtag_error=ERROR_OK;
+/**
+ * The jtag_error variable is set when an error occurs while executing
+ * the queue.  Application code may set this using jtag_set_error(),
+ * when an error occurs during processing that should be reported during
+ * jtag_execute_queue().
+ *
+ * Tts value may be checked with jtag_get_error() and cleared with
+ * jtag_error_clear().  This value is returned (and cleared) by
+ * jtag_execute_queue().
+ */
+static int jtag_error = ERROR_OK;
 
 char* jtag_event_strings[] =
 {
@@ -101,6 +108,24 @@ struct jtag_interface_s *jtag = NULL;
 jtag_interface_t *jtag_interface = NULL;
 int jtag_speed = 0;
 
+void jtag_set_error(int error)
+{
+	if ((error == ERROR_OK) || (jtag_error != ERROR_OK))
+		return;
+	jtag_error = error;
+}
+int jtag_get_error(void)
+{
+	return jtag_error;
+}
+int jtag_error_clear(void)
+{
+	int temp = jtag_error;
+	jtag_error = ERROR_OK;
+	return temp;
+}
+
+
 jtag_tap_t *jtag_all_taps(void)
 {
 	return __jtag_all_taps;
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index 515f29691..d7698ac75 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -578,36 +578,19 @@ extern int jtag_execute_queue(void);
 extern void jtag_execute_queue_noclear(void);
 
 /**
- * The jtag_error variable is set when an error occurs while executing
- * the queue.
- *
- * This flag can also be set from application code, if an error happens
- * during processing that should be reported during jtag_execute_queue().
- *
- * It is cleared by jtag_execute_queue().
+ * Set the current JTAG core execution error, unless one was set
+ * by a previous call previously.  Driver or application code must
+ * use jtag_error_clear to reset jtag_error once this routine has been
+ * called with a non-zero error code.
  */
-extern int jtag_error;
-
-static __inline__ void jtag_set_error(int error)
-{
-	if ((error==ERROR_OK)||(jtag_error!=ERROR_OK))
-	{
-		/* keep first error */
-		return;
-	}
-	jtag_error=error;
-}
-
+void jtag_set_error(int error);
+/// @returns The current value of jtag_error
+int jtag_get_error(void);
 /**
  * Resets jtag_error to ERROR_OK, returning its previous value.
  * @returns The previous value of @c jtag_error.
  */
-static inline int jtag_error_clear(void)
-{
-	int temp = jtag_error;
-	jtag_error = ERROR_OK;
-	return temp;
-}
+int jtag_error_clear(void);
 
 /* can be implemented by hw+sw */
 extern int jtag_power_dropout(int* dropout);
-- 
GitLab