adapter.c: missing space in handle_interface_command
[fw/openocd] / src / jtag / interface.h
index 1fdd8879116590f335e74a192fc4d080276fcc7f..3226944e3f5b5ea04f51989f35a10d597c7d3559 100644 (file)
@@ -26,7 +26,7 @@
 #ifndef OPENOCD_JTAG_INTERFACE_H
 #define OPENOCD_JTAG_INTERFACE_H
 
-#include "jtag.h"
+#include <jtag/jtag.h>
 
 /* @file
  * The "Cable Helper API" is what the cable drivers can use to help
@@ -59,7 +59,7 @@ void tap_set_state_impl(tap_state_t new_state);
 #if defined(_DEBUG_JTAG_IO_)
 #define tap_set_state(new_state) \
        do { \
-               LOG_DEBUG( "tap_set_state(%s)", tap_state_name(new_state) ); \
+               LOG_DEBUG("tap_set_state(%s)", tap_state_name(new_state)); \
                tap_set_state_impl(new_state); \
        } while (0)
 #else
@@ -160,9 +160,6 @@ bool tap_is_state_stable(tap_state_t astate);
  */
 tap_state_t tap_state_transition(tap_state_t current_state, bool tms);
 
-/// Provides user-friendly name lookup of TAP states.
-tap_state_t tap_state_by_name(const char *name);
-
 /// Allow switching between old and new TMS tables. @see tap_get_tms_path
 void tap_use_new_tms_table(bool use_new);
 /// @returns True if new TMS table is active; false otherwise.
@@ -187,11 +184,31 @@ static inline tap_state_t jtag_debug_state_machine(const void *tms_buf,
 }
 #endif // _DEBUG_JTAG_IO_
 
-typedef struct jtag_interface_s
-{
+/**
+ * Represents a driver for a debugging interface.
+ *
+ * @todo Rename; perhaps "debug_driver".  This isn't an interface,
+ * it's a driver!  Also, not all drivers support JTAG.
+ *
+ * @todo We need a per-instance structure too, and changes to pass
+ * that structure to the driver.  Instances can for example be in
+ * either SWD or JTAG modes.  This will help remove globals, and
+ * eventually to cope with systems which have more than one such
+ * debugging interface.
+ */
+struct jtag_interface {
        /// The name of the JTAG interface driver.
        char* name;
 
+       /**
+        * Bit vector listing capabilities exposed by this driver.
+        */
+       unsigned supported;
+#define DEBUG_CAP_TMS_SEQ      (1 << 0)
+
+       /** transports supported in C code (NULL terminated vector) */
+       const char **transports;
+
        /**
         * Execute queued commands.
         * @returns ERROR_OK on success, or an error code on failure.
@@ -208,10 +225,8 @@ typedef struct jtag_interface_s
        /**
         * The interface driver may register additional commands to expose
         * additional features not covered by the standard command set.
-        * @param cmd_ctx The context in which commands should be registered.
-        * @returns ERROR_OK on success, or an error code on failure.
         */
-       int (*register_commands)(struct command_context_s* cmd_ctx);
+       const struct command_registration *commands;
 
        /**
         * Interface driver must initalize any resources and connect to a
@@ -274,7 +289,9 @@ typedef struct jtag_interface_s
         * @returns ERROR_OK on success, or an error code on failure.
         */
        int (*srst_asserted)(int* srst_asserted);
-} jtag_interface_t;
+};
+
 
+extern const char *jtag_only[];
 
 #endif // OPENOCD_JTAG_INTERFACE_H