From c8b57198025c414f8d19577e6846021843c2a751 Mon Sep 17 00:00:00 2001 From: Øyvind Harboe Date: Mon, 13 Jun 2011 15:42:46 +0200 Subject: 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. --- src/transport/transport.h | 86 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/transport/transport.h (limited to 'src/transport/transport.h') 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 -- cgit v1.2.3