summaryrefslogtreecommitdiff
path: root/src/transport/transport.h
diff options
context:
space:
mode:
authorØyvind Harboe <oyvind.harboe@zylin.com>2011-06-13 15:42:46 +0200
committerØyvind Harboe <oyvind.harboe@zylin.com>2011-06-13 15:51:04 +0200
commitc8b57198025c414f8d19577e6846021843c2a751 (patch)
treef87ac8b526f05625e4c1b3401542de78aed0c3c1 /src/transport/transport.h
parent1b0862c189f8db70f65e0eeabb749580d71e0e97 (diff)
downloadopenocd+libswd-c8b57198025c414f8d19577e6846021843c2a751.tar.gz
openocd+libswd-c8b57198025c414f8d19577e6846021843c2a751.tar.bz2
openocd+libswd-c8b57198025c414f8d19577e6846021843c2a751.tar.xz
openocd+libswd-c8b57198025c414f8d19577e6846021843c2a751.zip
transport: move files over to transport folder
as we introduce swd and jtag as two transports, we want to start up with a new transport folder to organize the code a bit.
Diffstat (limited to 'src/transport/transport.h')
-rw-r--r--src/transport/transport.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/transport/transport.h b/src/transport/transport.h
new file mode 100644
index 00000000..6ece39e5
--- /dev/null
+++ b/src/transport/transport.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2010 by David Brownell
+ * Copyright (C) 2011 Tomasz Boleslaw CEDRO (http://www.tomek.cedro.info)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef TRANSPORT_H
+#define TRANSPORT_H
+
+#include "helper/command.h"
+
+/**
+ * Wrapper for transport lifecycle operations.
+ *
+ * OpenOCD talks to targets through some kind of debugging
+ * or programming adapter, using some protocol that probably
+ * has target-specific aspects.
+ *
+ * A "transport" reflects electrical protocol to the target,
+ * e..g jtag, swd, spi, uart, ... NOT the messaging protocols
+ * layered over it (e.g. JTAG has eICE, CoreSight, Nexus, OnCE,
+ * and more).
+ *
+ * In addition to the lifecycle operations packaged by this
+ * structure, a transport also involves an interface supported
+ * by debug adapters and used by components such as debug targets.
+ * For non-debug transports, there may be interfaces used to
+ * write to flash chips.
+ */
+struct transport {
+ /**
+ * Each transport has a unique name, used to select it
+ * from among the alternatives. Examples might include
+ * "jtag", * "swd", "AVR_ISP" and more.
+ */
+ const char *name;
+
+ /**
+ * When a transport is selected, this method registers
+ * its commands and activates the transport (e.g. resets
+ * the link).
+ *
+ * After those commands are registered, they will often
+ * be used for further configuration of the debug link.
+ */
+ int (*select)(struct command_context *ctx);
+
+ /**
+ * server startup uses this method to validate transport
+ * configuration. (For example, with JTAG this interrogates
+ * the scan chain against the list of expected TAPs.)
+ */
+ int (*init)(struct command_context *ctx);
+
+ /**
+ * Transports are stored in a singly linked list.
+ */
+ struct transport *next;
+};
+
+int transport_register(struct transport *new_transport);
+
+struct transport *get_current_transport(void);
+
+int transport_register_commands(struct command_context *ctx);
+
+COMMAND_HELPER(transport_list_parse, char ***vector);
+
+int allow_transports(struct command_context *ctx, const char **vector);
+
+bool transports_are_declared(void);
+
+#endif