transport struct
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.
Fields
Each transport has a unique name, used to select it from among the alternatives. Examples might include "jtag", * "swd", "AVR_ISP" and more.
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.
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 (*)(const char **targetname)
Optional. If defined, allows transport to override target name prior to initialisation.
Transports are stored in a singly linked list.