# HG changeset patch # User Florian Pose # Date 1215098271 0 # Node ID c75cdcc5ce8764d772236db92597f9c8792fb17f # Parent 1c0edf99def064aa1632664d6929711bec0de5ec Started to re-write the documentation. diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/ethercat_doc.tex --- a/documentation/ethercat_doc.tex Wed Jul 02 14:41:29 2008 +0000 +++ b/documentation/ethercat_doc.tex Thu Jul 03 15:17:51 2008 +0000 @@ -6,6 +6,57 @@ % %------------------------------------------------------------------------------ +% +% Conventions +% The IgH EtherCAT Master +% Feature Summary +% License +% Architecture +% Phases +% Behavior (Scanning) TODO +% Application Interface +% Interface version +% Master Requesting and Releasing +% Master Locking +% Slave configuration +% Configuring Pdo assignment and mapping +% Domains (memory) +% Pdo entry registration +% Sdo configuration +% Sdo access +% Cyclic operation +% Ethernet Devices +% Device Interface +% Device Modules +% Network Driver Basics +% EtherCAT Network Drivers +% Device Selection +% The Device Interface +% Patching Network Drivers +% The Master's State Machines +% Master +% Slave scanning +% SII +% Pdo assign/mapping +% Slave configuration +% State change +% Pdo assign/mapping +% CoE upload/download/information +% Mailbox Protocol Implementations +% Ethernet-over-EtherCAT (EoE) +% CANopen-over-EtherCAT (CoE) +% User Space +% The ethercat command +% System Integration +% The EtherCAT Init Script +% The EtherCAT Sysconfig File +% Monitoring and Debugging +% Installation +% Example applications +% Bibliography +% Glossary +% + \documentclass[a4paper,12pt,BCOR6mm,bibtotoc,idxtotoc]{scrbook} \usepackage[latin1]{inputenc} @@ -17,6 +68,7 @@ \usepackage{svn} \usepackage{textcomp} \usepackage{url} +\usepackage{SIunits} \usepackage[pdfpagelabels,plainpages=false]{hyperref} \setlength{\parskip}{0.8ex plus 0.8ex minus 0.5ex} @@ -30,7 +82,7 @@ }{} \lstset{basicstyle=\ttfamily\small,numberstyle=\tiny,aboveskip=4mm, - belowskip=2mm,gobble=2,escapechar=`} + belowskip=2mm,escapechar=`} \renewcommand\lstlistlistingname{List of Listings} % Workaround for lstlistoflistings bug @@ -60,7 +112,8 @@ \SVN $Date$ \SVN $Revision$ -\newcommand{\masterversion}{1.1.1} +\newcommand{\masterversion}{1.4.0} +\newcommand{\linenum}[1]{\normalfont\textcircled{\tiny #1}} \makeindex \makenomenclature @@ -112,37 +165,37 @@ The following typographic conventions are used: \begin{itemize} -\item \textit{Italic face} is used for newly introduced terms, file - names, parameter names and in-text source code elements. -\item \texttt{Typewriter face} is used for code examples and - command line output. -\item \texttt{\textbf{Bold typewriter face}} is used for user input in - command lines. + +\item \textit{Italic face} is used for newly introduced terms and file names. + +\item \texttt{Typewriter face} is used for code examples and command line +output. + +\item \texttt{\textbf{Bold typewriter face}} is used for user input in command +lines. + \end{itemize} -Data values and addresses are specified as hexadecimal values with the -prefix 0x. Example: 0x88A4. Unless otherwise noted, address values are -specified as byte addresses. - -Concerning bit operations, the phrase ``setting a bit'', stands for -setting the bit to $1$, ``clearing a bit'' means setting it to $0$, -respectively. +Data values and addresses are usually specified as hexadecimal values. These +are marked in the \textit{C} programming language style with the prefix +\lstinline+0x+ (example: \lstinline+0x88A4+). Unless otherwise noted, address +values are specified as byte addresses. Function names are always printed with parentheses, but without -parameters. So, if a function \textit{ecrt\_request\_master()} has -empty parentheses, this does not mean, that it has no parameters. - -If shell commands have to be entered, this is marked by a prompt: - -\begin{lstlisting}[gobble=2] - `\$` +parameters. So, if a function \lstinline+ecrt_request_master()+ has +empty parentheses, this shall not imply that it has no parameters. + +If shell commands have to be entered, this is marked by a dollar prompt: + +\begin{lstlisting} +$ \end{lstlisting} Further, if a shell command has to be entered as the superuser, the -prompt ends with a mesh: - -\begin{lstlisting}[gobble=2] - # +prompt is a mesh: + +\begin{lstlisting} +# \end{lstlisting} %------------------------------------------------------------------------------ @@ -151,12 +204,7 @@ \label{chapter:master} \pagenumbering{arabic} -This section will first introduce the master's general features and -the concepts used for master development and will then explain the -master's general architecture and offer details of the different -modules. In addition, it will cover state machine definitions, mailbox -protocol implementation and the user space interface. The last section -will deal with timing aspects. +This chapter covers some general information about the EtherCAT master. %------------------------------------------------------------------------------ @@ -164,81 +212,121 @@ \label{sec:summary} \index{Master!Features} -The list below gives a short summary of the features of the -implemented EtherCAT master. +The list below gives a short summary of the master features. \begin{itemize} -\item The master runs as a kernel module for Linux 2.6. -\item It comes with EtherCAT-capable network driver for RealTek - RTL8139 (and compatible) network interface cards. + +\item Designed as a kernel module for Linux 2.6. + +\item Comes with EtherCAT-capable drivers for several common Ethernet devices. + \begin{itemize} + \item The Ethernet hardware is operated without interrupts. - \item Drivers for additional Ethernet hardware can easily be - implemented due to a common device interface provided by the - master. + + \item Drivers for additional Ethernet hardware can easily be implemented + using the common device interface (see section~\ref{sec:ecdev}) provided by + the master module. + \end{itemize} -\item The master module supports multiple EtherCAT masters on one - machine. -\item The master code supports any Linux realtime extension through - its independent architecture. + +\item The master module supports multiple EtherCAT masters running in +parallel. + +\item The master code supports any Linux realtime extension through its +independent architecture. + \begin{itemize} - \item RTAI\nomenclature{RTAI}{RealTime Application Interface}, - ADEOS\nomenclature{ADEOS}{Adaptive Domain Environment for - Operating Systems}, etc. + + \item RTAI\nomenclature{RTAI}{Realtime Application Interface}, + ADEOS\nomenclature{ADEOS}{Adaptive Domain Environment for Operating + Systems}, etc. + \item It runs well even without realtime extensions. + \end{itemize} -\item Common ``realtime interface'' for modules, that want to use - EtherCAT functionality. + +\item Common ``realtime interface'' for applications, that want to use +EtherCAT functionality (see section~\ref{sec:ecrt}). + +\item \textit{Domains} are introduced, to allow grouping of process + data transfers with different slave groups and task periods. + \begin{itemize} - \item Synchronous and asynchronous sending and receiving of frames - is supported. - \item Avoidance of unnecessary copy operations for process data. + + \item Handling of multiple domains with different task periods. + + \item Automatic calculation of process data mapping, FMMU and sync manager + configuration within each domain. + \end{itemize} -\item \textit{Domains} are introduced, to allow grouping of process - data objects. + +\item Communication through several finite state machines. + \begin{itemize} - \item Handling of multiple domains with different sampling rates. - \item Automatic calculation of process data mapping, FMMU and sync manager - configuration within each domain. + + \item Automatic bus scanning after topology changes. + + \item Bus monitoring during operation. + + \item Automatic reconfiguration of slaves (for example after power failure) + during operation. + \end{itemize} -\item Communication through serveral finite state machines. + +\item CANopen-over-EtherCAT (CoE) + \begin{itemize} - \item Bus monitoring possible during realtime operation. - \item Automatic reconfiguration of slaves on bus power failure - during realtime operation. - \item Controlling of single slaves during realtime operation. + + \item Sdo upload, download and information service. + + \item Slave configuration via Sdos. + + \item Sdo access from user-space and from the application. + \end{itemize} -\item Master idle mode. + +\item Ethernet-over-EtherCAT (EoE) + \begin{itemize} - \item Automatic scanning of slaves upon topology changes. - \item Bus visualisation and EoE processing without a realtime module - connected. + + \item Transparent use of EoE slaves via virtual network interfaces. + + \item Natively supports either a switched or a routed EoE network + architecture. + \end{itemize} -\item Implementation of the CANopen-over-EtherCAT (CoE) protocol. + +\item User space command-line-tool ``ethercat``. + \begin{itemize} - \item Configuration of CoE-capable slaves via Sdo interface. + + \item Showing the current bus with slaves, Pdos and Sdos. + \item Showing the bus configuration. + \item Showing domains and process data. + \item Setting the master's debug level. + \item Writing alias addresses. + \item Sdo uploading/downloading. + \item Reading/writing a slave's SII. + \item Setting slave states. + \item Generate slave description XML. + \end{itemize} -\item Implementation of the Ethernet-over-EtherCAT (EoE) protocol. - \begin{itemize} - \item Each master creates virtual network devices that are - automatically coupled to EoE-cap\-able slaves found. - \item This implementation natively supports either a switched or a - routed EoE network architecture. - \end{itemize} -\item User space interface via the System Filesystem - (Sysfs)\nomenclature{Sysfs}{System Filesystem}. - \begin{itemize} - \item User space tool for bus visualisation. - \item Slave E$^2$PROM image reading and writing. - \end{itemize} + \item Seamless system integration though LSB\nomenclature{LSB}{Linux Standard Base} compliance. + \begin{itemize} + \item Master and network device configuration via Sysconfig files. - \item Linux Standard Base compatible init script for master control. + + \item Init script for master control. + \end{itemize} + \item Virtual read-only network interface for monitoring and debugging purposes. + \end{itemize} %------------------------------------------------------------------------------ @@ -253,107 +341,180 @@ %------------------------------------------------------------------------------ -\section{General Master Architecture} -\label{sec:masterarch} +\chapter{Architecture} +\label{sec:arch} \index{Master!Architecture} The EtherCAT master is integrated into the Linux 2.6 kernel. This was -an early design decision, which has been made for serveral reasons: +an early design decision, which has been made for several reasons: \begin{itemize} -\item Kernel code has significantly better realtime characteristics, - i.~e. less jitter than user space code. It was foreseeable, that a - fieldbus master has a lot of cyclic work to do. Cyclic work is - usually triggered by timer interrupts inside the kernel. The - execution delay of a function that processes timer interrupts is - less, when it resides in kernel space, because there is no need of - time-consuming context switches to a user space process. + +\item Kernel code has significantly better realtime characteristics, i.~e. +less latency than user space code. It was foreseeable, that a fieldbus master +has a lot of cyclic work to do. Cyclic work is usually triggered by timer +interrupts inside the kernel. The execution delay of a function that processes +timer interrupts is less, when it resides in kernel space, because there is no +need of time-consuming context switches to a user space process. + \item It was also foreseeable, that the master code has to directly - communicate with the Ethernet hardware. This has to be done in the - kernel anyway (through network device drivers), which is one more - reason for the master code being in kernel space. +communicate with the Ethernet hardware. This has to be done in the kernel +anyway (through network device drivers), which is one more reason for the +master code being in kernel space. + \end{itemize} -A general overview of the master architecture can be seen in -figure~\ref{fig:masterarch}. +Figure~\ref{fig:arch} gives a general overview of the master architecture. \begin{figure}[htbp] \centering - \includegraphics[width=.9\textwidth]{images/masterarch} + \includegraphics[width=.9\textwidth]{images/architecture} \caption{Master architecture} - \label{fig:masterarch} + \label{fig:arch} \end{figure} \paragraph{Master Module} \index{Master module} -The EtherCAT master mainly consists of the master module, containing -one or more EtherCAT masters (section~\ref{sec:mastermod}), the -``Device Interface'' (section~\ref{sec:ecdev}) and the ``Realtime -Interface'' (section~\ref{sec:ecrt}). +The EtherCAT master mainly consists of the master module, containing one or +more EtherCAT masters (section~\ref{sec:mastermod}), the ``Device Interface'' +(section~\ref{sec:ecdev}) and the ``Realtime Interface'' +(section~\ref{sec:ecrt}). \paragraph{Device Modules} \index{Device modules} Furthermore there are EtherCAT-capable network device driver -modules\index{Device modules}, that connect to the EtherCAT master via -the device interface. These modified network drivers can handle both -network devices used for EtherCAT operation and ``normal'' Ethernet -devices. The common case is, that the master module offers a single -EtherCAT master: An EtherCAT-capable network device driver module -connects one network device to this master, that is now able to send -and receive EtherCAT frames, while all other network devices handled -by the network driver get connected to the kernel's network stack as -usual. - -\paragraph{Realtime Modules} - -A ``realtime module''\index{Realtime module} is a kernel module, that -uses the EtherCAT master for cyclic exchange of process data with -EtherCAT slaves. Realtime modules are not part of the EtherCAT master -code\footnote{Although there are serveral examples provided in the - \textit{examples} directory, see chapter~\ref{chapter:usage} for - more information}, so anybody wanting to use the master has to write -one. A realtime module can ``request'' a master through the realtime -interface. If this succeeds, the module has the control over the -master. It can now configure slaves and set up a process data image -(see section~\ref{sec:processdata}) for cyclic exchange. This cyclic -code has to be provided by the realtime module, so it is in hands of -the developer, which mechanism to use for this. Moreover he has to -decide, whether or not using a Linux realtime extension. - -\paragraph{Why ``Realtime'' Module?} - -The name shall not imply, that a linux realtime extension is -mandatory: The master runs well even without realtime extensions, as -section~\ref{sec:mini} shows. However, the code using the master is -time-critical, because process data IO has to be done in cyclic work. -Some EtherCAT slaves support watchdog units, that stop driving the -outputs when process data was not exchanged for some time. So the -names ``realtime interface'' and ``realtime module'' are quite -appropriate. - -%------------------------------------------------------------------------------ - -\subsection{Handling of Process Data} +modules\index{Device modules}, that connect to the EtherCAT master via the +device interface. These modified network drivers can handle both network +devices used for EtherCAT operation and ``normal'' Ethernet devices. The +common case is, that the master module offers a single EtherCAT master: An +EtherCAT-capable network device driver module connects one network device to +this master, that is now able to send and receive EtherCAT frames, while all +other network devices handled by the network driver get connected to the +kernel's network stack as usual. + +\paragraph{Application Modules} + +An application module''\index{Application module} is a kernel module, that +uses the EtherCAT master (usually for cyclic exchange of process data with +EtherCAT slaves). These modules are not part of the EtherCAT master +code\footnote{Although there are some examples provided in the +\textit{examples} directory, see chapter~\ref{chapter:usage}}, but have to be +generated or written by the application engineer. An application module can +``request'' a master through the realtime interface (see +section~\ref{sec:ecrt}). If this succeeds, the module has the control over the +master: It can provide a bus configuration and exchange process data. + +%------------------------------------------------------------------------------ + +\section{Phases} +\index{Master phases} + +The EtherCAT master has several phases (see fig.~\ref{fig:phases}): + +\begin{figure}[htbp] + \centering + \includegraphics[width=.9\textwidth]{images/phases} + \caption{Master phases and transitions} + \label{fig:phases} +\end{figure} +\begin{description} + +\item[Orphaned phase]\index{Orphaned phase} This mode takes effect, when the +master has no Ethernet device connected. No bus communication is possible. + +\item[Idle phase]\index{Idle phase} takes effect when the master has an +Ethernet device connected, but is not requested by any application. The master +runs its state machine (see section~\ref{sec:fsm-master}), that automatically +scans the bus for slaves and executes pending operations from the user space +interface (for example Sdo access). The command-line tool can be used to access +the bus, but there is no process data exchange because of the missing bus +configuration. + +\item[Operation phase]\index{Operation phase} The master is requested by an +application that can provide a bus configuration and exchange process data. + +\end{description} + +%------------------------------------------------------------------------------ + +\section{General behavior} % FIXME +\index{Master behavior} + +\ldots + +%------------------------------------------------------------------------------ + +\section{The Master Module} % FIXME +\label{sec:mastermod} +\index{Master module} + +The EtherCAT master is designed to run as a kernel module. Moreover +the master kernel module \textit{ec\_master} can handle multiple +masters at the same time: The number of masters has to be passed to +the module with the parameter \textit{ec\_master\_count}, that +defaults to $1$. A certain master can later be addressed by its index. +For example, if the master module has been loaded with the command + +\begin{lstlisting}[gobble=2] + # `\textbf{modprobe ec\_master ec\_master\_count=2}` +\end{lstlisting} + +the two masters can be addressed by their indices 0 and 1 respectively +(see figure~\ref{fig:masters}). This master index mandatory for +certain functions of the master interfaces. + +\begin{figure}[htbp] + \centering + \includegraphics[width=.5\textwidth]{images/masters} + \caption{Multiple masters in one module} + \label{fig:masters} +\end{figure} + +\paragraph{Master Log Messages} + +The master module gives information about it's state and events via +the Syslog interface. The module loading command above should result +in the Syslog messages below (or similar): + +\begin{lstlisting}[gobble=2] + EtherCAT: Master driver, 1.1 (stable) - rev. 513, + compiled by fp at Aug 09 2006 09:43:50 + EtherCAT: Initializing 2 EtherCAT master(s)... + EtherCAT: Initializing master 0. + EtherCAT: Initializing master 1. + EtherCAT: Master driver initialized. +\end{lstlisting} + +The master provides information about it's version number, subversion +revision number and compile information, like the date of compilation +and the user, who compiled. All messages are prefixed either with +\texttt{EtherCAT:}, \texttt{EtherCAT WARNING:} or \texttt{EtherCAT + ERROR:}, which makes searching the logs easier. + +%------------------------------------------------------------------------------ + +\section{Handling of Process Data} % FIXME \label{sec:processdata} +\ldots + \paragraph{Process Data Image} \index{Process data} -The slaves offer their inputs and outputs by presenting the master -so-called ``Process Data Objects'' (Pdos\index{Pdo}). The available -Pdos can be determined by reading out the slave's TXPDO and RXPDO -E$^2$PROM categories. The realtime module can register the Pdos for -data exchange during cyclic operation. The sum of all registered Pdos -defines the ``process data image'', which is exchanged via the -``Logical ReadWrite'' datagrams introduced +The slaves offer their inputs and outputs by presenting the master so-called +``Process Data Objects'' (Pdos\index{Pdo}). The available Pdos can be +determined by reading out the slave's TXPDO and RXPDO E$^2$PROM categories. The +application can register the Pdos for data exchange during cyclic operation. +The sum of all registered Pdos defines the ``process data image'', which is +exchanged via the ``Logical ReadWrite'' datagrams introduced in~\cite[section~5.4.2.4]{dlspec}. \paragraph{Process Data Domains} \index{Domain} -The process data image can be easily managed by creating co-called +The process data image can be easily managed by creating so-called ``domains'', which group Pdos and allocate the datagrams needed to exchange them. Domains are mandatory for process data exchange, so there has to be at least one. They were introduced for the following @@ -382,7 +543,7 @@ \paragraph{FMMU Configuration} \index{FMMU!Configuration} -A realtime module can register Pdos for process data exchange. Every +An application can register Pdos for process data exchange. Every Pdo is part of a memory area in the slave's physical memory, that is protected by a sync manager \cite[section~6.7]{dlspec} for synchronized access. In order to make a sync manager react on a @@ -406,98 +567,485 @@ \begin{figure}[htbp] \centering \includegraphics[width=\textwidth]{images/fmmus} - \caption{FMMU configuration for serveral domains} + \caption{FMMU configuration for several domains} \label{fig:fmmus} \end{figure} -\paragraph{Process Data Pointers} - -The figure also demonstrates the way, the realtime module can access the -exchanged process data: At Pdo registration, the realtime module has -to provide the address of a process data pointer. Upon calculation of -the domain image and allocation of process data memory, this pointer -is redirected to the appropriate location inside the domain's process -data memory and can later be easily dereferenced by the module code. - -%------------------------------------------------------------------------------ - -\subsection{Operation Modes} -\index{Master modes} - -The EtherCAT master has serveral modes of operation: +\paragraph{Process Data Pointers} % FIXME + +The figure also demonstrates the way, the application can access the exchanged +process data: At Pdo registration, the application has to provide the address +of a process data pointer. Upon calculation of the domain image and allocation +of process data memory, this pointer is redirected to the appropriate location +inside the domain's process data memory and can later be easily dereferenced by +the module code. + +%------------------------------------------------------------------------------ + +\chapter{Application Interface} +\label{sec:ecrt} +\index{Application interface} + +%------------------------------------------------------------------------------ + +\section{The Realtime Interface} % FIXME move information to ecrt.h, reference +\label{sec:ecrt} +\index{Realtime interface} + +The realtime interface provides functions and data structures for applications +to access and use an EtherCAT master. + +% \paragraph{Master Phases} +% +% Every application should use the master in three phases: +% +% \begin{enumerate} +% \item \textit{Startup} - The master is requested and the bus is +% validated. Domains are created and Pdos are registered. Slave +% configurations are applied. +% \item \textit{Operation} - Cyclic code is run, process data is +% exchanged and the master state machine is executed. +% \item \textit{Shutdown} - Cyclic code is stopped and the master +% is released. +% \end{enumerate} + +\subsubsection{Master Requesting and Releasing} + +Before an application can access an EtherCAT master provided by the +master module, it has to reserve one for exclusive use. After use, it +has to release the requested master and make it available for other +modules. This is done with the following functions: + +\begin{lstlisting}[gobble=2,language=C] + ec_master_t *ecrt_request_master(unsigned int master_index); + void ecrt_release_master(ec_master_t *master); +\end{lstlisting} + +The \textit{ecrt\_request\_master()} function has to be the first function a +module has to call, when using EtherCAT. The function takes the index of the +master as its argument. The first master has index 0, the $n$th master has +index $n - 1$. The number of existent masters has to be specified when loading +the master module (see section~\ref{sec:mastermod}). The function tries to +reserve the specified master and scans for slaves. It returns a pointer to the +reserved master object upon success, or \textit{NULL} if an error occurred. + +The \textit{ecrt\_release\_master()} function releases a reserved +master after use. It takes the pointer to the master object returned +by \textit{ecrt\_request\_master()} as its argument and can never +fail. + +\subsubsection{Master Methods} +\label{sec:ecrt-master} + +\paragraph{Domain Creation} + +For process data exchange, at least one process data domain is needed +(see section~\ref{sec:processdata}). + +\begin{lstlisting}[gobble=2,language=C] + ec_domain_t *ecrt_master_create_domain(ec_master_t *master); +\end{lstlisting} + +The \textit{ecrt\_master\_create\_domain()} method creates a new +process data domain and returns a pointer to the new domain object. +This object can be used for registering process data objects and +exchange process data in cyclic operation. On failure, the function +returns \textit{NULL}. + +\paragraph{Slave Handlers} + +To access a certain slave, there is a method to get a slave handler: + +\begin{lstlisting}[gobble=2,language=C] + ec_slave_t *ecrt_master_get_slave(const ec_master_t *, + const char *); +\end{lstlisting} + +The \textit{ecrt\_master\_get\_slave()} method returns a pointer to a +certain slave object, specified by its ASCII address (see +section~\ref{sec:addr}). If the address is invalid, \textit{NULL} is +returned. + +\paragraph{Master Activation} + +When all domains are created, and all process data objects are +registered, the master can be activated: + +\begin{lstlisting}[gobble=2,language=C] + int ecrt_master_activate(ec_master_t *master); + void ecrt_master_deactivate(ec_master_t *master); +\end{lstlisting} + +By calling the \textit{ecrt\_master\_activate()} method, all slaves +are configured according to the prior method calls and are brought +into OP state. In this case, the method has a return value of 0. +Otherwise (wrong configuration or bus failure) the method returns +non-zero. + +The \textit{ecrt\_master\_deactivate()} method is the counterpart to +the activate call: It brings all slaves back into INIT state again. +This method should be called prior to +\textit{ecrt\_\-master\_\-release()}. + +\paragraph{Locking Callbacks} + +For concurrent master access, the application has to provide a locking +mechanism (see section~\ref{sec:concurr}): + +\begin{lstlisting}[gobble=2,language=C] + void ecrt_master_callbacks(ec_master_t *master, + int (*request_cb)(void *), + void (*release_cb)(void *), + void *cb_data); +\end{lstlisting} + +The ``request lock'' and ``release lock'' callbacks can be set with +the \textit{ecrt\_master\_call\-backs()} method. It takes two function +pointers and a data value as additional arguments. The arbitrary data +value will be passed as argument on every callback. Asynchronous +master access (like EoE processing) is only possible if these +callbacks have been set. + +\paragraph{Preparation of Cyclic Data Exchange} + +Cyclic operation mostly consists of the three steps input, processing and +output. In EtherCAT terms this would mean: Receive datagrams, evaluate process +data and send datagrams. The first cycle differs from this principle, because +no datagrams have been sent yet, so there is nothing to receive. To avoid +having a case differentiation (in terms of an \textit{if} clause), the +following method exists: + +\begin{lstlisting}[gobble=2,language=C] + void ecrt_master_prepare(ec_master_t *master); +\end{lstlisting} + +As a last thing before cyclic operation, a call to the +\textit{ecrt\_master\_prepare()} method should be issued. It makes all +process data domains queue their datagrams and issues a send command, +so that the first receive call in cyclic operation will not fail. + +\paragraph{Frame Sending and Receiving} + +To send all queued datagrams and to later receive the sent datagrams +there are two methods: + +\begin{lstlisting}[gobble=2,language=C] + void ecrt_master_send(ec_master_t *master); + void ecrt_master_receive(ec_master_t *master); +\end{lstlisting} + +The \textit{ecrt\_master\_send()} method takes all datagrams, that +have been queued for transmission, packs them into frames, and passes +them to the network device for sending. + +The \textit{ecrt\_master\_receive()} queries the network device for +received frames (by calling the ISR\index{ISR}), extracts received +datagrams and dispatches the results to the datagram objects in the +queue. Received datagrams, and the ones that timed out, will be +marked, and then dequeued. + +\paragraph{Running the Operation State Machine} + +The master's operation state machine (see section~\ref{sec:fsm-op}) +monitors the bus in cyclic operation and reconfigures slaves, if +necessary. Therefore, the following method should be called +cyclically: + +\begin{lstlisting}[gobble=2,language=C] + void ecrt_master_run(ec_master_t *master); +\end{lstlisting} + +The \textit{ecrt\_master\_run()} method executes the master's +operation state machine step by step. It returns after processing one +state and queuing a datagram. Calling this function is not mandatory, +but highly recommended. + +\paragraph{Master Monitoring} + +It is also highly recommended to evaluate the master's error state. In +this way it is possible to notice lost network links, failed bus +segments, and other issues: + +\begin{lstlisting}[gobble=2,language=C] + int ecrt_master_state(const ec_master_t *master); +\end{lstlisting} + +The \textit{ecrt\_master\_state()} method returns the master's error +state. The following states are defined as part of the realtime +interface: \begin{description} -\item[Orphaned Mode] This mode takes effect, when the master has no - EtherCAT-capable network device connected. No bus communication is - possible, so this mode is not of further interest. -\item[Idle Mode]\index{Idle mode} takes effect when the master is - unused (i.~e. there is no realtime module, that reserved the - master). In this case, the master has the ability to scan the bus by - itsself and generously allow bus access from user space. This mode - is meant for maintenance and visualisation. -\item[Operation Mode]\index{Operation mode} The master is reserved for - exclusive access by a realtime module. In this mode, the master is - adjusted for availability and monitoring. Access from user space is - very restrictive and mostly limited to reading direction. - +\item[EC\_MASTER\_OK] means, that no error has occurred. +\item[EC\_MASTER\_LINK\_ERROR] means, that the network link is + currently down. +\item[EC\_MASTER\_BUS\_ERROR] means, that one or more slaves do not + respond. \end{description} -Figure~\ref{fig:modes} shows the three modes and the possible mode -transitions. +\subsubsection{Domain Methods} +\label{sec:ecrt-domain} + +\paragraph{Pdo Registration} + +To access data of a slave's Pdo in cyclic operation, it is necessary +to make it part of a process data domain: + +\begin{lstlisting}[gobble=2,language=C] + ec_slave_t *ecrt_domain_register_pdo(ec_domain_t *domain, + const char *address, + uint32_t vendor_id, + uint32_t product_code, + const char *pdo_name + void **data_ptr); + int ecrt_domain_register_pdo_list(ec_domain_t *domain, + const ec_pdo_reg_t *pdos); +\end{lstlisting} + +The \textit{ecrt\_domain\_register\_pdo()} method registers a certain +Pdo as part of the domain and takes the address of the process data +pointer. This pointer will be set on master activation and then can be +parameter to the \textit{EC\_READ\_*} and \textit{EC\_WRITE\_*} macros +described below. + +A perhaps easier way to register multiple Pdos at the same time is to +fill an array of \textit{ec\_pdo\_reg\_t} and hand it to the +\textit{ecrt\_domain\_register\_pdo\_list()} method. Attention: This +array has to be terminated by an empty structure (\textit{\{\}})! + +\paragraph{Evaluating Domain Data} + +To evaluate domain data, the following method has to be used: + +\begin{lstlisting}[gobble=2,language=C] + void ecrt_domain_process(ec_domain_t *domain); +\end{lstlisting} + +The \textit{ecrt\_domain\_process()} method sets the domains state and +re-queues its datagram for sending. + +\paragraph{Domain State} + +Similar to the master state, a domain has an own error state: + +\begin{lstlisting}[gobble=2,language=C] + int ecrt_domain_state(const ec_domain_t *domain); +\end{lstlisting} + +The \textit{ecrt\_domain\_state()} method returns the domain's error state. It +is non-zero if \textbf{not} all process data values could be exchanged, and +zero otherwise. + +\subsubsection{Slave Methods} +\label{sec:ecrt-slave} + +\paragraph{Sdo Configuration} + +To configure slave Sdos, the function interface below can be used: + +\begin{lstlisting}[gobble=2,language=C] + int ecrt_slave_conf_sdo8(ec_slave_t *slave, + uint16_t sdo_index, + uint8_t sdo_subindex, + uint8_t value); + int ecrt_slave_conf_sdo16(ec_slave_t *slave, + uint16_t sdo_index, + uint8_t sdo_subindex, + uint16_t value); + int ecrt_slave_conf_sdo32(ec_slave_t *slave, + uint16_t sdo_index, + uint8_t sdo_subindex, + uint32_t value); +\end{lstlisting} + +The \textit{ecrt\_slave\_conf\_sdo*()} methods prepare the configuration of a +certain Sdo. The index and subindex of the Sdo, and the value have to be +specified. The configuration is done each time, the slave is reconfigured. The +methods only differ in the Sdo's data type. If the configuration could be +prepared, zero is returned. If an error occurred, non-zero is returned. + +\paragraph{Variable-sized Pdos} + +For specifying the size of variable-sized Pdos, the following method +can be used: + +\begin{lstlisting}[gobble=2,language=C] + int ecrt_slave_pdo_size(ec_slave_t *slave, + const char *pdo_name, + size_t size); +\end{lstlisting} + +The \textit{ecrt\_slave\_pdo\_size()} method takes the name of the Pdo +and the size. It returns zero on success, otherwise non-zero. + +\subsubsection{Process Data Access} +\label{sec:macros} + +The endianess of the process data could differ from that of the CPU. +Therefore, process data access has to be done by the macros below, +that are also provided by the realtime interface: + +\begin{lstlisting}[gobble=2,language=C] + #define EC_READ_BIT(DATA, POS) + #define EC_WRITE_BIT(DATA, POS, VAL) + + #define EC_READ_U8(DATA) + #define EC_READ_S8(DATA) + #define EC_READ_U16(DATA) + #define EC_READ_S16(DATA) + #define EC_READ_U32(DATA) + #define EC_READ_S32(DATA) + + #define EC_WRITE_U8(DATA, VAL) + #define EC_WRITE_S8(DATA, VAL) + #define EC_WRITE_U16(DATA, VAL) + #define EC_WRITE_S16(DATA, VAL) + #define EC_WRITE_U32(DATA, VAL) + #define EC_WRITE_S32(DATA, VAL) +\end{lstlisting} + +There are macros for bitwise access (\textit{EC\_READ\_BIT()}, +\textit{EC\_WRITE\_BIT()}), and byte-wise access (\textit{EC\_READ\_*()}, +\textit{EC\_WRITE\_*()}). The byte-wise macros carry the data type in their +name. Example: \textit{EC\_WRITE\_S16()} writes a 16 bit signed value to +EtherCAT data. The \textit{DATA} parameter is supposed to be a process data +pointer, as provided at Pdo registration. + +The macros use the kernel's endianess conversion macros, that are +preprocessed to empty macros in case of equal endianess. This is the +definition for the \textit{EC\_\-READ\_\-U16()} macro: + +\begin{lstlisting}[gobble=2,language=C] + #define EC_READ_U16(DATA) \ + ((uint16_t) le16_to_cpup((void *) (DATA))) +\end{lstlisting} + +The \textit{le16\_to\_cpup()} macro converts a little-endian, 16 bit +value to the CPU's architecture and takes a pointer to the input value +as its argument. If the CPU's architecture is little-endian, too (for +example on X86 and compatible), nothing has to be converted. In this +case, the macro is replaced with an empty macro by the preprocessor +and so there is no unneeded function call or case differentiation in +the code. + +For keeping it portable, it is highly recommended to make use of these +macros. + +%------------------------------------------------------------------------------ + +\subsection{Slave Addressing} +\label{sec:addr} +\index{Slave!Addressing} + +The master offers the several slave addressing schemes (for Pdo +registration or configuration) via the realtime interface. For this +reason, slave addresses are ASCII\nomenclature{ASCII}{American + Standard Code for Information Interchange}-coded and passed as a +string. The addressing schemes are independent of the EtherCAT +protocol and represent an additional feature of the master. + +Below, the allowed addressing schemes are described. The descriptions +are followed by a regular expression formally defining the addressing +scheme, and one or more examples. + +\begin{description} + +\item[Position Addressing] This is the normal addressing scheme, where each +slave is addressed by its ring position. The first slave has address 0, and the +$n$th slave has address $n - 1$. This addressing scheme is useful for small +buses that have a fixed number of slaves. + +RegEx: \texttt{[0-9]+} --- Example: \texttt{"42"} + +\item[Advanced Position Addressing] Bus couplers segment the bus into +(physical) blocks. Though the logical ring positions keep being the same, it is +easier to address a slave with its block number and the relative position +inside the block. This addressing is done by passing the (zero-based) index of +the bus coupler (not the coupler's ring position), followed by a colon and the +relative position of the actual slave starting at the bus coupler. + +RegEx: \texttt{[0-9]+:[0-9]+} --- Examples: \texttt{"0:42"}, \texttt{"2:7"} + +\item[Alias Addressing] Each slave can have a ``secondary slave address'' or +``alias address''\footnote{Information about how to set the alias can be found +in section~\ref{sec:eepromaccess}} stored in its E$^2$PROM. The alias is +evaluated by the master and can be used to address the slave, which is useful +when a clearly defined slave has to be addressed and the ring position is not +known or can change over time. This scheme is used by starting the address +string with a mesh (\#) followed by the alias address. The latter can also be +provided as hexadecimal value, prefixed with \textit{0x}. + +RegEx: \texttt{\#(0x[0-9A-F]+|[0-9]+)} --- Examples: \texttt{"\#6622"}, +\texttt{"\#0xBEEF"} + +\item[Advanced Alias Addressing] This is a mixture of the ``Alias Addressing'' +and ``Advanced Position Addressing'' schemes. A certain slave is addressed by +specifying its relative position after an aliased slave. This is very useful, +if a complete block of slaves can vary its position in the bus. The bus coupler +preceding the block should get an alias. The block slaves can then be addressed +by specifying this alias and their position inside the block. This scheme is +used by starting the address string with a mesh (\#) followed by the alias +address (which can be hexadecimal), then a colon and the relative position of +the slave to address. + +RegEx: \texttt{\#(0x[0-9A-F]+|[0-9]+):[0-9]+} --- Examples: +\texttt{"\#0xBEEF:7"}, \texttt{"\#6:2"} + +\end{description} + +In anticipation of section~\ref{sec:ecrt}, the functions accepting +these address strings are \textit{ecrt\_\-master\_\-get\_slave()}, +\textit{ecrt\_domain\_register\_pdo()} and +\textit{ecrt\_domain\_register\_pdo\_list()} (the latter through the +\textit{ec\_pdo\_reg\_t} structure). + +%------------------------------------------------------------------------------ + +\subsection{Concurrent Master Access} +\label{sec:concurr} +\index{Concurrency} + +In some cases, one master is used by several instances, for example when an +application does cyclic process data exchange, and there are EoE-capable slaves +that require to exchange Ethernet data with the kernel (see +section~\ref{sec:eoeimp}). For this reason, the master is a shared resource, +and access to it has to be sequentialized. This is usually done by locking with +semaphores, or other methods to protect critical sections. + +The master itself can not provide locking mechanisms, because it has no chance +to know the appropriate kind of lock. Imagine, the application uses RTAI +functionality, then ordinary kernel semaphores would not be sufficient. For +that, an important design decision was made: The application that reserved a +master must have the total control, therefore it has to take responsibility for +providing the appropriate locking mechanisms. If another instance wants to +access the master, it has to request the master lock by callbacks, that have to +be set by the application. Moreover the application can deny access to the +master if it considers it to be awkward at the moment. \begin{figure}[htbp] \centering - \includegraphics[width=.9\textwidth]{images/modes} - \caption{Master modes and transitions} - \label{fig:modes} + \includegraphics[width=.6\textwidth]{images/master-locks} + \caption{Concurrent master access} + \label{fig:locks} \end{figure} -\subsubsection{Idle Mode} -\index{Idle mode} - -The master enters idle mode upon connection of a device module (see -section~\ref{sec:device}) or releasing by a realtime module. The -master owns a kernel workqueue and a suitable work structure, which is -used to cyclically process the ``Idle state machine'' (see -section~\ref{sec:fsm-idle}). This state machine automatically scans -the bus for slaves (and re-scans upon topology changes), configures -slaves for idle operation and executes pending operations from the -user space interface (for example E$^2$PROM writing). On device -disconnection or realtime request, the idle mode is stopped by -cancelling the work and flushing the workqueue. - -\subsubsection{Operation Mode} -\index{Operation mode} - -Operation mode is entered when a realtime module requests the master. -The idle mode is stopped and the bus is scanned by getting the number -of slaves and executing the ``Slave scan state machine'' (see -section~\ref{sec:fsm-scan}) for each slave. The master is now ready to -create domains and accept Pdo registrations and slave configurations. -After that, cyclic communication can be done by the realtime module. - -\paragraph{Master Phases} - -Every realtime module should use the master in three phases: - -\begin{enumerate} -\item \textit{Startup} - The master is requested and the bus is - validated. Domains are created and Pdos are registered. Slave - configurations are applied. -\item \textit{Operation} - Cyclic code is run, process data is - exchanged and the master state machine is executed. -\item \textit{Shutdown} - Cyclic code is stopped and the master - is released. -\end{enumerate} - -%------------------------------------------------------------------------------ - -\section{Device Modules} -\label{sec:device} -\index{Device modules} - -Device modules are network device driver modules that handle Ethernet -devices, which the master can use to connect to an EtherCAT bus. +Figure~\ref{fig:locks} exemplary shows, how two processes share one master: The +application's cyclic task uses the master for process data exchange, while the +master-internal EoE process uses it to communicate with EoE-capable slaves. +Both have to acquire the master lock before access: The application task can +access the lock natively, while the EoE process has to use the callbacks. +Section~\ref{sec:concurrency} gives an example, of how to implement this. + +%------------------------------------------------------------------------------ + +\chapter{Ethernet devices} +\label{sec:devices} + +The EtherCAT protocol is based on the Ethernet standard. That's why the master +relies on standard Ethernet hardware to communicate with the bus. + +The term \textit{device} is used as a synonym for Ethernet network interface +hardware. There are device driver modules that handle Ethernet hardware, which +the master can use to connect to an EtherCAT bus. Section~\ref{sec:networkdrivers} offers an overview of general Linux network driver modules, while section~\ref{sec:requirements} will show @@ -507,7 +1055,7 @@ %------------------------------------------------------------------------------ -\subsection{Network Driver Basics} +\section{Network Driver Basics} \label{sec:networkdrivers} \index{Network drivers} @@ -542,7 +1090,7 @@ \index{Interrupt} A network device usually provides a hardware interrupt that is used to -notify the driver of received frames and success of transmittion, or +notify the driver of received frames and success of transmission, or errors, respectively. The driver has to register an interrupt service routine (ISR\index{ISR}\nomenclature{ISR}{Interrupt Service Routine}), that is executed each time, the hardware signals such an event. If the @@ -560,7 +1108,7 @@ interface''. In case of an Ethernet driver, this interface appears as \textit{ethX}, where X is a number assigned by the kernel on registration. The \textit{net\_device} structure receives events -(either from user space or from the network stack) via serveral +(either from user space or from the network stack) via several callbacks, which have to be set before registration. Not every callback is mandatory, but for reasonable operation the ones below are needed in any case: @@ -581,7 +1129,7 @@ \item[struct net\_device\_stats *(*get\_stats)(struct net\_device *)] This call has to return a pointer to the device's \textit{net\_device\_stats} structure, which permanently has to be - filled with frame statistics. This means, that everytime a frame is + filled with frame statistics. This means, that every time a frame is received, sent, or an error happened, the appropriate counter in this structure has to be increased. \end{description} @@ -592,27 +1140,23 @@ \paragraph{The netif Interface} \index{netif} -All other communication in the direction interface $\to$ network stack -is done via the \textit{netif\_*} calls. For example, on successful -device opening, the network stack has to be notified, that it can now -pass frames to the interface. This is done by calling -\textit{netif\_start\_queue()}. After this call, the -\textit{hard\_start\_xmit()} callback can be called by the network -stack. Furthermore a network driver usually manages a frame -transmission queue. If this gets filled up, the network stack has to -be told to stop passing further frames for a while. This happens with -a call to \textit{netif\_stop\_queue()}. If some frames have been -sent, and there is enough space again to queue new frames, this can be -notified with \textit{netif\_wake\_queue()}. Another important call is -\textit{netif\_receive\_skb()}\footnote{This function is part of the - NAPI (``New API''), that replaces the ``old'' kernel 2.4 technique - for interfacing to the network stack (with \textit{netif\_rx()}). - NAPI is a technique to improve network performance on Linux. Read - more in - http://www.cyberus.ca/\textasciitilde{}hadi/usenix-paper.tgz}: It -passes a frame to the network stack, that was just received by the -device. Frame data has to be packed into a so-called ``socket -buffer'' for that (see below). +All other communication in the direction interface $\to$ network stack is done +via the \textit{netif\_*} calls. For example, on successful device opening, the +network stack has to be notified, that it can now pass frames to the interface. +This is done by calling \textit{netif\_start\_queue()}. After this call, the +\textit{hard\_start\_xmit()} callback can be called by the network stack. +Furthermore a network driver usually manages a frame transmission queue. If +this gets filled up, the network stack has to be told to stop passing further +frames for a while. This happens with a call to \textit{netif\_stop\_queue()}. +If some frames have been sent, and there is enough space again to queue new +frames, this can be notified with \textit{netif\_wake\_queue()}. Another +important call is \textit{netif\_receive\_skb()}\footnote{This function is part +of the NAPI (``New API''), that replaces the ``old'' kernel 2.4 technique for +interfacing to the network stack (with \textit{netif\_rx()}). NAPI is a +technique to improve network performance on Linux. Read more in +\url{http://www.cyberus.ca/~hadi/usenix-paper.tgz}}: It passes a frame to the +network stack, that was just received by the device. Frame data has to be +packed into a so-called ``socket buffer'' for that (see below). \paragraph{Socket Buffers} \index{Socket buffer} @@ -620,7 +1164,7 @@ Socket buffers are the basic data type for the whole network stack. They serve as containers for network data and are able to quickly add data headers and footers, or strip them off again. Therefore a socket -buffer consists of an allocated buffer and serveral pointers that mark +buffer consists of an allocated buffer and several pointers that mark beginning of the buffer (\textit{head}), beginning of data (\textit{data}), end of data (\textit{tail}) and end of buffer (\textit{end}). In addition, a socket buffer holds network header @@ -636,7 +1180,7 @@ %------------------------------------------------------------------------------ -\subsection{EtherCAT Network Drivers} +\section{EtherCAT Device Drivers} \label{sec:requirements} There are a few requirements for Ethernet network devices to function @@ -661,7 +1205,7 @@ frames. Figure~\ref{fig:interrupt} shows two workflows for cyclic frame -transmittion and reception with and without interrupts. +transmission and reception with and without interrupts. \begin{figure}[htbp] \centering @@ -689,10 +1233,10 @@ The interrupt-less operation is desirable, because there is simply no need for an interrupt. Moreover hardware interrupts are not conducive -in improving the driver's realtime behaviour: Their undeterministic +in improving the driver's realtime behaviour: Their indeterministic incidences contribute to increasing the jitter. Besides, if a realtime extension (like RTAI) is used, some additional effort would have to be -made to priorize interrupts. +made to prioritize interrupts. \paragraph{Ethernet and EtherCAT Devices} @@ -726,14 +1270,14 @@ \item The modified driver gets more complicated, as it must handle EtherCAT and non-EtherCAT devices. \item Many additional case differentiations in the driver code. -\item Changes and bugfixes on the standard drivers have to be ported +\item Changes and bug fixes on the standard drivers have to be ported to the Ether\-CAT-capable versions from time to time. \end{itemize} %------------------------------------------------------------------------------ -\subsection{Device Selection} -\label{sec:seldev} +\section{Device Selection} +\label{sec:deviceselection} After loading the master module, at least one EtherCAT-capable network driver module has to be loaded, that connects one of its devices to @@ -754,7 +1298,7 @@ driver, telling it to handle the second device as an EtherCAT device and connecting it to the first master: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] # `\textbf{modprobe ec\_8139too ec\_device\_index=1}` \end{lstlisting} @@ -764,7 +1308,7 @@ %------------------------------------------------------------------------------ -\subsection{The Device Interface} +\section{The Device Interface} \label{sec:ecdev} \index{Device interface} @@ -786,7 +1330,7 @@ A network device driver can connect a physical device to an EtherCAT master with the \textit{ecdev\_register()} function. -\begin{lstlisting}[language=C] +\begin{lstlisting}[gobble=2,language=C] ec_device_t *ecdev_register(unsigned int master_index, struct net_device *net_dev, ec_isr_t isr, @@ -808,48 +1352,44 @@ Therefore the device module has to store this pointer for future use. In error case, the \textit{ecdev\_register()} returns \textit{NULL}, which means that the device could not be registered. The reason for -this is printed to \textit{syslog}\index{syslog}. In this case, the +this is printed to \textit{Syslog}\index{Syslog}. In this case, the device module is supposed to abort the module initialisation and let the \textit{insmod} command fail. \paragraph{Implicit Dependencies} -The reason for the module pointer has to be specified at device -registration is a non-trivial one: The master has to know about the -module, because there will be an implicit dependency between the -device module and a later connected realtime module: When a realtime -module connects to the master, the use count of the master module will -be increased, so that the master module can not be unloaded for the -time of the connection. This is reasonable, and so automatically done -by the kernel. The kernel knows about this dependency, because the -realtime module uses kernel symbols provided by the master module. -Moreover it is mandatory, that the device module can be unloaded -neither, because it is implicitely used by the realtime module, too. -Unloading it would lead to a fatal situation, because the master would -have no device to send and receive frames for the realtime module. -This dependency can not be detected automatically, because the -realtime module does not use any symbols of the device module. -Therefore the master explicitly increments the use counter of the -connected device module upon connection of a realtime module and -decrements it, if the realtime module disconnects. In this manner, it -is impossible to unload a device module while the master is in use. -This is done with the kernel function pair \textit{try\_module\_get()} -\index{try\_module\_get@\textit{try\_module\_get()}} and -\textit{module\_put()} \index{module\_put@\textit{module\_put()}}. The -first one increases the use count of a module and only fails, if the -module is currenly being unloaded. The last one decreases the use -count again and never fails. Both functions take a pointer to the -module as their argument, which the device module therefore has to -specify upon device registration. +The reason for the module pointer has to be specified at device registration is +a non-trivial one: The master has to know about the module, because there will +be an implicit dependency between the device module and a later connected +application module: When an application module connects to the master, the use +count of the master module will be increased, so that the master module can not +be unloaded for the time of the connection. This is reasonable, and so +automatically done by the kernel. The kernel knows about this dependency, +because the application module uses kernel symbols provided by the master +module. Moreover it is mandatory, that the device module can be unloaded +neither, because it is implicitly used by the application module, too. +Unloading it would lead to a fatal situation, because the master would have no +device to send and receive frames for the application. This dependency can not +be detected automatically, because the application module does not use any +symbols of the device module. Therefore the master explicitly increments the +use counter of the connected device module upon connection of an application +and decrements it, if it disconnects again. In this manner, it is impossible to +unload a device module while the master is in use. This is done with the kernel +function pair \textit{try\_module\_get()} +\index{try\_module\_get@\textit{try\_module\_get()}} and \textit{module\_put()} +\index{module\_put@\textit{module\_put()}}. The first one increases the use +count of a module and only fails, if the module is currently being unloaded. +The last one decreases the use count again and never fails. Both functions take +a pointer to the module as their argument, which the device module therefore +has to specify upon device registration. \paragraph{Device Unregistering} -The unregistration of a device is usually done in the device module's -cleanup function, by calling the \textit{ecdev\_unregister()} function -and specifying the master index and a pointer to the device object -again. - -\begin{lstlisting}[language=C] +The deregistration of a device is usually done in the device module's cleanup +function, by calling the \textit{ecdev\_unregister()} function and specifying +the master index and a pointer to the device object again. + +\begin{lstlisting}[gobble=2,language=C] void ecdev_unregister(unsigned int master_index, ec_device_t *device); \end{lstlisting} @@ -866,7 +1406,7 @@ receive frames, the master has to be notified about this by calling the \textit{ecdev\_start()} function. -\begin{lstlisting}[language=C] +\begin{lstlisting}[gobble=2,language=C] int ecdev_start(unsigned int master_index); \end{lstlisting} @@ -886,7 +1426,7 @@ messages of EoE slaves and leave ``Idle Mode''. The only parameter is \textit{master\_index}. This function can not fail. -\begin{lstlisting}[language=C] +\begin{lstlisting}[gobble=2,language=C] void ecdev_stop(unsigned int master_index); \end{lstlisting} @@ -902,7 +1442,7 @@ \textit{ecdev\_receive()} function to forward the received data to the connected EtherCAT master instead. -\begin{lstlisting}[language=C] +\begin{lstlisting}[gobble=2,language=C] void ecdev_receive(ec_device_t *device, const void *data, size_t size); @@ -918,14 +1458,13 @@ \paragraph{Handling the Link Status} -Information about the link status (i.~e. if there is a carrier signal -detected on the physical port) is also important to the master. This -information is usually gathered by the ISR and should be forwarded to -the master by calling the \textit{ecdev\_link\_state()} function. The -master then can react on this and warn the realtime module of a lost -link. - -\begin{lstlisting}[language=C] +Information about the link status (i.~e. if there is a carrier signal detected +on the physical port) is also important to the master. This information is +usually gathered by the ISR and should be forwarded to the master by calling +the \textit{ecdev\_link\_state()} function. The master then can react on this +and warn the application of a lost link. + +\begin{lstlisting}[gobble=2,language=C] void ecdev_link_state(ec_device_t *device, uint8_t new_state); \end{lstlisting} @@ -937,7 +1476,7 @@ %------------------------------------------------------------------------------ -\subsection{Patching Network Drivers} +\section{Patching Network Drivers} \label{sec:patching} \index{Network drivers} @@ -981,7 +1520,7 @@ First of all, there have to be additional global variables declared, as shown in the listing: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] static int ec_device_index = -1; static int ec_device_master_index = 0; static ec_device_t *rtl_ec_dev; @@ -989,17 +1528,17 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 1} -- \textcircled{\tiny 2}] To +\item[\linenum{1} -- \linenum{2}] To comply to the requirements for parameters of EtherCAT device modules described in section~\ref{sec:seldev}, there have to be additional parameter variables: \textit{ec\_\-device\_\-index} holds the index of the EtherCAT device and defaults to $-1$ (no EtherCAT device), while \textit{ec\_device\_master\_index} stores index of the master, the single device will be connected to. Default: $0$ -\item[\normalfont\textcircled{\tiny 3}] \textit{rtl\_ec\_dev} will be +\item[\linenum{3}] \textit{rtl\_ec\_dev} will be the pointer to the later registered RealTek EtherCAT device, which can be used as a parameter for device methods. -\item[\normalfont\textcircled{\tiny 4}] \textit{rtl\_ec\_net\_dev} is +\item[\linenum{4}] \textit{rtl\_ec\_net\_dev} is a pointer to the \textit{net\_device} structure of the dedicated device and is set while scanning the PCI bus and finding the device with the specified index. This is done inside the @@ -1012,7 +1551,7 @@ Below is the (shortened) coding of the device driver's module init function: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] static int __init rtl8139_init_module(void) { if (pci_module_init(&rtl8139_pci_driver) < 0) { @@ -1057,20 +1596,20 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 3}] This call initializes all +\item[\linenum{3}] This call initializes all RTL8139-compatible devices found on the pci bus. If a device with index \textit{ec\_device\_index} is found, a pointer to its \textit{net\_device} structure is stored in \textit{rtl\_ec\_net\_dev} for later use (see next listings). -\item[\normalfont\textcircled{\tiny 8}] If the specified device was +\item[\linenum{8}] If the specified device was found, \textit{rtl\_ec\_net\_dev} is non-zero. -\item[\normalfont\textcircled{\tiny 11}] The device is connected to +\item[\linenum{11}] The device is connected to the specified master with a call to \textit{ecdev\_register()}. If this fails, module loading is aborted. -\item[\normalfont\textcircled{\tiny 23}] The device registration was +\item[\linenum{23}] The device registration was successful and the master is started. This can fail, which aborts module loading. -\item[\normalfont\textcircled{\tiny 29}] If no EtherCAT device was +\item[\linenum{29}] If no EtherCAT device was found, a warning is output. \end{description} @@ -1080,7 +1619,7 @@ increased for each RTL8139-compatible device found. The code below is executed for each device: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] if (board_idx == ec_device_index) { rtl_ec_net_dev = dev; strcpy(dev->name, "ec0"); @@ -1088,7 +1627,7 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 1}] The device with the specified +\item[\linenum{1}] The device with the specified index will be the EtherCAT device. \end{description} @@ -1098,7 +1637,7 @@ registered. This has to be avoided for EtherCAT devices and so this is a typical example for an EtherCAT case differentiation: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] if (dev != rtl_ec_net_dev) { i = register_netdev(dev); if (i) goto err_out; @@ -1106,7 +1645,7 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 1}] If the current net\_device is +\item[\linenum{1}] If the current net\_device is not the EtherCAT device, it is registered at the network stack. \end{description} @@ -1117,7 +1656,7 @@ if-clauses, because interrupt operation is not wanted for EtherCAT devices. -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] if (dev != rtl_ec_net_dev) { retval = request_irq(dev->irq, rtl8139_interrupt, SA_SHIRQ, dev->name, dev); @@ -1125,7 +1664,7 @@ } \end{lstlisting} -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] if (dev != rtl_ec_net_dev) { /* Enable all known interrupts by setting the interrupt mask. */ @@ -1135,10 +1674,10 @@ \paragraph{Frame Sending} -The listing below shows an exerpt of the function representing the +The listing below shows an excerpt of the function representing the \textit{hard\_start\_xmit()} callback of the net\_device. -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] /* Note: the chip doesn't have auto-pad! */ if (likely(len < TX_BUF_SIZE)) { if (len < ETH_ZLEN) @@ -1157,7 +1696,7 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 6} + \textcircled{\tiny 10}] The +\item[\linenum{6} + \linenum{10}] The master uses a fixed socket buffer for transmission, which is reused and may not be freed. \end{description} @@ -1167,7 +1706,7 @@ During ordinary frame reception, a socket buffer is created and filled with the received data. This is not necessary for an EtherCAT device: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] if (dev != rtl_ec_net_dev) { /* Malloc up new buffer, compatible with net-2e. */ /* Omit the four octet CRC from the length. */ @@ -1204,11 +1743,11 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 28}] If the device is an EtherCAT +\item[\linenum{28}] If the device is an EtherCAT device, no socket buffer is allocated. Instead a pointer to the data (which is still in the device's receive ring) is passed to the EtherCAT master. Unnecessary copy operations are avoided. -\item[\normalfont\textcircled{\tiny 30} -- \textcircled{\tiny 32}] The +\item[\linenum{30} -- \linenum{32}] The device's statistics are updated as usual. \end{description} @@ -1219,7 +1758,7 @@ below shows the different processing for Ethernet and EtherCAT devices: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] if (dev != rtl_ec_net_dev) { if (tp->phys[0] >= 0) { mii_check_media(&tp->mii, netif_msg_link(tp), @@ -1234,11 +1773,11 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 3}] The ``media check'' is done +\item[\linenum{3}] The ``media check'' is done via the media independent interface (MII\nomenclature{MII}{Media Independent Interface}), a standard interface for Fast Ethernet devices. -\item[\normalfont\textcircled{\tiny 7} -- \textcircled{\tiny 10}] For +\item[\linenum{7} -- \linenum{10}] For EtherCAT devices, the link state is fetched manually from the appropriate device register, and passed to the EtherCAT master by calling \textit{ecdev\_\-link\_\-state()}. @@ -1248,7 +1787,7 @@ Below is the module's cleanup function: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] static void __exit rtl8139_cleanup_module (void) { printk(KERN_INFO "Cleaning up RTL8139-EtherCAT" @@ -1271,1283 +1810,46 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 6}] Stopping and unregistration is - only done, if a device was registered before. -\item[\normalfont\textcircled{\tiny 8}] The master is first stopped, - so it does not access the device any more. -\item[\normalfont\textcircled{\tiny 10}] After this, the device is - unregistered. The master is now ``ophaned''. + +\item[\linenum{6}] Stopping and deregistration is only done, if a device was +registered before. + +\item[\linenum{8}] The master is first stopped, so it does not access the +device any more. + +\item[\linenum{10}] After this, the device is unregistered. The master is now +``orphaned''. + \end{description} %------------------------------------------------------------------------------ -\section{The Master Module} -\label{sec:mastermod} -\index{Master module} - -The EtherCAT master is designed to run as a kernel module. Moreover -the master kernel module \textit{ec\_master} can handle multiple -masters at the same time: The number of masters has to be passed to -the module with the parameter \textit{ec\_master\_count}, that -defaults to $1$. A certain master can later be addressed by its index. -For example, if the master module has been loaded with the command - -\begin{lstlisting} - # `\textbf{modprobe ec\_master ec\_master\_count=2}` -\end{lstlisting} - -the two masters can be addressed by their indices 0 and 1 respectively -(see figure~\ref{fig:masters}). This master index mandatory for -certain functions of the master interfaces. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.5\textwidth]{images/masters} - \caption{Multiple masters in one module} - \label{fig:masters} -\end{figure} - -\paragraph{Master Log Messages} - -The master module gives information about it's state and events via -the syslog interface. The module loading command above should result -in the syslog messages below (or similar): - -\begin{lstlisting} - EtherCAT: Master driver, 1.1 (stable) - rev. 513, - compiled by fp at Aug 09 2006 09:43:50 - EtherCAT: Initializing 2 EtherCAT master(s)... - EtherCAT: Initializing master 0. - EtherCAT: Initializing master 1. - EtherCAT: Master driver initialized. -\end{lstlisting} - -The master provides information about it's version number, subversion -revision number and compile information, like the date of compilation -and the user, who compiled. All messages are prefixed either with -\texttt{EtherCAT:}, \texttt{EtherCAT WARNING:} or \texttt{EtherCAT - ERROR:}, which makes searching the logs easier. - -%------------------------------------------------------------------------------ - -\subsection{Class Reference} -\label{sec:classes} - -This section is not intended to be a complete reference of master -classes and functions\footnote{The comprehensive master reference can - be obtained at http://etherlab.org/download/download-en.html}, but -will give a general survey of the master's classes, and how they -interact. - -Figure~\ref{fig:uml-all} shows an UML class diagram of the master -classes. - -\begin{figure}[htbp] - \centering - \includegraphics[width=\textwidth]{images/uml-all} - \caption{UML class diagram with associations} - \label{fig:uml-all} -\end{figure} - -The following subsections introduce serveral classes with their -attributes and methods. - -%------------------------------------------------------------------------------ - -\subsubsection{The Master Class} -\label{sec:class-master} -\index{Master!Class} - -Figure~\ref{fig:uml-master} shows an UML class diagram of the master -class. There is a short explanation of the attributes and methods -below. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.8\textwidth]{images/uml-master} - \caption{Master UML class diagram} - \label{fig:uml-master} -\end{figure} - -\paragraph{Master Attributes} - -\begin{description} -\item[list] is a listhead structure that is needed to manage the list - of masters in the master module (see section~\ref{sec:mastermod}). -\item[reserved] is a flag, that marks the master as reserved for a - realtime module, so that a call to \textit{ecrt\_request\_master()} - fails, if another module is already using the master. -\item[index] contains the number of the master. The first master will - get index 0, the second index 1, and so on. -\item[kobj] In order to make the master object available via Sysfs - (see section~\ref{sec:sysfs}), this structure is needed inside the - master object (see section~\ref{sec:sysfs}). -\item[slaves] is the list of slaves. It consists of objects of the - \textit{ec\_slave\_t} class (see section~\ref{sec:class-slave}). -\item[slave\_count] is the number of slaves in the list. -\item[device] points to the network device that is used by the master - to send and receive frames (see section~\ref{sec:class-device}). It - is \textit{NULL}, if no device is connected. -\item[datagram\_queue] is a list of datagrams (see - section~\ref{sec:class-datagram}) that have to be sent by the - master, or have already been sent and wait to be received again. - Upon reception or error, the datagrams are dequeued. -\item[datagram\_index] contains the index value for the next datagram. - The master stores this incrementing index into every datagram, to - make it easier to assign a received datagram to the one sent before. -\item[domains] contains the list of domains created by the realtime - module (section~\ref{sec:class-domain}). -\item[debug\_level] controls, how much debugging output is printed by - the master: 0 means no debugging output, 1 means to output certain - executing marks and actions, and 2 means to output frame contents in - addition. This value can be changed at runtime via the Sysfs - interface (see section~\ref{sec:sysfs}). -\item[stats] is a statistics object that contains certain counters - (like the number of missed frames). These statistics are output on - demand, but at most once a second. -\item[workqueue] is the kernel workqueue used for idle mode. -\item[idle\_work] is the work object, that is queued. -\item[fsm] The attribute \textit{fsm} represents the master's finite - state machine, that does all the slave processing. See - sections~\ref{sec:class-fsm} and~\ref{sec:fsm} for further details. -\item[mode] contains the current master mode, if it is orphaned, idle, - or in operation mode. -\item[eoe\_timer] is the kernel timer used for EoE\index{EoE} - processing. -\item[eoe\_running] marks the state of EoE processing. -\item[eoe\_handlers] is the list of EoE handlers (see - section~\ref{sec:class-eoe}). -\item[internal\_lock] is a spinlock used in idle mode, that controls - the concurrency of the idle and EoE processes. -\item[request\_cb] The ``request lock'' callback function, the master - has to provide for foreign instances, which want to access the - master (see section~\ref{sec:concurr}). -\item[release\_cb] The callback function that will release the master - lock. -\item[cb\_data] This value will be passed as an argument to each - callback. -\item[eeprom\_write\_enable] flag can be written via Sysfs to enable - the general writing of E$^2$PROM contents. -\end{description} - -\paragraph{Public Master Methods} - -\begin{description} -\item[ec\_master\_init()] is the master's constructor. It initializes - all attributes, creates the workqueue, creates EoE handlers and the - state machine object, and adds the kernel object to the Sysfs - hierarchy. -\item[ec\_master\_clear()] is the destructor and undoes all these - actions. -\item[ec\_master\_reset()] clears the master, but initializes it - again. This is needed, when a realtime module disconnects: Slaves - and other attributes are cleared and are later rebuilt by the idle - process. -\item[ec\_master\_idle\_start/stop()] These methods enable or disable - the idle process. -\item[ec\_master\_eoe\_start/stop()] These methods do the same for the - EoE timer. -\item[ec\_master\_receive\_datagrams()] This method is called by the - device, which uses it to pass received frames to the master. The - frame is dissected and the contained datagrams are assigned to the - datagram objects in the datagram queue, which are dequeued on - reception or error. -\item[ec\_master\_queue\_datagram()] This method is used to queue a - new datagram for sending and receiving. -\item[ec\_master\_output\_stats()] This method is cyclically called to - output a summary of the \textit{stats} attribute at most once a - second. -\item[ec\_master\_clear\_slaves()] clears the list of slaves. This is - needed on connection/disconnection of a realtime module or at a - topology change in idle mode, when all slaves objects are rebuilt. -\end{description} - -\paragraph{Private Master Methods} - -A few of a master's methods are private, meaning, that they can only -be called from other master methods: - -\begin{description} -\item[ec\_master\_send\_datagrams()] searches the datagram queue for - unsent datagrams, allocates frames to send them, does the actual - sending and marks the datagrams as sent. -\item[ec\_master\_idle\_run()] is the work function for the idle mode. - It executes the idle state machine, described in - section~\ref{sec:fsm-idle}. -\item[ec\_master\_eoe\_run()] is called by the EoE timer and is - responsible for communicating with EoE-capable slaves. See - section~\ref{sec:eoeimp} for more information. -\end{description} - -\paragraph{Master Methods (Realtime Interface)} - -The master methods belonging to the Eth\-er\-CAT realtime -interface\index{ecrt@\textit{ecrt}}\nomenclature{ecrt}{EtherCAT - Realtime Interface} begin with the prefix \textit{ecrt} instead of -\textit{ec}. The functions of the realtime interface are explained in -section~\ref{sec:ecrt-master}. - -%------------------------------------------------------------------------------ - -\subsubsection{The Slave Class} -\label{sec:class-slave} -\index{Slave!Class} - -Figure~\ref{fig:uml-slave} shows an UML class diagram of the slave -class. There is a short explanation of the attributes and methods -below. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.8\textwidth]{images/uml-slave} - \caption{Slave UML class diagram} - \label{fig:uml-slave} -\end{figure} - -\paragraph{Slave Attributes} - -\begin{description} -\item[list] The master holds a slave list, therefore the slave class - must contain this structure used as an anchor for the linked - list. -\item[kobj] This pointer serves as base object for the slave's Sysfs - representation. -\item[master] is the pointer to the master owning this slave object. -\item[ring\_position] is the logical position in the logical ring - topology. -\item[station\_address] is the configured station address. This is - always the ring position~+~$1$). -\item[coupler\_index] is the index of the last bus coupler. -\item[coupler\_subindex] is the slave's position, counted from the - last bus coupler. See section~\ref{sec:addr} for more information. -\item[base\_*] These attributes contain base information about the - slave, that are read from the ``DL Information'' attribute. -\item[dl\_*] These fields store information of the ``DL Status'' - attribute, for example states of the the communication ports. -\item[sii\_*] These attributes contain values from the ``Slave - Information Interface'' \cite[section~6.4]{dlspec}, mostly identity - and mailbox information, but also the list of sync manager - configurations and Pdos. -\item[registered] This flag is set, if one or more Pdos of the slave - have been registered for process data exchange. Otherwise a warning - is output, because the slave is unused. -\item[fmmus] Is an array of FMMU configurations, that have to be - applied to the slave. -\item[fmmu\_count] contains number of FMMUs used. -\item[eeprom\_*] These fields contain E$^2$PROM contents and the - extracted category information \cite[section~5.4]{alspec}. -\item[new\_eeprom\_data] If this pointer is not \textit{NULL}, it - points to new E$^2$PROM contents, that have to be written to the - slave. -\item[new\_eeprom\_size] This field represents the size of the new - E$^2$PROM data. -\item[requested\_state] is the requested slave state. -\item[current\_state] is the current slave state. -\item[error\_flag] is used by the operation and idle state machines - to indicate, that a state transisition has failed and should not be - tried again until an external event happens. -\item[online] This flag contains the online state of the slave (i.~e. - if it currently responds to the masters commands). Changes of the - online state are always reported. -\item[varsize\_fields] is only suitable for slaves that provide Pdos - of variable size (like slaves that manage a sub-fieldbus) and - contains information about what size this fields actually should - have. -\end{description} - -\paragraph{Public Slave Methods} - -\begin{description} -\item[ec\_slave\_init()] The slave's constructor. -\item[ec\_slave\_clear()] The slave's destructor. -\item[ec\_prepare\_fmmu()] prepares an FMMU configuration. The FMMU is - configured for a certain sync manager and domain. -\item[ec\_fetch\_*()] Serveral methods to extract information of the - E$^2$PROM category contents. -\item[ec\_slave\_locate\_string()] extracts a string out of a STRING - category and allocates string memory. -\item[ec\_slave\_calc\_sync\_size()] calculates the size of sync - manager contents, because they can be variable due to variable-sized - Pdos. -\item[ec\_slave\_info()] This method prints all slave information into - a buffer for Sysfs reading. -\item[ec\_slave\_mbox\_*()] These functions prepare datagrams for - mailbox communication, or process mailbox responses, respectively. -\end{description} - -\paragraph{Private Slave Methods} - -\begin{description} -\item[ec\_slave\_write\_eeprom()] This function accepts E$^2$PROM data - from user space, does a quick validation of the contents and - schedules them for writing through the idle state machine. -\end{description} - -\paragraph{Slave Methods (Realtime Interface)} - -\begin{description} -\item[ecrt\_slave\_conf\_sdo*()] These methods accept Sdo - configurations, that are applied on slave activation (i.~e. - everytime the slave is configured). The methods differ only in the - data size of the Sdo (8, 16 or 32 bit). -\item[ecrt\_slave\_pdo\_size()] This method specifies the size of a - variable-sized Pdo. -\end{description} - -%------------------------------------------------------------------------------ - -\subsubsection{The Device Class} -\label{sec:class-device} -\index{Device!Class} - -The device class is responsible for communicating with the connected -EtherCAT-enabled network driver. Figure~\ref{fig:uml-device} shows its -UML class diagram. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.3\textwidth]{images/uml-device} - \caption{Device UML class diagram} - \label{fig:uml-device} -\end{figure} - -\paragraph{Device Attributes} - -\begin{description} -\item[master] A pointer to the master, which owns the device object. -\item[dev] This is the pointer to the \textit{net\_device} structure - of the connected network device driver. -\item[open] This flag stores, if the network device is ``opened'' and - ready for transmitting and receiving frames. -\item[tx\_skb] The transmittion socket buffer. Instead of allocating a - new socket buffer for each frame, the same socket buffer is recycled - and used for every frame. -\item[isr] The pointer to the network device's interrupt service - routine. \textit{ec\_isr\_t} is a type definition in the device - interface, which looks like below: - \begin{lstlisting}[gobble=4,language=C] - typedef irqreturn_t (*ec_isr_t)(int, void *, - struct pt_regs *); - \end{lstlisting} -\item[module] A pointer to the network driver module, to increase and - decrease the use counter (see paragraph ``Implicit Dependencies'' in - section~\ref{sec:ecdev}). -\item[link\_state] The current link state. It can be 0 ``down'' or 1 - ``up''. -\item[dbg] Every device objects contains a debugging interface (see - sectios~\ref{sec:class-debug} and~\ref{sec:debug}). -\end{description} - -\paragraph{Public Device Methods} - -\begin{description} -\item[ec\_device\_init()] The device constructor. -\item[ec\_device\_clear()] The device destructor. -\item[ec\_device\_open()] ``Opens'' the device for transmittion and - reception of frames. This is equivalent to the \textit{ifconfig up} - command for ordinary Ethernet devices. -\item[ec\_device\_close()] Stops frame transmittion and reception. - This is equivalent to the \textit{ifconfig down} command for - ordinary Ethernet devices. -\item[ec\_device\_call\_isr()] Calls the interrupt service routine of - the device. -\item[ec\_device\_tx\_data()] Returns a pointer into the memory of the - transmittion socket buffer \textit{tx\_skb}. This is used by the - master to assemble a new EtherCAT frame. -\item[ec\_device\_send()] Sends an assembled frame by passing it to - the device's \textit{hard\_\-start\_\-xmit()} callback. -\end{description} - -\paragraph{Device Methods (Device Interface)} - -The device methods belonging to the device interface are explained in -section~\ref{sec:ecdev}. - -%------------------------------------------------------------------------------ - -\subsubsection{The Datagram Class} -\label{sec:class-datagram} -\index{Datagram!Class} - -So send and receive a datagram, an object of the -\textit{ec\_datagram\_t} class is needed. It can be initialized with a -datagram type \cite[section~5.4]{dlspec} and length (optionally filled -with data) and appended to the master's datagram queue. -Figure~\ref{fig:uml-datagram} shows its UML class diagram. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.3\textwidth]{images/uml-datagram} - \caption{Datagram UML class diagram} - \label{fig:uml-datagram} -\end{figure} - -\paragraph{Datagram Attributes} - -\begin{description} -\item[list] This attribute is needed to make a list of datagrams, as - used in the domain class (see section~\ref{sec:class-domain}). -\item[queue] This attribute is the anchor to the master's datagram - queue, which is implemented as a linked list. -\item[type] The datagram type. \textit{ec\_\-datagram\_\-type\_\-t} is - an enumeration, which can have the values - \textit{EC\_\-DATAGRAM\_\-APRD}, \textit{EC\_\-DATAGRAM\_\-APWR}, - \textit{EC\_\-DATAGRAM\_\-NPRD}, \textit{EC\_\-DATAGRAM\_\-NPWR}, - \textit{EC\_\-DATAGRAM\_\-BRD}, \textit{EC\_\-DATAGRAM\_\-BWR} or - \textit{EC\_\-DATAGRAM\_\-LRW}. -\item[address] The slave address. For all addressing schemes take 4 - bytes, \textit{ec\_address\_t} is a union type: - \begin{lstlisting}[gobble=4,language=C] - typedef union { - struct { - uint16_t slave; /**< configured or - autoincrement - address */ - uint16_t mem; /**< physical memory - address */ - } physical; /**< physical address */ - uint32_t logical; /**< logical address */ - } ec_address_t; - \end{lstlisting} -\item[data] The actual data of the datagram. These are either filled - in before sending (at writing access) or are inserted by the - adressed slave(s) (at reading access). In any case, the data memory - must be dynamically allocated. Besides, this can be done before - cyclic processing with the \textit{ec\_datagram\_prealloc()} method - (see below). -\item[mem\_size] The size of the allocated memory, \textit{data} - points to. -\item[data\_size] The size of the actual data in the \textit{data} - memory. -\item[index] The sequential EtherCAT datagram index. This value is set - by the master on sending, to easier assign a received datagram to a - queued datagram object. -\item[working\_counter] The working counter of the datagram. This is - set to zero on sending and filled with the real value of the working - counter on datagram reception. -\item[state] The state of the datagram. - \textit{ec\_\-datagram\_\-state\_\-t} is an enumeration and can be - \textit{EC\_\-DATA\-GRAM\_\-INIT}, - \textit{EC\_\-DATA\-GRAM\_\-QUEU\-ED}, - \textit{EC\_\-DATA\-GR\-AM\_\-SEN\-T}, - \textit{EC\_\-DATA\-GRAM\_\-REC\-EIVED}, - \textit{EC\_\-DATA\-GRAM\_\-TIMED\_\-OUT} or - \textit{EC\_\-DA\-TA\-GRAM\_\-ERR\-OR}. -\item[t\_sent] This attribute is set to the timestamp, when the - datagram was sent, to later detect a timeout. -\end{description} - -\paragraph{Public Datagram Methods} - -\begin{description} -\item[ec\_datagram\_init()] The datagram's constructor. -\item[ec\_datagram\_clear()] The datagram's destructor. -\item[ec\_datagram\_prealloc()] Allocates memory for the datagram - data. This is especially needed, if the datagram structure will - later be used in a context, where no dynamic memory allocation is - allowed. -\item[ec\_datagram\_nprd()] Initializes a ``Node-Addressed Physical - Read'' datagram \cite[section~5.4.1.2]{dlspec}. -\item[ec\_datagram\_npwr()] Initializes a ``Node-Addressed Physical - Write'' datagram \cite[section~5.4.2.2]{dlspec}. -\item[ec\_datagram\_aprd()] Initializes a ``Auto-Increment Physical - Read'' datagram \cite[section~5.4.1.1]{dlspec}. -\item[ec\_datagram\_apwr()] Initializes a ``Auto-Increment Physical - Write'' datagram \cite[section~5.4.2.1]{dlspec}. -\item[ec\_datagram\_brd()] Initializes a ``Broadcast Read'' datagram - \cite[section~5.4.1.3]{dlspec}. -\item[ec\_datagram\_bwr()] Initializes a ``Broadcast Write'' datagram - \cite[section~5.4.2.3]{dlspec}. -\item[ec\_datagram\_lrw()] Initializes a ``Logical ReadWrite'' - datagram \cite[section~5.4.3.4]{dlspec}. -\end{description} - -%------------------------------------------------------------------------------ - -\subsubsection{The Domain Class} -\label{sec:class-domain} -\index{Domain!Class} - -The domain class encapsules Pdo registration and management of the -process data image and its exchange. The UML class diagram can be seen -in figure~\ref{fig:uml-domain}. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.4\textwidth]{images/uml-domain} - \caption{Domain UML class diagram} - \label{fig:uml-domain} -\end{figure} - -\paragraph{Domain Attributes} - -\begin{description} -\item[kobj] This \textit{kobject} structure is needed for the Sysfs - representation of the domain. -\item[list] The master manages a list of domains, so this list anchor - is needed. -\item[index] The domain's index. The first domain will get index 0, - the second index 1, and so on. -\item[master] A pointer to the master owning the domain. -\item[data\_size] The size of the domain's process data image. -\item[datagram] A linked list with the datagram objects, the domain - needs for process data exchange (see - section~\ref{sec:class-datagram}). -\item[base\_address] This attribute stores the logical offset, to - which the domain's process data are mapped. -\item[response\_count] The sum of the datagrams' working counters at - the last process data exchange. Changes are always reported. -\item[data\_regs] The (linked) list of Pdo registrations. The realtime - module requests the exchange of certain Pdos and supplies the - address of process data pointers, that will later point to the - respective locations in the process data image. These ``data - registrations'' are saved in the \textit{data\_regs} list. -\item[working\_counter\_changes] This field stores the number of - working counter changes since the last notification. This helps to - reduce syslog output in case of frequent changes. -\item[t\_last] The timestamp of the last working counter change - notification. -\end{description} - -\paragraph{Public Domain Methods} - -\begin{description} -\item[ec\_domain\_init()] The domain's constructor. -\item[ec\_domain\_clear()] The domain's destructor. -\item[ec\_domain\_alloc()] Allocates the process data image and the - respective datagrams based on the process data registrations. -\item[ec\_domain\_queue()] Queues the domain's datagrams for exchange - via the master. -\end{description} - -\paragraph{Private Domain Methods} - -\begin{description} -\item[ec\_domain\_reg\_pdo\_entry()] This method is used to do a Pdo - registration. It finds the appropriate sync manager covering the Pdo - data, calculates its offset in the sync-manager-protected memory and - prepares the FMMU configurations for the related slave. Then the Pdo - registration is appended to the list. -\item[ec\_domain\_clear\_data\_regs()] Clearing all process data - registrations is needed in serveral places and therefore has been - sourced out to an own method. -\item[ec\_domain\_add\_datagram()] This methods allocates a datagram - and appends it to the list. This is done during domain allocation. -\end{description} - -\paragraph{Domain Methods (Realtime Interface)} - -The domain methods belonging to the realtime interface are introduced -in section~\ref{sec:ecrt-domain}. - -%------------------------------------------------------------------------------ - -\subsubsection{The Finite State Machine Class} -\label{sec:class-fsm} -\index{FSM!Class} - -This class encapsules all state machines, except the EoE state -machine. Its UML class diagram can be seen in -figure~\ref{fig:uml-fsm}. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.9\textwidth]{images/uml-fsm} - \caption{Finite State Machine UML class diagram} - \label{fig:uml-fsm} -\end{figure} - -\paragraph{FSM Attributes} - -\begin{description} -\item[master] A pointer to the master owning the FSM object. -\item[slave] Serveral sub state machines are executed for single - slaves. This pointer stores the current slave for these FSMs. -\item[datagram] The FSM class has its own datagram, which is used in - every state and sub-state. -\item[master\_state] This function pointer stores the current state - function for one of the master's state machines. -\item[master\_slaves\_responding] This attribute is used in the - operation state machine (see section~\ref{sec:fsm-op}) to store the - number of slaves, that responded to the last broadcast command. -\item[master\_slave\_states] This attribute stores the slave states, - that were determined by the last broadcast command. -\item[master\_validation] This flag is used by the operation state - machine and is non-zero, if a bus validation has to be done. -\item[slave\_state] This function pointer stores the current state of - the slave scan state machine (see section~\ref{sec:fsm-scan}) or the - slave configuration state machine (see section~\ref{sec:fsm-conf}). -\item[sii\_state] This function pointer stores the current state of - the SII state machine (see section~\ref{sec:fsm-sii}). -\item[sii\_offset] This attribute is used by the SII state machine to - store the word address for the current read or write cycle. -\item[sii\_mode] If this attribute is zero, the SII access is done - with ``auto-increment'' datagrams \cite[section~5.4]{dlspec}. - If it is non-zero, ``station-address'' datagrams are used. -\item[sii\_value] This attribute stores the value to write, or the - read value, respectively. -\item[sii\_start] A timestamp attribute, that stores the beginning - time of an SII operation to detect a timeout. -\item[change\_state] This function pointer stores the current state of - the state change state machine. -\item[change\_new] This attribute stores the requested state for the - state change state machine. -\item[change\_start] A timestamp attribute to detect a timeout while - changing slave states. -\item[coe\_state] This function pointer stores the current state of - the CoE state machines. -\item[sdodata] This is an Sdo data object that stores information - about the current Sdo to write. -\item[coe\_start] A timestamp attribute to detect timeouts during CoE - configuration. -\end{description} - -\paragraph{Public FSM Methods} - -\begin{description} -\item[ec\_fsm\_init()] Constructor of the FSM class. -\item[ec\_fsm\_clear()] Destructor of the FSM class. -\item[ec\_fsm\_reset()] Resets the whole FSM object. This is needed to - restart the master state machines. -\item[ec\_fsm\_execute()] Executes one state of the current state - machine and then returns. -\item[ec\_fsm\_startup()] Initializes the master startup state - machine, which determines the number of slaves and executes the - slave scan state machine for each slave. -\item[ec\_fsm\_startup\_running()] Returns non-zero, if the startup - state machine did not terminate yet. -\item[ec\_fsm\_startup\_success()] Returns non-zero, if the startup - state machine terminated with success. -\item[ec\_fsm\_configuration()] Initializes the master configuration - state machine, which executes the slave configuration state machine - for each slave. -\item[ec\_fsm\_configuration\_running()] Returns non-zero, if the - configuration state machine did not terminate yet. -\item[ec\_fsm\_configuration\_success()] Returns non-zero, if the - configuration state machine terminated with success. -\end{description} - -\paragraph{FSM State Methods} - -The rest of the methods showed in the UML class diagram are state -methods of the state machines. These states are described in -section~\ref{sec:fsm}. - -%------------------------------------------------------------------------------ - -\subsubsection{The EoE Class} -\label{sec:class-eoe} -\index{EoE!Class} - -Objects of the \textit{ec\_eoe\_t} class are called EoE handlers. Each -EoE handler represents a virtual network interface and can be coupled -to a EoE-capable slave on demand. The UML class diagram can be seen in -figure~\ref{fig:uml-eoe}. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.4\textwidth]{images/uml-eoe} - \caption{EoE UML class diagram} - \label{fig:uml-eoe} -\end{figure} - -\paragraph{EoE Attributes} - -\begin{description} -\item[list] The master class maintains a list of EoE handlers. - Therefore this list anchor is needed. -\item[slave] If an EoE handler is coupled to a slave, this pointer - points to the related slave object. Otherwise it is \textit{NULL}. -\item[datagram] Every EoE handler owns a datagram object to exchange - data with the coupled slave via its state machine. -\item[state] This function pointer points to the current state of the - EoE state machine (see section~\ref{sec:eoeimp}). -\item[dev] A pointer to the \textit{net\_device} structure that - represents the network interface to the kernel. -\item[stats] The statistics object for the network interface. -\item[opened] This flag stores, if the network interface was opened. - No EoE processing will be done, if the device is not opened. -\item[t\_last] This timestamp attribute stores the time of the last - bit rate measurement. -\item[rx\_skb] A pointer to the current receive socket buffer. On - every first fragment of a received frame, a new receive socket - buffer is allocated. On every last fragment, this buffer will be - passed to the network stack. -\item[rx\_skb\_offset] This attribute stores the offset for the next - fragment data in the receive socket buffer. -\item[rx\_skb\_size] This attribute stores the current data size of - the receive socket buffer. -\item[rx\_expected\_fragment] The expected number of the next - fragment. If a fragment with an invalid number is received, the - whole frame will be dropped. -\item[rx\_counter] This is the sum of the octets received since the - last bit rate measurement. -\item[rx\_rate] This attribute stores the receive bit rate in bps. -\item[tx\_queue] Each EoE handler maintains a transmittion queue for - frames, that come in via the network interface. This queue is - implemented with a linked list and protected by a spinlock. -\item[tx\_queue\_active] This flag stores, if the transmittion queue - is currently accepting frames from the network stack. If the queue - gets filled up, frame transmittion is suspended with a call to - \textit{netif\_stop\_queue()}. If the fill state decreases below the - half capacity, frame transmittion is restarted with - \textit{netif\_wake\_queue()}. -\item[tx\_queued\_frames] The number of frames in the transmittion - queue. -\item[tx\_queue\_lock] The spinlock used to protect the transmittion - queue. This is needed, because the queue is accessed both from - network stack context and from the master's EoE timer. -\item[tx\_frame] The frame that is currently sent. The - \textit{ec\_eoe\_frame\_t} structure combines the socket buffer - structure with a list head to append it to the transmittion queue. -\item[tx\_frame\_number] The EoE protocol demands to maintain a - sequencial frame number, that must be increased with every frame - sent. -\item[tx\_fragment\_number] The sequencial number of the next fragment - to transmit. -\item[tx\_offset] Current frame data offset for the next fragment to - transmit. -\item[tx\_counter] The number of octets transferred since the last bit - rate measurement. -\item[tx\_rate] The recent transmittion bit rate in bps. -\end{description} - -\paragraph{Public EoE Methods} - -\begin{description} -\item[ec\_eoe\_init()] The EoE handler's constructor. The network - interface is allocated and registered. -\item[ec\_eoe\_clear()] The EoE handler's destructor. The network - interface is unregistered and all allocated memory is freed. -\item[ec\_eoe\_run()] Executes the EoE state machine (see - section~\ref{sec:eoeimp}) for this handler. -\item[ec\_eoe\_active()] Returns true, if the handler has a slave - coupled and the network interface is opened. -\end{description} - -\paragraph{Private EoE Methods} - -\begin{description} -\item[ec\_eoe\_flush()] Clears the transmittion queue and drops all - frames queued for sending. -\item[ec\_eoe\_send()] Sends one fragment of the current frame. -\end{description} - - -\paragraph{EoE State Methods} - -The rest of the private methods are state functions for the EoE state -machine, which is discussed in section~\ref{sec:eoeimp}. - -%------------------------------------------------------------------------------ - -\subsubsection{The Debug Class} -\label{sec:class-debug} - -The debug class maintains a virtual network interface. All frames that -are sent and received by the master will be forwarded to this network -interface, so that bus monitoring can be done with third party tools -(see section~\ref{sec:debug}). Figure~\ref{fig:uml-debug} shows the -UML class diagram. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.3\textwidth]{images/uml-debug} - \caption{Debug UML class diagram} - \label{fig:uml-debug} -\end{figure} - -\paragraph{Debug Attributes} - -\begin{description} -\item[dev] A pointer to the allocated \textit{net\_device} structure - that represents the network interface in the kernel. -\item[stats] An object for interface statistics. -\item[opened] Stores the state of the device. Frames will only be - forwarded, if the device was opened with the \textit{ifconfig up} - command (or something similar). -\end{description} - -\paragraph{Public Debug Methods} - -\begin{description} -\item[ec\_debug\_init()] The constructor. -\item[ec\_debug\_clear()] The destructor. -\item[ec\_debug\_send()] This method forwards a frame to the virtual - network interface. It dynamically allocates a new socket buffer and - passes it to the network stack. -\end{description} - -%------------------------------------------------------------------------------ - -\subsection{The Realtime Interface} -\label{sec:ecrt} -\index{Realtime interface} - -The realtime interface provides functions and data structures for -realtime modules to access and use an EtherCAT master. - -\subsubsection{Master Requesting and Releasing} - -Before a realtime module can access am EtherCAT master provided by the -master module, it has to reserve one for exclusive use. After use, it -has to release the requested master and make it available for other -modules. This is done with the following functions: - -\begin{lstlisting}[language=C] - ec_master_t *ecrt_request_master(unsigned int master_index); - void ecrt_release_master(ec_master_t *master); -\end{lstlisting} - -The \textit{ecrt\_request\_master()} function has to be the first -function a module has to call, when using EtherCAT. The function takes -the index of the master as its argument. The first master has index 0, -the $n$th master has index $n - 1$. The number of existent masters has -to be specified when loading the master module (see -section~\ref{sec:mastermod}). The function tries to reserve the -specified master and scans for slaves. It returns a pointer to the -reserved master object upon success, or \textit{NULL} if an error -occured. - -The \textit{ecrt\_release\_master()} function releases a reserved -master after use. It takes the pointer to the master object returned -by \textit{ecrt\_request\_master()} as its argument and can never -fail. - -\subsubsection{Master Methods} -\label{sec:ecrt-master} - -\paragraph{Domain Creation} - -For process data exchange, at least one process data domain is needed -(see section~\ref{sec:processdata}). - -\begin{lstlisting}[language=C] - ec_domain_t *ecrt_master_create_domain(ec_master_t *master); -\end{lstlisting} - -The \textit{ecrt\_master\_create\_domain()} method creates a new -process data domain and returns a pointer to the new domain object. -This object can be used for registering process data objects and -exchange process data in cyclic operation. On failure, the function -returns \textit{NULL}. - -\paragraph{Slave Handlers} - -To access a certain slave, there is a method to get a slave handler: - -\begin{lstlisting}[language=C] - ec_slave_t *ecrt_master_get_slave(const ec_master_t *, - const char *); -\end{lstlisting} - -The \textit{ecrt\_master\_get\_slave()} method returns a pointer to a -certain slave object, specified by its ASCII address (see -section~\ref{sec:addr}). If the address is invalid, \textit{NULL} is -returned. - -\paragraph{Master Activation} - -When all domains are created, and all process data objects are -registered, the master can be activated: - -\begin{lstlisting}[language=C] - int ecrt_master_activate(ec_master_t *master); - void ecrt_master_deactivate(ec_master_t *master); -\end{lstlisting} - -By calling the \textit{ecrt\_master\_activate()} method, all slaves -are configured according to the prior method calls and are brought -into OP state. In this case, the method has a return value of 0. -Otherwise (wrong configuration or bus failure) the method returns -non-zero. - -The \textit{ecrt\_master\_deactivate()} method is the counterpart to -the activate call: It brings all slaves back into INIT state again. -This method should be called prior to -\textit{ecrt\_\-master\_\-release()}. - -\paragraph{Locking Callbacks} - -For concurrent master access, the realtime module has to provide a -locking mechanism (see section~\ref{sec:concurr}): - -\begin{lstlisting}[language=C] - void ecrt_master_callbacks(ec_master_t *master, - int (*request_cb)(void *), - void (*release_cb)(void *), - void *cb_data); -\end{lstlisting} - -The ``request lock'' and ``release lock'' callbacks can be set with -the \textit{ecrt\_master\_call\-backs()} method. It takes two function -pointers and a data value as additional arguments. The arbitrary data -value will be passed as argument on every callback. Asynchronous -master access (like EoE processing) is only possible if these -callbacks have been set. - -\paragraph{Preparation of Cyclic Data Exchange} - -Cyclic operation mostly consists of the three steps input, processing -and output. In EtherCAT terms this would mean: Receive datagrams, -evaluate process data and send datagrams. The first cycle differs from -this principle, because no datagrams have been sent yet, so there is -nothing to receive. To avoid having a case differantiation (in terms -of an \textit{if} clause), the following method exists: - -\begin{lstlisting}[language=C] - void ecrt_master_prepare(ec_master_t *master); -\end{lstlisting} - -As a last thing before cyclic operation, a call to the -\textit{ecrt\_master\_prepare()} method should be issued. It makes all -process data domains queue their datagrams and issues a send command, -so that the first receive call in cyclic operation will not fail. - -\paragraph{Frame Sending and Receiving} - -To send all queued datagrams and to later receive the sent datagrams -there are two methods: - -\begin{lstlisting}[language=C] - void ecrt_master_send(ec_master_t *master); - void ecrt_master_receive(ec_master_t *master); -\end{lstlisting} - -The \textit{ecrt\_master\_send()} method takes all datagrams, that -have been queued for transmission, packs them into frames, and passes -them to the network device for sending. - -The \textit{ecrt\_master\_receive()} queries the network device for -received frames (by calling the ISR\index{ISR}), extracts received -datagrams and dispatches the results to the datagram objects in the -queue. Received datagrams, and the ones that timed out, will be -marked, and then dequeued. - -\paragraph{Running the Operation State Machine} - -The master's operation state machine (see section~\ref{sec:fsm-op}) -monitors the bus in cyclic operation and reconfigures slaves, if -necessary. Therefore, the following method should be called -cyclically: - -\begin{lstlisting}[language=C] - void ecrt_master_run(ec_master_t *master); -\end{lstlisting} - -The \textit{ecrt\_master\_run()} method executes the master's -operation state machine step by step. It returns after processing one -state and queuing a datagram. Calling this function is not mandatory, -but highly recommended. - -\paragraph{Master Monitoring} - -It is also highly recommended to evaluate the master's error state. In -this way it is possible to notice lost network links, failed bus -segments, and other issues: - -\begin{lstlisting}[language=C] - int ecrt_master_state(const ec_master_t *master); -\end{lstlisting} - -The \textit{ecrt\_master\_state()} method returns the master's error -state. The following states are defined as part of the realtime -interface: - -\begin{description} -\item[EC\_MASTER\_OK] means, that no error has occurred. -\item[EC\_MASTER\_LINK\_ERROR] means, that the network link is - currently down. -\item[EC\_MASTER\_BUS\_ERROR] means, that one or more slaves do not - respond. -\end{description} - -\subsubsection{Domain Methods} -\label{sec:ecrt-domain} - -\paragraph{Pdo Registration} - -To access data of a slave's Pdo in cyclic operation, it is necessary -to make it part of a process data domain: - -\begin{lstlisting}[language=C] - ec_slave_t *ecrt_domain_register_pdo(ec_domain_t *domain, - const char *address, - uint32_t vendor_id, - uint32_t product_code, - const char *pdo_name - void **data_ptr); - int ecrt_domain_register_pdo_list(ec_domain_t *domain, - const ec_pdo_reg_t *pdos); -\end{lstlisting} - -The \textit{ecrt\_domain\_register\_pdo()} method registers a certain -Pdo as part of the domain and takes the address of the process data -pointer. This pointer will be set on master activation and then can be -parameter to the \textit{EC\_READ\_*} and \textit{EC\_WRITE\_*} macros -described below. - -A perhaps easier way to register multiple Pdos at the same time is to -fill an array of \textit{ec\_pdo\_reg\_t} and hand it to the -\textit{ecrt\_domain\_register\_pdo\_list()} method. Attention: This -array has to be terminated by an empty structure (\textit{\{\}})! - -\paragraph{Evaluating Domain Data} - -To evaluate domain data, the following method has to be used: - -\begin{lstlisting}[language=C] - void ecrt_domain_process(ec_domain_t *domain); -\end{lstlisting} - -The \textit{ecrt\_domain\_process()} method sets the domains state and -requeues its datagram for sending. - -\paragraph{Domain State} - -Similar to the master state, a domain has an own error state: - -\begin{lstlisting}[language=C] - int ecrt_domain_state(const ec_domain_t *domain); -\end{lstlisting} - -The \textit{ecrt\_domain\_state()} method returns the domain's error -state. It is non-zero if \underline{not} all process data values could -be exchanged, and zero otherwise. - -\subsubsection{Slave Methods} -\label{sec:ecrt-slave} - -\paragraph{Sdo Configuration} - -To configure slave Sdos, the function interface below can be used: - -\begin{lstlisting}[language=C] - int ecrt_slave_conf_sdo8(ec_slave_t *slave, - uint16_t sdo_index, - uint8_t sdo_subindex, - uint8_t value); - int ecrt_slave_conf_sdo16(ec_slave_t *slave, - uint16_t sdo_index, - uint8_t sdo_subindex, - uint16_t value); - int ecrt_slave_conf_sdo32(ec_slave_t *slave, - uint16_t sdo_index, - uint8_t sdo_subindex, - uint32_t value); -\end{lstlisting} - -The \textit{ecrt\_slave\_conf\_sdo*()} methods prepare the -configuration of a certain Sdo. The index and subindex of the Sdo, and -the value have to be specified. The configuration is done each time, -the slave is reconfigured. The methods only differ in the Sdo's data -type. If the configuration could be prepared, zero is returned. If an -error occured, non-zero is returned. - -\paragraph{Variable-sized Pdos} - -For specifying the size of variable-sized Pdos, the following method -can be used: - -\begin{lstlisting}[language=C] - int ecrt_slave_pdo_size(ec_slave_t *slave, - const char *pdo_name, - size_t size); -\end{lstlisting} - -The \textit{ecrt\_slave\_pdo\_size()} method takes the name of the Pdo -and the size. It returns zero on success, otherwise non-zero. - -\subsubsection{Process Data Access} -\label{sec:macros} - -The endianess of the process data could differ from that of the CPU. -Therefore, process data access has to be done by the macros below, -that are also provided by the realtime interface: - -\begin{lstlisting}[language=C] - #define EC_READ_BIT(DATA, POS) - #define EC_WRITE_BIT(DATA, POS, VAL) - - #define EC_READ_U8(DATA) - #define EC_READ_S8(DATA) - #define EC_READ_U16(DATA) - #define EC_READ_S16(DATA) - #define EC_READ_U32(DATA) - #define EC_READ_S32(DATA) - - #define EC_WRITE_U8(DATA, VAL) - #define EC_WRITE_S8(DATA, VAL) - #define EC_WRITE_U16(DATA, VAL) - #define EC_WRITE_S16(DATA, VAL) - #define EC_WRITE_U32(DATA, VAL) - #define EC_WRITE_S32(DATA, VAL) -\end{lstlisting} - -There are macros for bitwise access (\textit{EC\_READ\_BIT()}, -\textit{EC\_WRITE\_BIT()}), and bytewise access -(\textit{EC\_READ\_*()}, \textit{EC\_WRITE\_*()}). The bytewise macros -carry the data type in their name. Example: \textit{EC\_WRITE\_S16()} -writes a 16 bit signed value to EtherCAT data. The \textit{DATA} -parameter is supposed to be a process data pointer, as provided at Pdo -registration. - -The macros use the kernel's endianess conversion macros, that are -preprocessed to empty macros in case of equal endianess. This is the -definition for the \textit{EC\_\-READ\_\-U16()} macro: - -\begin{lstlisting}[language=C] - #define EC_READ_U16(DATA) \ - ((uint16_t) le16_to_cpup((void *) (DATA))) -\end{lstlisting} - -The \textit{le16\_to\_cpup()} macro converts a little-endian, 16 bit -value to the CPU's architecture and takes a pointer to the input value -as its argument. If the CPU's architecture is little-endian, too (for -example on X86 and compatible), nothing has to be converted. In this -case, the macro is replaced with an empty macro by the preprocessor -and so there is no unneeded function call or case differentiation in -the code. - -For keeping it portable, it is highly recommended to make use of these -macros. - -%------------------------------------------------------------------------------ - -\subsection{Slave Addressing} -\label{sec:addr} -\index{Slave!Addressing} - -The master offers the serveral slave addressing schemes (for Pdo -registration or configuration) via the realtime interface. For this -reason, slave addresses are ASCII\nomenclature{ASCII}{American - Standard Code for Information Interchange}-coded and passed as a -string. The addressing schemes are independent of the EtherCAT -protocol and represent an additional feature of the master. - -Below, the allowed addressing schemes are described. The descriptions -are followed by a regular expression formally defining the addressing -scheme, and one or more examples. - -\begin{description} -\item[Position Addressing] This is the normal addressing scheme, where - each slave is addressed by its ring position. The first slave has - address 0, and the $n$th slave has address $n - 1$. This addressing - scheme is useful for small busses that have a fixed number of slaves.\\ - RegEx: \texttt{[0-9]+} --- Example: \texttt{"42"} -\item[Advanced Position Addressing] Bus couplers segment the bus into - (physical) blocks. Though the logical ring positions keep being the - same, it is easier to address a slave with its block number and the - relative position inside the block. This addressing is done by - passing the (zero-based) index of the bus coupler (not the coupler's - ring position), followed by a colon and the relative position of the - actual slave starting at the bus coupler.\\ - RegEx: \texttt{[0-9]+:[0-9]+} --- Examples: \texttt{"0:42"}, - \texttt{"2:7"} -\item[Alias Addressing] Each slave can have a ``secondary slave - address'' or ``alias address''\footnote{Information about how to set - the alias can be found in section~\ref{sec:eepromaccess}} stored - in its E$^2$PROM. The alias is evaluated by the master and can be - used to address the slave, which is useful when a clearly defined - slave has to be addressed and the ring position is not known or can - change over time. This scheme is used by starting the address string - with a mesh (\#) followed by the alias address. The latter can also - be provided as hexadecimal value, prefixed with \textit{0x}.\\ - RegEx: \texttt{\#(0x[0-9A-F]+|[0-9]+)} --- Examples: - \texttt{"\#6622"}, \texttt{"\#0xBEEF"} -\item[Advanced Alias Addressing] This is a mixture of the ``Alias - Addressing'' and ``Advanced Position Addressing'' schemes. A certain - slave is addressed by specifying its relative position after an - aliased slave. This is very useful, if a complete block of slaves - can vary its position in the bus. The bus coupler preceeding the - block should get an alias. The block slaves can then be addressed by - specifying this alias and their position inside the block. This - scheme is used by starting the address string with a mesh (\#) - followed by the alias address (which can be hexadecimal), then a - colon and the relative posision of the slave to - address.\\ - RegEx: \texttt{\#(0x[0-9A-F]+|[0-9]+):[0-9]+} --- Examples: - \texttt{"\#0xBEEF:7"}, \texttt{"\#6:2"} -\end{description} - -In anticipation of section~\ref{sec:ecrt}, the functions accepting -these address strings are \textit{ecrt\_\-master\_\-get\_slave()}, -\textit{ecrt\_domain\_register\_pdo()} and -\textit{ecrt\_domain\_register\_pdo\_list()} (the latter through the -\textit{ec\_pdo\_reg\_t} structure). - -%------------------------------------------------------------------------------ - -\subsection{Concurrent Master Access} -\label{sec:concurr} -\index{Concurrency} - -In some cases, one master is used by serveral instances, for example -when a realtime module does cyclic process data exchange, and there -are EoE-capable slaves that require to exchange Ethernet data with the -kernel (see section~\ref{sec:eoeimp}). For this reason, the master is -a shared resource, and access to it has to be sequenctialized. This is -usually done by locking with semaphores, or other methods to protect -critical sections. - -The master itself can not provide locking mechanisms, because it has -no chance to know the appropriate kind of lock. Imagine, the realtime -module uses RTAI functionality, then ordinary kernel semaphores would -not be sufficient. For that, an important design decision was made: -The realtime module that reserved a master must have the total -control, therefore it has to take responsibility for providing the -appropriate locking mechanisms. If another instance wants to access -the master, it has to request the master lock by callbacks, that have -to be set by the realtime module. Moreover the realtime module can -deny access to the master if it consideres it to be awkward at the -moment. - -\begin{figure}[htbp] - \centering - \includegraphics[width=.6\textwidth]{images/master-locks} - \caption{Concurrent master access} - \label{fig:locks} -\end{figure} - -Figure~\ref{fig:locks} exemplary shows, how two processes share one -master: The realtime module's cyclic thread uses the master for -process data exchange, while the master-internal EoE process uses it -to communicate with EoE-capable slaves. Both have to aquire the master -lock before access: The realtime thread can access the lock natively, -while the EoE process has to use the master callbacks. -Section~\ref{sec:concurrency} gives an example, of how to implement -this. - -%------------------------------------------------------------------------------ - -\section{The Master's State Machines} +\chapter{State Machines} \label{sec:fsm} \index{FSM} -Many parts of the EtherCAT master are implemented as \textit{finite - state machines} (FSMs\nomenclature{FSM}{Finite State Machine}). -Though this leads to a higher grade of complexity in some aspects, is -opens many new possibilities. +Many parts of the EtherCAT master are implemented as \textit{finite state +machines} (FSMs\nomenclature{FSM}{Finite State Machine}). Though this leads +to a higher grade of complexity in some aspects, is opens many new +possibilities. The below short code example exemplary shows how to read all slave states and moreover illustrates the restrictions of ``sequential'' coding: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] ec_datagram_brd(datagram, 0x0130, 2); // prepare datagram if (ec_master_simple_io(master, datagram)) return -1; slave_states = EC_READ_U8(datagram->data); // process datagram \end{lstlisting} -The \textit{ec\_master\_simple\_io()} function provides a simple -interface for synchronously sending a single datagram and receiving -the result\footnote{For all communication issues have been meanwhile - sourced out into state machines, the function is deprecated and - stopped existing. Nevertheless it is adequate for showing it's own - restrictions.}. Internally, it queues the specified datagram, -invokes the \textit{ec\_master\_send\_datagrams()} function to send a -frame with the queued datagram and then waits actively for its -reception. +The \textit{ec\_master\_simple\_io()} function provides a simple interface for +synchronously sending a single datagram and receiving the result\footnote{For +all communication issues have been meanwhile sourced out into state machines, +the function is deprecated and stopped existing. Nevertheless it is adequate +for showing it's own restrictions.}. Internally, it queues the specified +datagram, invokes the \textit{ec\_master\_send\_datagrams()} function to send +a frame with the queued datagram and then waits actively for its reception. This sequential approach is very simple, reflecting in only three lines of code. The disadvantage is, that the master is blocked for the @@ -2580,7 +1882,7 @@ while the listings below show the basic approach by coding the example from above as a state machine: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] // state 1 ec_datagram_brd(datagram, 0x0130, 2); // prepare datagram ec_master_queue(master, datagram); // queue datagram @@ -2592,7 +1894,7 @@ datagrams, these are sent and received. Then the respective next states are executed: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] // state 2 if (datagram->state != EC_DGRAM_STATE_RECEIVED) { next_state = state_error; @@ -2607,7 +1909,7 @@ %------------------------------------------------------------------------------ -\subsection{State Machine Theory} +\section{State Machine Theory} \label{sec:fsmtheory} \index{FSM!Theory} @@ -2690,19 +1992,18 @@ \paragraph{Misunderstandings about state machines} -There is a phenomenon called ``state explosion'', that is oftenly -taken as a counter-argument against general use of state machines in -complex environments. It has to be mentioned, that this point is -misleading~\cite{fsmmis}. State explosions happen usually as a result -of a bad state machine design: Common mistakes are storing the present -values of all inputs in a state, or not dividing a complex state -machine into simpler sub state machines. The EtherCAT master uses -serveral state machines, that are executed hierarchically and so serve -as sub state machines. These are also described below. - -%------------------------------------------------------------------------------ - -\subsection{The Master's State Model} +There is a phenomenon called ``state explosion'', that is often taken as a +counter-argument against general use of state machines in complex environments. +It has to be mentioned, that this point is misleading~\cite{fsmmis}. State +explosions happen usually as a result of a bad state machine design: Common +mistakes are storing the present values of all inputs in a state, or not +dividing a complex state machine into simpler sub state machines. The EtherCAT +master uses several state machines, that are executed hierarchically and so +serve as sub state machines. These are also described below. + +%------------------------------------------------------------------------------ + +\section{The Master's State Model} \label{sec:statemodel} This section will introduce the techniques used in the master to @@ -2714,7 +2015,7 @@ code. An obvious way is to implement the different states and actions by one big case differentiation: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] enum {STATE_1, STATE_2, STATE_3}; int state = STATE_1; @@ -2746,7 +2047,7 @@ function and to store the current state function with a function pointer: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] void (*state)(void *) = state1; void state_machine_run(void *priv_data) { @@ -2770,13 +2071,12 @@ } \end{lstlisting} -In the master code, state pointers of all state machines\footnote{All - except for the EoE state machine, because multiple EoE slaves have - to be handled in parallel. For this reason each EoE handler object - has its own state pointer.} are gathered in a single object of the -\textit{ec\_fsm\_t} class. This is advantageous, because there is -always one instance of every state machine available and can be -started on demand. +In the master code, state pointers of all state machines\footnote{All except +for the EoE state machine, because multiple EoE slaves have to be handled in +parallel. For this reason each EoE handler object has its own state pointer.} +are gathered in a single object of the \textit{ec\_fsm\_t} class. This is +advantageous, because there is always one instance of every state machine +available and can be started on demand. \paragraph{Mealy and Moore} @@ -2787,7 +2087,7 @@ model offers a higher flexibility, which can be seen in the listing below: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] void state7(void *priv_data) { if (some_condition) { action_7a(); @@ -2801,7 +2101,7 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 3} + \textcircled{\tiny 7}] The +\item[\linenum{3} + \linenum{7}] The state function executes the actions depending on the state transition, that is about to be done. \end{description} @@ -2810,7 +2110,7 @@ on the state, followed by some actions dependent on the state transition: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] void state9(void *priv_data) { action_9(); if (some_condition) { @@ -2829,13 +2129,12 @@ \paragraph{Using Sub State Machines} -To avoid having too much states, certain functions of the EtherCAT -master state machine have been sourced out into sub state machines. -This helps to encapsule the related workflows and moreover avoids the -``state explosion'' phenomenon described in -section~\ref{sec:fsmtheory}. If the master would instead use one big -state machine, the number of states would be a multiple of the actual -number. This would increase the level of complexity to a +To avoid having too much states, certain functions of the EtherCAT master state +machine have been sourced out into sub state machines. This helps to +encapsulate the related workflows and moreover avoids the ``state explosion'' +phenomenon described in section~\ref{sec:fsmtheory}. If the master would +instead use one big state machine, the number of states would be a multiple of +the actual number. This would increase the level of complexity to a non-manageable grade. \paragraph{Executing Sub State Machines} @@ -2845,7 +2144,7 @@ usually done like in the listing below, which is taken out of the slave configuration state machine code: -\begin{lstlisting}[language=C,numbers=left] +\begin{lstlisting}[gobble=2,language=C,numbers=left] void ec_fsm_slaveconf_safeop(ec_fsm_t *fsm) { fsm->change_state(fsm); // execute state change @@ -2863,12 +2162,12 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 3}] \textit{change\_state} is the +\item[\linenum{3}] \textit{change\_state} is the state pointer of the state change state machine. The state function, the pointer points on, is executed\ldots -\item[\normalfont\textcircled{\tiny 6}] \ldots either until the state +\item[\linenum{6}] \ldots either until the state machine terminates with the error state \ldots -\item[\normalfont\textcircled{\tiny 11}] \ldots or until the state +\item[\linenum{11}] \ldots or until the state machine terminates in the end state. Until then, the ``higher'' state machine remains in the current state and executes the sub state machine again in the next cycle. @@ -2886,7 +2185,7 @@ %------------------------------------------------------------------------------ -\subsection{The Operation State Machine} +\section{The Operation State Machine} \label{sec:fsm-op} \index{FSM!Operation} @@ -2910,21 +2209,20 @@ broadcast. In this way, all slave states and the number of slaves responding can be determined. $\rightarrow$~BROADCAST -\item[BROADCAST] The broadcast datagram is evaluated. A change in the - number of responding slaves is treates as a topology change. If the - number of slaves is not as expected, the bus is marked as - ``tainted''. In this state, no slave reconfiguration is possible, - because the assignment of known slaves and those present on the bus - is ambiguous. If the number of slaves is considered as right, the - bus is marked for validation, because it turned from tainted to - normal state and it has to be checked, if all slaves are valid. Now, - the state of every single slave has to be determined. For that, a - (unicast) datagram is issued, that queries the first slave's ``AL - Control Response'' attribute. $\rightarrow$~READ STATES - -\item[READ STATES] If the current slave did not respond to its - configured station address, it is marked as offline, and the next - slave is queried. $\rightarrow$~READ STATES +\item[BROADCAST] The broadcast datagram is evaluated. A change in the number of +responding slaves is treated as a topology change. If the number of slaves is +not as expected, the bus is marked as ``tainted''. In this state, no slave +reconfiguration is possible, because the assignment of known slaves and those +present on the bus is ambiguous. If the number of slaves is considered as +right, the bus is marked for validation, because it turned from tainted to +normal state and it has to be checked, if all slaves are valid. Now, the state +of every single slave has to be determined. For that, a (unicast) datagram is +issued, that queries the first slave's ``AL Control Response'' attribute. +$\rightarrow$~READ STATES + +\item[READ STATES] If the current slave did not respond to its configured +station address, it is marked as offline, and the next slave is queried. +$\rightarrow$~READ STATES If the slave responded, it is marked as online and its current state is stored. The next slave is queried. $\rightarrow$~READ STATES @@ -2981,15 +2279,14 @@ %------------------------------------------------------------------------------ -\subsection{The Idle State Machine} +\section{The Idle State Machine} \label{sec:fsm-idle} \index{FSM!Idle} -The Idle state machine is executed by a kernel workqueue, if no -realtime module is connected. Its purpose is to make slave information -available to user space, operate EoE-capable slaves, read and write -E$^2$PROM contents and test slave functionality. -Figure~\ref{fig:fsm-idle} shows its transition diagram. +The Idle state machine is executed by a kernel thread, if no application is +connected. Its purpose is to make slave information available to user space, +operate EoE-capable slaves, read and write SII contents and test slave +functionality. Figure~\ref{fig:fsm-idle} shows its transition diagram. \begin{figure}[htbp] \centering @@ -3073,7 +2370,7 @@ %------------------------------------------------------------------------------ -\subsection{The Slave Scan State Machine} +\section{The Slave Scan State Machine} \label{sec:fsm-scan} \index{FSM!Slave Scan} @@ -3154,7 +2451,7 @@ %------------------------------------------------------------------------------ -\subsection{The Slave Configuration State Machine} +\section{The Slave Configuration State Machine} \label{sec:fsm-conf} \index{FSM!Slave Configuration} @@ -3261,7 +2558,7 @@ %------------------------------------------------------------------------------ -\subsection{The State Change State Machine} +\section{The State Change State Machine} \label{sec:fsm-change} \index{FSM!State Change} @@ -3301,7 +2598,7 @@ querying the \textit{AL Status Code} parameter. $\rightarrow$~CODE -\item[END] If the state machine ends in this state, the slaves's state +\item[END] If the state machine ends in this state, the slave's state change has been successful. \item[CODE] The status code query has been sent. Reading the @@ -3334,7 +2631,7 @@ %------------------------------------------------------------------------------ -\subsection{The SII State Machine} +\section{The SII State Machine} \label{sec:fsm-sii} \index{FSM!SII} @@ -3401,7 +2698,7 @@ %------------------------------------------------------------------------------ -\section{Mailbox Protocol Implementations} +\chapter{Mailbox Protocol Implementations} \index{Mailbox} The EtherCAT master implements the EoE and the CoE mailbox @@ -3409,7 +2706,7 @@ %------------------------------------------------------------------------------ -\subsection{Ethernet-over-EtherCAT (EoE)} +\section{Ethernet-over-EtherCAT (EoE)} \label{sec:eoeimp} \index{EoE} @@ -3444,17 +2741,16 @@ \paragraph{EoE Handlers} -The virtual EoE interfaces and the related functionality is encapsuled -in the \textit{ec\_eoe\_t} class (see section~\ref{sec:class-eoe}). -So the master does not create the network interfaces directly: This is -done inside the constructor of the \textit{ec\_eoe\_t} class. An -object of this class is called ``EoE handler'' below. An EoE handler -additionaly contains a frame queue. Each time, the kernel passes a new -socket buffer for sending via the interface's +The virtual EoE interfaces and the related functionality is encapsulated in the +\textit{ec\_eoe\_t} class (see section~\ref{sec:class-eoe}). So the master +does not create the network interfaces directly: This is done inside the +constructor of the \textit{ec\_eoe\_t} class. An object of this class is called +``EoE handler'' below. An EoE handler additionally contains a frame queue. Each +time, the kernel passes a new socket buffer for sending via the interface's \textit{hard\_start\_xmit()} callback, the socket buffer is queued for -transmittion by the EoE state machine (see below). If the queue gets -filled up, the passing of new socket buffers is suspended with a call -to \textit{netif\_stop\_queue()}. +transmission by the EoE state machine (see below). If the queue gets filled up, +the passing of new socket buffers is suspended with a call to +\textit{netif\_stop\_queue()}. \paragraph{Static Handler Creation} @@ -3463,7 +2759,7 @@ network interfaces is equal to the lifetime of the master module. This approach is opposed to creating the virtual network interfaces on demand (i.~e. on running across a new EoE-capable slave). The latter -approach was considered as difficult, because of serveral reasons: +approach was considered as difficult, because of several reasons: \begin{itemize} \item The \textit{alloc\_netdev()} function can sleep and must be @@ -3489,7 +2785,7 @@ section~\ref{sec:sysconfig}). Upon loading of the master module, the virtual interfaces become available: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] # `\textbf{ifconfig -a}` eoe0 Link encap:Ethernet HWaddr 00:11:22:33:44:06 BROADCAST MULTICAST MTU:1500 Metric:1 @@ -3563,7 +2859,7 @@ fragment. $\rightarrow$~RX\_\-START \item[TX\_START] The beginning state of a transmit sequence. It is - checked, if the transmittion queue contains a frame to send. If not, + checked, if the transmission queue contains a frame to send. If not, a receive sequence is started. $\rightarrow$~RX\_START If there is a frame to send, it is dequeued. If the queue was @@ -3588,15 +2884,17 @@ the following disadvantages: \begin{itemize} -\item Only one EoE fragment can be sent or received every few cycles. - This causes the data rate to be very low, because the EoE state - machines are not executed in the time between the realtime - cycles. Moreover, the data rate would be dependent on the frequency - of the realtime process. -\item The receiving and forwarding of frames to the kernel requires - the dynamic allocation of frames. Some realtime extensions do not - support calling memory allocation functions in realtime context, so - the EoE state machine may not be executed with each realtime cycle. + +\item Only one EoE fragment can be sent or received every few cycles. This +causes the data rate to be very low, because the EoE state machines are not +executed in the time between the application cycles. Moreover, the data rate +would be dependent on the period of the application task. + +\item The receiving and forwarding of frames to the kernel requires the dynamic +allocation of frames. Some realtime extensions do not support calling memory +allocation functions in realtime context, so the EoE state machine may not be +executed with each application cycle. + \end{itemize} To overcome these problems, an own cyclic process is needed to @@ -3607,17 +2905,15 @@ this are introduced in section~\ref{sec:concurr}. Section~\ref{sec:concurrency} gives practical implementation examples. -\paragraph{Idle Mode} - -EoE data must also be exchanged idle mode, to guarantee the continuous -availability of the connection to the EoE-capable slaves. Although -there is no realtime module connected in this case, the master is -still accessed by the idle state machine (see -section~\ref{sec:fsm-idle}), that is executed by the master's -workqueue. With the EoE timer running in addition, there is still -concurrency, that has to be protected by a lock. Therefore the master -owns an internal spinlock that is used protect master access during -idle mode. +\paragraph{Idle phase} + +EoE data must also be exchanged in idle phase, to guarantee the continuous +availability of the connection to the EoE-capable slaves. Although there is no +application connected in this case, the master is still accessed by the master +state machine (see section~\ref{sec:fsm-master}). With the EoE timer running in +addition, there is still concurrency, that has to be protected by a lock. +Therefore the master owns an internal spinlock that is used protect master +access during idle phase. \paragraph{Automatic Configuration} @@ -3629,7 +2925,7 @@ %------------------------------------------------------------------------------ -\subsection{CANopen-over-EtherCAT (CoE)} +\section{CANopen-over-EtherCAT (CoE)} \label{sec:coeimp} \index{CoE} @@ -3639,11 +2935,11 @@ \paragraph{Sdo Configuration} -The Sdo configurations have to be provided by the realtime module. -This is done via the \textit{ecrt\_slave\_conf\_sdo*()} methods (see -section~\ref{sec:ecrt-slave}), that are part of the realtime -interface. The slave stores the Sdo configurations in a linked list, -but does not apply them at once. +The Sdo configurations have to be provided by the application. This is done +via the \textit{ecrt\_slave\_conf\_sdo*()} methods (see +section~\ref{sec:ecrt-slave}), that are part of the realtime interface. The +slave stores the Sdo configurations in a linked list, but does not apply them +at once. \paragraph{Sdo Download State Machine} @@ -3703,12 +2999,12 @@ %------------------------------------------------------------------------------ -\section{User Space} +\chapter{User Space} \label{sec:user} \index{User space} For the master runs as a kernel module, accessing it is natively -limited to analyzing syslog messages and controlling using modutils. +limited to analyzing Syslog messages and controlling using modutils. It is necessary to implement further interfaces, that make it easier to access the master from user space and allow a finer influence. It @@ -3732,7 +3028,7 @@ %------------------------------------------------------------------------------ -\subsection{The Sysfs Interface} +\section{The Sysfs Interface} \label{sec:sysfs} The system filesystem (Sysfs\index{Sysfs}) was introduced with Linux @@ -3741,7 +3037,7 @@ filesystem (Procfs), where over the years much non-process information was concentrated. -Sysfs exports information about devices, classes and busses via a +Sysfs exports information about devices, classes and buses via a virtual filesystem, usually mounted to \textit{/sys}. The EtherCAT master slightly differs from this concept, because the only physical device is the network adapter it uses for bus communication, which is @@ -3768,13 +3064,13 @@ directory. Callback functions have to be provided for reading (and perhaps writing) access. -\subsubsection{Master Attributes} +\subsection{Master Attributes} \label{sec:sysfs-master} Below is a typical listing of the masters Sysfs directory (that is a file system representation of the master's kobject): -\begin{lstlisting} +\begin{lstlisting}[gobble=2] `\$` `\textbf{ls /sys/ethercat0}` debug_level slave000 slave003 slave006 eeprom_write_enable slave001 slave004 slave007 @@ -3786,7 +3082,7 @@ \begin{description} \item[debug\_level] (read/write) This attribute contains the master's debug level, which controls, how much information is printed into - syslog. The values 0 (no additional debug messages), 1 (a few + Syslog. The values 0 (no additional debug messages), 1 (a few additional debug messages) and 2 (all additional debug messages) are defined. Writing is done with command like @@ -3832,7 +3128,7 @@ \textit{domainX}, where X is the domain index. Below is a listing of the domain directory contents: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] `\$` `\textbf{ls /sys/ethercat0/domain0}` image_size \end{lstlisting} @@ -3848,7 +3144,7 @@ \textit{slaveXXX}, where XXX is the slave's 3-digit ring position in the EtherCAT bus. Below is a listing of a slave directory: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] `\$` `\textbf{ls /sys/ethercat0/slave003}` eeprom info state \end{lstlisting} @@ -3930,9 +3226,9 @@ %------------------------------------------------------------------------------ -\subsubsection{E$^2$PROM Access} -\label{sec:eepromaccess} -\index{E$^2$PROM!Access} +\subsection{SII Access} +\label{sec:siiaccess} +\index{SII!Access} It is possible to directly read or write the complete E$^2$PROM contents of the slaves. This was introduced for the reasons below: @@ -3947,11 +3243,11 @@ user space. \end{itemize} -Reading out E$^2$PROM data is as easy as reading other -attributes. Though the data are in binary format, analyzation is -easier with a tool like \textit{hexdump}: - -\begin{lstlisting} +Reading out E$^2$PROM data is as easy as reading other attributes. Though the +data are in binary format, analysis is easier with a tool like +\textit{hexdump}: + +\begin{lstlisting}[gobble=2] `\$` `\textbf{cat /sys/ethercat0/slave003/eeprom | hexdump}` 0000000 0103 0000 0000 0000 0000 0000 0000 008c 0000010 0002 0000 3052 07f0 0000 0000 0000 0000 @@ -3961,7 +3257,7 @@ Backing up E$^2$PROM contents gets as easy as copying a file: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] `\$` `\textbf{cp /sys/ethercat0/slave003/eeprom slave003.eep}` \end{lstlisting} @@ -3973,13 +3269,13 @@ E$^2$PROM writing is enabled with the command below: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] # `\textbf{echo 1 > /sys/ethercat0/eeprom\_write\_enable}` \end{lstlisting} -The success can be seen in the syslog messages again: - -\begin{lstlisting} +The success can be seen in the Syslog messages again: + +\begin{lstlisting}[gobble=2] EtherCAT: Slave EEPROM writing enabled. \end{lstlisting} @@ -3988,13 +3284,13 @@ short validation of the contents, before starting the write operation. This validation checks the complete size and the category headers. -\begin{lstlisting} +\begin{lstlisting}[gobble=2] # `\textbf{cat slave003.eep > /sys/ethercat0/slave003/eeprom}` \end{lstlisting} The write operation can take a few seconds. -\begin{lstlisting} +\begin{lstlisting}[gobble=2] EtherCAT: EEPROM writing scheduled for slave 3, 88 words. EtherCAT: Writing EEPROM of slave 3... EtherCAT: Finished writing EEPROM of slave 3. @@ -4002,14 +3298,14 @@ %------------------------------------------------------------------------------ -\subsection{User Space Tools} +\section{User Space Tools} \index{User space!Tools} There is a user space tool called \textit{lsec}\index{lsec} (``List EtherCAT'') to visualize the EtherCAT bus. Running it usually results in an output like this: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] `\$` `\textbf{lsec}` EtherCAT bus listing for master 0: 0 1:0 OP EK1100 Ethernet Kopplerklemme (2A E-Bus) @@ -4034,7 +3330,7 @@ section~\ref{sec:sysfs-slave}). This is done for master $0$ by default, but the master index can be specified via command line: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] `\$` `\textbf{lsec -h}` Usage: ec_list [OPTIONS] -m Query master . @@ -4049,7 +3345,7 @@ %------------------------------------------------------------------------------ -\subsection{System Integration} +\section{System Integration} \label{sec:system} To integrate the EtherCAT master into a running system, it has to be @@ -4076,7 +3372,7 @@ insert the EtherCAT init script at the correct place in the startup sequence: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] ### BEGIN INIT INFO # Provides: ethercat # Required-Start: $local_fs $syslog $network @@ -4094,13 +3390,13 @@ the EtherCAT master. It has to be executed with one of the parameters \texttt{start}, \texttt{stop}, \texttt{restart} or \texttt{status}. -\begin{lstlisting} +\begin{lstlisting}[gobble=2] # `\textbf{/etc/init.d/ethercat restart}` Shutting down EtherCAT master done Starting EtherCAT master done \end{lstlisting} -\subsubsection{The EtherCAT Sysconfig File} +\subsubsection{Sysconfig} % FIXME \label{sec:sysconfig} \index{Sysconfig file} @@ -4141,21 +3437,22 @@ %------------------------------------------------------------------------------ -\subsection{Monitoring and Debugging} +\section{Monitoring and Debugging} \label{sec:debug} \index{Monitoring} -For debugging purposes, every EtherCAT master registeres a read-only -network interface \textit{ecX}, where X is a number, provided by the -kernel on device registration. While it is ``up'', the master forwards -every frame sent and received to this interface. - -This makes it possible to connect an network monitor (like Wireshark -or tcpdump) to the debug interface and monitor the EtherCAT frames. - -It has to be considered, that can be frame rate can be very high. The -idle state machine usually runs every kernel timer interrupt (up to -$1$~kHz) and with a connected realtime module, the rate can be even +For debugging purposes, every EtherCAT master registers a read-only network +interface \textit{ecX}, where X is a number, provided by the kernel on device +registration. While it is ``up'', the master forwards every frame sent and +received to this interface. + +This makes it possible to connect an network monitor (like Wireshark or +tcpdump) to the debug interface and monitor the EtherCAT frames. + +% FIXME schedule() +It has to be considered, that can be frame rate can be very high. The master +state machine usually runs every kernel timer interrupt (usually up to +\unit{1}{\kilo\hertz}) and with a connected application, the rate can be even higher. \paragraph{Attention:} The socket buffers needed for the operation of @@ -4164,12 +3461,11 @@ %------------------------------------------------------------------------------ -\section{Timing Aspects} +\chapter{Timing Aspects} \label{sec:timing} -Although EtherCAT's timing is highly deterministic and therefore -timing issues are rare, there are a few aspects that can (and should -be) dealt with. +Although EtherCAT's timing is highly deterministic and therefore timing issues +are rare, there are a few aspects that can (and should be) dealt with. %------------------------------------------------------------------------------ @@ -4177,11 +3473,10 @@ \label{sec:timing-profile} \index{Realtime!Profiling} -One of the most important timing aspects are the runtimes of the +One of the most important timing aspects are the execution times of the realtime interface functions, that are called in cyclic context. These -functions make up an important part of the overall timing of the -realtime module. To measure the timing of the functions, the following -code was used: +functions make up an important part of the overall timing of the application. +To measure the timing of the functions, the following code was used: \begin{lstlisting}[gobble=2,language=C] c0 = get_cycles(); @@ -4195,23 +3490,24 @@ c4 = get_cycles(); \end{lstlisting} -Between each call of an interface function, the CPU timestamp counter -is read. The counter differences are converted to microseconds with -help of the \textit{cpu\_khz} variable, that contains the number of -increments per millisecond. - -For the actual measuring, a system with a $2.0$~GHz CPU was used, that -ran the above code in an RTAI thread with a cycle time of $100$ -\textmu s. The measuring was repeated $n = 100$ times and the results -were averaged. These can be seen in table~\ref{tab:profile}. +Between each call of an interface function, the CPU timestamp counter is read. +The counter differences are converted to \micro\second\ with help of the +\lstinline+cpu_khz+ variable, that contains the number of increments per +\milli\second. + +For the actual measuring, a system with a \unit{2.0}{\giga\hertz} CPU was used, +that ran the above code in an RTAI thread with a period of +\unit{100}{\micro\second}. The measuring was repeated $n = 100$ times and the +results were averaged. These can be seen in table~\ref{tab:profile}. \begin{table}[htpb] \centering - \caption{Profiling of a Realtime Cycle on a $2.0$~GHz Processor} + \caption{Profiling of a Realtime Cycle on a \unit{2.0}{\giga\hertz} + Processor} \label{tab:profile} \vspace{2mm} \begin{tabular}{l|r|r} - Element & Mean Duration [\textmu s] & Standard Deviancy [\textmu s] \\ + Element & Mean Duration [\second] & Standard Deviancy [\micro\second] \\ \hline \textit{ecrt\_master\_receive()} & 8.04 & 0.48\\ \textit{ecrt\_domain\_process()} & 0.14 & 0.03\\ @@ -4221,7 +3517,7 @@ \end{tabular} \end{table} -It is obvious, that the the functions accessing hardware make up the +It is obvious, that the functions accessing hardware make up the lion's share. The \textit{ec\_master\_receive()} executes the ISR of the Ethernet device, analyzes datagrams and copies their contents into the memory of the datagram objects. The \textit{ec\_master\_send()} @@ -4229,24 +3525,27 @@ hardware buffers. Interestingly, this makes up only a quarter of the receiving time. -The functions that only operate on the masters internal data -structures are very fast ($\Delta t < 1$~\textmu s). Interestingly the -runtime of \textit{ec\_domain\_process()} has a small standard -deviancy relative to the mean value, while this ratio is about twice -as big for \textit{ec\_master\_run()}: This probably results from the -latter function having to execute code depending on the current state -and the different state functions are more or less complex. - -For a realtime cycle makes up about $10$~\textmu s, the theoretical -frequency can be up to $100$~kHz. For two reasons, this frequency +The functions that only operate on the masters internal data structures are +very fast ($\Delta t < \unit{1}{\micro\second}$). Interestingly the runtime of +\textit{ec\_domain\_process()} has a small standard deviancy relative to the +mean value, while this ratio is about twice as big for +\textit{ec\_master\_run()}: This probably results from the latter function +having to execute code depending on the current state and the different state +functions are more or less complex. + +For a realtime cycle makes up about \unit{10}{\micro\second}, the theoretical +frequency can be up to \unit{100}{\kilo\hertz}. For two reasons, this frequency keeps being theoretical: \begin{enumerate} -\item The processor must still be able to run the operating system - between the realtime cycles. -\item The EtherCAT frame must be sent and received, before the next - realtime cycle begins. The determination of the bus cycle time is - difficult and covered in section~\ref{sec:timing-bus}. + +\item The processor must still be able to run the operating system between the +realtime cycles. + +\item The EtherCAT frame must be sent and received, before the next realtime +cycle begins. The determination of the bus cycle time is difficult and covered +in section~\ref{sec:timing-bus}. + \end{enumerate} %------------------------------------------------------------------------------ @@ -4272,58 +3571,44 @@ to the notification is unknown. Therefore the only way to confidently determine the bus cycle time is an electrical measuring. -Anyway, the bus cycle time is an important factor when designing -realtime code, because it limits the maximum frequency for the cyclic -part of the realtime module. In practice, these timing parameters are -highly dependent on the hardware and often a trial and error method -must be used to determine the limits of the system. - -The central question is: What happens, if the cycle frequency is too -high? The answer is, that the EtherCAT frames that have been sent at -the end of the cycle are not yet received, when the next cycle starts. -First this is noticed by \textit{ecrt\_domain\_process()}, because the -working counter of the process data datagrams were not increased. The -function will notify the user via syslog\footnote{To limit syslog - output, a mechanism has been implementet, that outputs a summarized - notification at maximum once a second.}. In this case, the process -data keeps being the same as in the last cycle, because it is not -erased by the domain. When the domain datagrams are queued again, the -master notices, that they are already queued (and marked as sent). The -master will mark them as unsent again and output a warning, that -datagrams were ``skipped''. - -On the mentioned $2.0$~GHz system, the possible cycle frequency can be -up to $25$~kHz without skipped frames. This value can surely be -increased by choosing faster hardware. Especially the RealTek network -hardware could be replaced by a faster one. Besides, implementing a -dedicated ISR for EtherCAT devices would also contribute to increasing -the latency. These are two points on the author's to-do list. - -%------------------------------------------------------------------------------ - -\chapter{Using the EtherCAT Master} -\label{chapter:usage} -\index{Master!Usage} - -This chapter will give practical examples of how to use the EtherCAT -master via the realtime interface by writing a realtime module. - -Section~\ref{sec:make} shows how to compile and install the master, -while the sections~\ref{sec:mini} to~\ref{sec:concurrency} give -examples for different realtime modules. - -%------------------------------------------------------------------------------ - -\section{Compiling and Installing} -\label{sec:make} -\index{Master!Compilation} +Anyway, the bus cycle time is an important factor when designing realtime code, +because it limits the maximum frequency for the cyclic task of the application. +In practice, these timing parameters are highly dependent on the hardware and +often a trial and error method must be used to determine the limits of the +system. + +The central question is: What happens, if the cycle frequency is too high? The +answer is, that the EtherCAT frames that have been sent at the end of the cycle +are not yet received, when the next cycle starts. First this is noticed by +\textit{ecrt\_domain\_process()}, because the working counter of the process +data datagrams were not increased. The function will notify the user via +Syslog\footnote{To limit Syslog output, a mechanism has been implemented, that +outputs a summarized notification at maximum once a second.}. In this case, the +process data keeps being the same as in the last cycle, because it is not +erased by the domain. When the domain datagrams are queued again, the master +notices, that they are already queued (and marked as sent). The master will +mark them as unsent again and output a warning, that datagrams were +``skipped''. + +On the mentioned \unit{2.0}{\giga\hertz} system, the possible cycle frequency +can be up to \unit{25}{\kilo\hertz} without skipped frames. This value can +surely be increased by choosing faster hardware. Especially the RealTek network +hardware could be replaced by a faster one. Besides, implementing a dedicated +ISR for EtherCAT devices would also contribute to increasing the latency. These +are two points on the author's to-do list. + +%------------------------------------------------------------------------------ + +\chapter{Installation} +\label{sec:installation} +\index{Master!Installation} The current EtherCAT master code is available at~\cite{etherlab} or can be obtained from the EtherLab\textsuperscript{\textregistered} CD. The \textit{tar.bz2} file has to be unpacked with the commands below (or similar): -\begin{lstlisting} +\begin{lstlisting}[gobble=2] `\$` `\textbf{tar xjf ethercat-\masterversion.tar.bz2}` `\$` `\textbf{cd ethercat-\masterversion/}` \end{lstlisting} @@ -4331,32 +3616,79 @@ The tarball was created with GNU Autotools, so the build process follows the below commands: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] `\$` `\textbf{./configure}` + `\$` `\textbf{make}` `\$` `\textbf{make modules}` \end{lstlisting} -The default installation prefix is \textit{/opt/etherlab}. It can be -changed with the \texttt{--prefix} argument. - -Linux kernel sources are needed for compilation\footnote{If a realtime - extension shall to be used, the kernel should be patched before - compiling the EtherCAT master.}. To compile the EtherCAT master -modules for a different kernel than the running kernel, the target -kernel version can be specified with the \texttt{--with-linux} -argument. Example: - -\begin{lstlisting} - `\$` `\textbf{./configure --with-linux="2.6.17-ipipe"}` - `\$` `\textbf{make modules}` -\end{lstlisting} +Table~\ref{tab:config} lists important configuration switches and options. + +\begin{table} + \caption{Configuration options} + \label{tab:config} + \vspace{2mm} + \begin{tabular}{l|p{.3\textwidth}|l} + +\bf Option/Switch & \bf Description & \bf Default\\\hline + +\lstinline+--prefix+ & Installation prefix & \textit{/opt/etherlab}\\ + +\lstinline+--with-linux-dir+ & Linux kernel sources & Use running kernel\\ + +\lstinline+--with-rtai-dir+ & RTAI path (only for RTAI example) & \\ + +\hline + +\lstinline+--enable-eoe+ & Enable EoE support & yes\\ + +\lstinline+--enable-cycles+ & Use CPU timestamp counter. Enable this on Intel +architecture to get finer timing calculation. & no\\ + +\lstinline+--enable-debug-if+ & Create a debug interface for each master & no\\ + +\lstinline+--enable-debug-ring+ & Create a debug ring to record frames & no\\ + +\hline + +\lstinline+--enable-8139too+ & Build the 8139too driver & yes\\ + +\lstinline+--with-8139too-kernel+ & 8139too kernel & $\dagger$\\ + +\lstinline+--enable-e100+ & Build the e100 driver & no\\ + +\lstinline+--with-e100-kernel+ & e100 kernel & $\dagger$\\ + +\lstinline+--enable-forcedeth+ & Enable forcedeth driver & no\\ + +\lstinline+--with-forcedeth-kernel+ & forcedeth kernel & $\dagger$\\ + +\lstinline+--enable-e1000+ & Enable e1000 driver & no\\ + +\lstinline+--with-e1000-kernel+ & e1000 kernel & $\dagger$\\ + +\lstinline+--enable-r8169+ & Enable r8169 driver & no\\ + +\lstinline+--with-r8169-kernel+ & r8169 kernel & $\dagger$\\ + + \end{tabular} + \vspace{2mm} + +\begin{description} + +\item[$\dagger$] If this option is not specified, the kernel version to use is +extracted from the Linux kernel sources. + +\end{description} + +\end{table} The below commands have to be entered as \textit{root}: The first one will install the kernel modules to the kernel's modules directory. The second one will install EtherCAT headers, the init script, the sysconfig file and the user space tools to the prefix path. -\begin{lstlisting} +\begin{lstlisting}[gobble=2] # `\textbf{make modules\_install}` # `\textbf{make install}` \end{lstlisting} @@ -4365,122 +3697,108 @@ \textit{/lib/modules}, a different destination directory can be specified with the \textit{DESTDIR} make variable. For example: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] # `\textbf{make DESTDIR=/vol/nfs/root modules\_install}` \end{lstlisting} This command will install the compiled kernel modules to \textit{/vol/nfs/root/lib/modules}, prepended by the kernel release. -If the EtherCAT master shall be run as a service -(recommended\footnote{Even if the EtherCAT master shall not be loaded - on system startup, the use of the init script is recommended for - manual (un-)loading.}), the init script and the sysconfig file have -to be copied to the appropriate locations. The below example is -suitable for SUSE Linux. It may vary for other distributions. - -\begin{lstlisting} +If the EtherCAT master shall be run as a service\footnote{Even if the EtherCAT +master shall not be loaded on system startup, the use of the init script is +recommended for manual (un-)loading.}, the init script and the sysconfig file +have to be copied (or linked) to the appropriate locations. The below example +is suitable for SUSE Linux. It may vary for other distributions. + +\begin{lstlisting}[gobble=2] # `\textbf{cd /opt/etherlab}` # `\textbf{cp etc/sysconfig/ethercat /etc/sysconfig/}` - # `\textbf{cp etc/init.d/ethercat /etc/init.d/}` + # `\textbf{ln -s etc/init.d/ethercat /etc/init.d/}` # `\textbf{insserv ethercat}` \end{lstlisting} Now the sysconfig file \texttt{/etc/sysconfig/ethercat} (see -section~\ref{sec:sysconfig}) has to be customized: This is mainly done -by uncommenting and adjusting the \$DEVICE\_INDEX variable. It has to -be set to the index of the compatible network device to use with -EtherCAT, where the order of devices is dependent on their position in -the PCI bus: - -\begin{lstlisting}[numbers=left,basicstyle=\ttfamily\scriptsize] - # `\textbf{lspci}` - 00:00.0 Host bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133] (rev 03) - 00:01.0 PCI bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133 AGP] - 00:04.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 40) - 00:04.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C... - 00:04.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller... - 00:04.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller... - 00:04.4 Bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40) - 00:09.0 Ethernet controller: D-Link System Inc RTL8139 Ethernet (rev 10) - 00:0a.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 100] (rev 08) - 00:0b.0 Ethernet controller: D-Link System Inc RTL8139 Ethernet (rev 10) - 00:0c.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27) - 00:11.0 Unknown mass storage controller: Promise Technology, Inc. PDC20265... -\end{lstlisting} - -In the above output of the \textit{lspci} command, two compatible -network devices can be found in lines~\textcircled{\tiny 9} and -\textcircled{\tiny 11}. The \$DEVICE\_INDEX variable should be set to -$0$ or $1$, respectively. +section~\ref{sec:sysconfig}) has to be customized. The minimal customization +is to set the \lstinline+MASTER0_DEVICE+ variable to the MAC address of the +Ethernet device to use (or \lstinline+ff:ff:ff:ff:ff:ff+ to use the first +device offered) and selecting the driver(s) to load via the +\lstinline+DEVICE_MODULES+ variable. After the basic configuration is done, the master can be started with the below command: -\begin{lstlisting} +\begin{lstlisting}[gobble=2] # `\textbf{/etc/init.d/ethercat start}` \end{lstlisting} The operation of the master can be observed by looking at the -syslog\index{syslog} messages, which should look like the ones below. -If EtherCAT slaves are connected to the master's EtherCAT device, the -activity indicators should begin to flash. +Syslog\index{Syslog} messages, which should look like the ones below. If +EtherCAT slaves are connected to the master's EtherCAT device, the activity +indicators should begin to flash. \begin{lstlisting}[numbers=left] - EtherCAT: Master driver, 1.1 (stable) - rev. 513, - compiled by fp at Aug 09 2006 10:23:20 - EtherCAT: Initializing 1 EtherCAT master(s)... - EtherCAT: Initializing master 0. - EtherCAT: Master driver initialized. - ec_8139too Fast Ethernet driver 0.9.27 Revision 513, - compiled by fp at Aug 09 2006 10:23:20 - ec_device_index is 0 - ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [LNKC] - -> GSI 11 (level, low) -> IRQ 11 - ec0: RealTek RTL8139 at 0xd047c000, 00:c0:26:00:c6:aa, IRQ 11 - ec0: Identified 8139 chip type 'RTL-8100B/8139D' - Registering EtherCAT device... - Starting EtherCAT device... - EtherCAT: Link state changed to UP. - EtherCAT: Starting Idle mode. - EtherCAT: 11 slaves responding. - EtherCAT: Slave states: INIT, OP. - EtherCAT: Scanning bus. - EtherCAT: Bus scanning completed. - EtherCAT: No EoE handlers coupled. +EtherCAT: Master driver `\masterversion` +EtherCAT: 1 master waiting for devices. +EtherCAT Intel(R) PRO/1000 Network Driver - version 6.0.60-k2 +Copyright (c) 1999-2005 Intel Corporation. +PCI: Found IRQ 12 for device 0000:01:01.0 +PCI: Sharing IRQ 12 with 0000:00:1d.2 +PCI: Sharing IRQ 12 with 0000:00:1f.1 +EtherCAT: Accepting device 00:0E:0C:DA:A2:20 for master 0. +EtherCAT: Starting master thread. +ec_e1000: ec0: e1000_probe: Intel(R) PRO/1000 Network + Connection +ec_e1000: ec0: e1000_watchdog_task: NIC Link is Up 100 Mbps + Full Duplex +EtherCAT: Link state changed to UP. +EtherCAT: 7 slave(s) responding. +EtherCAT: Slave states: PREOP. +EtherCAT: Scanning bus. +EtherCAT: Bus scanning completed in 431 ms. \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 1}] The master module is loaded, - and one master is initialized. -\item[\normalfont\textcircled{\tiny 6}] The EtherCAT-capable RTL8139 - device driver is loaded. It connects its first network device to the - master. -\item[\normalfont\textcircled{\tiny 16}] The master starts idle mode - and begins scanning the bus for slaves. + +\item[\linenum{1} -- \linenum{2}] The master module is loading, and one master +is initialized. + +\item[\linenum{3} -- \linenum{8}] The EtherCAT-capable e1000 driver is +loading. The master accepts the device with the address +\lstinline+00:0E:0C:DA:A2:20+. + +\item[\linenum{9} -- \linenum{16}] The master goes to idle phase, starts its +state machine and begins scanning the bus. + \end{description} %------------------------------------------------------------------------------ -\section{A Minimal Example Module} +\chapter{Application examples} +\label{chapter:examples} + +This chapter will give practical examples of how to use the EtherCAT master via +the realtime interface by writing an application module. + +%------------------------------------------------------------------------------ + +\section{Minimal Example} \label{sec:mini} \index{Examples!Minimal} -This section will explain the usage of the EtherCAT master from a -minimal kernel module. The complete module code is obtainable as a -part of the EtherCAT master code release (see~\cite{etherlab}, file -\textit{examples/mini/mini.c}). - -The minimal example uses a kernel timer (software interrupt) to handle -cyclic code. After the timer function is executed, it re-adds itself -with a delay of one \textit{jiffy}\index{jiffies}, which results in a -timer frequency of \textit{HZ}\nomenclature{HZ}{Kernel macro - containing the timer interrupt frequency} +This section will explain the use of the EtherCAT master from a minimal kernel +module. The complete module code is obtainable as a part of the EtherCAT master +code release (see~\cite{etherlab}, file \textit{examples/mini/mini.c}). + +The minimal example uses a kernel timer (software interrupt) to generate a +cyclic task. After the timer function is executed, it re-adds itself with a +delay of one \textit{jiffy}\index{jiffies}, which results in a timer frequency +of \textit{HZ}\nomenclature{HZ}{Kernel macro containing the timer interrupt +frequency} The module-global variables, needed to operate the master can be seen in listing~\ref{lst:minivar}. -\begin{lstlisting}[language=C,numbers=left,caption={Minimal +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={Minimal variables},label=lst:minivar] struct timer_list timer; @@ -4497,20 +3815,20 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 1}] There is a timer object +\item[\linenum{1}] There is a timer object declared, that is needed to tell the kernel to install a timer and execute a certain function, if it runs out. This is done by a variable of the \textit{timer\_list} structure. -\item[\normalfont\textcircled{\tiny 3} -- \textcircled{\tiny 4}] There +\item[\linenum{3} -- \linenum{4}] There is a pointer declared, that will later point to a requested EtherCAT master. Additionally there is a pointer to a domain object needed, that will manage process data IO. -\item[\normalfont\textcircled{\tiny 6}] The pointers \textit{r\_*} +\item[\linenum{6}] The pointers \textit{r\_*} will later point to the \underline{r}aw process data values inside the domain memory. The addresses they point to will be set during a call to \textit{ec\_\-master\_\-activate()}, that will create the domain memory and configure the mapped process data image. -\item[\normalfont\textcircled{\tiny 8} -- \textcircled{\tiny 12}] The +\item[\linenum{8} -- \linenum{12}] The configuration of the mapping of certain Pdos in a domain can easily be done with the help of an initialization array of the \textit{ec\_pdo\_reg\_t} type, defined as part of the realtime @@ -4524,10 +3842,10 @@ must end with an empty record (\textit{\{\}})! \end{description} -The initialization of the minimal realtime module is done by the -``Minimal init function'' in listing~\ref{lst:miniinit}. - -\begin{lstlisting}[language=C,numbers=left,caption={Minimal init +The initialization of the minimal application is done by the ``Minimal init +function'' in listing~\ref{lst:miniinit}. + +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={Minimal init function},label={lst:miniinit}] int __init init_mini_module(void) { @@ -4565,24 +3883,24 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 3}] It is tried to request the +\item[\linenum{3}] It is tried to request the first EtherCAT master (index 0). On success, the \textit{ecrt\_\-request\_\-master()} function returns a pointer to the reserved master, that can be used as an object to following functions calls. On failure, the function returns \textit{NULL}. -\item[\normalfont\textcircled{\tiny 7}] In order to exchange process +\item[\linenum{7}] In order to exchange process data, a domain object has to be created. The \textit{ecrt\_\-master\_\-create\_domain()} function also returns a pointer to the created domain, or \textit{NULL} in error case. -\item[\normalfont\textcircled{\tiny 11}] The registration of domain +\item[\linenum{11}] The registration of domain Pdos with an initialization array results in a single function call. Alternatively the data fields could be registered with individual calls of \textit{ecrt\_domain\_register\_pdo()}. -\item[\normalfont\textcircled{\tiny 16}] After the configuration of +\item[\linenum{16}] After the configuration of process data mapping, the master can be activated for cyclic operation. This will configure all slaves and bring them into OP state. -\item[\normalfont\textcircled{\tiny 20}] This call is needed to avoid +\item[\linenum{20}] This call is needed to avoid a case differentiation in cyclic operation: The first operation in cyclic mode is a receive call. Due to the fact, that there is nothing to receive during the first cycle, there had to be an @@ -4590,7 +3908,7 @@ \textit{ec\_master\_prepare()} sends a first datagram containing a process data exchange datagram, so that the first receive call will not fail. -\item[\normalfont\textcircled{\tiny 22} -- \textcircled{\tiny 25}] The +\item[\linenum{22} -- \linenum{25}] The master is now ready for cyclic operation. The kernel timer that cyclically executes the \textit{run()} function is initialized and started. @@ -4599,7 +3917,7 @@ The coding of a cleanup function fo the minimal module can be seen in listing~\ref{lst:miniclean}. -\begin{lstlisting}[language=C,numbers=left,caption={Minimal cleanup +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={Minimal cleanup function},label={lst:miniclean}] void __exit cleanup_mini_module(void) { @@ -4610,15 +3928,15 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 3}] To cleanup the module, it it +\item[\linenum{3}] To cleanup the module, it it necessary to stop the cyclic processing. This is done by a call to \textit{del\_timer\_sync()} which safely removes a queued timer object. It is assured, that no cyclic work will be done after this call returns. -\item[\normalfont\textcircled{\tiny 4}] This call deactivates the +\item[\linenum{4}] This call deactivates the master, which results in all slaves being brought to their INIT state again. -\item[\normalfont\textcircled{\tiny 5}] This call releases the master, +\item[\linenum{5}] This call releases the master, removes any existing configuration and silently starts the idle mode. The value of the master pointer is invalid after this call and the module can be safely unloaded. @@ -4627,7 +3945,7 @@ The final part of the minimal module is that for the cyclic work. Its coding can be seen in listing~\ref{lst:minirun}. -\begin{lstlisting}[language=C,numbers=left,caption={Minimal cyclic +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={Minimal cyclic function},label={lst:minirun}] void run(unsigned long data) { @@ -4648,42 +3966,45 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 5}] The cyclic processing starts - with receiving datagrams, that were sent in the last cycle. The - frames containing these datagrams have to be received by the network - interface card prior to this call. -\item[\normalfont\textcircled{\tiny 6}] The process data of domain 1 - has been automatically copied into domain memory while datagram - reception. This call checks the working counter for changes and - re-queues the domain's datagram for sending. -\item[\normalfont\textcircled{\tiny 8}] This is an example for reading - out a bit-oriented process data value (i.~e. bit 0) via the - \textit{EC\_READ\_BIT()} macro. See section~\ref{sec:macros} for - more information about those macros. -\item[\normalfont\textcircled{\tiny 9}] This line shows how to write a - signed, 16-bit process data value. In this case, the slave is able - to output voltages of $-10$~V to $+10$~V with a resolution of 16 - bit. This write command outputs either $0$~V or $+5$~V, depending - of the value of \textit{dig\_in\_0}. -\item[\normalfont\textcircled{\tiny 11}] This call runs the master's - operation state machine (see section~\ref{sec:fsm-op}). A single - state is processed, and datagrams are queued. Mainly bus observation - is done: The bus state is determined and in case of slaves that lost - their configuration, reconfiguration is tried. -\item[\normalfont\textcircled{\tiny 12}] This method sends all queued - datagrams, in this case the domain's datagram and one of the master - state machine. In best case, all datagrams fit into one frame. -\item[\normalfont\textcircled{\tiny 14} -- \textcircled{\tiny 15}] - Kernel timers are implemented as ``one-shot'' timers, so they have - to be re-added after each execution. The time of the next execution - is specified in \textit{jiffies} and will happen at the time of the - next system timer interrupt. This results in the \textit{run()} - function being executed with a frequency of \textit{HZ}. + +\item[\linenum{5}] The cyclic processing starts with receiving datagrams, that +were sent in the last cycle. The frames containing these datagrams have to be +received by the network interface card prior to this call. + +\item[\linenum{6}] The process data of domain 1 has been automatically copied +into domain memory while datagram reception. This call checks the working +counter for changes and re-queues the domain's datagram for sending. + +\item[\linenum{8}] This is an example for reading out a bit-oriented process +data value (i.~e. bit 0) via the \textit{EC\_READ\_BIT()} macro. See +section~\ref{sec:macros} for more information about those macros. + +\item[\linenum{9}] This line shows how to write a signed, 16-bit process data +value. In this case, the slave is able to output voltages of +\unit{-10--+10}{\volt} with a resolution of \unit{16}{bit}. This write command +outputs either \unit{0}{\volt} or \unit{+5}{\volt}, depending of the value of +\textit{dig\_in\_0}. + +\item[\linenum{11}] This call runs the master's operation state machine (see +section~\ref{sec:fsm-op}). A single state is processed, and datagrams are +queued. Mainly bus observation is done: The bus state is determined and in case +of slaves that lost their configuration, reconfiguration is tried. + +\item[\linenum{12}] This method sends all queued datagrams, in this case the +domain's datagram and one of the master state machine. In best case, all +datagrams fit into one frame. + +\item[\linenum{14} -- \linenum{15}] Kernel timers are implemented as +``one-shot'' timers, so they have to be re-added after each execution. The time +of the next execution is specified in \textit{jiffies} and will happen at the +time of the next system timer interrupt. This results in the \textit{run()} +function being executed with a frequency of \textit{HZ}. + \end{description} %------------------------------------------------------------------------------ -\section{An RTAI Example Module} +\section{RTAI Example} \label{sec:rtai} \index{Examples!RTAI} @@ -4693,7 +4014,7 @@ Listing~\ref{lst:rtaivar} shows the defines and global variables needed for a minimal RTAI module with EtherCAT processing. -\begin{lstlisting}[language=C,numbers=left,caption={RTAI task +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={RTAI task declaration},label={lst:rtaivar}] #define FREQUENCY 10000 #define TIMERTICKS (1000000000 / FREQUENCY) @@ -4702,10 +4023,10 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 1} -- \textcircled{\tiny 2}] RTAI +\item[\linenum{1} -- \linenum{2}] RTAI takes the cycle period as nanoseconds, so the easiest way is to define a frequency and convert it to a cycle time in nanoseconds. -\item[\normalfont\textcircled{\tiny 4}] The \textit{task} variable +\item[\linenum{4}] The \textit{task} variable later contains information about the running RTAI task. \end{description} @@ -4713,7 +4034,7 @@ module. Most lines are the same as in listing~\ref{lst:miniinit}, differences come up when starting the cyclic code. -\begin{lstlisting}[language=C,numbers=left,caption={RTAI module init +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={RTAI module init function},label={lst:rtaiinit}] int __init init_mod(void) { @@ -4767,23 +4088,23 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 24} -- \textcircled{\tiny 25}] The +\item[\linenum{24} -- \linenum{25}] The nanoseconds are converted to RTAI timer ticks and an RTAI timer is started. \textit{tick\_period} will be the ``real'' number of ticks used for the timer period (which can be different to the requested one). -\item[\normalfont\textcircled{\tiny 27}] The RTAI task is initialized +\item[\linenum{27}] The RTAI task is initialized by specifying the cyclic function, the parameter to hand over, the stack size, priority, a flag that tells, if the function will use floating point operations and a signal handler. -\item[\normalfont\textcircled{\tiny 32}] The task is made periodic by +\item[\linenum{32}] The task is made periodic by specifying a start time and a period. \end{description} The cleanup function of the RTAI module in listing~\ref{lst:rtaiclean} is nearly as simple as that of the minimal module. -\begin{lstlisting}[language=C,numbers=left,caption={RTAI module +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={RTAI module cleanup function},label={lst:rtaiclean}] void __exit cleanup_mod(void) { @@ -4796,9 +4117,9 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 2}] The RTAI task will be stopped +\item[\linenum{2}] The RTAI task will be stopped and deleted. -\item[\normalfont\textcircled{\tiny 3}] After that, the RTAI timer can +\item[\linenum{3}] After that, the RTAI timer can be stopped. \end{description} @@ -4810,7 +4131,7 @@ infinite loop in it, that is placed in a waiting state for the rest of each cycle. -\begin{lstlisting}[language=C,numbers=left,caption={RTAI module cyclic +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={RTAI module cyclic function},label={lst:rtairun}] void run(long data) { @@ -4829,9 +4150,9 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 3}] The \textit{while (1)} loop +\item[\linenum{3}] The \textit{while (1)} loop executes for the lifetime of the RTAI task. -\item[\normalfont\textcircled{\tiny 12}] The +\item[\linenum{12}] The \textit{rt\_task\_wait\_period()} function sets the process into a sleeping state until the beginning of the next cycle. It also checks, if the cyclic function has to be terminated. @@ -4843,20 +4164,19 @@ \label{sec:concurrency} \index{Examples!Concurrency} -As mentioned before, there can be concurrent access to the EtherCAT -master. The realtime module and a EoE\index{EoE} process can compete -for master access, for example. In this case, the module has to -provide the locking mechanism, because it depends on the module's -architecture which lock has to be used. The module makes this locking -mechanism available to the master through the master's locking -callbacks. +As mentioned before, there can be concurrent access to the EtherCAT master. The +application and a EoE\index{EoE} process can compete for master access, for +example. In this case, the module has to provide the locking mechanism, because +it depends on the module's architecture which lock has to be used. The module +makes this locking mechanism available to the master through the master's +locking callbacks. In case of RTAI, the lock can be an RTAI semaphore, as shown in -listing~\ref{lst:convar}. A normal linux semaphore would not be -appropriate, because it could not block the RTAI task due to RTAI -running in a higher domain than the linux kernel (see~\cite{rtai}). - -\begin{lstlisting}[language=C,numbers=left,caption={RTAI semaphore for +listing~\ref{lst:convar}. A normal Linux semaphore would not be appropriate, +because it could not block the RTAI task due to RTAI running in a higher domain +than the Linux kernel (see~\cite{rtai}). + +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={RTAI semaphore for concurrent access},label={lst:convar}] SEM master_sem; \end{lstlisting} @@ -4865,7 +4185,7 @@ releasing the master lock. An exemplary coding can be seen in listing~\ref{lst:conlock}. -\begin{lstlisting}[language=C,numbers=left,caption={RTAI locking +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={RTAI locking callbacks for concurrent access},label={lst:conlock}] int request_lock(void *data) { @@ -4880,24 +4200,24 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 1}] The \textit{request\_lock()} +\item[\linenum{1}] The \textit{request\_lock()} function has a data parameter. The master always passes the value, that was specified when registering the callback function. This can be used for handing the master pointer. Notice, that it has an integer return value (see line 4). -\item[\normalfont\textcircled{\tiny 3}] The call to +\item[\linenum{3}] The call to \textit{rt\_sem\_wait()} either returns at once, when the semaphore was free, or blocks until the semaphore is freed again. In any case, the semaphore finally is reserved for the process calling the request function. -\item[\normalfont\textcircled{\tiny 4}] When the lock was requested +\item[\linenum{4}] When the lock was requested successfully, the function should return 0. The module can prohibit requesting the lock by returning non-zero (see paragraph ``Tuning the jitter'' below). -\item[\normalfont\textcircled{\tiny 7}] The \textit{release\_lock()} +\item[\linenum{7}] The \textit{release\_lock()} function gets the same argument passed, but has a void return value, because is always succeeds. -\item[\normalfont\textcircled{\tiny 9}] The \textit{rt\_sem\_signal()} +\item[\linenum{9}] The \textit{rt\_sem\_signal()} function frees the semaphore, that was prior reserved with \textit{rt\_sem\_wait()}. \end{description} @@ -4905,7 +4225,7 @@ In the module's init function, the semaphore must be initialized, and the callbacks must be passed to the EtherCAT master: -\begin{lstlisting}[language=C,numbers=left,caption={Module init +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={Module init function for concurrent access},label={lst:coninit}] int __init init_mod(void) { @@ -4923,11 +4243,11 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 5}] The call to +\item[\linenum{5}] The call to \textit{rt\_sem\_init()} initializes the semaphore and sets its value to 1, meaning that only one process can reserve the semaphore without blocking. -\item[\normalfont\textcircled{\tiny 11}] The callbacks are passed to +\item[\linenum{11}] The callbacks are passed to the master with a call to \textit{ecrt\_master\_callbacks()}. The last parameter is the argument, that the master should pass with each call to a callback function. Here it is not used and set to @@ -4939,7 +4259,7 @@ use the callbacks (which are meant for processes of lower priority), so it can access the semaphore directly: -\begin{lstlisting}[language=C,numbers=left,caption={RTAI cyclic +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={RTAI cyclic function for concurrent access},label={lst:conrun}] void run(long data) { @@ -4961,18 +4281,20 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 4}] Every access to the master has - to be preceeded by a call to \textit{rt\_sem\_wait()}, because - another instance might currently access the master. -\item[\normalfont\textcircled{\tiny 14}] When cyclic processing - finished, the semaphore has to be freed again, so that other - processes have the possibility to access the master. + +\item[\linenum{4}] Every access to the master has to be preceded by a call to +\textit{rt\_sem\_wait()}, because another instance might currently access the +master. + +\item[\linenum{14}] When cyclic processing finished, the semaphore has to be +freed again, so that other processes have the possibility to access the master. + \end{description} A little change has to be made to the cleanup function in case of concurrent master access. -\begin{lstlisting}[language=C,numbers=left,caption={RTAI module +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={RTAI module cleanup function for concurrent access},label={lst:conclean}] void __exit cleanup_mod(void) { @@ -4985,31 +4307,30 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 7}] Upon module cleanup, the +\item[\linenum{7}] Upon module cleanup, the semaphore has to be deleted, so that memory can be freed. \end{description} \paragraph{Tuning the Jitter} \index{Jitter} -Concurrent access leads to higher jitter of the realtime process, -because there are situations, in which the realtime process has to -wait for a process of lower priority to finish accessing the master. -In most cases this is acceptable, because a master access cycle -(receive/process/send) only takes $10$~\textmu s to $20$~\textmu s on -recent systems, what would be the maximum additional jitter. However -some applications demand a minimum jitter. For this reason the master -access can be prohibited by the realtime module: If the time, another -process wants to access the master, is to close to the beginning of -the next realtime cycle, the module can disallow, that the lock is -taken. In this case, the request callback has to return $1$, meaning -that the lock has not been taken. The foreign process must abort its -master access and try again next time. - -This measure helps to significantly reducing the jitter produced by -concurrent master access. Below are exerpts of an example coding: - -\begin{lstlisting}[language=C,numbers=left,caption={Variables for +Concurrent access leads to higher jitter for the application task, because +there are situations, in which the task has to wait for a process of lower +priority to finish accessing the master. In most cases this is acceptable, +because a master access cycle (receive/process/send) only takes +\unit{10-20}{\micro\second} on recent systems, what would be the maximum +additional jitter. However some applications demand a minimum jitter. For this +reason the master access can be prohibited by the application: If the time, +another process wants to access the master, is to close to the beginning of the +next application cycle, the module can disallow, that the lock is taken. In +this case, the request callback has to return $1$, meaning that the lock has +not been taken. The foreign process must abort its master access and try again +next time. + +This measure helps to significantly reducing the jitter produced by concurrent +master access. Below are excerpts of an example coding: + +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={Variables for jitter reduction},label={lst:redvar}] #define FREQUENCY 10000 // RTAI task frequency in Hz // ... @@ -5019,17 +4340,18 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 3}] The variable - \textit{t\_last\_cycle} holds the timer ticks at the beginning of - the last realtime cycle. -\item[\normalfont\textcircled{\tiny 4}] \textit{t\_critical} contains - the number of ticks, that may have passed since the beginning of the - last cycle, until there is no more foreign access possible. It is - calculated by substracting the ticks for $30$~\textmu s from the - ticks for a complete cycle. + +\item[\linenum{3}] The variable \textit{t\_last\_cycle} holds the timer ticks +at the beginning of the last realtime cycle. + +\item[\linenum{4}] \textit{t\_critical} contains the number of ticks, that may +have passed since the beginning of the last cycle, until there is no more +foreign access possible. It is calculated by subtracting the ticks for +\unit{30}{\micro\second} from the ticks for a complete cycle. + \end{description} -\begin{lstlisting}[language=C,numbers=left,caption={Cyclic function +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={Cyclic function with reduced jitter},label={lst:redrun}] void run(long data) { @@ -5040,11 +4362,11 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 4}] The ticks of the beginning of +\item[\linenum{4}] The ticks of the beginning of the current realtime cycle are taken before reserving the semaphore. \end{description} -\begin{lstlisting}[language=C,numbers=left,caption={Request callback +\begin{lstlisting}[gobble=2,language=C,numbers=left,caption={Request callback for reduced jitter},label={lst:redreq}] int request_lock(void *data) { @@ -5059,10 +4381,11 @@ \end{lstlisting} \begin{description} -\item[\normalfont\textcircled{\tiny 4}] If the time of request is too - close to the next realtime cycle (here: \textless~$30$~\textmu s - before the estimated beginning), the locking is denied. The - requesting process must abort its cycle. + +\item[\linenum{4}] If the time of request is too close to the next realtime +cycle (here: \unit{<30}{\micro\second} before the estimated beginning), the +locking is denied. The requesting process must abort its cycle. + \end{description} %------------------------------------------------------------------------------ diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/architecture.fig --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/documentation/images/architecture.fig Thu Jul 03 15:17:51 2008 +0000 @@ -0,0 +1,160 @@ +#FIG 3.2 +Portrait +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 7245.000 5985.000 6975 5985 7245 5715 7515 5985 +6 5085 7965 5850 8820 +2 3 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 8 + 5175 7965 5760 7965 5760 8775 5175 8775 5175 8415 5085 8415 + 5085 7965 5175 7965 +2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 + 5490 8190 5670 8190 5670 8370 5490 8370 5490 8190 +2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 + 5310 8505 5400 8505 5400 8595 5310 8595 5310 8505 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 8055 5085 8055 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 8145 5085 8145 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 8190 5085 8190 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 8280 5085 8280 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 8235 5085 8235 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 8100 5085 8100 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 8010 5085 8010 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 8325 5085 8325 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 8370 5085 8370 +2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 + 5850 8775 5085 8775 5085 8815 5850 8815 5850 8775 +-6 +6 6435 7965 7200 8820 +2 3 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 8 + 6525 7965 7110 7965 7110 8775 6525 8775 6525 8415 6435 8415 + 6435 7965 6525 7965 +2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 + 6840 8190 7020 8190 7020 8370 6840 8370 6840 8190 +2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 + 6660 8505 6750 8505 6750 8595 6660 8595 6660 8505 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 8055 6435 8055 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 8145 6435 8145 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 8190 6435 8190 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 8280 6435 8280 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 8235 6435 8235 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 8100 6435 8100 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 8010 6435 8010 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 8325 6435 8325 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 6525 8370 6435 8370 +2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 + 7200 8775 6435 8775 6435 8815 7200 8815 7200 8775 +-6 +6 4905 5445 5985 6030 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 5445.000 5985.000 4950 5985 5445 5490 5940 5985 +4 1 0 50 -1 16 10 0.0000 4 120 465 5445 5760 Device\001 +4 1 0 50 -1 16 10 0.0000 4 120 615 5445 5925 Interface\001 +-6 +6 3870 4275 4500 5355 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 3958.125 4815.000 3915 4320 4455 4815 3915 5310 +4 1 0 50 -1 16 10 4.7124 4 120 570 4162 4822 Realtime\001 +4 1 0 50 -1 16 10 4.7124 4 120 615 3997 4822 Interface\001 +-6 +6 4538 2648 5813 3293 +5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 5175.000 2655.000 5805 2655 5175 3285 4545 2655 +4 1 0 50 -1 16 12 0.0000 4 135 600 5175 3105 Device\001 +4 1 0 50 -1 16 12 0.0000 4 135 825 5175 2880 Character\001 +-6 +6 1575 2430 7785 2925 +2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 7785 2655 1575 2655 +4 0 0 50 -1 16 12 0.0000 4 180 1110 1665 2880 Kernel space\001 +4 0 0 50 -1 16 12 0.0000 4 180 945 1665 2565 User space\001 +-6 +6 4673 1298 5677 2302 +1 4 0 1 0 7 50 -1 -1 4.000 1 0.0000 5175 1800 495 495 5670 2295 4680 1305 +4 1 0 50 -1 16 12 0.0000 4 135 360 5175 2025 Tool\001 +4 1 0 50 -1 16 12 0.0000 4 135 765 5175 1755 'ethercat'\001 +-6 +1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 5445 4815 810 495 4635 4320 6255 5310 +1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2484 4871 459 459 2025 4860 2944 4882 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5445 7965 5445 7425 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 6795 7965 6795 7425 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5445 6885 5445 5985 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 5535 8820 5625 8820 5625 8910 5535 8910 5535 8820 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 6885 8820 6975 8820 6975 8910 6885 8910 6885 8820 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 7245 6885 7245 5985 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 7605 7605 7605 6345 4635 6345 4635 7605 7605 7605 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 4905 6885 5985 6885 5985 7425 4905 7425 4905 6885 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 6255 6885 7335 6885 7335 7425 6255 7425 6255 6885 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 5445 5490 5445 5310 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 8 0 0 5 + 6435 5985 6435 3645 3915 3645 3915 5985 6435 5985 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 4635 4815 4455 4815 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 + 3915 4815 3465 4815 +2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 + 7605 3645 6885 3645 6885 5985 7605 5985 7605 3645 +2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 1575 7785 7785 7785 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 9 0 0 5 + 1755 5985 1755 3645 3465 3645 3465 5985 1755 5985 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 3285 5175 3645 +2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 7785 8280 7785 2205 +2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 5175 2655 5175 2295 +2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 + 1575 8280 1575 2205 +3 2 0 1 0 7 50 -1 -1 0.000 0 0 0 3 + 5580 8910 5355 9045 4770 9090 + 0.000 -1.000 0.000 +3 2 0 1 0 7 50 -1 -1 0.000 0 0 0 3 + 6931 8910 6390 9270 4770 9450 + 0.000 -1.000 0.000 +4 1 0 50 -1 16 10 0.0000 4 150 750 5445 7200 net_device\001 +4 1 0 50 -1 16 10 0.0000 4 150 750 6795 7200 net_device\001 +4 2 0 50 -1 12 10 0.0000 4 135 810 5355 6210 ecdev_*()\001 +4 2 0 50 -1 12 10 0.0000 4 135 810 7110 6210 netif_*()\001 +4 1 0 50 -1 16 12 0.0000 4 135 1545 6345 6570 EtherCAT Network\001 +4 1 0 50 -1 16 12 0.0000 4 135 1200 6345 6750 Driver Module\001 +4 0 0 50 -1 16 12 0.0000 4 135 2130 4005 3870 EtherCAT Master Module\001 +4 1 0 50 -1 16 12 1.5708 4 135 1200 7290 4815 Network Stack\001 +4 2 0 50 -1 16 12 0.0000 4 135 810 4725 9135 EtherCAT\001 +4 2 0 50 -1 16 12 0.0000 4 135 690 4725 9495 Ethernet\001 +4 2 0 50 -1 16 12 0.0000 4 135 315 4995 8100 NIC\001 +4 2 0 50 -1 16 12 0.0000 4 135 315 6345 8100 NIC\001 +4 0 0 50 -1 16 12 0.0000 4 135 810 1665 8010 Hardware\001 +4 2 0 50 -1 12 10 4.7124 4 135 720 3645 4725 ecrt_*()\001 +4 0 0 50 -1 16 12 0.0000 4 180 945 1845 3870 Application\001 +4 0 0 50 -1 16 12 0.0000 4 135 630 1845 4095 Module\001 +4 1 0 50 -1 16 12 0.0000 4 135 675 5445 4860 Master0\001 +4 1 0 50 -1 16 12 0.0000 4 135 390 2475 4950 Task\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/architecture.pdf Binary file documentation/images/architecture.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/ethercat.eps --- a/documentation/images/ethercat.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1617 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: E_CAT_4c_oT.FH10 -%%Creator: FreeHand 10.0 -%%CreationDate: Sat Nov 22 16:59:04 2003 -%%BoundingBox: 0 0 364 83 -%%FHPathName:\\Nt-data01\dfs\Marketingcom\Sonstiges\EtherCAT_Marketing\gespeert\logo\ethercat\E_CAT_4c_oT.FH10 -%ALDOriginalFile:\\Nt-data01\dfs\Marketingcom\Sonstiges\EtherCAT_Marketing\gespeert\logo\ethercat\E_CAT_4c_oT.FH10 -%ALDBoundingBox: -104 -400 491 442 -%%FHPageNum:1 -%%DocumentSuppliedResources: procset Altsys_header 4 0 -%%ColorUsage: Color -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%CMYKProcessColor: 0 1 1 0 (Rot) -%%EndComments -%%BeginAGDEmbeddedDoc: version 1.0 -%:s8W,W5t==#^::et!!!KAGQG3TH$g;p(4MY[WQDsgNY!=r^aZD& -%:s8VO$KL?VQ6b!2+5saRn)j:7OYQQ_4^uR0S&;4U[<,dt=$+PSiMActI_&k-sJ,fX#Elaq>jA;1K,)YB2XtJDr^$\L=3oa$8f^8K/IpMNDpZg;0fA0HWj<,h0,WB;^Gm^?t.QJmW;E:bW!!.Jh=6AC3MGe*h9ql?d:AH^KFRqh`K-7=li; -%:e-HXu+DNkbLg8r#iDY4[XCpb.E5d7.O`8EDU,e3&n(:g'KWha7,DKVBT%P7X:Ln+F(#3YQ%-+l%YT+,3uRtrFOK[5C\hs8Gi>$+FNoi=cti&I/MnlGs&T4U1.MaR#6]5f7P./OXfABQL*eLs)G+fE -%:NhR+1B-KD]rbXAHlga^<8TRh0+:'mJKL9k+TbW6uMB6*=LMdFpY"e<5BX9k+Tj]5F9;:3(3BUVD09Lfsa*N\NV,8$6\kHYOc1R7G9DZD.@W%&q!4.\@[Cj9Vnk8)meVA+lB??9k4)o,%YW>I:L'(fKs -%:*4u\tiSG`;FC6,P;S!!kH"\TE%#p*gg#V)QOUf9['Q(.eG$p<4>bMdlgZo)-%ul?>XL&2@fJadF?QE&u&3&lN]GfHnDDRC6MuZiC"o7G/`L,=Z55csZ]9R%abB7$h7Yet"&Y`7&3`7OYL0@G:h$0M;%8&9skP**>.dW_laj#Tm]V8&KJ/)o5_U9O%QU-`'X,3c4[1P5j-'3jZInUD5DJo)\,5t"ZAY;@oW1,]#[PWY;0%sFIue7-8%tc>*)r]qm_\;ZtGgJ9hO724NKue[WJoPomG5j[NBOT-deU&`^%`rp&9UV:)OL"mXkr%^j217e"[BWu7=O4m9KRkd)tZ1OJ9l^:tj2q7FFe?N'r&B]`$S[c"sg3;Ir4#1r`n9q!HaOD$.[u3Nk1A1U#2heO\;jTgg;3e2NMuXHO -%:g6&A0%m;J.%K5qV8SQWQ#+#8KNXo0'0%UUP3elG#;;eZ@MI%8g]`1N0@4DmCp8<%SHa7)8ph)4?t:LNBN#%;7i0kF,"d`nXA/P>?>t9fM&Nmi=/[Y^BeR?.MuobR5W#TPfZVgnk64F`H@iTe*,OZA@8BTVfH;H -%:VC\YTZA8rn:fI60?5#q@ff6t0:%!=1D%BE@*G94)luoco,AV:LFp&&N*mQ^op.*a!ZCc+GUPEAb)d:5rCW0Zrk#H/C`"kEiF_dsX-lZo9pWa.E`I^c@$9PCmA4''3n!#&]"dt60T:f:s6VVu,YuE+ZC4e(s[OeAVbN%Iqb(<=+s8<&=+rb:^C:1U6C?f>9A#Z3me,:<>NKfi\RC812@W8TVdM1;FS:9I37W*#8CX9%%LV?hGhonsPa+()36D[IUH]"QJC_LH(4figVELdP6h<7\I;NIj;6N[I4G?nWf/PjM7kniAdcZ*7a'.bM3A/q$D95$"p2G>+hl(Fs^(=-$Z:WV=f0YEOJ3'9jqKs_OEY.KUS[2t`?U:<*+hjA$/kB3#LIEt."NRCoIc1'ao(mYp7_J3h*9@A09BcfoG)fj\kr`(,+%5i:(h,LAJn`0NN*6"2PFYnf[ -%:J$%#!=f%F]N>#RmT6ZBsoup>Re_,m$[H^;a3r@u)?.K^&5$)/tpGW,2,#e)']7d3(g_T21f]RoS1cW]!%IO?Dap>Jeo#DY`3+a?FdV'PWELquO%8Y=?#/L.['!>u0g:'dnM$rXC,,d?-%#_2^DJB*.gACPe/fQ"MY*O>`L!ggoBb$JtM@!Xkp7-M-E:IU9&G0g.Y-jqf\da:UjaG*C-6nB-A2In<2\NHR%aAd9/.CFNMV.ttBT;d"K;BCLH.siO54YN-^55WVe5dShml!j^`B4nbf[;1S61-L,2Y7Y?-fmqLU+B/_MY3+!(CX[0MB,SjYf4+&N(c\>>$mPq)1lF<)7XTaJ_&O^2T!G@)-Ip"(a%(b -%:<8?Uh7>hbcV$q4U54O@6)-^+(ZO2UMQtQeu[XNSJeNESf@&pmQ(n%rm4$]l'Q:8P=jaC37CTW4d^UUd3,ARCLC>.udd:,L\.75&`Pl;:nJrP=dH5PBX;t0HL^*DQJ.R]8b%?_p(/2pb.`,I2@KjYibDk@HXZY^TiOG,l/d)H^D:Tn(!0#X4[/M/1jb:$]pkD4*$_AO30pOJ.4B -%:ZKEYPfhbU`O=:Qh&uQnYUJHR26hDFnT&`?/d:5RX-EaE^SqVEC@U[.n2&W\kA)1+r)mst]cC06[fs2Jp]u`c+ktYuS/Zp/!YHZZgDth1H.P+>]04]VJSEc\PQr7&QiV0,f`qBF_DsN,.ZXfP]o>$2i1NLtQVoQ'n_Gc5NHL]X2A]2$E\OY-j>Hf^;JKlk7k$hNb3V27H!P]AS`qUHNs%c$Lg@nd>@'b-EoSZ$k>1M -%:TgQU]L=qA^'/N%9,,U`0BZfM+jb8;HLa<0q`+lWc$0[2t8rqq9:/?C#@Hpj[HA7b#EQ-H&Q8P,>U%oN3A)hV_4\?)99'4P8gWk638OTQ*]t"f6ZJ@Np]o*4)F0eAI\Yg/Z7ZI"`YgCn/cEQqtmZadjmTT;Uk/0N3MAG1Duk.ip@HWg`\'agRP)SVmqjj!@4Y],*.*7fQt25ifMQ>+9)J[olYr_7\pT -%:4'JYE,K56g2l][0YS1/fTOUC5nINWi2l8#""3huBr<;"_9M;Cdac25,10TPW4cN*^3Qsk:I!Wd)1#FYpj=;=B-r-d(`'(50;-&F`JA]3D*GM7_&nV-o7gV=/fD)o`$Tt<2nDuD6B*rqj-.n-5%pJ;!@qu&EH:;X]D.RU,!!0`59lNm;C&e5B5t==4Df0Xs!KL,f@T6cFCh3SIo2BpO@W-'VBju*kEd7Wc;,D:OE(k=p!!,ejEc5H!A9Dp(!!#YZDes?42?3aE9ho,6AH2_Y9PJQi!!()6Bl7KY@<;JLG"$4YD+nYbF8u;b7;QOP:i^Jn9QP:U!/sB]B6A6+=KjnY -%:!!.XLFEq\6:i^Jn9QP:U!I[mcDfe?bCi=>P!!"Z=@<6-m9PJBU!!"W<@<6-m7VQ[T!!'#hF_PAtErZ5$:gnHZ!!#SXDes6$@ruX0!!'`,@!!!!!YQ;-4I0$_VI0$_VI0$_U9*!B?a8j9]a8j9]a8j9]a8j9]a8j9]dJtTo-3,@m-3,@m-3,@mdK-`VI0$_Vps8:@ -%:I0$_VI0$_VI0$_VI/q[qm/TcZG6$n/[/do@9)s/9l2\Nu9)s/9G6"WCl2e9m^&Ue+G6$n/[/do@9)s/9G6,)Om/ZMR0*(A?JH.;&G6'](G5s5qG6'](G5s5qG6'](G5ugf3<47(3<8=E;uh+C3<47(3<47(3<47'G6'](G6'](l2Xc`G6'](l2[U[G5ugeG6'](G6'](G6'](G6'](l2Xc`l2[U[l2[U[G6'](l2[U[l2e9mpsoN) -%:^&ZR^[/fRpNW:[4[/^U9[/mo@JH4*um/ZDOm/ZDOG6$%l*WYI+q>p0f2ZW4FG6"WCm/V>1l2[U\]E%3sm/ZMS[/fRp[/fRp[/fRp[/fRoo)S.Xo)V\gm/ZDOJjsQbFCdjO@rGmh!<<*!rr<$!Hd6uF -%:~> -%%EndAGDEmbeddedDoc -%%BeginResource: procset Altsys_header 4 0 -userdict begin /AltsysDict 300 dict def end -AltsysDict begin -/bdf{bind def}bind def -/xdf{exch def}bdf -/defed{where{pop true}{false}ifelse}bdf -/ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}bdf -/d{setdash}bdf -/h{closepath}bdf -/H{}bdf -/J{setlinecap}bdf -/j{setlinejoin}bdf -/M{setmiterlimit}bdf -/n{newpath}bdf -/N{newpath}bdf -/q{gsave}bdf -/Q{grestore}bdf -/w{setlinewidth}bdf -/Xic{matrix invertmatrix concat}bdf -/Xq{matrix currentmatrix mark}bdf -/XQ{cleartomark setmatrix}bdf -/sepdef{ -dup where not -{ -AltsysSepDict -} -if -3 1 roll exch put -}bdf -/st{settransfer}bdf -/colorimage defed /_rci xdf -/cntr 0 def -/readbinarystring{ -/cntr 0 def -2 copy readstring -{ -{ -dup -(\034) search -{ -length exch pop exch -dup length 0 ne -{ -dup dup 0 get 32 sub 0 exch put -/cntr cntr 1 add def -} -{ -pop 1 string dup -0 6 index read pop 32 sub put -}ifelse -3 copy -putinterval pop -1 add -1 index length 1 sub -1 index sub -dup 0 le {pop pop exit}if -getinterval -} -{ -pop exit -} ifelse -} loop -}if -cntr 0 gt -{ -pop 2 copy -dup length cntr sub cntr getinterval -readbinarystring -} if -pop exch pop -} bdf -/_NXLevel2 defed { -_NXLevel2 not { -/colorimage where { -userdict eq { -/_rci false def -} if -} if -} if -} if -/md defed{ -md type /dicttype eq { -/colorimage where { -md eq { -/_rci false def -}if -}if -/settransfer where { -md eq { -/st systemdict /settransfer get def -}if -}if -}if -}if -/setstrokeadjust defed -{ -true setstrokeadjust -/C{curveto}bdf -/L{lineto}bdf -/m{moveto}bdf -} -{ -/dr{transform .25 sub round .25 add -exch .25 sub round .25 add exch itransform}bdf -/C{dr curveto}bdf -/L{dr lineto}bdf -/m{dr moveto}bdf -/setstrokeadjust{pop}bdf -}ifelse -/privrectpath { -4 -2 roll m -dtransform round exch round exch idtransform -2 copy 0 lt exch 0 lt xor -{dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto} -{exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto} -ifelse -closepath -}bdf -/rectclip{newpath privrectpath clip newpath}def -/rectfill{gsave newpath privrectpath fill grestore}def -/rectstroke{gsave newpath privrectpath stroke grestore}def -/_fonthacksave false def -/currentpacking defed -{ -/_bfh {/_fonthacksave currentpacking def false setpacking} bdf -/_efh {_fonthacksave setpacking} bdf -} -{ -/_bfh {} bdf -/_efh {} bdf -}ifelse -/packedarray{array astore readonly}ndf -/` -{ -false setoverprint -/-save0- save def -5 index concat -pop -storerect left bottom width height rectclip -pop -/MMdict_count countdictstack def -/MMop_count count 1 sub def -userdict begin -/showpage {} def -0 setgray 0 setlinecap 1 setlinewidth -0 setlinejoin 10 setmiterlimit [] 0 setdash newpath -} bdf -/currentpacking defed{true setpacking}if -/min{2 copy gt{exch}if pop}bdf -/max{2 copy lt{exch}if pop}bdf -/xformfont { currentfont exch makefont setfont } bdf -/fhnumcolors 1 -statusdict begin -/processcolors defed -{ -pop processcolors -} -{ -/deviceinfo defed { -deviceinfo /Colors known { -pop deviceinfo /Colors get -} if -} if -} ifelse -end -def -% pix = x^2 + y^2 -/printerRes -gsave -matrix defaultmatrix setmatrix -72 72 dtransform -abs exch abs -max -grestore -def -/graycalcs -[ -{Angle Frequency} -{GrayAngle GrayFrequency} -{0 Width Height matrix defaultmatrix idtransform -dup mul exch dup mul add sqrt 72 exch div} -{0 GrayWidth GrayHeight matrix defaultmatrix idtransform -dup mul exch dup mul add sqrt 72 exch div} -] def -/calcgraysteps { -forcemaxsteps -{ -maxsteps -} -{ -/currenthalftone defed -{currenthalftone /dicttype eq}{false}ifelse -{ -currenthalftone begin -HalftoneType 4 le -{graycalcs HalftoneType 1 sub get exec} -{ -HalftoneType 5 eq -{ -Default begin -{graycalcs HalftoneType 1 sub get exec} -end -} -{0 60} -ifelse -} -ifelse -end -} -{ -currentscreen pop exch -} -ifelse -printerRes 300 max exch div exch -2 copy -sin mul round dup mul -3 1 roll -cos mul round dup mul -add 1 add -dup maxsteps gt {pop maxsteps} if -dup minsteps lt {pop minsteps} if -} -ifelse -} bdf -/nextrelease defed { -/languagelevel defed not { -/framebuffer defed { -0 40 string framebuffer 9 1 roll 8 {pop} repeat -dup 516 eq exch 520 eq or -{ -/fhnumcolors 3 def -/currentscreen {60 0 {pop pop 1}}bdf -/calcgraysteps {maxsteps} bdf -}if -}if -}if -}if -fhnumcolors 1 ne { -/calcgraysteps {maxsteps} bdf -} if -/currentpagedevice defed { -currentpagedevice /PreRenderingEnhance known -{ -currentpagedevice /PreRenderingEnhance get -{ -/calcgraysteps -{ -forcemaxsteps -{maxsteps} -{256 maxsteps min} -ifelse -} def -} if -} if -} if -/gradfrequency 144 def -printerRes 1000 lt { -/gradfrequency 72 def -} if -/adjnumsteps { -dup dtransform abs exch abs max -printerRes div -gradfrequency mul -round -5 max -min -}bdf -/goodsep { -spots exch get 4 get dup sepname eq exch (_vc_Registration) eq or -}bdf -/BeginGradation defed -{/bb{BeginGradation}bdf} -{/bb{}bdf} -ifelse -/EndGradation defed -{/eb{EndGradation}bdf} -{/eb{}bdf} -ifelse -/bottom -0 def -/delta -0 def -/frac -0 def -/height -0 def -/left -0 def -/numsteps1 -0 def -/radius -0 def -/right -0 def -/top -0 def -/width -0 def -/xt -0 def -/yt -0 def -/df currentflat def -/tempstr 1 string def -/clipflatness currentflat def -/inverted? -0 currenttransfer exec .5 ge def -/tc1 [0 0 0 1] def -/tc2 [0 0 0 1] def -/storerect{/top xdf /right xdf /bottom xdf /left xdf -/width right left sub def /height top bottom sub def}bdf -/concatprocs{ -systemdict /packedarray known -{dup type /packedarraytype eq 2 index type /packedarraytype eq or}{false}ifelse -{ -/proc2 exch cvlit def /proc1 exch cvlit def -proc1 aload pop proc2 aload pop -proc1 length proc2 length add packedarray cvx -} -{ -/proc2 exch cvlit def /proc1 exch cvlit def -/newproc proc1 length proc2 length add array def -newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval -newproc cvx -}ifelse -}bdf -/i{dup 0 eq -{pop df dup} -{dup} ifelse -/clipflatness xdf setflat -}bdf -version cvr 38.0 le -{/setrgbcolor{ -currenttransfer exec 3 1 roll -currenttransfer exec 3 1 roll -currenttransfer exec 3 1 roll -setrgbcolor}bdf}if -/vms {/vmsv save def} bdf -/vmr {vmsv restore} bdf -/vmrs{vmsv restore /vmsv save def}bdf -/eomode{ -{/filler /eofill load def /clipper /eoclip load def} -{/filler /fill load def /clipper /clip load def} -ifelse -}bdf -/normtaper{}bdf -/logtaper{9 mul 1 add log}bdf -/CD{ -/NF exch def -{ -exch dup -/FID ne 1 index/UniqueID ne and -{exch NF 3 1 roll put} -{pop pop} -ifelse -}forall -NF -}bdf -/MN{ -1 index length -/Len exch def -dup length Len add -string dup -Len -4 -1 roll -putinterval -dup -0 -4 -1 roll -putinterval -}bdf -/RC{4 -1 roll /ourvec xdf 256 string cvs(|______)anchorsearch -{1 index MN cvn/NewN exch def cvn -findfont dup maxlength dict CD dup/FontName NewN put dup -/Encoding ourvec put NewN exch definefont pop}{pop}ifelse}bdf -/RF{ -dup -FontDirectory exch -known -{pop 3 -1 roll pop} -{RC} -ifelse -}bdf -/FF{dup 256 string cvs(|______)exch MN cvn dup FontDirectory exch known -{exch pop findfont 3 -1 roll pop} -{pop dup findfont dup maxlength dict CD dup dup -/Encoding exch /Encoding get 256 array copy 7 -1 roll -{3 -1 roll dup 4 -2 roll put}forall put definefont} -ifelse}bdf -/RCJ{4 -1 roll -/ourvec xdf -256 string cvs -(|______) anchorsearch -{pop -cvn -dup FDFJ -exch -1 index -eq -{ -_bfh findfont _efh -dup -maxlength dict -CD -dup -/FontName -3 index -put -dup -/Encoding ourvec put -1 index -exch -definefont -pop -} -{exch pop} -ifelse -} -{pop} -ifelse -}bdf -/RFJ{ -dup -FontDirectory exch -known -{pop 3 -1 roll pop} -{RCJ} -ifelse -}bdf -/hasfont -{ -/resourcestatus where -{ -pop -/Font resourcestatus -{ -pop pop true -} -{ -false -} -ifelse -} -{ -dup FontDirectory exch known -{pop true} -{ -256 string -cvs -(fonts/) exch MN -status -{pop pop pop pop true} -{false} -ifelse -} -ifelse -} -ifelse -}bdf -/FDFJ -{ -dup -hasfont -not -{ -pop -/Ryumin-Light-83pv-RKSJ-H -hasfont -{ -/Ryumin-Light-83pv-RKSJ-H -} -{ -/Courier -} -ifelse -} -if -}bdf -/FFJ{ -_bfh -dup -256 string cvs -(|______)exch MN -cvn -dup -FontDirectory -exch known -{ -exch -pop -findfont -3 -1 roll -pop -} -{ -pop -FDFJ -dup findfont -dup maxlength dict -CD -dup dup -/Encoding exch -/Encoding get -256 array copy -7 -1 roll -{ -3 -1 roll -dup -4 -2 roll -put -}forall -put -definefont -} -ifelse -_efh -}bdf -/GS { -dup -hasfont -{ -findfont -exch makesetfont -exch -pop -ts -} -{ -pop pop pop -ts -} ifelse -} bdf -/RCK{4 -1 roll -/ourvec xdf -256 string cvs -(|______) anchorsearch -{pop -cvn -dup FDFK -exch -1 index -eq -{ -_bfh findfont _efh -dup -maxlength dict -CD -dup -/FontName -3 index -put -dup -/Encoding ourvec put -1 index -exch -definefont -pop -} -{exch pop} -ifelse -} -{pop} -ifelse -}bdf -/RFK{ -dup -FontDirectory exch -known -{pop 3 -1 roll pop} -{RCK} -ifelse -}bdf -/hasfont -{ -/resourcestatus where -{ -pop -/Font resourcestatus -{ -pop pop true -} -{ -false -} -ifelse -} -{ -dup FontDirectory exch known -{pop true} -{ -256 string -cvs -(fonts/) exch MN -status -{pop pop pop pop true} -{false} -ifelse -} -ifelse -} -ifelse -}bdf -/FDFK -{ -dup -hasfont -not -{ -pop -/JCsm -hasfont -{ -/JCsm -} -{ -/Courier -} -ifelse -} -if -}bdf -/FFK{ -_bfh -dup -256 string cvs -(|______)exch MN -cvn -dup -FontDirectory -exch known -{ -exch -pop -findfont -3 -1 roll -pop -} -{ -pop -FDFK -dup findfont -dup maxlength dict -CD -dup dup -/Encoding exch -/Encoding get -256 array copy -7 -1 roll -{ -3 -1 roll -dup -4 -2 roll -put -}forall -put -definefont -} -ifelse -_efh -}bdf -/RCTC{4 -1 roll -/ourvec xdf -256 string cvs -(|______) anchorsearch -{pop -cvn -dup FDFTC -exch -1 index -eq -{ -_bfh findfont _efh -dup -maxlength dict -CD -dup -/FontName -3 index -put -dup -/Encoding ourvec put -1 index -exch -definefont -pop -} -{exch pop} -ifelse -} -{pop} -ifelse -}bdf -/RFTC{ -dup -FontDirectory exch -known -{pop 3 -1 roll pop} -{RCTC} -ifelse -}bdf -/FDFTC -{ -dup -hasfont -not -{ -pop -/DFMing-Lt-HK-BF -hasfont -{ -/DFMing-Lt-HK-BF -} -{ -/Courier -} -ifelse -} -if -}bdf -/FFTC{ -_bfh -dup -256 string cvs -(|______)exch MN -cvn -dup -FontDirectory -exch known -{ -exch -pop -findfont -3 -1 roll -pop -} -{ -pop -FDFTC -dup findfont -dup maxlength dict -CD -dup dup -/Encoding exch -/Encoding get -256 array copy -7 -1 roll -{ -3 -1 roll -dup -4 -2 roll -put -}forall -put -definefont -} -ifelse -_efh -}bdf -/RCSC{4 -1 roll -/ourvec xdf -256 string cvs -(|______) anchorsearch -{pop -cvn -dup FDFSC -exch -1 index -eq -{ -_bfh findfont _efh -dup -maxlength dict -CD -dup -/FontName -3 index -put -dup -/Encoding ourvec put -1 index -exch -definefont -pop -} -{exch pop} -ifelse -} -{pop} -ifelse -}bdf -/RFSC{ -dup -FontDirectory exch -known -{pop 3 -1 roll pop} -{RCSC} -ifelse -}bdf -/FDFSC -{ -dup -hasfont -not -{ -pop -/zh-gbscript-1.11 -hasfont -{ -/zh-gbscript-1.11 -} -{ -/Courier -} -ifelse -} -if -}bdf -/FFSC{ -_bfh -dup -256 string cvs -(|______)exch MN -cvn -dup -FontDirectory -exch known -{ -exch -pop -findfont -3 -1 roll -pop -} -{ -pop -FDFSC -dup findfont -dup maxlength dict -CD -dup dup -/Encoding exch -/Encoding get -256 array copy -7 -1 roll -{ -3 -1 roll -dup -4 -2 roll -put -}forall -put -definefont -} -ifelse -_efh -}bdf -/fps{ -currentflat -exch -dup 0 le{pop 1}if -{ -dup setflat 3 index stopped -{1.3 mul dup 3 index gt{pop setflat pop pop stop}if} -{exit} -ifelse -}loop -pop setflat pop pop -}bdf -/fp{100 currentflat fps}bdf -/clipper{clip}bdf -/W{/clipper load 100 clipflatness dup setflat fps}bdf -/AVec 256 array def -AVec 0 /Helvetica findfont -/Encoding get 0 256 getinterval putinterval -/ANSIPatch[ -16#0/grave 16#1/acute 16#2/circumflex 16#3/tilde 16#4/macron 16#5/breve -16#6/dotaccent 16#7/dieresis 16#8/ring 16#9/cedilla 16#A/hungarumlaut -16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle 16#60/grave -16#7C/bar 16#82/quotesinglbase 16#83/florin 16#84/quotedblbase 16#85 -/ellipsis 16#86/dagger 16#87/daggerdbl 16#89/perthousand 16#8A/Scaron -16#8B/guilsinglleft 16#8C/OE 16#91/quoteleft 16#92/quoteright 16#93 -/quotedblleft 16#94/quotedblright 16#95/bullet 16#96/endash 16#97/emdash -16#99/trademark 16#9A/scaron 16#9B/guilsinglright 16#9C/oe -16#9F/Ydieresis 16#A0/space 16#A4/currency 16#A6/brokenbar -16#A7/section 16#A8/dieresis 16#A9/copyright 16#AA/ordfeminine 16#AB/guillemotleft -16#AC/logicalnot 16#AD/hyphen 16#AE/registered 16#AF/macron 16#B0/degree -16#B1/plusminus 16#B2/twosuperior 16#B3/threesuperior 16#B4/acute 16#B5/mu -16#B6/paragraph 16#B7/periodcentered 16#B8/cedilla 16#B9/onesuperior -16#BA/ordmasculine 16#BB/guillemotright 16#BC/onequarter 16#BD/onehalf -16#BE/threequarters 16#BF/questiondown 16#C0/Agrave 16#C1/Aacute 16#C2/Acircumflex -16#C3/Atilde 16#C4/Adieresis 16#C5/Aring 16#C6/AE 16#C7/Ccedilla 16#C8/Egrave -16#C9/Eacute 16#CA/Ecircumflex 16#CB/Edieresis 16#CC/Igrave 16#CD/Iacute -16#CE/Icircumflex 16#CF/Idieresis 16#D0/Eth 16#D1/Ntilde 16#D2/Ograve -16#D3/Oacute 16#D4/Ocircumflex 16#D5/Otilde 16#D6/Odieresis 16#D7/multiply -16#D8/Oslash 16#D9/Ugrave 16#DA/Uacute 16#DB/Ucircumflex 16#DC/Udieresis -16#DD/Yacute 16#DE/Thorn 16#DF/germandbls 16#E0/agrave 16#E1/aacute -16#E2/acircumflex 16#E3/atilde 16#E4/adieresis 16#E5/aring 16#E6/ae -16#E7/ccedilla 16#E8/egrave 16#E9/eacute 16#EA/ecircumflex 16#EB/edieresis -16#EC/igrave 16#ED/iacute 16#EE/icircumflex 16#EF/idieresis 16#F0/eth -16#F1/ntilde 16#F2/ograve 16#F3/oacute 16#F4/ocircumflex 16#F5/otilde -16#F6/odieresis 16#F7/divide 16#F8/oslash 16#F9/ugrave 16#FA/uacute -16#FB/ucircumflex 16#FC/udieresis 16#FD/yacute 16#FE/thorn 16#FF/ydieresis -] def -127 1 159 { AVec exch/bullet put } for -ANSIPatch aload pop ANSIPatch length 2 idiv{AVec 3 1 roll put}repeat -/DoPatch { dup /CharStrings known -{ setfont -0 1 255 { dup -currentfont -/Encoding get -exch get -currentfont /CharStrings get -exch known -{pop} {currentfont /Encoding get exch /bullet put} ifelse -} for -} {pop} ifelse -} def -/findheaderfont { -AVec 256 array copy -/FHT /|______Helvetica dup RF findfont def -FHT DoPatch -FHT -} def -end %. AltsysDict -%%EndResource -%%EndProlog -%%BeginSetup -AltsysDict begin -_bfh -_efh -end %. AltsysDict -%%EndSetup -AltsysDict begin -/onlyk4{false}ndf -/ccmyk{dup 5 -1 roll sub 0 max exch}ndf -/cmyk2gray{ -4 -1 roll 0.3 mul 4 -1 roll 0.59 mul 4 -1 roll 0.11 mul -add add add 1 min neg 1 add -}bdf -/setcmykcolor{1 exch sub ccmyk ccmyk ccmyk pop setrgbcolor}ndf -/maxcolor { -max max max -} ndf -/maxspot { -pop -} ndf -/setcmykcoloroverprint{4{dup -1 eq{pop 0}if 4 1 roll}repeat setcmykcolor}ndf -/findcmykcustomcolor{5 packedarray}ndf -/setcustomcolor{exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop}ndf -/setseparationgray{setgray}ndf -/setoverprint{pop}ndf -/currentoverprint false ndf -/cmykbufs2gray{ -0 1 2 index length 1 sub -{ -4 index 1 index get 0.3 mul -4 index 2 index get 0.59 mul -4 index 3 index get 0.11 mul -4 index 4 index get -add add add cvi 255 min -255 exch sub -2 index 3 1 roll put -}for -4 1 roll pop pop pop -}bdf -/colorimage{ -pop pop -[ -5 -1 roll/exec cvx -6 -1 roll/exec cvx -7 -1 roll/exec cvx -8 -1 roll/exec cvx -/cmykbufs2gray cvx -]cvx -image -} -%. version 47.1 on Linotronic of Postscript defines colorimage incorrectly (rgb model only) -version cvr 47.1 le -statusdict /product get (Lino) anchorsearch{pop pop true}{pop false}ifelse -and{userdict begin bdf end}{ndf}ifelse -fhnumcolors 1 ne {/yt save def} if -/customcolorimage{ -aload pop -(_vc_Registration) eq -{ -pop pop pop pop separationimage -} -{ -/ik xdf /iy xdf /im xdf /ic xdf -ic im iy ik cmyk2gray /xt xdf -currenttransfer -{dup 1.0 exch sub xt mul add}concatprocs -st -image -} -ifelse -}ndf -fhnumcolors 1 ne {yt restore} if -fhnumcolors 3 ne {/yt save def} if -/customcolorimage{ -aload pop -(_vc_Registration) eq -{ -pop pop pop pop separationimage -} -{ -/ik xdf /iy xdf /im xdf /ic xdf -1.0 dup ic ik add min sub -1.0 dup im ik add min sub -1.0 dup iy ik add min sub -/ic xdf /iy xdf /im xdf -currentcolortransfer -4 1 roll -{dup 1.0 exch sub ic mul add}concatprocs 4 1 roll -{dup 1.0 exch sub iy mul add}concatprocs 4 1 roll -{dup 1.0 exch sub im mul add}concatprocs 4 1 roll -setcolortransfer -{/dummy xdf dummy}concatprocs{dummy}{dummy}true 3 colorimage -} -ifelse -}ndf -fhnumcolors 3 ne {yt restore} if -fhnumcolors 4 ne {/yt save def} if -/customcolorimage{ -aload pop -(_vc_Registration) eq -{ -pop pop pop pop separationimage -} -{ -/ik xdf /iy xdf /im xdf /ic xdf -currentcolortransfer -{1.0 exch sub ik mul ik sub 1 add}concatprocs 4 1 roll -{1.0 exch sub iy mul iy sub 1 add}concatprocs 4 1 roll -{1.0 exch sub im mul im sub 1 add}concatprocs 4 1 roll -{1.0 exch sub ic mul ic sub 1 add}concatprocs 4 1 roll -setcolortransfer -{/dummy xdf dummy}concatprocs{dummy}{dummy}{dummy} -true 4 colorimage -} -ifelse -}ndf -fhnumcolors 4 ne {yt restore} if -/separationimage{image}ndf -/spotascmyk false ndf -/newcmykcustomcolor{6 packedarray}ndf -/inkoverprint false ndf -/setinkoverprint{pop}ndf -/setspotcolor { -spots exch get -dup 4 get (_vc_Registration) eq -{pop 1 exch sub setseparationgray} -{0 5 getinterval exch setcustomcolor} -ifelse -}ndf -/currentcolortransfer{currenttransfer dup dup dup}ndf -/setcolortransfer{st pop pop pop}ndf -/fas{}ndf -/sas{}ndf -/fhsetspreadsize{pop}ndf -/filler{fill}bdf -/F{gsave {filler}fp grestore}bdf -/f{closepath F}bdf -/S{gsave {stroke}fp grestore}bdf -/s{closepath S}bdf -userdict /islevel2 -systemdict /languagelevel known dup -{ -pop systemdict /languagelevel get 2 ge -} if -put -islevel2 not -{ -/currentcmykcolor -{ -0 0 0 1 currentgray sub -} ndf -} if -/tc -{ -gsave -setcmykcolor currentcmykcolor -grestore -} bind def -/testCMYKColorThrough -{ -tc add add add 0 ne -} bind def -/fhiscomposite where not { -userdict /fhiscomposite -islevel2 -{ -gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore -add add add 4 eq -} -{ -1 0 0 0 testCMYKColorThrough -0 1 0 0 testCMYKColorThrough -0 0 1 0 testCMYKColorThrough -0 0 0 1 testCMYKColorThrough -and and and -} ifelse -put -} -{ pop } -ifelse -/bc4 [0 0 0 0] def -/_lfp4 { -1 pop -/yt xdf -/xt xdf -/ang xdf -storerect -/taperfcn xdf -/k2 xdf /y2 xdf /m2 xdf /c2 xdf -/k1 xdf /y1 xdf /m1 xdf /c1 xdf -c1 c2 sub abs -m1 m2 sub abs -y1 y2 sub abs -k1 k2 sub abs -maxcolor -calcgraysteps mul abs round -height abs adjnumsteps -dup 1 lt {pop 1} if -1 sub /numsteps1 xdf -currentflat mark -currentflat clipflatness -/delta top bottom sub numsteps1 1 add div def -/right right left sub def -/botsv top delta sub def -{ -{ -W -xt yt translate -ang rotate -xt neg yt neg translate -dup setflat -/bottom botsv def -0 1 numsteps1 -{ -numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse -taperfcn /frac xdf -bc4 0 c2 c1 sub frac mul c1 add put -bc4 1 m2 m1 sub frac mul m1 add put -bc4 2 y2 y1 sub frac mul y1 add put -bc4 3 k2 k1 sub frac mul k1 add put -bc4 vc -1 index setflat -{ -mark {newpath left bottom right delta rectfill}stopped -{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} -{cleartomark exit}ifelse -}loop -/bottom bottom delta sub def -}for -} -gsave stopped grestore -{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} -{exit}ifelse -}loop -cleartomark setflat -}bdf -/bcs [0 0] def -/_lfs4 { -/yt xdf -/xt xdf -/ang xdf -storerect -/taperfcn xdf -/tint2 xdf -/tint1 xdf -bcs exch 1 exch put -tint1 tint2 sub abs -bcs 1 get maxspot -calcgraysteps mul abs round -height abs adjnumsteps -dup 2 lt {pop 2} if -1 sub /numsteps1 xdf -currentflat mark -currentflat clipflatness -/delta top bottom sub numsteps1 1 add div def -/right right left sub def -/botsv top delta sub def -{ -{ -W -xt yt translate -ang rotate -xt neg yt neg translate -dup setflat -/bottom botsv def -0 1 numsteps1 -{ -numsteps1 div taperfcn /frac xdf -bcs 0 -1.0 tint2 tint1 sub frac mul tint1 add sub -put bcs vc -1 index setflat -{ -mark {newpath left bottom right delta rectfill}stopped -{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} -{cleartomark exit}ifelse -}loop -/bottom bottom delta sub def -}for -} -gsave stopped grestore -{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} -{exit}ifelse -}loop -cleartomark setflat -}bdf -/_rfs6 { -/tint2 xdf -/tint1 xdf -bcs exch 1 exch put -/inrad xdf -/radius xdf -/yt xdf -/xt xdf -tint1 tint2 sub abs -bcs 1 get maxspot -calcgraysteps mul abs round -radius inrad sub abs -adjnumsteps -dup 1 lt {pop 1} if -1 sub /numsteps1 xdf -radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse -2 div /halfstep xdf -currentflat mark -currentflat clipflatness -{ -{ -dup setflat -W -0 1 numsteps1 -{ -dup /radindex xdf -numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse -/frac xdf -bcs 0 -tint2 tint1 sub frac mul tint1 add -put bcs vc -1 index setflat -{ -newpath mark -xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360 -{ arc -radindex numsteps1 ne -inrad 0 gt or -{ -xt yt -numsteps1 0 eq -{ inrad } -{ -radindex 1 add numsteps1 div 1 exch sub -radius inrad sub mul halfstep add inrad add -}ifelse -dup xt add yt moveto -360 0 arcn -} if -fill -}stopped -{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} -{cleartomark exit}ifelse -}loop -}for -} -gsave stopped grestore -{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} -{exit}ifelse -}loop -cleartomark setflat -}bdf -/_rfp6 { -1 pop -/k2 xdf /y2 xdf /m2 xdf /c2 xdf -/k1 xdf /y1 xdf /m1 xdf /c1 xdf -/inrad xdf -/radius xdf -/yt xdf -/xt xdf -c1 c2 sub abs -m1 m2 sub abs -y1 y2 sub abs -k1 k2 sub abs -maxcolor -calcgraysteps mul abs round -radius inrad sub abs -adjnumsteps -dup 1 lt {pop 1} if -1 sub /numsteps1 xdf -radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse -2 div /halfstep xdf -currentflat mark -currentflat clipflatness -{ -{ -dup setflat -W -0 1 numsteps1 -{ -dup /radindex xdf -numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse -/frac xdf -bc4 0 c2 c1 sub frac mul c1 add put -bc4 1 m2 m1 sub frac mul m1 add put -bc4 2 y2 y1 sub frac mul y1 add put -bc4 3 k2 k1 sub frac mul k1 add put -bc4 vc -1 index setflat -{ -newpath mark -xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360 -{ arc -radindex numsteps1 ne -inrad 0 gt or -{ -xt yt -numsteps1 0 eq -{ inrad } -{ -radindex 1 add numsteps1 div 1 exch sub -radius inrad sub mul halfstep add inrad add -}ifelse -dup xt add yt moveto -360 0 arcn -} if -fill -}stopped -{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} -{cleartomark exit}ifelse -}loop -}for -} -gsave stopped grestore -{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} -{exit}ifelse -}loop -cleartomark setflat -}bdf -/lfp4{_lfp4}ndf -/lfs4{_lfs4}ndf -/rfs6{_rfs6}ndf -/rfp6{_rfp6}ndf -/cvc [0 0 0 1] def -/vc{ -AltsysDict /cvc 2 index put -aload length dup 4 eq -{pop dup -1 eq{pop setrgbcolor}{setcmykcolor}ifelse} -{6 eq {sethexcolor} {setspotcolor} ifelse } -ifelse -}bdf -0 setseparationgray -/imgr {1700.5 1577 2295.5 2419 } def -/bleed 0 def -/clpr {1700.5 1577 2295.5 2419 } def -/xs 1 def -/ys 1 def -/botx 0 def -/overlap 0 def -/wdist 18 def -0 2 mul fhsetspreadsize -0 0 ne {/df 0 def /clipflatness 0 def} if -/maxsteps 256 def -/forcemaxsteps false def -/minsteps 0 def -userdict begin /AGDOrigMtx matrix currentmatrix def end -vms --1804 -1977 translate -/currentpacking defed{false setpacking}if -/spots[ -1 0 0 0 (Process Cyan) false newcmykcustomcolor -0 1 0 0 (Process Magenta) false newcmykcustomcolor -0 0 1 0 (Process Yellow) false newcmykcustomcolor -0 0 0 1 (Process Black) false newcmykcustomcolor -]def -n -[] 0 d -3.863708 M -1 w -0 j -0 J -false setoverprint -0 i -false eomode -[0 0 0 1]vc -vms -2091.3033 2026.6948 m -2125.3191 1999.5805 L -2125.3191 2012.4079 L -2167.8568 2012.4081 L -2167.8568 2026.7087 L -2091.3033 2026.6948 L -f -n -2167.8568 2032.1369 m -2133.8409 2059.2513 L -2133.8409 2046.4239 L -2031.7963 2046.4312 L -2031.7962 2032.1306 L -2167.8568 2032.1369 L -[0 1 1 0]vc -f -n -1977.2503 1990.3708 m -1980.05 1990.3708 1982.7386 1991.0242 1985.5322 1992.1408 C -1981.3995 1978.2896 L -1979.203 1977.8332 1976.7874 1977.5128 1974.4886 1977.5128 C -1960.8564 1977.5128 1949.927 1985.9465 1949.927 2003.1595 C -1949.927 2019.3356 1961.3264 2027.4237 1974.4886 2027.4237 C -1978.8368 2027.4237 1981.4222 2026.8015 1985.6529 2025.9028 C -1985.6529 2013.1832 L -1983.0675 2014.151 1980.4233 2014.9805 1977.7791 2014.9805 C -1971.0805 2014.9805 1966.0272 2010.7637 1966.0272 2002.883 C -1966.0272 1994.5876 1970.728 1990.3708 1977.2503 1990.3708 C -[0 0 0 1]vc -true setoverprint -f -false setoverprint -n -true eomode -1985.961 1978.3424 m -2001.6498 1978.3424 L -2004.1765 1988.7808 L -2017.4562 1988.7808 L -2020.1591 1978.3424 L -2036.6707 1978.3424 L -2022.0395 2026.5941 L -2000.3572 2026.5941 L -1985.961 1978.3424 L -h -2010.8752 2016.2248 m -2010.9926 2016.2248 L -2015.4584 2000.3944 L -2006.3506 2000.3944 L -2010.8752 2016.2248 L -true setoverprint -f -false setoverprint -n -false eomode -1854.507 1985.0967 m -1853.3161 1984.5757 1852.1996 1984.1291 1850.6365 1984.1291 C -1847.8081 1984.1291 1846.6916 1985.7666 1846.6916 1990.0837 C -1846.6916 2012.4878 L -1854.507 2012.4878 L -1854.507 2017.5492 L -1846.6916 2017.5492 L -1846.6916 2030.9369 L -1840.4393 2030.9369 L -1840.4393 2017.5492 L -1834.4102 2017.5492 L -1834.4102 2012.4878 L -1840.4393 2012.4878 L -1840.4393 1988.074 L -1840.4393 1981.3751 1843.491 1979.0677 1849.2223 1979.0677 C -1850.9342 1979.0677 1853.0183 1979.5143 1854.507 1980.0353 C -1854.507 1985.0967 L -true setoverprint -f -false setoverprint -n -1804.5001 1979.0887 m -1829.6582 1979.0887 L -1829.6582 1984.7456 L -1811.0501 1984.7456 L -1811.0501 2003.2048 L -1827.8718 2003.2048 L -1827.8718 2008.8616 L -1811.0501 2008.8616 L -1811.0501 2025.3856 L -1828.6906 2025.3856 L -1828.6906 2031.0425 L -1804.5001 2031.0425 L -1804.5001 1979.0887 L -true setoverprint -f -false setoverprint -n -1859.7811 1979.0887 m -1866.0334 1979.0887 L -1866.0334 2001.9394 L -1866.0334 2008.7872 1869.1596 2012.2111 1874.0721 2012.2111 C -1878.0915 2012.2111 1880.3244 2009.606 1880.3244 2003.577 C -1880.3244 1979.0887 L -1886.5768 1979.0887 L -1886.5768 2005.4378 L -1886.5768 2013.7742 1882.1108 2017.5702 1875.4863 2017.5702 C -1871.0948 2017.5702 1867.8198 2015.0395 1866.1823 2011.8389 C -1866.0334 2011.8389 L -1866.0334 2030.9369 L -1859.7811 2030.9369 L -1859.7811 1979.0887 L -true setoverprint -f -false setoverprint -n -true eomode -1921.7623 1996.2081 m -1921.7623 1999.5576 L -1921.7623 2010.7225 1916.9986 2017.5702 1908.4389 2017.5702 C -1898.986 2017.5702 1893.7757 2009.9781 1893.7757 1998.069 C -1893.7757 1986.1598 1898.986 1978.5677 1909.0344 1978.5677 C -1912.8304 1978.5677 1916.7009 1979.3864 1919.6782 1980.8006 C -1919.3805 1986.4575 L -1917.2219 1984.8944 1913.798 1983.3313 1910.6719 1983.3313 C -1903.7497 1983.3313 1900.3258 1987.4251 1900.3258 1996.2081 C -1921.7623 1996.2081 L -h -1900.3258 2000.9718 m -1900.4746 2009.8293 1904.0474 2012.8066 1908.0667 2012.8066 C -1913.0537 2012.8066 1915.51 2008.8616 1915.51 2000.9718 C -1900.3258 2000.9718 L -true setoverprint -f -false setoverprint -n -false eomode -1928.6573 1979.0887 m -1934.9096 1979.0887 L -1934.9096 1999.1854 L -1934.9096 2007.4474 1938.3335 2011.6156 1943.1716 2011.6156 C -1943.9903 2011.6156 1944.8091 2011.5412 1945.5534 2011.3923 C -1945.5534 2017.5702 L -1939.971 2017.5702 1936.7704 2015.7094 1934.7607 2011.0946 C -1934.6118 2011.0946 L -1934.3885 2017.0492 L -1928.3595 2017.0492 L -1928.434 2014.3696 1928.6573 2011.6156 1928.6573 2008.8616 C -1928.6573 1979.0887 L -true setoverprint -f -false setoverprint -n -true eomode -2077.1054 1987.9334 m -2078.4398 1987.9334 L -2079.2051 1987.9334 2080.0686 1987.7764 2080.0686 1986.8345 C -2080.0686 1985.7552 2079.3033 1985.6375 2078.4202 1985.6375 C -2077.1054 1985.6375 L -2077.1054 1987.9334 L -h -2075.6141 1981.0456 m -2077.1054 1981.0456 L -2077.1054 1984.4993 L -2078.0081 1984.4993 L -2080.0882 1981.0456 L -2081.6189 1981.0456 L -2079.4603 1984.5582 L -2080.775 1984.676 2081.56 1985.3431 2081.56 1986.7168 C -2081.56 1988.4044 2080.5199 1989.0716 2078.5968 1989.0716 C -2075.6141 1989.0716 L -2075.6141 1981.0456 L -h -2078.3418 1979.3187 m -2075.3786 1979.3187 2072.9846 1981.7128 2072.9846 1985.0292 C -2072.9846 1988.3455 2075.3786 1990.7396 2078.3418 1990.7396 C -2081.3049 1990.7396 2083.6989 1988.3455 2083.6989 1985.0292 C -2083.6989 1981.7128 2081.3049 1979.3187 2078.3418 1979.3187 C -h -2078.3418 1977.9451 m -2082.2468 1977.9451 2085.4258 1981.1241 2085.4258 1985.0292 C -2085.4258 1988.9342 2082.2468 1992.1132 2078.3418 1992.1132 C -2074.4367 1992.1132 2071.2577 1988.9342 2071.2577 1985.0292 C -2071.2577 1981.1241 2074.4367 1977.9451 2078.3418 1977.9451 C -true setoverprint -f -false setoverprint -n -false eomode -2031.7963 2026.7097 m -2082.82 2026.7097 L -2082.82 2012.4154 L -2065.1885 2012.4154 L -2065.1885 1978.4009 L -2049.4278 1978.4009 L -2049.4278 2012.4154 L -2031.7963 2012.4154 L -2031.7963 2026.7097 L -true setoverprint -f -false setoverprint -n -vmr -vmr -end -%%Trailer diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/fmmus.eps --- a/documentation/images/fmmus.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,941 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: fmmus.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Fri Feb 22 12:53:29 2008 -%%For: fp@fetlas (Florian Pose) -%%BoundingBox: 0 0 555 299 -%%Magnification: 1.0000 -%%EndComments -/MyAppDict 100 dict dup begin def -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 299 moveto 0 0 lineto 555 0 lineto 555 299 lineto closepath clip newpath --27.6 337.9 translate -1 -1 scale - -% This junk string is used by the show operators -/PATsstr 1 string def -/PATawidthshow { % cx cy cchar rx ry string - % Loop over each character in the string - { % cx cy cchar rx ry char - % Show the character - dup % cx cy cchar rx ry char char - PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char) - false charpath % cx cy cchar rx ry char - /clip load PATdraw - % Move past the character (charpath modified the - % current point) - currentpoint % cx cy cchar rx ry char x y - newpath - moveto % cx cy cchar rx ry char - % Reposition by cx,cy if the character in the string is cchar - 3 index eq { % cx cy cchar rx ry - 4 index 4 index rmoveto - } if - % Reposition all characters by rx ry - 2 copy rmoveto % cx cy cchar rx ry - } forall - pop pop pop pop pop % - - currentpoint - newpath - moveto -} bind def -/PATcg { - 7 dict dup begin - /lw currentlinewidth def - /lc currentlinecap def - /lj currentlinejoin def - /ml currentmiterlimit def - /ds [ currentdash ] def - /cc [ currentrgbcolor ] def - /cm matrix currentmatrix def - end -} bind def -% PATdraw - calculates the boundaries of the object and -% fills it with the current pattern -/PATdraw { % proc - save exch - PATpcalc % proc nw nh px py - 5 -1 roll exec % nw nh px py - newpath - PATfill % - - restore -} bind def -% PATfill - performs the tiling for the shape -/PATfill { % nw nh px py PATfill - - PATDict /CurrentPattern get dup begin - setfont - % Set the coordinate system to Pattern Space - PatternGState PATsg - % Set the color for uncolored pattezns - PaintType 2 eq { PATDict /PColor get PATsc } if - % Create the string for showing - 3 index string % nw nh px py str - % Loop for each of the pattern sources - 0 1 Multi 1 sub { % nw nh px py str source - % Move to the starting location - 3 index 3 index % nw nh px py str source px py - moveto % nw nh px py str source - % For multiple sources, set the appropriate color - Multi 1 ne { dup PC exch get PATsc } if - % Set the appropriate string for the source - 0 1 7 index 1 sub { 2 index exch 2 index put } for pop - % Loop over the number of vertical cells - 3 index % nw nh px py str nh - { % nw nh px py str - currentpoint % nw nh px py str cx cy - 2 index oldshow % nw nh px py str cx cy - YStep add moveto % nw nh px py str - } repeat % nw nh px py str - } for - 5 { pop } repeat - end -} bind def - -% PATkshow - kshow with the current pattezn -/PATkshow { % proc string - exch bind % string proc - 1 index 0 get % string proc char - % Loop over all but the last character in the string - 0 1 4 index length 2 sub { - % string proc char idx - % Find the n+1th character in the string - 3 index exch 1 add get % string proc char char+1 - exch 2 copy % strinq proc char+1 char char+1 char - % Now show the nth character - PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr) - false charpath % string proc char+1 char char+1 - /clip load PATdraw - % Move past the character (charpath modified the current point) - currentpoint newpath moveto - % Execute the user proc (should consume char and char+1) - mark 3 1 roll % string proc char+1 mark char char+1 - 4 index exec % string proc char+1 mark... - cleartomark % string proc char+1 - } for - % Now display the last character - PATsstr dup 0 4 -1 roll put % string proc (char+1) - false charpath % string proc - /clip load PATdraw - neewath - pop pop % - -} bind def -% PATmp - the makepattern equivalent -/PATmp { % patdict patmtx PATmp patinstance - exch dup length 7 add % We will add 6 new entries plus 1 FID - dict copy % Create a new dictionary - begin - % Matrix to install when painting the pattern - TilingType PATtcalc - /PatternGState PATcg def - PatternGState /cm 3 -1 roll put - % Check for multi pattern sources (Level 1 fast color patterns) - currentdict /Multi known not { /Multi 1 def } if - % Font dictionary definitions - /FontType 3 def - % Create a dummy encoding vector - /Encoding 256 array def - 3 string 0 1 255 { - Encoding exch dup 3 index cvs cvn put } for pop - /FontMatrix matrix def - /FontBBox BBox def - /BuildChar { - mark 3 1 roll % mark dict char - exch begin - Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata] - PaintType 2 eq Multi 1 ne or - { XStep 0 FontBBox aload pop setcachedevice } - { XStep 0 setcharwidth } ifelse - currentdict % mark [paintdata] dict - /PaintProc load % mark [paintdata] dict paintproc - end - gsave - false PATredef exec true PATredef - grestore - cleartomark % - - } bind def - currentdict - end % newdict - /foo exch % /foo newlict - definefont % newfont -} bind def -% PATpcalc - calculates the starting point and width/height -% of the tile fill for the shape -/PATpcalc { % - PATpcalc nw nh px py - PATDict /CurrentPattern get begin - gsave - % Set up the coordinate system to Pattern Space - % and lock down pattern - PatternGState /cm get setmatrix - BBox aload pop pop pop translate - % Determine the bounding box of the shape - pathbbox % llx lly urx ury - grestore - % Determine (nw, nh) the # of cells to paint width and height - PatHeight div ceiling % llx lly urx qh - 4 1 roll % qh llx lly urx - PatWidth div ceiling % qh llx lly qw - 4 1 roll % qw qh llx lly - PatHeight div floor % qw qh llx ph - 4 1 roll % ph qw qh llx - PatWidth div floor % ph qw qh pw - 4 1 roll % pw ph qw qh - 2 index sub cvi abs % pw ph qs qh-ph - exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph - % Determine the starting point of the pattern fill - %(px, py) - 4 2 roll % nw nh pw ph - PatHeight mul % nw nh pw py - exch % nw nh py pw - PatWidth mul exch % nw nh px py - end -} bind def - -% Save the original routines so that we can use them later on -/oldfill /fill load def -/oldeofill /eofill load def -/oldstroke /stroke load def -/oldshow /show load def -/oldashow /ashow load def -/oldwidthshow /widthshow load def -/oldawidthshow /awidthshow load def -/oldkshow /kshow load def - -% These defs are necessary so that subsequent procs don't bind in -% the originals -/fill { oldfill } bind def -/eofill { oldeofill } bind def -/stroke { oldstroke } bind def -/show { oldshow } bind def -/ashow { oldashow } bind def -/widthshow { oldwidthshow } bind def -/awidthshow { oldawidthshow } bind def -/kshow { oldkshow } bind def -/PATredef { - MyAppDict begin - { - /fill { /clip load PATdraw newpath } bind def - /eofill { /eoclip load PATdraw newpath } bind def - /stroke { PATstroke } bind def - /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def - /ashow { 0 0 null 6 3 roll PATawidthshow } - bind def - /widthshow { 0 0 3 -1 roll PATawidthshow } - bind def - /awidthshow { PATawidthshow } bind def - /kshow { PATkshow } bind def - } { - /fill { oldfill } bind def - /eofill { oldeofill } bind def - /stroke { oldstroke } bind def - /show { oldshow } bind def - /ashow { oldashow } bind def - /widthshow { oldwidthshow } bind def - /awidthshow { oldawidthshow } bind def - /kshow { oldkshow } bind def - } ifelse - end -} bind def -false PATredef -% Conditionally define setcmykcolor if not available -/setcmykcolor where { pop } { - /setcmykcolor { - 1 sub 4 1 roll - 3 { - 3 index add neg dup 0 lt { pop 0 } if 3 1 roll - } repeat - setrgbcolor - pop - } bind def -} ifelse -/PATsc { % colorarray - aload length % c1 ... cn length - dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor - } ifelse } ifelse -} bind def -/PATsg { % dict - begin - lw setlinewidth - lc setlinecap - lj setlinejoin - ml setmiterlimit - ds aload pop setdash - cc aload pop setrgbcolor - cm setmatrix - end -} bind def - -/PATDict 3 dict def -/PATsp { - true PATredef - PATDict begin - /CurrentPattern exch def - % If it's an uncolored pattern, save the color - CurrentPattern /PaintType get 2 eq { - /PColor exch def - } if - /CColor [ currentrgbcolor ] def - end -} bind def -% PATstroke - stroke with the current pattern -/PATstroke { - countdictstack - save - mark - { - currentpoint strokepath moveto - PATpcalc % proc nw nh px py - clip newpath PATfill - } stopped { - (*** PATstroke Warning: Path is too complex, stroking - with gray) = - cleartomark - restore - countdictstack exch sub dup 0 gt - { { end } repeat } { pop } ifelse - gsave 0.5 setgray oldstroke grestore - } { pop restore pop } ifelse - newpath -} bind def -/PATtcalc { % modmtx tilingtype PATtcalc tilematrix - % Note: tiling types 2 and 3 are not supported - gsave - exch concat % tilingtype - matrix currentmatrix exch % cmtx tilingtype - % Tiling type 1 and 3: constant spacing - 2 ne { - % Distort the pattern so that it occupies - % an integral number of device pixels - dup 4 get exch dup 5 get exch % tx ty cmtx - XStep 0 dtransform - round exch round exch % tx ty cmtx dx.x dx.y - XStep div exch XStep div exch % tx ty cmtx a b - 0 YStep dtransform - round exch round exch % tx ty cmtx a b dy.x dy.y - YStep div exch YStep div exch % tx ty cmtx a b c d - 7 -3 roll astore % { a b c d tx ty } - } if - grestore -} bind def -/PATusp { - false PATredef - PATDict begin - CColor PATsc - end -} bind def - -% right30 -11 dict begin -/PaintType 1 def -/PatternType 1 def -/TilingType 1 def -/BBox [0 0 1 1] def -/XStep 1 def -/YStep 1 def -/PatWidth 1 def -/PatHeight 1 def -/Multi 2 def -/PaintData [ - { clippath } bind - { 32 16 true [ 32 0 0 -16 0 16 ] - {<00030003000c000c0030003000c000c0030003000c000c00 - 30003000c000c00000030003000c000c0030003000c000c0 - 030003000c000c0030003000c000c000>} - imagemask } bind -] def -/PaintProc { - pop - exec fill -} def -currentdict -end -/P2 exch def - -% crosshatch45 -11 dict begin -/PaintType 1 def -/PatternType 1 def -/TilingType 1 def -/BBox [0 0 1 1] def -/XStep 1 def -/YStep 1 def -/PatWidth 1 def -/PatHeight 1 def -/Multi 2 def -/PaintData [ - { clippath } bind - { 20 20 true [ 20 0 0 -20 0 20 ] - {<8020004050102088201104400a02800401000a02 - 8011044020882040501080200040501020882011 - 04400a02800401000a0280110440208820405010>} - imagemask } bind -] def -/PaintProc { - pop - exec fill -} def -currentdict -end -/P6 exch def - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 52 -% Polyline -7.500 slw - [60] 0 sd -n 1215 1665 m - 1620 3870 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 81.00 111.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 2296 1665 m - 2700 3870 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 153.07 111.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 3735 1665 m - 2700 3870 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 4453 1664 m - 3420 3870 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 3735 1665 m - 5130 3870 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 249.00 111.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 7650 1665 m - 5850 3870 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 8730 1665 m - 6930 3870 l gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 4455 1665 m - 5850 3870 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 297.00 111.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline -n 6675 2520 m 6570 2520 6570 2775 105 arcto 4 {pop} repeat - 6570 2880 7995 2880 105 arcto 4 {pop} repeat - 8100 2880 8100 2625 105 arcto 4 {pop} repeat - 8100 2520 6675 2520 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 1440 2520 m 1350 2520 1350 2790 90 arcto 4 {pop} repeat - 1350 2880 2520 2880 90 arcto 4 {pop} repeat - 2610 2880 2610 2610 90 arcto 4 {pop} repeat - 2610 2520 1440 2520 90 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3090 2520 m 3015 2520 3015 2805 75 arcto 4 {pop} repeat - 3015 2880 4065 2880 75 arcto 4 {pop} repeat - 4140 2880 4140 2595 75 arcto 4 {pop} repeat - 4140 2520 3090 2520 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 4260 2520 m 4185 2520 4185 2805 75 arcto 4 {pop} repeat - 4185 2880 5235 2880 75 arcto 4 {pop} repeat - 5310 2880 5310 2595 75 arcto 4 {pop} repeat - 5310 2520 4260 2520 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col0 s gr -% Arc -n 1755.0 1440.0 540.0 180.0 0.0 arc -gs col7 1.00 shd ef gr gs col0 s gr - -% Arc -n 4095.0 1440.0 360.0 180.0 0.0 arc -gs col7 1.00 shd ef gr gs col0 s gr - -% Arc -n 8190.0 1440.0 540.0 180.0 0.0 arc -gs col7 1.00 shd ef gr gs col0 s gr - -% Polyline - [60] 0 sd -n 1935 1440 m 2115 1440 l 2115 1665 l 1935 1665 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 129.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 1395 1440 m 1755 1440 l 1755 1665 l 1395 1665 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 93.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 3735 1440 m 4095 1440 l 4095 1665 l 3735 1665 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 249.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 1800 3870 m 2160 3870 l 2160 4095 l 1800 4095 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 120.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 2340 3870 m 2520 3870 l 2520 4095 l 2340 4095 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 156.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline - [60] 0 sd -n 2700 3870 m 3060 3870 l 3060 4095 l 2700 4095 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 180.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline -n 1620 3870 m - 1620 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 108.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 1800 3870 m - 1800 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 120.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 2160 3870 m - 2160 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 144.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 2340 3870 m - 2340 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 156.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 2520 3870 m - 2520 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 168.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 2700 3870 m - 2700 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 180.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 3060 3870 m - 3060 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 204.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 3240 3870 m - 3240 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 216.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 3420 3870 m - 3420 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 228.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 1440 3870 m - 1440 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 96.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 1260 3870 m - 1260 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 84.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 1080 3870 m - 3600 3870 l gs col0 s gr -% Polyline -n 1080 4095 m - 3600 4095 l gs col0 s gr -% Polyline - [60] 0 sd -n 5130 3870 m 5490 3870 l 5490 4095 l 5130 4095 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 342.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr [] 0 sd -% Polyline -n 4590 3870 m - 4590 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 306.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4770 3870 m - 4770 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 318.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4950 3870 m - 4950 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 330.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 5130 3870 m - 5130 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 342.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 5490 3870 m - 5490 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 366.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 5670 3870 m - 5670 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 378.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 5850 3870 m - 5850 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 390.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 6030 3870 m - 6030 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 402.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 6210 3870 m - 6210 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 414.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4410 3870 m - 4410 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 294.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4230 3870 m - 4230 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 282.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4050 3870 m - 7470 3870 l gs col0 s gr -% Polyline -n 4050 4095 m - 7470 4095 l gs col0 s gr -% Polyline -n 6930 1440 m - 6930 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 462.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 7110 1440 m - 7110 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 474.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 7290 1440 m - 7290 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 486.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 7470 1440 m - 7470 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 498.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 7650 1440 m - 7650 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 510.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 7830 1440 m - 7830 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 522.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 8010 1440 m - 8010 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 534.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 8730 1440 m - 8730 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 582.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 8910 1440 m - 8910 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 594.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 6750 1440 m - 6750 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 450.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 6570 1440 m - 6570 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 438.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 6390 1440 m - 9090 1440 l gs col0 s gr -% Polyline -n 6390 1665 m - 9090 1665 l gs col0 s gr -% Polyline -n 8010 1440 m 8730 1440 l 8730 1665 l 8010 1665 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 534.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 6930 3870 m - 6930 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 462.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 6210 3870 m 6930 3870 l 6930 4095 l 6210 4095 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 414.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 6165 630 m 9225 630 l 9225 3015 l 6165 3015 l - cp gs col0 s gr -% Polyline -n 450 630 m 5490 630 l 5490 3015 l 450 3015 l - cp gs col0 s gr -% Polyline -n 1215 1440 m - 1215 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 81.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 1395 1440 m - 1395 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 93.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 1755 1440 m - 1755 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 117.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 1935 1440 m - 1935 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 129.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 2115 1440 m - 2115 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 141.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 2295 1440 m - 2295 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 153.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 2475 1440 m - 2475 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 165.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 2655 1440 m - 2655 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 177.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 2835 1440 m - 2835 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 189.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 3015 1440 m - 3015 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 201.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 3195 1440 m - 3195 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 213.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 3375 1440 m - 3375 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 225.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 3555 1440 m - 3555 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 237.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 3735 1440 m - 3735 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 249.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4095 1440 m - 4095 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 273.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4275 1440 m - 4275 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 285.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4455 1440 m - 4455 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 297.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4635 1440 m - 4635 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 309.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4815 1440 m - 4815 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 321.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 1035 1440 m - 1035 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 69.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 855 1440 m - 855 1665 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 57.00 96.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 675 1440 m - 4995 1440 l gs col0 s gr -% Polyline -n 675 1665 m - 4995 1665 l gs col0 s gr -% Polyline -n 7110 3870 m - 7110 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 474.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 7290 3870 m - 7290 4095 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P6 [16 0 0 -16 486.00 258.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -gs clippath -1830 4080 m 1770 4080 l 1770 4231 l 1800 4111 l 1830 4231 l cp -eoclip -n 1800 4410 m - 1800 4095 l gs col0 s gr gr - -% arrowhead -n 1830 4231 m 1800 4111 l 1770 4231 l 1830 4231 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2730 4080 m 2670 4080 l 2670 4231 l 2700 4111 l 2730 4231 l cp -eoclip -n 2700 4410 m - 2700 4095 l gs col0 s gr gr - -% arrowhead -n 2730 4231 m 2700 4111 l 2670 4231 l 2730 4231 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -5160 4080 m 5100 4080 l 5100 4231 l 5130 4111 l 5160 4231 l cp -eoclip -n 5130 4410 m - 5130 4095 l gs col0 s gr gr - -% arrowhead -n 5160 4231 m 5130 4111 l 5100 4231 l 5160 4231 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -6240 4080 m 6180 4080 l 6180 4231 l 6210 4111 l 6240 4231 l cp -eoclip -n 6210 4410 m - 6210 4095 l gs col0 s gr gr - -% arrowhead -n 6240 4231 m 6210 4111 l 6180 4231 l 6240 4231 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -2370 4080 m 2310 4080 l 2310 4231 l 2340 4111 l 2370 4231 l cp -eoclip -n 2340 4410 m - 2340 4095 l gs col0 s gr gr - -% arrowhead -n 2370 4231 m 2340 4111 l 2310 4231 l 2370 4231 l cp gs 0.00 setgray ef gr col0 s -% Polyline -gs clippath -3315 5235 m 3315 5295 l 3466 5295 l 3346 5265 l 3466 5235 l cp -eoclip -n 3645 5265 m - 3330 5265 l gs col0 s gr gr - -% arrowhead -n 3466 5235 m 3346 5265 l 3466 5295 l 3466 5235 l cp gs 0.00 setgray ef gr col0 s -% Polyline -n 3465 4815 m 3645 4815 l 3645 5040 l 3465 5040 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P2 [16 0 0 -8 231.00 321.00] PATmp PATsp ef gr PATusp gs col0 s gr -/Helvetica ff 180.00 scf sf -675 1395 m -gs 1 -1 sc (RAM) col0 sh gr -/Helvetica ff 180.00 scf sf -4095 1350 m -gs 1 -1 sc (SM1) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -6390 1395 m -gs 1 -1 sc (RAM) col0 sh gr -/Helvetica ff 180.00 scf sf -540 855 m -gs 1 -1 sc (Slave0) col0 sh gr -/Helvetica ff 180.00 scf sf -6255 855 m -gs 1 -1 sc (Slave1) col0 sh gr -/Helvetica ff 180.00 scf sf -7290 2745 m -gs 1 -1 sc (FMMU0) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -1980 2745 m -gs 1 -1 sc (FMMU0) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -3555 2745 m -gs 1 -1 sc (FMMU1) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -4725 2745 m -gs 1 -1 sc (FMMU2) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -1755 1305 m -gs 1 -1 sc (SM0) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -8190 1305 m -gs 1 -1 sc (SM3) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -1080 3825 m -gs 1 -1 sc (Domain0 Image) col0 sh gr -/Helvetica ff 180.00 scf sf -4050 3825 m -gs 1 -1 sc (Domain1 Image) col0 sh gr -/Helvetica ff 180.00 scf sf -3735 5310 m -gs 1 -1 sc (Process data pointers) col0 sh gr -/Helvetica ff 180.00 scf sf -3735 4995 m -gs 1 -1 sc (Registered Pdo entries) col0 sh gr -% here ends figure; -$F2psEnd -rs -end -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/fsm-change.eps --- a/documentation/images/fsm-change.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,424 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: fsm-change.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Thu Jul 20 10:40:23 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 510 193 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 193 moveto 0 0 lineto 510 0 lineto 510 193 lineto closepath clip newpath --24.3 221.9 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 1260 2745 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -1260 2790 m -gs 1 -1 sc (CODE) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 3375 2745 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -3375 2790 m -gs 1 -1 sc (ACK) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 5490 2745 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -5490 2790 m -gs 1 -1 sc (CHECK ACK) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 7605 2745 855 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 7605 2738 765 322 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -7605 2790 m -gs 1 -1 sc (ERROR) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 3375 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -3375 1305 m -gs 1 -1 sc (CHECK) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 5490 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -5490 1305 m -gs 1 -1 sc (STATUS) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 7605 1260 855 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 7605 1261 748 315 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -7605 1305 m -gs 1 -1 sc (END) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 1260 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -1260 1305 m -gs 1 -1 sc (START) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 495 675 101 101 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -2535 1290 m 2535 1230 l 2384 1230 l 2504 1260 l 2384 1290 l cp -eoclip -n 2115 1260 m - 2520 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 2384 1290 m 2504 1260 l 2384 1230 l 2384 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4650 1290 m 4650 1230 l 4499 1230 l 4619 1260 l 4499 1290 l cp -eoclip -n 4230 1260 m - 4635 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 4499 1290 m 4619 1260 l 4499 1230 l 4499 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6765 1290 m 6765 1230 l 6614 1230 l 6734 1260 l 6614 1290 l cp -eoclip -n 6345 1260 m - 6750 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 6614 1290 m 6734 1260 l 6614 1230 l 6614 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5326 917 m 5386 912 l 5371 761 l 5353 884 l 5311 767 l cp -eoclip -n 5670 900 m 5671 897 l 5672 892 l 5674 882 l 5677 868 l 5681 849 l - 5686 827 l 5691 803 l 5695 776 l 5699 749 l 5702 721 l - 5704 693 l 5705 666 l 5703 639 l 5700 612 l 5693 586 l - 5683 562 l 5670 540 l 5657 525 l 5643 513 l 5628 504 l - 5614 496 l 5601 491 l 5588 487 l 5577 484 l 5567 482 l - 5557 481 l 5548 480 l 5539 480 l 5530 480 l 5520 481 l - 5510 482 l 5500 484 l 5488 487 l 5475 491 l 5461 496 l - 5446 504 l 5431 513 l 5415 525 l 5400 540 l 5384 562 l - 5371 586 l 5361 612 l 5354 639 l 5349 666 l 5346 693 l - 5345 721 l 5345 749 l 5345 776 l 5346 803 l 5348 827 l - 5350 849 l 5352 868 l - 5355 900 l gs col0 s gr gr - -% arrowhead -0 slj -n 5311 767 m 5353 884 l 5371 761 l 5311 767 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -2535 2775 m 2535 2715 l 2384 2715 l 2504 2745 l 2384 2775 l cp -eoclip -n 2115 2745 m - 2520 2745 l gs col0 s gr gr - -% arrowhead -0 slj -n 2384 2775 m 2504 2745 l 2384 2715 l 2384 2775 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4650 2775 m 4650 2715 l 4499 2715 l 4619 2745 l 4499 2775 l cp -eoclip -n 4230 2745 m - 4635 2745 l gs col0 s gr gr - -% arrowhead -0 slj -n 4499 2775 m 4619 2745 l 4499 2715 l 4499 2775 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6765 2775 m 6765 2715 l 6614 2715 l 6734 2745 l 6614 2775 l cp -eoclip -n 6345 2745 m - 6750 2745 l gs col0 s gr gr - -% arrowhead -0 slj -n 6614 2775 m 6734 2745 l 6614 2715 l 6614 2775 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -1723 2417 m 1764 2462 l 1875 2360 l 1767 2419 l 1835 2316 l cp -eoclip -n 4905 1530 m 4905 1531 l 4905 1532 l 4905 1534 l 4905 1538 l 4906 1543 l - 4906 1549 l 4906 1558 l 4905 1568 l 4905 1579 l 4903 1592 l - 4901 1606 l 4899 1621 l 4895 1638 l 4890 1654 l 4884 1672 l - 4876 1690 l 4867 1708 l 4855 1727 l 4841 1746 l 4825 1765 l - 4806 1784 l 4783 1803 l 4757 1822 l 4727 1842 l 4692 1862 l - 4652 1882 l 4607 1902 l 4555 1922 l 4498 1942 l 4434 1961 l - 4365 1980 l 4306 1994 l 4246 2007 l 4186 2019 l 4126 2030 l - 4068 2040 l 4012 2048 l 3959 2055 l 3909 2060 l 3862 2064 l - 3818 2068 l 3778 2070 l 3740 2071 l 3706 2071 l 3673 2071 l - 3643 2070 l 3615 2068 l 3589 2066 l 3563 2064 l 3538 2061 l - 3514 2059 l 3489 2056 l 3464 2053 l 3438 2051 l 3411 2049 l - 3382 2047 l 3352 2046 l 3318 2045 l 3283 2045 l 3244 2045 l - 3201 2047 l 3156 2049 l 3106 2052 l 3053 2056 l 2997 2062 l - 2937 2068 l 2874 2076 l 2809 2084 l 2743 2094 l 2676 2104 l - 2610 2115 l 2525 2130 l 2446 2146 l 2373 2162 l 2306 2178 l - 2246 2193 l 2191 2208 l 2142 2223 l 2098 2238 l 2058 2252 l - 2022 2266 l 1989 2281 l 1959 2294 l 1932 2308 l 1907 2321 l - 1884 2334 l 1864 2347 l 1845 2359 l 1828 2371 l 1813 2382 l - 1800 2392 l 1789 2400 l 1780 2408 l 1772 2415 l 1766 2420 l - - 1755 2430 l gs col0 s gr gr - -% arrowhead -0 slj -n 1835 2316 m 1767 2419 l 1875 2360 l 1835 2316 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -656 1018 m 708 987 l 630 857 l 667 976 l 579 888 l cp -eoclip -n 540 765 m - 675 990 l gs 0.00 setgray ef gr gs col0 s gr gr - -% arrowhead -0 slj -n 579 888 m 667 976 l 630 857 l 579 888 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6914 2549 m 6963 2515 l 6876 2391 l 6921 2507 l 6827 2425 l cp -eoclip -n 4050 1485 m 4049 1485 l 4048 1485 l 4048 1486 l 4047 1486 l 4046 1487 l - 4045 1488 l 4044 1489 l 4044 1490 l 4045 1491 l 4046 1493 l - 4049 1495 l 4053 1498 l 4058 1500 l 4066 1504 l 4075 1507 l - 4087 1512 l 4102 1517 l 4119 1522 l 4141 1528 l 4166 1536 l - 4197 1544 l 4232 1553 l 4273 1564 l 4320 1576 l 4374 1589 l - 4434 1604 l 4500 1620 l 4553 1633 l 4608 1645 l 4662 1658 l - 4717 1670 l 4770 1682 l 4821 1693 l 4869 1703 l 4915 1712 l - 4958 1721 l 4998 1728 l 5035 1735 l 5070 1740 l 5102 1745 l - 5132 1750 l 5160 1753 l 5186 1756 l 5210 1759 l 5234 1762 l - 5257 1764 l 5280 1766 l 5303 1769 l 5326 1771 l 5350 1774 l - 5375 1777 l 5402 1781 l 5431 1786 l 5462 1791 l 5495 1798 l - 5531 1805 l 5571 1814 l 5613 1824 l 5659 1836 l 5708 1849 l - 5760 1863 l 5816 1879 l 5874 1897 l 5935 1916 l 5996 1936 l - 6058 1958 l 6120 1980 l 6199 2010 l 6273 2041 l 6341 2070 l - 6404 2100 l 6460 2128 l 6512 2155 l 6558 2182 l 6600 2207 l - 6637 2232 l 6672 2256 l 6703 2280 l 6732 2303 l 6758 2325 l - 6782 2347 l 6803 2368 l 6823 2389 l 6842 2408 l 6858 2427 l - 6872 2444 l 6885 2459 l 6896 2474 l 6906 2486 l 6913 2496 l - 6919 2504 l 6923 2510 l - 6930 2520 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 6827 2425 m 6921 2507 l 6876 2391 l 6827 2425 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -7089 2456 m 7143 2430 l 7079 2293 l 7103 2415 l 7025 2318 l cp -eoclip -n 6165 1485 m 6166 1486 l 6169 1487 l 6173 1490 l 6181 1495 l 6191 1501 l - 6204 1509 l 6220 1519 l 6238 1531 l 6259 1545 l 6282 1560 l - 6307 1576 l 6332 1593 l 6359 1612 l 6387 1631 l 6416 1651 l - 6445 1673 l 6475 1695 l 6506 1719 l 6538 1744 l 6570 1771 l - 6605 1800 l 6640 1831 l 6676 1864 l 6713 1899 l 6750 1935 l - 6788 1974 l 6824 2013 l 6857 2049 l 6886 2084 l 6913 2116 l - 6937 2147 l 6958 2176 l 6978 2203 l 6996 2230 l 7012 2255 l - 7027 2279 l 7041 2302 l 7054 2324 l 7065 2344 l 7075 2363 l - 7084 2380 l 7092 2394 l 7098 2406 l 7103 2415 l - 7110 2430 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 7025 2318 m 7103 2415 l 7079 2293 l 7025 2318 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6822 2944 m 6793 2891 l 6661 2964 l 6781 2933 l 6690 3016 l cp -eoclip -n 3915 3060 m 3916 3060 l 3918 3061 l 3922 3062 l 3928 3064 l 3937 3067 l - 3949 3070 l 3965 3075 l 3983 3080 l 4006 3086 l 4031 3093 l - 4060 3101 l 4092 3110 l 4126 3119 l 4164 3129 l 4203 3139 l - 4245 3150 l 4289 3160 l 4334 3171 l 4381 3182 l 4429 3192 l - 4478 3203 l 4529 3213 l 4581 3223 l 4634 3232 l 4689 3241 l - 4745 3249 l 4802 3257 l 4862 3264 l 4923 3270 l 4987 3276 l - 5053 3281 l 5121 3285 l 5192 3287 l 5264 3289 l 5338 3289 l - 5414 3288 l 5490 3285 l 5569 3280 l 5647 3274 l 5721 3267 l - 5793 3258 l 5860 3248 l 5925 3237 l 5986 3226 l 6043 3214 l - 6098 3201 l 6150 3188 l 6200 3174 l 6247 3160 l 6292 3146 l - 6336 3131 l 6378 3116 l 6418 3101 l 6457 3085 l 6494 3070 l - 6530 3055 l 6563 3040 l 6595 3025 l 6625 3011 l 6653 2998 l - 6679 2985 l 6702 2974 l 6722 2963 l 6740 2954 l 6755 2946 l - 6767 2940 l 6777 2935 l 6784 2931 l - 6795 2925 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 6690 3016 m 6781 2933 l 6661 2964 l 6690 3016 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -7008 3019 m 6959 2985 l 6872 3109 l 6966 3028 l 6921 3143 l cp -eoclip -n 1890 3015 m 1891 3015 l 1892 3016 l 1895 3016 l 1900 3017 l 1907 3019 l - 1917 3021 l 1929 3024 l 1944 3027 l 1963 3031 l 1985 3036 l - 2011 3042 l 2040 3048 l 2073 3055 l 2109 3063 l 2149 3072 l - 2193 3081 l 2240 3091 l 2290 3102 l 2344 3113 l 2400 3125 l - 2459 3137 l 2520 3150 l 2584 3163 l 2650 3176 l 2717 3190 l - 2786 3204 l 2857 3218 l 2929 3232 l 3002 3246 l 3077 3260 l - 3152 3273 l 3228 3287 l 3305 3301 l 3382 3315 l 3460 3328 l - 3539 3341 l 3618 3354 l 3698 3366 l 3779 3378 l 3860 3390 l - 3942 3402 l 4025 3413 l 4109 3424 l 4193 3434 l 4279 3444 l - 4365 3453 l 4452 3462 l 4541 3470 l 4630 3478 l 4720 3485 l - 4811 3491 l 4902 3497 l 4994 3501 l 5085 3505 l 5176 3508 l - 5266 3509 l 5355 3510 l 5474 3509 l 5587 3506 l 5695 3501 l - 5796 3494 l 5890 3486 l 5978 3476 l 6060 3465 l 6136 3453 l - 6206 3440 l 6271 3426 l 6332 3411 l 6388 3395 l 6439 3379 l - 6487 3362 l 6532 3345 l 6574 3327 l 6612 3308 l 6649 3289 l - 6682 3270 l 6714 3251 l 6743 3232 l 6770 3212 l 6796 3193 l - 6819 3174 l 6841 3156 l 6861 3138 l 6879 3122 l 6895 3106 l - 6910 3091 l 6922 3077 l 6934 3065 l 6943 3054 l 6952 3044 l - 6958 3036 l 6964 3030 l 6968 3025 l - 6975 3015 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 6921 3143 m 6966 3028 l 6872 3109 l 6921 3143 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5326 2403 m 5386 2398 l 5371 2247 l 5353 2370 l 5311 2253 l cp -eoclip -n 5670 2386 m 5671 2383 l 5672 2378 l 5674 2368 l 5677 2354 l 5681 2335 l - 5686 2313 l 5691 2289 l 5695 2262 l 5699 2235 l 5702 2207 l - 5704 2179 l 5705 2152 l 5703 2125 l 5700 2098 l 5693 2072 l - 5683 2048 l 5670 2026 l 5657 2011 l 5643 1999 l 5628 1990 l - 5614 1982 l 5601 1977 l 5588 1973 l 5577 1970 l 5567 1968 l - 5557 1967 l 5548 1966 l 5539 1966 l 5530 1966 l 5520 1967 l - 5510 1968 l 5500 1970 l 5488 1973 l 5475 1977 l 5461 1982 l - 5446 1990 l 5431 1999 l 5415 2011 l 5400 2026 l 5384 2048 l - 5371 2072 l 5361 2098 l 5354 2125 l 5349 2152 l 5346 2179 l - 5345 2207 l 5345 2235 l 5345 2262 l 5346 2289 l 5348 2313 l - 5350 2335 l 5352 2354 l - 5355 2386 l gs col0 s gr gr - -% arrowhead -0 slj -n 5311 2253 m 5353 2370 l 5371 2247 l 5311 2253 l cp gs 0.00 setgray ef gr col0 s -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/fsm-coedown.eps --- a/documentation/images/fsm-coedown.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,319 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: fsm-coedown.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Sat Aug 5 09:58:10 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 539 160 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 160 moveto 0 0 lineto 539 0 lineto 539 160 lineto closepath clip newpath --15.8 192.8 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 360 675 101 101 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -521 1018 m 573 987 l 495 857 l 532 976 l 444 888 l cp -eoclip -n 405 765 m - 540 990 l gs 0.00 setgray ef gr gs col0 s gr gr - -% arrowhead -0 slj -n 444 888 m 532 976 l 495 857 l 444 888 l cp gs 0.00 setgray ef gr col0 s -% Ellipse -n 1177 1253 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -1177 1298 m -gs 1 -1 sc (START) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 3323 1253 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -3323 1298 m -gs 1 -1 sc (REQUEST) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 5595 1253 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -5595 1298 m -gs 1 -1 sc (CHECK) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 7845 1253 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -7845 1298 m -gs 1 -1 sc (RESPONSE) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 7823 2693 855 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 7823 2700 748 315 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -7823 2738 m -gs 1 -1 sc (END) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4448 2693 855 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 4448 2700 748 315 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4448 2738 m -gs 1 -1 sc (ERROR) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -2 slj -gs clippath -2490 1290 m 2490 1230 l 2339 1230 l 2459 1260 l 2339 1290 l cp -eoclip -n 2025 1260 m 2027 1260 l 2031 1260 l 2039 1260 l 2049 1260 l 2062 1260 l - 2076 1260 l 2094 1260 l 2114 1260 l 2139 1260 l 2169 1260 l - 2205 1260 l 2233 1260 l 2261 1260 l 2288 1260 l 2312 1260 l - 2336 1260 l 2358 1260 l 2379 1260 l 2399 1260 l 2418 1260 l - 2435 1260 l 2449 1260 l - 2475 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 2339 1290 m 2459 1260 l 2339 1230 l 2339 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4740 1290 m 4740 1230 l 4589 1230 l 4709 1260 l 4589 1290 l cp -eoclip -n 4185 1260 m - 4725 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 4589 1290 m 4709 1260 l 4589 1230 l 4589 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6990 1290 m 6990 1230 l 6839 1230 l 6959 1260 l 6839 1290 l cp -eoclip -n 6435 1260 m - 6975 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 6839 1290 m 6959 1260 l 6839 1230 l 6839 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5372 918 m 5431 910 l 5412 761 l 5398 884 l 5352 768 l cp -eoclip -n 5760 900 m 5760 897 l 5761 890 l 5763 879 l 5765 862 l 5767 842 l - 5768 818 l 5770 792 l 5770 765 l 5770 737 l 5768 710 l - 5763 683 l 5757 657 l 5747 631 l 5733 607 l 5715 585 l - 5698 571 l 5681 560 l 5664 551 l 5648 545 l 5634 540 l - 5621 537 l 5609 535 l 5599 533 l 5589 533 l 5580 533 l - 5571 533 l 5561 533 l 5551 535 l 5539 537 l 5526 540 l - 5512 545 l 5496 551 l 5479 560 l 5462 571 l 5445 585 l - 5427 607 l 5413 631 l 5403 657 l 5397 683 l 5392 710 l - 5390 737 l 5390 765 l 5390 792 l 5392 818 l 5393 842 l - 5395 862 l - 5400 900 l gs col0 s gr gr - -% arrowhead -0 slj -n 5352 768 m 5398 884 l 5412 761 l 5352 768 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -3900 2415 m 3948 2379 l 3857 2258 l 3905 2372 l 3809 2294 l cp -eoclip -n 3555 1620 m 3555 1622 l 3556 1625 l 3557 1631 l 3559 1640 l 3562 1652 l - 3566 1667 l 3570 1684 l 3575 1704 l 3580 1725 l 3587 1748 l - 3593 1772 l 3601 1798 l 3610 1824 l 3619 1853 l 3630 1883 l - 3643 1915 l 3657 1950 l 3673 1987 l 3690 2025 l 3708 2063 l - 3727 2098 l 3744 2131 l 3761 2161 l 3777 2189 l 3793 2214 l - 3808 2238 l 3823 2260 l 3837 2280 l 3850 2299 l 3863 2317 l - 3875 2333 l 3886 2347 l 3895 2359 l 3903 2369 l - 3915 2385 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 3809 2294 m 3905 2372 l 3857 2258 l 3809 2294 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5038 2379 m 5086 2415 l 5177 2294 l 5081 2372 l 5129 2258 l cp -eoclip -n 5431 1620 m 5431 1622 l 5430 1625 l 5429 1631 l 5427 1640 l 5424 1652 l - 5420 1667 l 5416 1684 l 5411 1704 l 5406 1725 l 5399 1748 l - 5393 1772 l 5385 1798 l 5376 1824 l 5367 1853 l 5356 1883 l - 5343 1915 l 5329 1950 l 5313 1987 l 5296 2025 l 5278 2063 l - 5259 2098 l 5242 2131 l 5225 2161 l 5209 2189 l 5193 2214 l - 5178 2238 l 5163 2260 l 5149 2280 l 5136 2299 l 5123 2317 l - 5111 2333 l 5100 2347 l 5091 2359 l 5083 2369 l - 5071 2385 l gs col0 s gr gr - -% arrowhead -0 slj -n 5129 2258 m 5081 2372 l 5177 2294 l 5129 2258 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -3655 2641 m 3664 2582 l 3514 2561 l 3629 2608 l 3505 2620 l cp -eoclip -n 1620 1575 m 1621 1576 l 1622 1577 l 1625 1581 l 1629 1586 l 1635 1593 l - 1643 1602 l 1653 1613 l 1665 1627 l 1680 1643 l 1696 1661 l - 1714 1680 l 1734 1702 l 1756 1725 l 1779 1748 l 1804 1773 l - 1830 1799 l 1858 1825 l 1887 1852 l 1918 1879 l 1950 1907 l - 1984 1935 l 2021 1964 l 2059 1993 l 2100 2023 l 2144 2054 l - 2191 2086 l 2241 2118 l 2295 2151 l 2352 2184 l 2413 2217 l - 2475 2250 l 2535 2280 l 2595 2308 l 2654 2335 l 2711 2359 l - 2767 2382 l 2821 2403 l 2874 2422 l 2925 2440 l 2974 2456 l - 3021 2471 l 3068 2485 l 3113 2498 l 3157 2510 l 3200 2521 l - 3242 2531 l 3283 2541 l 3323 2550 l 3362 2558 l 3399 2565 l - 3434 2572 l 3467 2579 l 3498 2585 l 3526 2590 l 3552 2594 l - 3574 2598 l 3593 2601 l 3609 2604 l 3621 2606 l 3631 2608 l - - 3645 2610 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 3505 2620 m 3629 2608 l 3514 2561 l 3505 2620 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5295 2582 m 5304 2641 l 5454 2620 l 5331 2608 l 5445 2561 l cp -eoclip -n 7340 1575 m 7339 1576 l 7338 1577 l 7335 1581 l 7331 1586 l 7325 1593 l - 7317 1602 l 7307 1613 l 7295 1627 l 7280 1643 l 7264 1661 l - 7246 1680 l 7226 1702 l 7204 1725 l 7181 1748 l 7156 1773 l - 7130 1799 l 7102 1825 l 7073 1852 l 7042 1879 l 7010 1907 l - 6976 1935 l 6939 1964 l 6901 1993 l 6860 2023 l 6816 2054 l - 6769 2086 l 6719 2118 l 6665 2151 l 6608 2184 l 6547 2217 l - 6485 2250 l 6425 2280 l 6365 2308 l 6306 2335 l 6249 2359 l - 6193 2382 l 6139 2403 l 6086 2422 l 6035 2440 l 5986 2456 l - 5939 2471 l 5892 2485 l 5847 2498 l 5803 2510 l 5760 2521 l - 5718 2531 l 5677 2541 l 5637 2550 l 5598 2558 l 5561 2565 l - 5526 2572 l 5493 2579 l 5462 2585 l 5434 2590 l 5408 2594 l - 5386 2598 l 5367 2601 l 5351 2604 l 5339 2606 l 5329 2608 l - - 5315 2610 l gs col0 s gr gr - -% arrowhead -0 slj -n 5445 2561 m 5331 2608 l 5454 2620 l 5445 2561 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -7800 2355 m 7860 2355 l 7860 2204 l 7830 2324 l 7800 2204 l cp -eoclip -n 7830 1620 m - 7830 2340 l gs col0 s gr gr - -% arrowhead -0 slj -n 7800 2204 m 7830 2324 l 7860 2204 l 7800 2204 l cp gs 0.00 setgray ef gr col0 s -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/fsm-eoe.eps --- a/documentation/images/fsm-eoe.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,282 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: fsm-eoe.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Tue Aug 1 18:22:14 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 386 160 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 160 moveto 0 0 lineto 386 0 lineto 386 160 lineto closepath clip newpath --23.6 189.9 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 1260 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -1260 1305 m -gs 1 -1 sc (RX_START) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 495 675 101 101 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -656 1018 m 708 987 l 630 857 l 667 976 l 579 888 l cp -eoclip -n 540 765 m - 675 990 l gs 0.00 setgray ef gr gs col0 s gr gr - -% arrowhead -0 slj -n 579 888 m 667 976 l 630 857 l 579 888 l cp gs 0.00 setgray ef gr col0 s -% Ellipse -n 3457 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -3457 1305 m -gs 1 -1 sc (RX_CHECK) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 5610 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -5610 1305 m -gs 1 -1 sc (RX_FETCH) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 2347 2648 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -2347 2693 m -gs 1 -1 sc (TX_START) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4538 2648 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4538 2693 m -gs 1 -1 sc (TX_SENT) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -2 slj -gs clippath -2625 1290 m 2625 1230 l 2474 1230 l 2594 1260 l 2474 1290 l cp -eoclip -n 2115 1260 m - 2610 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 2474 1290 m 2594 1260 l 2474 1230 l 2474 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4785 1290 m 4785 1230 l 4634 1230 l 4754 1260 l 4634 1290 l cp -eoclip -n 4230 1260 m - 4770 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 4634 1290 m 4754 1260 l 4634 1230 l 4634 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -1816 972 m 1848 1023 l 1976 941 l 1859 981 l 1944 891 l cp -eoclip -n 5040 990 m 5039 990 l 5037 988 l 5034 987 l 5029 983 l 5021 979 l - 5011 973 l 4998 966 l 4982 957 l 4964 946 l 4942 934 l - 4917 920 l 4889 905 l 4859 888 l 4826 871 l 4791 853 l - 4754 833 l 4714 814 l 4673 794 l 4631 773 l 4587 753 l - 4541 733 l 4494 713 l 4446 693 l 4397 674 l 4346 655 l - 4294 637 l 4240 619 l 4184 603 l 4126 587 l 4067 571 l - 4005 557 l 3940 544 l 3873 532 l 3803 522 l 3731 513 l - 3656 505 l 3579 500 l 3500 496 l 3420 495 l 3340 496 l - 3262 500 l 3185 505 l 3111 513 l 3039 522 l 2970 532 l - 2904 544 l 2841 557 l 2780 571 l 2722 587 l 2666 603 l - 2611 619 l 2559 637 l 2508 655 l 2459 674 l 2412 693 l - 2365 713 l 2320 733 l 2277 753 l 2235 773 l 2194 794 l - 2155 814 l 2117 833 l 2082 853 l 2048 871 l 2017 888 l - 1988 905 l 1962 920 l 1938 934 l 1917 946 l 1900 957 l - 1885 966 l 1872 973 l 1863 979 l 1856 983 l - 1845 990 l gs col0 s gr gr - -% arrowhead -0 slj -n 1944 891 m 1859 981 l 1976 941 l 1944 891 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -2716 2322 m 2748 2373 l 2876 2291 l 2759 2331 l 2844 2241 l cp -eoclip -n 4950 1485 m 4949 1485 l 4947 1486 l 4942 1487 l 4936 1488 l 4926 1490 l - 4914 1493 l 4898 1497 l 4879 1501 l 4856 1506 l 4831 1512 l - 4802 1519 l 4771 1526 l 4737 1535 l 4702 1543 l 4664 1553 l - 4625 1562 l 4585 1573 l 4543 1584 l 4500 1595 l 4456 1607 l - 4410 1620 l 4363 1633 l 4315 1647 l 4266 1662 l 4215 1678 l - 4162 1694 l 4106 1712 l 4049 1731 l 3990 1752 l 3928 1773 l - 3865 1796 l 3800 1820 l 3735 1845 l 3667 1872 l 3601 1899 l - 3537 1925 l 3478 1951 l 3421 1976 l 3368 2000 l 3318 2023 l - 3271 2045 l 3227 2067 l 3185 2088 l 3145 2109 l 3107 2129 l - 3071 2148 l 3036 2167 l 3003 2186 l 2971 2204 l 2941 2221 l - 2913 2238 l 2886 2253 l 2862 2268 l 2839 2282 l 2819 2294 l - 2801 2305 l 2786 2314 l 2774 2322 l 2764 2328 l 2756 2333 l - - 2745 2340 l gs col0 s gr gr - -% arrowhead -0 slj -n 2844 2241 m 2759 2331 l 2876 2291 l 2844 2241 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -1926 1452 m 1914 1511 l 2062 1542 l 1951 1488 l 2074 1483 l cp -eoclip -n 4095 2340 m 4094 2339 l 4093 2338 l 4089 2336 l 4085 2333 l 4078 2328 l - 4068 2322 l 4057 2314 l 4043 2305 l 4026 2294 l 4008 2282 l - 3987 2268 l 3964 2253 l 3939 2238 l 3912 2221 l 3884 2204 l - 3854 2186 l 3823 2167 l 3790 2148 l 3756 2129 l 3720 2109 l - 3682 2088 l 3642 2067 l 3600 2045 l 3555 2023 l 3507 2000 l - 3456 1976 l 3401 1951 l 3343 1925 l 3281 1899 l 3217 1872 l - 3150 1845 l 3086 1820 l 3023 1796 l 2960 1773 l 2899 1752 l - 2841 1731 l 2784 1712 l 2729 1694 l 2676 1678 l 2625 1662 l - 2575 1647 l 2527 1633 l 2481 1620 l 2435 1607 l 2391 1595 l - 2347 1584 l 2305 1573 l 2264 1562 l 2225 1553 l 2187 1543 l - 2150 1535 l 2117 1526 l 2085 1519 l 2056 1512 l 2030 1506 l - 2007 1501 l 1988 1497 l 1972 1493 l 1959 1490 l 1949 1488 l - - 1935 1485 l gs col0 s gr gr - -% arrowhead -0 slj -n 2074 1483 m 1951 1488 l 2062 1542 l 2074 1483 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3705 2685 m 3705 2625 l 3554 2625 l 3674 2655 l 3554 2685 l cp -eoclip -n 3195 2655 m - 3690 2655 l gs col0 s gr gr - -% arrowhead -0 slj -n 3554 2685 m 3674 2655 l 3554 2625 l 3554 2685 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5286 2450 m 5304 2508 l 5448 2462 l 5325 2470 l 5430 2405 l cp -eoclip -n 5310 2835 m 5313 2836 l 5318 2838 l 5328 2841 l 5342 2845 l 5361 2850 l - 5383 2856 l 5407 2863 l 5434 2869 l 5461 2874 l 5489 2878 l - 5517 2881 l 5544 2881 l 5571 2880 l 5598 2874 l 5624 2866 l - 5648 2853 l 5670 2835 l 5686 2816 l 5699 2794 l 5709 2773 l - 5716 2752 l 5721 2733 l 5725 2715 l 5727 2699 l 5729 2684 l - 5730 2669 l 5730 2655 l 5730 2641 l 5729 2626 l 5727 2611 l - 5725 2595 l 5721 2577 l 5716 2558 l 5709 2537 l 5699 2516 l - 5686 2494 l 5670 2475 l 5648 2457 l 5624 2444 l 5598 2436 l - 5571 2430 l 5544 2429 l 5517 2429 l 5489 2432 l 5461 2436 l - 5434 2441 l 5407 2447 l 5383 2454 l 5361 2460 l 5342 2465 l - - 5310 2475 l gs col0 s gr gr - -% arrowhead -0 slj -n 5430 2405 m 5325 2470 l 5448 2462 l 5430 2405 l cp gs 0.00 setgray ef gr col0 s -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/fsm-idle.eps --- a/documentation/images/fsm-idle.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,479 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: fsm-idle.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Wed Jul 19 16:13:27 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 391 279 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def -/col33 {0.000 0.000 0.000 srgb} bind def - -end -save -newpath 0 279 moveto 0 0 lineto 391 0 lineto 391 279 lineto closepath clip newpath --73.9 314.6 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 4275 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 1305 m -gs 1 -1 sc (START) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4282 3503 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4282 3465 m -gs 1 -1 sc (READ) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -4282 3690 m -gs 1 -1 sc (STATES) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 2482 4628 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -2482 4590 m -gs 1 -1 sc (CONFIGURE) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -2482 4815 m -gs 1 -1 sc (SLAVES) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 2378 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 2423 m -gs 1 -1 sc (BROADCAST) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 6082 4628 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -6082 4590 m -gs 1 -1 sc (WRITE) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -6082 4815 m -gs 1 -1 sc (EEPROM) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 6068 1838 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -6068 1800 m -gs 1 -1 sc (SCAN FOR) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -6068 2025 m -gs 1 -1 sc (SLAVES) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 3510 675 101 101 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -3671 1018 m 3723 987 l 3645 857 l 3682 976 l 3594 888 l cp -eoclip -n 3555 765 m - 3690 990 l gs 0.00 setgray ef gr gs col0 s gr gr - -% arrowhead -0 slj -n 3594 888 m 3682 976 l 3645 857 l 3594 888 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 2040 m 4305 2040 l 4305 1889 l 4275 2009 l 4245 1889 l cp -eoclip -n 4275 1620 m - 4275 2025 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 1889 m 4275 2009 l 4305 1889 l 4245 1889 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 3165 m 4305 3165 l 4305 3014 l 4275 3134 l 4245 3014 l cp -eoclip -n 4275 2745 m - 4275 3150 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 3014 m 4275 3134 l 4305 3014 l 4245 3014 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3517 3362 m 3532 3304 l 3385 3266 l 3494 3326 l 3370 3325 l cp -eoclip -n 3510 3690 m 3508 3691 l 3502 3692 l 3493 3694 l 3479 3698 l 3461 3702 l - 3439 3707 l 3413 3713 l 3385 3718 l 3355 3724 l 3325 3729 l - 3293 3733 l 3262 3735 l 3231 3737 l 3201 3736 l 3170 3733 l - 3140 3727 l 3112 3718 l 3084 3706 l 3060 3690 l 3041 3672 l - 3026 3653 l 3015 3634 l 3005 3615 l 2999 3597 l 2994 3580 l - 2990 3564 l 2988 3550 l 2986 3536 l 2985 3523 l 2985 3510 l - 2985 3497 l 2986 3484 l 2988 3470 l 2990 3456 l 2994 3440 l - 2999 3423 l 3005 3405 l 3015 3386 l 3026 3367 l 3041 3348 l - 3060 3330 l 3084 3314 l 3112 3302 l 3140 3293 l 3170 3287 l - 3201 3284 l 3231 3283 l 3262 3285 l 3293 3287 l 3325 3291 l - 3355 3296 l 3385 3302 l 3413 3307 l 3439 3313 l 3461 3318 l - 3479 3322 l - 3510 3330 l gs col0 s gr gr - -% arrowhead -0 slj -n 3370 3325 m 3494 3326 l 3385 3266 l 3370 3325 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -4383 920 m 4442 908 l 4411 760 l 4407 884 l 4353 772 l cp -eoclip -n 4770 945 m 4771 942 l 4773 935 l 4777 924 l 4782 907 l 4787 887 l - 4794 863 l 4800 837 l 4805 810 l 4809 782 l 4811 755 l - 4810 728 l 4807 702 l 4799 676 l 4787 652 l 4770 630 l - 4751 614 l 4730 603 l 4710 594 l 4691 588 l 4673 584 l - 4657 582 l 4643 581 l 4629 581 l 4616 581 l 4603 582 l - 4590 584 l 4575 586 l 4558 589 l 4540 593 l 4520 599 l - 4499 606 l 4476 617 l 4455 630 l 4437 646 l 4422 665 l - 4411 684 l 4404 704 l 4399 725 l 4396 745 l 4394 766 l - 4395 787 l 4396 807 l 4398 827 l 4400 846 l 4403 862 l - 4405 876 l - 4410 900 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 4353 772 m 4407 884 l 4411 760 l 4353 772 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3212 4435 m 3240 4488 l 3374 4417 l 3254 4447 l 3346 4364 l cp -eoclip -n 3825 3825 m 3825 3826 l 3825 3829 l 3825 3833 l 3825 3840 l 3825 3849 l - 3825 3860 l 3824 3873 l 3823 3888 l 3821 3904 l 3818 3921 l - 3813 3939 l 3807 3959 l 3800 3979 l 3789 4002 l 3777 4025 l - 3761 4051 l 3741 4079 l 3718 4109 l 3690 4140 l 3662 4168 l - 3633 4196 l 3604 4222 l 3575 4246 l 3546 4268 l 3518 4289 l - 3490 4308 l 3463 4327 l 3435 4344 l 3408 4361 l 3382 4376 l - 3357 4391 l 3333 4405 l 3311 4417 l 3291 4428 l 3275 4437 l - 3261 4444 l - 3240 4455 l gs col0 s gr gr - -% arrowhead -0 slj -n 3346 4364 m 3254 4447 l 3374 4417 l 3346 4364 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -3946 1587 m 3906 1542 l 3793 1643 l 3903 1586 l 3833 1688 l cp -eoclip -n 3870 2070 m 3869 2069 l 3866 2067 l 3860 2063 l 3853 2057 l 3843 2050 l - 3832 2041 l 3820 2030 l 3807 2018 l 3794 2005 l 3781 1991 l - 3770 1975 l 3759 1959 l 3750 1940 l 3742 1920 l 3737 1897 l - 3734 1872 l 3735 1845 l 3739 1818 l 3747 1791 l 3756 1766 l - 3768 1743 l 3781 1721 l 3795 1701 l 3809 1682 l 3825 1664 l - 3840 1647 l 3856 1631 l 3871 1616 l 3884 1603 l 3895 1593 l - - 3915 1575 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 3833 1688 m 3903 1586 l 3793 1643 l 3833 1688 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -3677 1494 m 3633 1453 l 3530 1564 l 3634 1497 l 3574 1605 l cp -eoclip -n 3600 3285 m 3599 3284 l 3597 3282 l 3593 3278 l 3586 3273 l 3577 3264 l - 3566 3254 l 3552 3240 l 3535 3224 l 3516 3205 l 3495 3184 l - 3472 3161 l 3448 3135 l 3424 3108 l 3399 3080 l 3374 3050 l - 3349 3018 l 3325 2985 l 3301 2951 l 3279 2915 l 3257 2877 l - 3237 2838 l 3218 2796 l 3201 2752 l 3186 2705 l 3173 2656 l - 3162 2603 l 3155 2547 l 3151 2490 l 3150 2430 l 3153 2374 l - 3160 2318 l 3169 2264 l 3181 2212 l 3195 2163 l 3211 2115 l - 3228 2070 l 3247 2026 l 3267 1984 l 3289 1944 l 3311 1905 l - 3334 1868 l 3358 1832 l 3383 1797 l 3408 1763 l 3433 1730 l - 3458 1698 l 3482 1668 l 3506 1640 l 3528 1613 l 3550 1589 l - 3569 1567 l 3587 1548 l 3602 1531 l 3615 1517 l 3625 1506 l - 3633 1498 l - 3645 1485 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 3574 1605 m 3634 1497 l 3530 1564 l 3574 1605 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5112 1231 m 5117 1291 l 5268 1276 l 5146 1258 l 5262 1216 l cp -eoclip -n 5625 1530 m 5624 1528 l 5623 1523 l 5619 1516 l 5615 1505 l 5609 1491 l - 5601 1475 l 5593 1457 l 5582 1438 l 5571 1419 l 5557 1400 l - 5541 1381 l 5523 1362 l 5501 1342 l 5475 1323 l 5445 1305 l - 5413 1290 l 5382 1278 l 5352 1269 l 5324 1262 l 5297 1258 l - 5271 1256 l 5245 1255 l 5221 1254 l 5199 1255 l 5179 1256 l - 5161 1257 l - 5130 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 5262 1216 m 5146 1258 l 5268 1276 l 5262 1216 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5658 2156 m 5602 2135 l 5549 2277 l 5619 2175 l 5605 2297 l cp -eoclip -n 5130 2385 m 5133 2386 l 5138 2387 l 5148 2390 l 5161 2393 l 5179 2397 l - 5199 2402 l 5221 2406 l 5245 2410 l 5271 2413 l 5297 2414 l - 5324 2414 l 5352 2411 l 5382 2406 l 5413 2397 l 5445 2385 l - 5475 2369 l 5501 2352 l 5523 2334 l 5541 2315 l 5557 2296 l - 5571 2276 l 5582 2257 l 5593 2237 l 5601 2219 l 5609 2202 l - 5615 2187 l - 5625 2160 l gs col0 s gr gr - -% arrowhead -0 slj -n 5605 2297 m 5619 2175 l 5549 2277 l 5605 2297 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5324 4488 m 5352 4435 l 5218 4364 l 5311 4447 l 5190 4417 l cp -eoclip -n 4740 3825 m 4740 3826 l 4740 3829 l 4740 3833 l 4740 3840 l 4740 3849 l - 4740 3860 l 4741 3873 l 4742 3888 l 4744 3904 l 4747 3921 l - 4752 3939 l 4758 3959 l 4765 3979 l 4776 4002 l 4788 4025 l - 4804 4051 l 4824 4079 l 4847 4109 l 4875 4140 l 4903 4168 l - 4932 4196 l 4961 4222 l 4990 4246 l 5019 4268 l 5047 4289 l - 5075 4308 l 5102 4327 l 5130 4344 l 5157 4361 l 5183 4376 l - 5208 4391 l 5232 4405 l 5254 4417 l 5274 4428 l 5290 4437 l - 5304 4444 l - 5325 4455 l gs col0 s gr gr - -% arrowhead -0 slj -n 5190 4417 m 5311 4447 l 5218 4364 l 5190 4417 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5235 4665 m 5235 4605 l 5084 4605 l 5204 4635 l 5084 4665 l cp -eoclip -n 3330 4635 m - 5220 4635 l gs col0 s gr gr - -% arrowhead -0 slj -n 5084 4665 m 5204 4635 l 5084 4605 l 5084 4665 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -1717 4487 m 1732 4429 l 1585 4391 l 1694 4451 l 1570 4450 l cp -eoclip -n 1710 4815 m 1708 4816 l 1702 4817 l 1693 4819 l 1679 4823 l 1661 4827 l - 1639 4832 l 1613 4838 l 1585 4843 l 1555 4849 l 1525 4854 l - 1493 4858 l 1462 4860 l 1431 4862 l 1401 4861 l 1370 4858 l - 1340 4852 l 1312 4843 l 1284 4831 l 1260 4815 l 1241 4797 l - 1226 4778 l 1215 4759 l 1205 4740 l 1199 4722 l 1194 4705 l - 1190 4689 l 1188 4675 l 1186 4661 l 1185 4648 l 1185 4635 l - 1185 4622 l 1186 4609 l 1188 4595 l 1190 4581 l 1194 4565 l - 1199 4548 l 1205 4530 l 1215 4511 l 1226 4492 l 1241 4473 l - 1260 4455 l 1284 4439 l 1312 4427 l 1340 4418 l 1370 4412 l - 1401 4409 l 1431 4408 l 1462 4410 l 1493 4412 l 1525 4416 l - 1555 4421 l 1585 4427 l 1613 4432 l 1639 4438 l 1661 4443 l - 1679 4447 l - 1710 4455 l gs col0 s gr gr - -% arrowhead -0 slj -n 1570 4450 m 1694 4451 l 1585 4391 l 1570 4450 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3445 1417 m 3422 1361 l 3282 1417 l 3405 1401 l 3304 1473 l cp -eoclip -n 2475 4275 m 2475 4274 l 2475 4272 l 2475 4268 l 2475 4262 l 2475 4253 l - 2475 4241 l 2475 4226 l 2475 4208 l 2475 4186 l 2475 4160 l - 2475 4130 l 2475 4098 l 2476 4061 l 2476 4022 l 2477 3979 l - 2478 3934 l 2478 3887 l 2480 3837 l 2481 3786 l 2483 3733 l - 2485 3679 l 2487 3623 l 2490 3567 l 2493 3510 l 2497 3452 l - 2501 3393 l 2505 3334 l 2510 3274 l 2516 3213 l 2523 3152 l - 2530 3090 l 2538 3028 l 2547 2965 l 2557 2900 l 2568 2835 l - 2580 2769 l 2593 2702 l 2608 2634 l 2624 2566 l 2641 2498 l - 2659 2429 l 2679 2361 l 2700 2295 l 2729 2212 l 2758 2135 l - 2788 2062 l 2819 1996 l 2849 1935 l 2879 1879 l 2909 1829 l - 2939 1783 l 2968 1742 l 2997 1704 l 3026 1670 l 3055 1638 l - 3083 1610 l 3111 1584 l 3139 1560 l 3167 1539 l 3194 1519 l - 3220 1501 l 3245 1484 l 3270 1469 l 3293 1456 l 3315 1444 l - 3335 1434 l 3353 1425 l 3369 1417 l 3382 1411 l 3394 1406 l - 3403 1402 l 3410 1399 l - 3420 1395 l gs col0 s gr gr - -% arrowhead -0 slj -n 3304 1473 m 3405 1401 l 3282 1417 l 3304 1473 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5065 1097 m 5074 1156 l 5224 1135 l 5101 1123 l 5215 1076 l cp -eoclip -n 6660 4365 m 6660 4364 l 6661 4362 l 6663 4359 l 6666 4353 l 6670 4344 l - 6676 4333 l 6683 4318 l 6692 4300 l 6703 4278 l 6715 4253 l - 6729 4223 l 6746 4189 l 6763 4152 l 6783 4111 l 6804 4066 l - 6826 4017 l 6850 3966 l 6875 3911 l 6900 3854 l 6927 3794 l - 6954 3732 l 6981 3668 l 7009 3603 l 7036 3536 l 7064 3468 l - 7091 3399 l 7117 3329 l 7143 3259 l 7168 3188 l 7192 3116 l - 7215 3045 l 7237 2973 l 7258 2901 l 7277 2829 l 7295 2757 l - 7311 2685 l 7325 2613 l 7337 2540 l 7348 2468 l 7356 2395 l - 7361 2322 l 7364 2250 l 7364 2177 l 7362 2104 l 7356 2032 l - 7347 1960 l 7334 1889 l 7318 1819 l 7297 1750 l 7273 1684 l - 7245 1620 l 7210 1555 l 7171 1493 l 7128 1437 l 7082 1384 l - 7033 1337 l 6983 1293 l 6930 1254 l 6876 1220 l 6820 1188 l - 6763 1161 l 6704 1137 l 6645 1116 l 6585 1098 l 6524 1082 l - 6462 1070 l 6399 1059 l 6335 1051 l 6271 1044 l 6207 1039 l - 6142 1036 l 6077 1035 l 6012 1035 l 5947 1036 l 5882 1038 l - 5818 1041 l 5755 1045 l 5693 1049 l 5633 1054 l 5574 1060 l - 5518 1066 l 5464 1072 l 5413 1078 l 5365 1084 l 5321 1089 l - 5281 1095 l 5244 1100 l 5211 1105 l 5183 1109 l 5158 1113 l - 5138 1116 l 5121 1119 l 5109 1121 l 5099 1123 l - 5085 1125 l gs col0 s gr gr - -% arrowhead -0 slj -n 5215 1076 m 5101 1123 l 5224 1135 l 5215 1076 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6817 4429 m 6832 4487 l 6979 4450 l 6856 4451 l 6964 4391 l cp -eoclip -n 6840 4815 m 6842 4816 l 6848 4817 l 6857 4819 l 6871 4823 l 6889 4827 l - 6911 4832 l 6937 4838 l 6965 4843 l 6995 4849 l 7025 4854 l - 7057 4858 l 7088 4860 l 7119 4862 l 7149 4861 l 7180 4858 l - 7210 4852 l 7238 4843 l 7266 4831 l 7290 4815 l 7309 4797 l - 7324 4778 l 7335 4759 l 7345 4740 l 7351 4722 l 7356 4705 l - 7360 4689 l 7362 4675 l 7364 4661 l 7365 4648 l 7365 4635 l - 7365 4622 l 7364 4609 l 7362 4595 l 7360 4581 l 7356 4565 l - 7351 4548 l 7345 4530 l 7335 4511 l 7324 4492 l 7309 4473 l - 7290 4455 l 7266 4439 l 7238 4427 l 7210 4418 l 7180 4412 l - 7149 4409 l 7119 4408 l 7088 4410 l 7057 4412 l 7025 4416 l - 6995 4421 l 6965 4427 l 6937 4432 l 6911 4438 l 6889 4443 l - 6871 4447 l - 6840 4455 l gs col0 s gr gr - -% arrowhead -0 slj -n 6964 4391 m 6856 4451 l 6979 4450 l 6964 4391 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6267 1492 m 6325 1506 l 6360 1359 l 6304 1469 l 6302 1345 l cp -eoclip -n 6615 1575 m 6616 1572 l 6619 1566 l 6623 1555 l 6629 1539 l 6636 1519 l - 6644 1496 l 6652 1471 l 6659 1445 l 6666 1418 l 6671 1391 l - 6675 1364 l 6676 1337 l 6674 1310 l 6669 1284 l 6660 1260 l - 6650 1243 l 6638 1230 l 6627 1219 l 6615 1210 l 6604 1203 l - 6595 1198 l 6586 1195 l 6578 1192 l 6570 1190 l 6562 1189 l - 6555 1188 l 6547 1187 l 6538 1187 l 6528 1187 l 6516 1188 l - 6503 1190 l 6488 1193 l 6471 1198 l 6453 1205 l 6435 1215 l - 6413 1231 l 6394 1250 l 6378 1271 l 6364 1294 l 6352 1317 l - 6342 1340 l 6333 1364 l 6325 1388 l 6318 1411 l 6313 1432 l - 6308 1451 l - 6300 1485 l gs col0 s gr gr - -% arrowhead -0 slj -n 6302 1345 m 6304 1469 l 6360 1359 l 6302 1345 l cp gs 0.00 setgray ef gr col0 s -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/fsm-op.eps --- a/documentation/images/fsm-op.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,524 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: /home/fp/diplom/diplom/bilder/fsm-op.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Wed Jul 19 12:25:28 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 394 421 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 421 moveto 0 0 lineto 394 0 lineto 394 421 lineto closepath clip newpath --73.9 456.4 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 4275 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 1305 m -gs 1 -1 sc (START) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 2378 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 2423 m -gs 1 -1 sc (BROADCAST) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4282 3503 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4282 3465 m -gs 1 -1 sc (READ) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -4282 3690 m -gs 1 -1 sc (STATES) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 6097 4628 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -6097 4590 m -gs 1 -1 sc (VALIDATE) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -6097 4815 m -gs 1 -1 sc (VENDOR) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 6112 5753 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -6112 5715 m -gs 1 -1 sc (VALIDATE) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -6112 5925 m -gs 1 -1 sc (PRODUCT) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 6127 6878 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -6127 6840 m -gs 1 -1 sc (REWRITE) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -6127 7050 m -gs 1 -1 sc (ADDRESSES) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 2467 4628 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -2467 4590 m -gs 1 -1 sc (CONFIGURE) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -2467 4800 m -gs 1 -1 sc (SLAVES) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 3510 675 101 101 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -3671 1018 m 3723 987 l 3645 857 l 3682 976 l 3594 888 l cp -eoclip -n 3555 765 m - 3690 990 l gs 0.00 setgray ef gr gs col0 s gr gr - -% arrowhead -0 slj -n 3594 888 m 3682 976 l 3645 857 l 3594 888 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 2040 m 4305 2040 l 4305 1889 l 4275 2009 l 4245 1889 l cp -eoclip -n 4275 1620 m - 4275 2025 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 1889 m 4275 2009 l 4305 1889 l 4245 1889 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 3165 m 4305 3165 l 4305 3014 l 4275 3134 l 4245 3014 l cp -eoclip -n 4275 2745 m - 4275 3150 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 3014 m 4275 3134 l 4305 3014 l 4245 3014 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3212 4435 m 3241 4488 l 3373 4415 l 3254 4447 l 3344 4362 l cp -eoclip -n 3825 3825 m 3824 3826 l 3823 3830 l 3821 3835 l 3817 3844 l 3813 3855 l - 3807 3869 l 3799 3885 l 3791 3904 l 3781 3923 l 3771 3944 l - 3759 3966 l 3746 3989 l 3732 4013 l 3716 4038 l 3698 4065 l - 3678 4093 l 3654 4122 l 3628 4153 l 3600 4185 l 3570 4216 l - 3541 4244 l 3512 4271 l 3485 4294 l 3459 4315 l 3434 4334 l - 3410 4352 l 3387 4368 l 3364 4382 l 3343 4396 l 3322 4408 l - 3303 4420 l 3286 4429 l 3271 4438 l 3260 4444 l - 3240 4455 l gs col0 s gr gr - -% arrowhead -0 slj -n 3344 4362 m 3254 4447 l 3373 4415 l 3344 4362 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5289 4488 m 5318 4435 l 5186 4362 l 5277 4447 l 5157 4415 l cp -eoclip -n 4706 3825 m 4707 3826 l 4708 3830 l 4710 3835 l 4714 3844 l 4718 3855 l - 4724 3869 l 4732 3885 l 4740 3904 l 4750 3923 l 4760 3944 l - 4772 3966 l 4785 3989 l 4799 4013 l 4815 4038 l 4833 4065 l - 4853 4093 l 4877 4122 l 4903 4153 l 4931 4185 l 4961 4216 l - 4990 4244 l 5019 4271 l 5046 4294 l 5072 4315 l 5097 4334 l - 5121 4352 l 5144 4368 l 5167 4382 l 5188 4396 l 5209 4408 l - 5228 4420 l 5245 4429 l 5260 4438 l 5271 4444 l - 5291 4455 l gs col0 s gr gr - -% arrowhead -0 slj -n 5157 4415 m 5277 4447 l 5186 4362 l 5157 4415 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5653 5474 m 5703 5440 l 5619 5315 l 5661 5432 l 5569 5348 l cp -eoclip -n 5715 4950 m 5713 4951 l 5710 4954 l 5704 4960 l 5696 4967 l 5685 4977 l - 5673 4989 l 5660 5002 l 5647 5017 l 5634 5033 l 5622 5051 l - 5611 5070 l 5600 5092 l 5591 5117 l 5584 5145 l 5580 5175 l - 5579 5206 l 5581 5235 l 5585 5263 l 5591 5288 l 5598 5311 l - 5607 5333 l 5616 5354 l 5626 5373 l 5636 5391 l 5646 5407 l - 5654 5421 l - 5670 5445 l gs col0 s gr gr - -% arrowhead -0 slj -n 5569 5348 m 5661 5432 l 5619 5315 l 5569 5348 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6586 4920 m 6536 4954 l 6620 5079 l 6579 4963 l 6670 5046 l cp -eoclip -n 6525 5445 m 6527 5444 l 6530 5441 l 6536 5435 l 6544 5428 l 6555 5418 l - 6567 5406 l 6580 5393 l 6593 5378 l 6606 5362 l 6618 5344 l - 6629 5325 l 6640 5303 l 6649 5278 l 6656 5250 l 6660 5220 l - 6661 5189 l 6659 5160 l 6655 5132 l 6649 5107 l 6642 5084 l - 6633 5062 l 6624 5041 l 6614 5022 l 6604 5004 l 6594 4988 l - 6586 4974 l - 6570 4950 l gs col0 s gr gr - -% arrowhead -0 slj -n 6670 5046 m 6579 4963 l 6620 5079 l 6670 5046 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6090 6540 m 6150 6540 l 6150 6389 l 6120 6509 l 6090 6389 l cp -eoclip -n 6120 6120 m - 6120 6525 l gs col0 s gr gr - -% arrowhead -0 slj -n 6090 6389 m 6120 6509 l 6150 6389 l 6090 6389 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3490 1417 m 3467 1361 l 3327 1417 l 3450 1401 l 3349 1473 l cp -eoclip -n 2475 4275 m 2475 4274 l 2475 4272 l 2475 4268 l 2475 4262 l 2475 4253 l - 2476 4241 l 2476 4226 l 2477 4208 l 2477 4186 l 2478 4160 l - 2479 4130 l 2480 4098 l 2481 4061 l 2483 4022 l 2485 3979 l - 2486 3934 l 2489 3887 l 2491 3837 l 2494 3786 l 2497 3733 l - 2500 3679 l 2504 3623 l 2508 3567 l 2513 3510 l 2518 3452 l - 2523 3393 l 2529 3334 l 2536 3274 l 2543 3213 l 2551 3152 l - 2560 3090 l 2569 3028 l 2579 2965 l 2591 2900 l 2603 2835 l - 2616 2769 l 2631 2702 l 2647 2634 l 2664 2566 l 2682 2498 l - 2702 2429 l 2723 2361 l 2745 2295 l 2775 2212 l 2805 2135 l - 2837 2062 l 2868 1996 l 2899 1935 l 2929 1879 l 2960 1829 l - 2989 1783 l 3019 1742 l 3048 1704 l 3077 1670 l 3105 1638 l - 3134 1610 l 3161 1584 l 3189 1560 l 3216 1539 l 3243 1519 l - 3269 1501 l 3294 1484 l 3318 1469 l 3341 1456 l 3362 1444 l - 3382 1434 l 3399 1425 l 3415 1417 l 3428 1411 l 3439 1406 l - 3448 1402 l 3455 1399 l - 3465 1395 l gs col0 s gr gr - -% arrowhead -0 slj -n 3349 1473 m 3450 1401 l 3327 1417 l 3349 1473 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -4778 1542 m 4738 1587 l 4851 1688 l 4782 1586 l 4891 1643 l cp -eoclip -n 4815 2070 m 4816 2069 l 4819 2067 l 4825 2063 l 4832 2057 l 4842 2050 l - 4853 2041 l 4865 2030 l 4878 2018 l 4891 2005 l 4904 1991 l - 4915 1975 l 4926 1959 l 4935 1940 l 4943 1920 l 4948 1897 l - 4951 1872 l 4950 1845 l 4946 1818 l 4938 1791 l 4929 1766 l - 4917 1743 l 4904 1721 l 4890 1701 l 4876 1682 l 4860 1664 l - 4845 1647 l 4829 1631 l 4814 1616 l 4801 1603 l 4790 1593 l - - 4770 1575 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 4891 1643 m 4782 1586 l 4851 1688 l 4891 1643 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -4916 1453 m 4872 1494 l 4975 1605 l 4916 1497 l 5019 1564 l cp -eoclip -n 4950 3285 m 4951 3284 l 4953 3282 l 4957 3278 l 4964 3273 l 4973 3264 l - 4984 3254 l 4998 3240 l 5015 3224 l 5034 3205 l 5055 3184 l - 5078 3161 l 5102 3135 l 5126 3108 l 5151 3080 l 5176 3050 l - 5201 3018 l 5225 2985 l 5249 2951 l 5271 2915 l 5293 2877 l - 5313 2838 l 5332 2796 l 5349 2752 l 5364 2705 l 5377 2656 l - 5388 2603 l 5395 2547 l 5399 2490 l 5400 2430 l 5397 2374 l - 5390 2318 l 5381 2264 l 5369 2212 l 5355 2163 l 5339 2115 l - 5322 2070 l 5303 2026 l 5283 1984 l 5261 1944 l 5239 1905 l - 5216 1868 l 5192 1832 l 5167 1797 l 5142 1763 l 5117 1730 l - 5092 1698 l 5068 1668 l 5044 1640 l 5022 1613 l 5000 1589 l - 4981 1567 l 4963 1548 l 4948 1531 l 4935 1517 l 4925 1506 l - 4917 1498 l - 4905 1485 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 5019 1564 m 4916 1497 l 4975 1605 l 5019 1564 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -5048 1407 m 5008 1452 l 5121 1553 l 5052 1451 l 5161 1508 l cp -eoclip -n 6120 4275 m 6120 4274 l 6120 4272 l 6120 4268 l 6120 4262 l 6120 4253 l - 6120 4242 l 6120 4227 l 6119 4209 l 6119 4187 l 6118 4162 l - 6118 4134 l 6117 4102 l 6116 4068 l 6115 4030 l 6113 3991 l - 6111 3949 l 6109 3905 l 6106 3859 l 6103 3812 l 6100 3764 l - 6096 3714 l 6091 3664 l 6086 3612 l 6080 3559 l 6073 3505 l - 6066 3451 l 6057 3395 l 6048 3337 l 6037 3279 l 6026 3219 l - 6013 3157 l 5998 3094 l 5982 3029 l 5965 2962 l 5945 2894 l - 5924 2824 l 5901 2753 l 5876 2681 l 5850 2610 l 5819 2532 l - 5788 2457 l 5755 2385 l 5723 2317 l 5690 2253 l 5658 2192 l - 5626 2136 l 5594 2083 l 5563 2033 l 5532 1986 l 5501 1941 l - 5470 1899 l 5440 1859 l 5410 1821 l 5380 1785 l 5351 1750 l - 5322 1717 l 5293 1686 l 5265 1656 l 5238 1628 l 5212 1602 l - 5187 1577 l 5164 1554 l 5142 1533 l 5122 1515 l 5105 1498 l - 5089 1484 l 5076 1472 l 5065 1462 l 5056 1454 l 5050 1449 l - - 5040 1440 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 5161 1508 m 5052 1451 l 5121 1553 l 5161 1508 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3517 3362 m 3532 3304 l 3385 3266 l 3494 3326 l 3370 3325 l cp -eoclip -n 3510 3690 m 3508 3691 l 3502 3692 l 3493 3694 l 3479 3698 l 3461 3702 l - 3439 3707 l 3413 3713 l 3385 3718 l 3355 3724 l 3325 3729 l - 3293 3733 l 3262 3735 l 3231 3737 l 3201 3736 l 3170 3733 l - 3140 3727 l 3112 3718 l 3084 3706 l 3060 3690 l 3041 3672 l - 3026 3653 l 3015 3634 l 3005 3615 l 2999 3597 l 2994 3580 l - 2990 3564 l 2988 3550 l 2986 3536 l 2985 3523 l 2985 3510 l - 2985 3497 l 2986 3484 l 2988 3470 l 2990 3456 l 2994 3440 l - 2999 3423 l 3005 3405 l 3015 3386 l 3026 3367 l 3041 3348 l - 3060 3330 l 3084 3314 l 3112 3302 l 3140 3293 l 3170 3287 l - 3201 3284 l 3231 3283 l 3262 3285 l 3293 3287 l 3325 3291 l - 3355 3296 l 3385 3302 l 3413 3307 l 3439 3313 l 3461 3318 l - 3479 3322 l - 3510 3330 l gs col0 s gr gr - -% arrowhead -0 slj -n 3370 3325 m 3494 3326 l 3385 3266 l 3370 3325 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -4383 920 m 4442 908 l 4411 760 l 4407 884 l 4353 772 l cp -eoclip -n 4770 945 m 4771 942 l 4773 935 l 4777 924 l 4782 907 l 4787 887 l - 4794 863 l 4800 837 l 4805 810 l 4809 782 l 4811 755 l - 4810 728 l 4807 702 l 4799 676 l 4787 652 l 4770 630 l - 4751 614 l 4730 603 l 4710 594 l 4691 588 l 4673 584 l - 4657 582 l 4643 581 l 4629 581 l 4616 581 l 4603 582 l - 4590 584 l 4575 586 l 4558 589 l 4540 593 l 4520 599 l - 4499 606 l 4476 617 l 4455 630 l 4437 646 l 4422 665 l - 4411 684 l 4404 704 l 4399 725 l 4396 745 l 4394 766 l - 4395 787 l 4396 807 l 4398 827 l 4400 846 l 4403 862 l - 4405 876 l - 4410 900 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 4353 772 m 4407 884 l 4411 760 l 4353 772 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -5138 1317 m 5098 1362 l 5211 1463 l 5142 1361 l 5251 1418 l cp -eoclip -n 6840 5580 m 6840 5579 l 6841 5578 l 6842 5576 l 6845 5572 l 6848 5566 l - 6852 5558 l 6857 5548 l 6863 5536 l 6871 5521 l 6880 5503 l - 6889 5483 l 6900 5460 l 6912 5435 l 6925 5407 l 6938 5377 l - 6952 5345 l 6967 5310 l 6981 5274 l 6996 5236 l 7011 5195 l - 7026 5154 l 7040 5110 l 7053 5066 l 7066 5019 l 7079 4972 l - 7090 4923 l 7100 4873 l 7109 4821 l 7117 4767 l 7123 4712 l - 7128 4656 l 7130 4597 l 7131 4536 l 7130 4473 l 7127 4408 l - 7121 4339 l 7113 4269 l 7102 4195 l 7087 4118 l 7070 4038 l - 7049 3955 l 7025 3870 l 6997 3782 l 6965 3692 l 6930 3600 l - 6896 3519 l 6859 3437 l 6821 3357 l 6780 3278 l 6739 3200 l - 6696 3124 l 6653 3050 l 6608 2978 l 6564 2908 l 6518 2840 l - 6472 2773 l 6426 2708 l 6379 2645 l 6332 2584 l 6285 2524 l - 6238 2465 l 6190 2407 l 6142 2351 l 6094 2296 l 6046 2242 l - 5997 2188 l 5949 2136 l 5901 2085 l 5853 2035 l 5805 1986 l - 5757 1938 l 5710 1891 l 5664 1845 l 5618 1801 l 5574 1758 l - 5531 1717 l 5489 1677 l 5449 1640 l 5411 1604 l 5375 1571 l - 5341 1540 l 5309 1511 l 5280 1484 l 5254 1460 l 5230 1439 l - 5209 1420 l 5191 1404 l 5176 1390 l 5163 1379 l 5153 1370 l - 5145 1363 l 5139 1358 l - 5130 1350 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 5251 1418 m 5142 1361 l 5211 1463 l 5251 1418 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5086 1136 m 5057 1188 l 5189 1262 l 5099 1178 l 5218 1210 l cp -eoclip -n 6885 6705 m 6885 6704 l 6886 6703 l 6887 6700 l 6889 6696 l 6892 6690 l - 6896 6681 l 6901 6670 l 6907 6656 l 6914 6640 l 6922 6620 l - 6932 6597 l 6943 6571 l 6955 6542 l 6969 6510 l 6983 6474 l - 6999 6435 l 7016 6394 l 7033 6349 l 7052 6302 l 7071 6252 l - 7090 6200 l 7110 6145 l 7130 6089 l 7151 6030 l 7171 5970 l - 7191 5909 l 7211 5846 l 7231 5781 l 7250 5716 l 7269 5649 l - 7287 5581 l 7304 5512 l 7320 5443 l 7335 5372 l 7350 5300 l - 7363 5227 l 7375 5152 l 7385 5077 l 7394 5000 l 7402 4922 l - 7408 4842 l 7412 4761 l 7414 4678 l 7414 4594 l 7412 4508 l - 7408 4419 l 7401 4329 l 7392 4237 l 7380 4143 l 7365 4048 l - 7348 3951 l 7327 3853 l 7303 3754 l 7276 3654 l 7245 3555 l - 7211 3457 l 7175 3360 l 7136 3266 l 7095 3173 l 7052 3084 l - 7008 2998 l 6962 2914 l 6915 2834 l 6867 2756 l 6818 2681 l - 6769 2609 l 6719 2540 l 6668 2473 l 6616 2409 l 6564 2347 l - 6512 2287 l 6459 2229 l 6406 2173 l 6352 2119 l 6298 2066 l - 6244 2015 l 6189 1965 l 6134 1917 l 6080 1870 l 6025 1824 l - 5970 1780 l 5915 1736 l 5861 1695 l 5808 1654 l 5754 1615 l - 5702 1577 l 5651 1540 l 5601 1505 l 5553 1471 l 5506 1439 l - 5461 1409 l 5417 1380 l 5377 1353 l 5338 1328 l 5303 1305 l - 5269 1284 l 5239 1265 l 5212 1248 l 5187 1232 l 5166 1219 l - 5147 1208 l 5131 1198 l 5118 1190 l 5108 1184 l 5100 1179 l - 5094 1175 l - 5085 1170 l gs col0 s gr gr - -% arrowhead -0 slj -n 5218 1210 m 5099 1178 l 5189 1262 l 5218 1210 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -1717 4487 m 1732 4429 l 1585 4391 l 1694 4451 l 1570 4450 l cp -eoclip -n 1710 4815 m 1708 4816 l 1702 4817 l 1693 4819 l 1679 4823 l 1661 4827 l - 1639 4832 l 1613 4838 l 1585 4843 l 1555 4849 l 1525 4854 l - 1493 4858 l 1462 4860 l 1431 4862 l 1401 4861 l 1370 4858 l - 1340 4852 l 1312 4843 l 1284 4831 l 1260 4815 l 1241 4797 l - 1226 4778 l 1215 4759 l 1205 4740 l 1199 4722 l 1194 4705 l - 1190 4689 l 1188 4675 l 1186 4661 l 1185 4648 l 1185 4635 l - 1185 4622 l 1186 4609 l 1188 4595 l 1190 4581 l 1194 4565 l - 1199 4548 l 1205 4530 l 1215 4511 l 1226 4492 l 1241 4473 l - 1260 4455 l 1284 4439 l 1312 4427 l 1340 4418 l 1370 4412 l - 1401 4409 l 1431 4408 l 1462 4410 l 1493 4412 l 1525 4416 l - 1555 4421 l 1585 4427 l 1613 4432 l 1639 4438 l 1661 4443 l - 1679 4447 l - 1710 4455 l gs col0 s gr gr - -% arrowhead -0 slj -n 1570 4450 m 1694 4451 l 1585 4391 l 1570 4450 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5362 6737 m 5377 6679 l 5230 6641 l 5339 6701 l 5215 6700 l cp -eoclip -n 5355 7065 m 5353 7066 l 5347 7067 l 5338 7069 l 5324 7073 l 5306 7077 l - 5284 7082 l 5258 7088 l 5230 7093 l 5200 7099 l 5170 7104 l - 5138 7108 l 5107 7110 l 5076 7112 l 5046 7111 l 5015 7108 l - 4985 7102 l 4957 7093 l 4929 7081 l 4905 7065 l 4886 7047 l - 4871 7028 l 4860 7009 l 4850 6990 l 4844 6972 l 4839 6955 l - 4835 6939 l 4833 6925 l 4831 6911 l 4830 6898 l 4830 6885 l - 4830 6872 l 4831 6859 l 4833 6845 l 4835 6831 l 4839 6815 l - 4844 6798 l 4850 6780 l 4860 6761 l 4871 6742 l 4886 6723 l - 4905 6705 l 4929 6689 l 4957 6677 l 4985 6668 l 5015 6662 l - 5046 6659 l 5076 6658 l 5107 6660 l 5138 6662 l 5170 6666 l - 5200 6671 l 5230 6677 l 5258 6682 l 5284 6688 l 5306 6693 l - 5324 6697 l - 5355 6705 l gs col0 s gr gr - -% arrowhead -0 slj -n 5215 6700 m 5339 6701 l 5230 6641 l 5215 6700 l cp gs 0.00 setgray ef gr col0 s -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/fsm-sii.eps --- a/documentation/images/fsm-sii.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,376 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: fsm-sii.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Wed Jul 19 12:40:51 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 529 201 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 201 moveto 0 0 lineto 529 0 lineto 529 201 lineto closepath clip newpath --5.2 236.5 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 3375 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -3375 1305 m -gs 1 -1 sc (READ_CHECK) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 5490 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -5490 1305 m -gs 1 -1 sc (READ_FETCH) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 1260 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -1260 1305 m -gs 1 -1 sc (READ_START) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 7605 2115 855 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 7605 2116 748 315 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -7605 2160 m -gs 1 -1 sc (END) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 1260 3015 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -1260 3060 m -gs 1 -1 sc (WRITE_START) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 3375 3015 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -3375 3060 m -gs 1 -1 sc (WRITE_CHECK) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 5490 3015 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -5490 3060 m -gs 1 -1 sc (WRITE_CHECK2) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4455 2115 855 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 4455 2108 765 322 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4455 2160 m -gs 1 -1 sc (ERROR) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 495 675 101 101 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -656 1018 m 708 987 l 630 857 l 667 976 l 579 888 l cp -eoclip -n 540 765 m - 675 990 l gs 0.00 setgray ef gr gs col0 s gr gr - -% arrowhead -0 slj -n 579 888 m 667 976 l 630 857 l 579 888 l cp gs 0.00 setgray ef gr col0 s -% Ellipse -n 495 2430 101 101 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -656 2773 m 708 2742 l 630 2612 l 667 2731 l 579 2643 l cp -eoclip -n 540 2520 m - 675 2745 l gs 0.00 setgray ef gr gs col0 s gr gr - -% arrowhead -0 slj -n 579 2643 m 667 2731 l 630 2612 l 579 2643 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -2535 1290 m 2535 1230 l 2384 1230 l 2504 1260 l 2384 1290 l cp -eoclip -n 2115 1260 m - 2520 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 2384 1290 m 2504 1260 l 2384 1230 l 2384 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4650 1290 m 4650 1230 l 4499 1230 l 4619 1260 l 4499 1290 l cp -eoclip -n 4230 1260 m - 4635 1260 l gs col0 s gr gr - -% arrowhead -0 slj -n 4499 1290 m 4619 1260 l 4499 1230 l 4499 1290 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -2535 3045 m 2535 2985 l 2384 2985 l 2504 3015 l 2384 3045 l cp -eoclip -n 2115 3015 m - 2520 3015 l gs col0 s gr gr - -% arrowhead -0 slj -n 2384 3045 m 2504 3015 l 2384 2985 l 2384 3045 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4650 3045 m 4650 2985 l 4499 2985 l 4619 3015 l 4499 3045 l cp -eoclip -n 4230 3015 m - 4635 3015 l gs col0 s gr gr - -% arrowhead -0 slj -n 4499 3045 m 4619 3015 l 4499 2985 l 4499 3045 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -3746 1966 m 3753 1906 l 3602 1890 l 3719 1933 l 3596 1950 l cp -eoclip -n 3375 1620 m 3375 1623 l 3375 1629 l 3376 1639 l 3377 1653 l 3378 1670 l - 3381 1689 l 3384 1709 l 3390 1730 l 3398 1752 l 3408 1775 l - 3423 1798 l 3441 1822 l 3465 1845 l 3489 1863 l 3513 1879 l - 3537 1892 l 3561 1902 l 3584 1910 l 3607 1916 l 3629 1921 l - 3651 1925 l 3671 1928 l 3690 1931 l 3706 1932 l - 3735 1935 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 3596 1950 m 3719 1933 l 3602 1890 l 3596 1950 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5201 1906 m 5208 1966 l 5358 1949 l 5236 1933 l 5351 1889 l cp -eoclip -n 5490 1620 m 5490 1623 l 5491 1629 l 5492 1639 l 5494 1653 l 5495 1670 l - 5496 1689 l 5495 1709 l 5494 1730 l 5490 1752 l 5484 1775 l - 5475 1798 l 5462 1822 l 5445 1845 l 5424 1866 l 5402 1883 l - 5380 1896 l 5358 1907 l 5336 1914 l 5314 1921 l 5293 1925 l - 5273 1929 l 5255 1931 l - 5220 1935 l gs col0 s gr gr - -% arrowhead -0 slj -n 5351 1889 m 5236 1933 l 5358 1949 l 5351 1889 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -3753 2323 m 3746 2263 l 3596 2279 l 3719 2297 l 3602 2339 l cp -eoclip -n 3375 2610 m 3375 2607 l 3375 2601 l 3376 2591 l 3377 2577 l 3378 2560 l - 3381 2541 l 3384 2521 l 3390 2500 l 3398 2478 l 3408 2455 l - 3423 2432 l 3441 2408 l 3465 2385 l 3489 2367 l 3513 2351 l - 3537 2338 l 3561 2328 l 3584 2320 l 3607 2314 l 3629 2309 l - 3651 2305 l 3671 2302 l 3690 2299 l 3706 2298 l - 3735 2295 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 3602 2339 m 3719 2297 l 3596 2279 l 3602 2339 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5208 2263 m 5201 2323 l 5351 2340 l 5236 2297 l 5358 2280 l cp -eoclip -n 5490 2610 m 5490 2607 l 5491 2601 l 5492 2591 l 5494 2577 l 5495 2560 l - 5496 2541 l 5495 2521 l 5494 2500 l 5490 2478 l 5484 2455 l - 5475 2432 l 5462 2408 l 5445 2385 l 5424 2364 l 5402 2347 l - 5380 2334 l 5358 2323 l 5336 2316 l 5314 2309 l 5293 2305 l - 5273 2301 l 5255 2299 l - 5220 2295 l gs col0 s gr gr - -% arrowhead -0 slj -n 5358 2280 m 5236 2297 l 5351 2340 l 5358 2280 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -7003 1874 m 7053 1840 l 6969 1715 l 7011 1832 l 6919 1748 l cp -eoclip -n 6255 1440 m 6257 1440 l 6260 1441 l 6267 1443 l 6277 1446 l 6290 1449 l - 6307 1454 l 6327 1459 l 6349 1466 l 6374 1473 l 6400 1481 l - 6427 1489 l 6456 1498 l 6485 1508 l 6515 1518 l 6545 1529 l - 6577 1541 l 6610 1555 l 6644 1569 l 6679 1585 l 6715 1602 l - 6750 1620 l 6791 1643 l 6827 1664 l 6858 1685 l 6885 1704 l - 6908 1722 l 6928 1739 l 6945 1755 l 6960 1770 l 6974 1785 l - 6985 1798 l 6995 1810 l 7003 1821 l 7010 1830 l - 7020 1845 l gs col0 s gr gr - -% arrowhead -0 slj -n 6919 1748 m 7011 1832 l 6969 1715 l 6919 1748 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -7053 2381 m 6997 2360 l 6942 2500 l 7014 2400 l 6998 2522 l cp -eoclip -n 6210 2835 m 6212 2835 l 6216 2835 l 6223 2834 l 6234 2833 l 6249 2832 l - 6267 2830 l 6289 2828 l 6314 2825 l 6341 2822 l 6370 2818 l - 6401 2814 l 6432 2808 l 6464 2802 l 6496 2795 l 6530 2787 l - 6564 2777 l 6600 2766 l 6637 2753 l 6674 2737 l 6712 2720 l - 6750 2700 l 6789 2677 l 6824 2653 l 6854 2630 l 6881 2607 l - 6903 2584 l 6922 2563 l 6939 2541 l 6954 2521 l 6967 2500 l - 6978 2481 l 6988 2462 l 6996 2444 l 7003 2428 l 7009 2415 l - 7013 2403 l - 7020 2385 l gs col0 s gr gr - -% arrowhead -0 slj -n 6998 2522 m 7014 2400 l 6942 2500 l 6998 2522 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5375 923 m 5433 905 l 5387 761 l 5395 885 l 5330 779 l cp -eoclip -n 5670 900 m 5671 897 l 5673 892 l 5676 882 l 5680 868 l 5685 850 l - 5690 829 l 5695 807 l 5700 784 l 5703 761 l 5705 737 l - 5704 714 l 5701 692 l 5695 670 l 5685 649 l 5670 630 l - 5654 617 l 5636 606 l 5618 599 l 5602 594 l 5586 590 l - 5572 588 l 5559 586 l 5547 585 l 5535 585 l 5523 585 l - 5511 586 l 5498 588 l 5484 590 l 5468 594 l 5452 599 l - 5434 606 l 5416 617 l 5400 630 l 5385 649 l 5375 670 l - 5369 692 l 5366 714 l 5365 737 l 5367 761 l 5370 784 l - 5375 807 l 5380 829 l 5385 850 l 5390 868 l - 5400 900 l gs col0 s gr gr - -% arrowhead -0 slj -n 5330 779 m 5395 885 l 5387 761 l 5330 779 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5343 3370 m 5286 3350 l 5236 3492 l 5305 3390 l 5292 3513 l cp -eoclip -n 5670 3375 m 5671 3377 l 5673 3382 l 5676 3391 l 5680 3403 l 5685 3419 l - 5691 3439 l 5698 3460 l 5704 3483 l 5709 3507 l 5713 3531 l - 5716 3556 l 5716 3580 l 5715 3603 l 5709 3627 l 5701 3649 l - 5688 3671 l 5670 3690 l 5651 3704 l 5629 3715 l 5608 3724 l - 5587 3730 l 5568 3735 l 5550 3738 l 5534 3740 l 5519 3742 l - 5504 3742 l 5490 3742 l 5476 3742 l 5461 3742 l 5446 3740 l - 5430 3738 l 5412 3735 l 5393 3730 l 5372 3724 l 5351 3715 l - 5329 3704 l 5310 3690 l 5292 3671 l 5279 3649 l 5271 3627 l - 5265 3603 l 5264 3580 l 5264 3556 l 5267 3531 l 5271 3507 l - 5276 3483 l 5282 3460 l 5289 3439 l 5295 3419 l 5300 3403 l - - 5310 3375 l gs col0 s gr gr - -% arrowhead -0 slj -n 5292 3513 m 5305 3390 l 5236 3492 l 5292 3513 l cp gs 0.00 setgray ef gr col0 s -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/fsm-slaveconf.eps --- a/documentation/images/fsm-slaveconf.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,567 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: fsm-slaveconf.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Fri Feb 22 12:24:01 2008 -%%For: fp@fetlas (Florian Pose) -%%BoundingBox: 0 0 316 492 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 492 moveto 0 0 lineto 316 0 lineto 316 492 lineto closepath clip newpath --177.8 527.2 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 4275 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 1305 m -gs 1 -1 sc (INIT) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 2378 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 2423 m -gs 1 -1 sc (SYNC) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 3503 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 3548 m -gs 1 -1 sc (PREOP) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 4628 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 4673 m -gs 1 -1 sc (FMMU) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 5753 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 5798 m -gs 1 -1 sc (SDO_CONF) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 6878 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 6923 m -gs 1 -1 sc (SAFEOP) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 8003 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 8048 m -gs 1 -1 sc (OP) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 6968 4628 855 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 6968 4635 748 315 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -6968 4673 m -gs 1 -1 sc (END) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 3510 675 101 101 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -3671 1018 m 3723 987 l 3645 857 l 3682 976 l 3594 888 l cp -eoclip -n 3555 765 m - 3690 990 l gs 0.00 setgray ef gr gs col0 s gr gr - -% arrowhead -0 slj -n 3594 888 m 3682 976 l 3645 857 l 3594 888 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 2040 m 4305 2040 l 4305 1889 l 4275 2009 l 4245 1889 l cp -eoclip -n 4275 1620 m - 4275 2025 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 1889 m 4275 2009 l 4305 1889 l 4245 1889 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 3165 m 4305 3165 l 4305 3014 l 4275 3134 l 4245 3014 l cp -eoclip -n 4275 2745 m - 4275 3150 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 3014 m 4275 3134 l 4305 3014 l 4245 3014 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 4290 m 4305 4290 l 4305 4139 l 4275 4259 l 4245 4139 l cp -eoclip -n 4275 3870 m - 4275 4275 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 4139 m 4275 4259 l 4305 4139 l 4245 4139 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6684 4301 m 6738 4275 l 6671 4140 l 6698 4261 l 6617 4167 l cp -eoclip -n 5085 2520 m 5086 2520 l 5088 2521 l 5092 2522 l 5099 2523 l 5108 2526 l - 5120 2529 l 5134 2533 l 5152 2538 l 5173 2544 l 5195 2551 l - 5221 2560 l 5248 2569 l 5277 2580 l 5307 2592 l 5339 2605 l - 5372 2620 l 5406 2636 l 5441 2655 l 5478 2675 l 5516 2698 l - 5555 2723 l 5596 2751 l 5639 2783 l 5684 2818 l 5732 2858 l - 5781 2902 l 5833 2950 l 5886 3003 l 5940 3060 l 5985 3110 l - 6029 3160 l 6071 3212 l 6112 3263 l 6150 3313 l 6187 3363 l - 6223 3412 l 6256 3461 l 6288 3508 l 6318 3555 l 6347 3601 l - 6375 3647 l 6402 3692 l 6428 3736 l 6453 3780 l 6477 3824 l - 6500 3866 l 6522 3908 l 6544 3949 l 6564 3988 l 6583 4026 l - 6602 4062 l 6618 4096 l 6634 4127 l 6648 4156 l 6660 4182 l - 6671 4204 l 6680 4223 l 6688 4239 l 6694 4251 l 6698 4261 l - - 6705 4275 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 6617 4167 m 6698 4261 l 6671 4140 l 6617 4167 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6135 4665 m 6135 4605 l 5984 4605 l 6104 4635 l 5984 4665 l cp -eoclip -n 5130 4635 m 5132 4635 l 5135 4635 l 5141 4635 l 5151 4635 l 5164 4635 l - 5180 4635 l 5200 4635 l 5222 4635 l 5247 4635 l 5273 4635 l - 5301 4635 l 5331 4635 l 5361 4635 l 5393 4635 l 5427 4635 l - 5462 4635 l 5499 4635 l 5539 4635 l 5581 4635 l 5625 4635 l - 5670 4635 l 5719 4635 l 5764 4635 l 5806 4635 l 5845 4635 l - 5879 4635 l 5911 4635 l 5940 4635 l 5967 4635 l 5992 4635 l - 6016 4635 l 6038 4635 l 6057 4635 l 6075 4635 l 6089 4635 l - 6101 4635 l - 6120 4635 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 5984 4665 m 6104 4635 l 5984 4605 l 5984 4665 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6947 4294 m 7007 4284 l 6981 4135 l 6972 4259 l 6922 4145 l cp -eoclip -n 5130 1304 m 5131 1304 l 5132 1305 l 5136 1307 l 5141 1310 l 5148 1315 l - 5158 1321 l 5170 1329 l 5185 1338 l 5203 1349 l 5224 1362 l - 5247 1377 l 5273 1394 l 5301 1413 l 5332 1433 l 5364 1455 l - 5398 1478 l 5434 1503 l 5470 1530 l 5508 1557 l 5547 1587 l - 5587 1617 l 5627 1649 l 5667 1682 l 5709 1717 l 5750 1753 l - 5792 1791 l 5835 1831 l 5878 1873 l 5922 1917 l 5966 1963 l - 6012 2013 l 6057 2065 l 6104 2121 l 6151 2179 l 6199 2241 l - 6247 2307 l 6295 2375 l 6343 2447 l 6390 2520 l 6433 2591 l - 6474 2663 l 6513 2734 l 6550 2804 l 6584 2873 l 6616 2940 l - 6646 3006 l 6673 3070 l 6699 3132 l 6722 3193 l 6744 3252 l - 6764 3311 l 6783 3367 l 6800 3423 l 6816 3478 l 6831 3532 l - 6845 3584 l 6858 3636 l 6870 3687 l 6882 3737 l 6892 3786 l - 6902 3833 l 6911 3879 l 6919 3924 l 6927 3966 l 6934 4007 l - 6941 4045 l 6946 4080 l 6952 4113 l 6956 4143 l 6960 4170 l - 6964 4193 l 6967 4213 l 6969 4230 l 6971 4244 l 6972 4255 l - 6973 4263 l - 6975 4275 l gs col0 s gr gr - -% arrowhead -0 slj -n 6922 4145 m 6972 4259 l 6981 4135 l 6922 4145 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -7007 4988 m 6950 4972 l 6910 5118 l 6971 5011 l 6968 5134 l cp -eoclip -n 5130 8010 m 5131 8010 l 5132 8009 l 5135 8007 l 5139 8004 l 5145 8000 l - 5153 7995 l 5163 7988 l 5176 7980 l 5191 7970 l 5208 7958 l - 5228 7945 l 5250 7930 l 5273 7913 l 5299 7895 l 5326 7875 l - 5355 7853 l 5386 7830 l 5417 7806 l 5449 7781 l 5482 7754 l - 5516 7726 l 5551 7696 l 5586 7665 l 5622 7632 l 5659 7598 l - 5696 7562 l 5734 7524 l 5773 7483 l 5812 7440 l 5852 7395 l - 5894 7347 l 5936 7295 l 5979 7240 l 6024 7182 l 6069 7120 l - 6115 7055 l 6162 6986 l 6208 6914 l 6255 6840 l 6296 6771 l - 6337 6701 l 6375 6632 l 6412 6563 l 6448 6495 l 6481 6428 l - 6513 6363 l 6543 6299 l 6571 6236 l 6598 6175 l 6623 6115 l - 6647 6056 l 6670 5998 l 6692 5942 l 6712 5886 l 6732 5831 l - 6751 5777 l 6769 5724 l 6786 5671 l 6802 5620 l 6818 5569 l - 6833 5520 l 6847 5471 l 6861 5424 l 6874 5379 l 6886 5335 l - 6898 5293 l 6909 5253 l 6919 5216 l 6928 5182 l 6936 5150 l - 6944 5121 l 6950 5095 l 6956 5073 l 6961 5053 l 6965 5037 l - 6968 5024 l 6970 5014 l 6972 5006 l - 6975 4995 l gs col0 s gr gr - -% arrowhead -0 slj -n 6968 5134 m 6971 5011 l 6910 5118 l 6968 5134 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6376 4350 m 6422 4311 l 6323 4197 l 6379 4308 l 6278 4236 l cp -eoclip -n 5085 3600 m 5086 3600 l 5089 3601 l 5095 3601 l 5103 3602 l 5114 3604 l - 5129 3606 l 5147 3608 l 5169 3612 l 5193 3616 l 5219 3620 l - 5247 3625 l 5278 3631 l 5309 3638 l 5342 3645 l 5376 3653 l - 5411 3663 l 5448 3673 l 5486 3685 l 5526 3699 l 5567 3714 l - 5611 3732 l 5657 3751 l 5705 3774 l 5755 3798 l 5805 3825 l - 5855 3853 l 5902 3882 l 5947 3911 l 5988 3940 l 6027 3968 l - 6062 3995 l 6096 4021 l 6127 4048 l 6156 4073 l 6183 4098 l - 6209 4123 l 6233 4147 l 6256 4171 l 6278 4194 l 6298 4215 l - 6317 4236 l 6333 4254 l 6348 4271 l 6360 4285 l 6370 4297 l - 6378 4306 l - 6390 4320 l gs col0 s gr gr - -% arrowhead -0 slj -n 6278 4236 m 6379 4308 l 6323 4197 l 6278 4236 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6738 4993 m 6683 4969 l 6624 5108 l 6699 5010 l 6679 5132 l cp -eoclip -n 5085 6750 m 5086 6750 l 5088 6749 l 5092 6749 l 5098 6747 l 5106 6745 l - 5117 6743 l 5131 6739 l 5147 6735 l 5167 6730 l 5188 6724 l - 5212 6717 l 5238 6709 l 5266 6700 l 5296 6690 l 5327 6678 l - 5359 6666 l 5392 6652 l 5426 6637 l 5461 6620 l 5497 6602 l - 5534 6581 l 5573 6559 l 5612 6533 l 5653 6505 l 5696 6474 l - 5740 6440 l 5787 6402 l 5834 6359 l 5884 6313 l 5934 6263 l - 5985 6210 l 6030 6160 l 6073 6110 l 6115 6058 l 6155 6007 l - 6192 5957 l 6228 5907 l 6262 5858 l 6294 5809 l 6324 5762 l - 6353 5715 l 6381 5669 l 6407 5623 l 6432 5578 l 6456 5534 l - 6478 5490 l 6500 5446 l 6522 5404 l 6542 5362 l 6561 5321 l - 6580 5282 l 6597 5244 l 6613 5208 l 6628 5174 l 6642 5143 l - 6655 5114 l 6666 5088 l 6675 5066 l 6683 5047 l 6690 5031 l - 6695 5019 l 6699 5009 l - 6705 4995 l gs col0 s gr gr - -% arrowhead -0 slj -n 6679 5132 m 6699 5010 l 6624 5108 l 6679 5132 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3496 3360 m 3542 3322 l 3446 3206 l 3500 3318 l 3400 3245 l cp -eoclip -n 3510 1440 m 3509 1441 l 3508 1443 l 3505 1446 l 3500 1452 l 3493 1460 l - 3485 1471 l 3474 1484 l 3461 1500 l 3447 1519 l 3430 1540 l - 3413 1563 l 3394 1589 l 3374 1616 l 3354 1646 l 3333 1676 l - 3312 1708 l 3291 1742 l 3271 1776 l 3251 1812 l 3232 1849 l - 3214 1888 l 3196 1928 l 3180 1970 l 3165 2013 l 3150 2060 l - 3138 2108 l 3127 2159 l 3118 2213 l 3111 2268 l 3107 2326 l - 3105 2385 l 3107 2444 l 3111 2502 l 3118 2557 l 3127 2611 l - 3138 2662 l 3150 2710 l 3165 2757 l 3180 2800 l 3196 2842 l - 3214 2882 l 3232 2921 l 3251 2958 l 3271 2994 l 3291 3028 l - 3312 3062 l 3333 3094 l 3354 3124 l 3374 3154 l 3394 3181 l - 3413 3207 l 3430 3230 l 3447 3251 l 3461 3270 l 3474 3286 l - 3485 3299 l 3493 3310 l 3500 3318 l - 3510 3330 l gs col0 s gr gr - -% arrowhead -0 slj -n 3400 3245 m 3500 3318 l 3446 3206 l 3400 3245 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3496 5610 m 3542 5572 l 3446 5456 l 3500 5568 l 3400 5495 l cp -eoclip -n 3510 3690 m 3509 3691 l 3508 3693 l 3505 3696 l 3500 3702 l 3493 3710 l - 3485 3721 l 3474 3734 l 3461 3750 l 3447 3769 l 3430 3790 l - 3413 3813 l 3394 3839 l 3374 3866 l 3354 3896 l 3333 3926 l - 3312 3958 l 3291 3992 l 3271 4026 l 3251 4062 l 3232 4099 l - 3214 4138 l 3196 4178 l 3180 4220 l 3165 4263 l 3150 4310 l - 3138 4358 l 3127 4409 l 3118 4463 l 3111 4518 l 3107 4576 l - 3105 4635 l 3107 4694 l 3111 4752 l 3118 4807 l 3127 4861 l - 3138 4912 l 3150 4960 l 3165 5007 l 3180 5050 l 3196 5092 l - 3214 5132 l 3232 5171 l 3251 5208 l 3271 5244 l 3291 5278 l - 3312 5312 l 3333 5344 l 3354 5374 l 3374 5404 l 3394 5431 l - 3413 5457 l 3430 5480 l 3447 5501 l 3461 5520 l 3474 5536 l - 3485 5549 l 3493 5560 l 3500 5568 l - 3510 5580 l gs col0 s gr gr - -% arrowhead -0 slj -n 3400 5495 m 3500 5568 l 3446 5456 l 3400 5495 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4692 953 m 4751 966 l 4784 818 l 4729 929 l 4725 805 l cp -eoclip -n 4950 1035 m 4952 1033 l 4956 1027 l 4964 1019 l 4974 1006 l 4987 990 l - 5002 971 l 5018 951 l 5033 929 l 5047 907 l 5060 884 l - 5072 861 l 5080 837 l 5086 813 l 5088 789 l 5085 765 l - 5078 746 l 5068 730 l 5057 717 l 5046 706 l 5035 697 l - 5024 690 l 5014 684 l 5005 679 l 4995 675 l 4985 671 l - 4975 668 l 4963 665 l 4950 663 l 4935 661 l 4919 661 l - 4900 663 l 4880 667 l 4860 675 l 4838 689 l 4819 706 l - 4803 726 l 4789 748 l 4777 771 l 4767 795 l 4758 819 l - 4750 844 l 4743 868 l 4738 890 l 4733 909 l - 4725 945 l gs col0 s gr gr - -% arrowhead -0 slj -n 4725 805 m 4729 929 l 4784 818 l 4725 805 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4692 3203 m 4751 3216 l 4784 3068 l 4729 3179 l 4725 3055 l cp -eoclip -n 4950 3285 m 4952 3283 l 4956 3277 l 4964 3269 l 4974 3256 l 4987 3240 l - 5002 3221 l 5018 3201 l 5033 3179 l 5047 3157 l 5060 3134 l - 5072 3111 l 5080 3087 l 5086 3063 l 5088 3039 l 5085 3015 l - 5078 2996 l 5068 2980 l 5057 2967 l 5046 2956 l 5035 2947 l - 5024 2940 l 5014 2934 l 5005 2929 l 4995 2925 l 4985 2921 l - 4975 2918 l 4963 2915 l 4950 2913 l 4935 2911 l 4919 2911 l - 4900 2913 l 4880 2917 l 4860 2925 l 4838 2939 l 4819 2956 l - 4803 2976 l 4789 2998 l 4777 3021 l 4767 3045 l 4758 3069 l - 4750 3094 l 4743 3118 l 4738 3140 l 4733 3159 l - 4725 3195 l gs col0 s gr gr - -% arrowhead -0 slj -n 4725 3055 m 4729 3179 l 4784 3068 l 4725 3055 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 5415 m 4305 5415 l 4305 5264 l 4275 5384 l 4245 5264 l cp -eoclip -n 4275 4995 m - 4275 5400 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 5264 m 4275 5384 l 4305 5264 l 4245 5264 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 6540 m 4305 6540 l 4305 6389 l 4275 6509 l 4245 6389 l cp -eoclip -n 4275 6120 m - 4275 6525 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 6389 m 4275 6509 l 4305 6389 l 4245 6389 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 7665 m 4305 7665 l 4305 7514 l 4275 7634 l 4245 7514 l cp -eoclip -n 4275 7245 m - 4275 7650 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 7514 m 4275 7634 l 4305 7514 l 4245 7514 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4692 6578 m 4751 6591 l 4784 6443 l 4729 6554 l 4725 6430 l cp -eoclip -n 4950 6660 m 4952 6658 l 4956 6652 l 4964 6644 l 4974 6631 l 4987 6615 l - 5002 6596 l 5018 6576 l 5033 6554 l 5047 6532 l 5060 6509 l - 5072 6486 l 5080 6462 l 5086 6438 l 5088 6414 l 5085 6390 l - 5078 6371 l 5068 6355 l 5057 6342 l 5046 6331 l 5035 6322 l - 5024 6315 l 5014 6309 l 5005 6304 l 4995 6300 l 4985 6296 l - 4975 6293 l 4963 6290 l 4950 6288 l 4935 6286 l 4919 6286 l - 4900 6288 l 4880 6292 l 4860 6300 l 4838 6314 l 4819 6331 l - 4803 6351 l 4789 6373 l 4777 6396 l 4767 6420 l 4758 6444 l - 4750 6469 l 4743 6493 l 4738 6515 l 4733 6534 l - 4725 6570 l gs col0 s gr gr - -% arrowhead -0 slj -n 4725 6430 m 4729 6554 l 4784 6443 l 4725 6430 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4692 7703 m 4751 7716 l 4784 7568 l 4729 7679 l 4725 7555 l cp -eoclip -n 4950 7785 m 4952 7783 l 4956 7777 l 4964 7769 l 4974 7756 l 4987 7740 l - 5002 7721 l 5018 7701 l 5033 7679 l 5047 7657 l 5060 7634 l - 5072 7611 l 5080 7587 l 5086 7563 l 5088 7539 l 5085 7515 l - 5078 7496 l 5068 7480 l 5057 7467 l 5046 7456 l 5035 7447 l - 5024 7440 l 5014 7434 l 5005 7429 l 4995 7425 l 4985 7421 l - 4975 7418 l 4963 7415 l 4950 7413 l 4935 7411 l 4919 7411 l - 4900 7413 l 4880 7417 l 4860 7425 l 4838 7439 l 4819 7456 l - 4803 7476 l 4789 7498 l 4777 7521 l 4767 7545 l 4758 7569 l - 4750 7594 l 4743 7618 l 4738 7640 l 4733 7659 l - 4725 7695 l gs col0 s gr gr - -% arrowhead -0 slj -n 4725 7555 m 4729 7679 l 4784 7568 l 4725 7555 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3449 6779 m 3498 6744 l 3408 6622 l 3455 6737 l 3360 6657 l cp -eoclip -n 3465 3645 m 3464 3646 l 3463 3647 l 3461 3650 l 3457 3655 l 3451 3662 l - 3443 3671 l 3434 3683 l 3422 3698 l 3409 3715 l 3393 3735 l - 3376 3758 l 3357 3784 l 3336 3812 l 3313 3842 l 3290 3875 l - 3266 3909 l 3241 3946 l 3215 3984 l 3189 4023 l 3164 4064 l - 3138 4107 l 3112 4150 l 3087 4195 l 3063 4242 l 3039 4289 l - 3016 4339 l 2993 4389 l 2972 4442 l 2951 4497 l 2932 4553 l - 2914 4612 l 2898 4674 l 2882 4738 l 2869 4805 l 2857 4875 l - 2848 4947 l 2841 5021 l 2837 5098 l 2835 5175 l 2837 5252 l - 2841 5329 l 2848 5404 l 2857 5477 l 2869 5547 l 2882 5615 l - 2898 5680 l 2914 5743 l 2932 5804 l 2951 5862 l 2972 5918 l - 2993 5972 l 3016 6024 l 3039 6075 l 3063 6125 l 3087 6173 l - 3112 6219 l 3138 6265 l 3164 6309 l 3189 6352 l 3215 6393 l - 3241 6433 l 3266 6472 l 3290 6508 l 3313 6542 l 3336 6574 l - 3357 6603 l 3376 6630 l 3393 6654 l 3409 6676 l 3422 6694 l - 3434 6709 l 3443 6722 l 3451 6732 l 3457 6739 l - 3465 6750 l gs col0 s gr gr - -% arrowhead -0 slj -n 3360 6657 m 3455 6737 l 3408 6622 l 3360 6657 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4692 5453 m 4751 5466 l 4784 5318 l 4729 5429 l 4725 5305 l cp -eoclip -n 4950 5535 m 4952 5533 l 4956 5527 l 4964 5519 l 4974 5506 l 4987 5490 l - 5002 5471 l 5018 5451 l 5033 5429 l 5047 5407 l 5060 5384 l - 5072 5361 l 5080 5337 l 5086 5313 l 5088 5289 l 5085 5265 l - 5078 5246 l 5068 5230 l 5057 5217 l 5046 5206 l 5035 5197 l - 5024 5190 l 5014 5184 l 5005 5179 l 4995 5175 l 4985 5171 l - 4975 5168 l 4963 5165 l 4950 5163 l 4935 5161 l 4919 5161 l - 4900 5163 l 4880 5167 l 4860 5175 l 4838 5189 l 4819 5206 l - 4803 5226 l 4789 5248 l 4777 5271 l 4767 5295 l 4758 5319 l - 4750 5344 l 4743 5368 l 4738 5390 l 4733 5409 l - 4725 5445 l gs col0 s gr gr - -% arrowhead -0 slj -n 4725 5305 m 4729 5429 l 4784 5318 l 4725 5305 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6422 4913 m 6376 4874 l 6278 4988 l 6379 4917 l 6323 5027 l cp -eoclip -n 5085 5629 m 5086 5629 l 5089 5629 l 5095 5628 l 5103 5627 l 5114 5625 l - 5129 5623 l 5147 5621 l 5169 5618 l 5193 5614 l 5219 5609 l - 5247 5604 l 5278 5598 l 5309 5592 l 5342 5585 l 5376 5576 l - 5411 5567 l 5448 5556 l 5486 5544 l 5526 5531 l 5567 5515 l - 5611 5498 l 5657 5478 l 5705 5456 l 5755 5431 l 5805 5404 l - 5855 5376 l 5902 5346 l 5947 5317 l 5988 5289 l 6027 5260 l - 6062 5233 l 6096 5206 l 6127 5180 l 6156 5154 l 6183 5129 l - 6209 5104 l 6233 5079 l 6256 5055 l 6278 5032 l 6298 5011 l - 6317 4990 l 6333 4971 l 6348 4955 l 6360 4940 l 6370 4928 l - 6378 4919 l - 6390 4905 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 6323 5027 m 6379 4917 l 6278 4988 l 6323 5027 l cp gs 0.00 setgray ef gr col0 s -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/fsm-slavescan.eps --- a/documentation/images/fsm-slavescan.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,414 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: fsm-slavescan.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Thu Jul 20 11:33:08 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 303 492 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 492 moveto 0 0 lineto 303 0 lineto 303 492 lineto closepath clip newpath --190.6 527.2 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 4275 1260 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 1305 m -gs 1 -1 sc (START) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 3503 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 3548 m -gs 1 -1 sc (STATE) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 4628 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 4673 m -gs 1 -1 sc (BASE) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 5753 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 5798 m -gs 1 -1 sc (DATALINK) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 6878 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 6923 m -gs 1 -1 sc (EEPROM SIZE) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 2378 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 2423 m -gs 1 -1 sc (ADDRESS) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4275 8003 855 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4275 8048 m -gs 1 -1 sc (EEPROM DATA) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 6968 4628 855 360 0 360 DrawEllipse gs col0 s gr - -% Ellipse -n 6968 4635 748 315 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -6968 4673 m -gs 1 -1 sc (END) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 3510 675 101 101 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -3671 1018 m 3723 987 l 3645 857 l 3682 976 l 3594 888 l cp -eoclip -n 3555 765 m - 3690 990 l gs 0.00 setgray ef gr gs col0 s gr gr - -% arrowhead -0 slj -n 3594 888 m 3682 976 l 3645 857 l 3594 888 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 2040 m 4305 2040 l 4305 1889 l 4275 2009 l 4245 1889 l cp -eoclip -n 4275 1620 m - 4275 2025 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 1889 m 4275 2009 l 4305 1889 l 4245 1889 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 3165 m 4305 3165 l 4305 3014 l 4275 3134 l 4245 3014 l cp -eoclip -n 4275 2745 m - 4275 3150 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 3014 m 4275 3134 l 4305 3014 l 4245 3014 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 4290 m 4305 4290 l 4305 4139 l 4275 4259 l 4245 4139 l cp -eoclip -n 4275 3870 m - 4275 4275 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 4139 m 4275 4259 l 4305 4139 l 4245 4139 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 5415 m 4305 5415 l 4305 5264 l 4275 5384 l 4245 5264 l cp -eoclip -n 4275 4995 m - 4275 5400 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 5264 m 4275 5384 l 4305 5264 l 4245 5264 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 6540 m 4305 6540 l 4305 6389 l 4275 6509 l 4245 6389 l cp -eoclip -n 4275 6120 m - 4275 6525 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 6389 m 4275 6509 l 4305 6389 l 4245 6389 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4245 7665 m 4305 7665 l 4305 7514 l 4275 7634 l 4245 7514 l cp -eoclip -n 4275 7245 m - 4275 7650 l gs col0 s gr gr - -% arrowhead -0 slj -n 4245 7514 m 4275 7634 l 4305 7514 l 4245 7514 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6548 4300 m 6603 4276 l 6544 4137 l 6564 4260 l 6489 4161 l cp -eoclip -n 5085 2520 m 5086 2520 l 5088 2522 l 5091 2524 l 5096 2527 l 5104 2532 l - 5114 2538 l 5126 2546 l 5141 2556 l 5159 2567 l 5179 2581 l - 5202 2595 l 5226 2612 l 5252 2629 l 5280 2648 l 5309 2669 l - 5340 2690 l 5371 2713 l 5403 2736 l 5436 2761 l 5469 2787 l - 5504 2814 l 5538 2842 l 5574 2872 l 5611 2904 l 5648 2937 l - 5687 2972 l 5727 3010 l 5768 3050 l 5810 3092 l 5853 3137 l - 5897 3184 l 5941 3234 l 5985 3285 l 6031 3340 l 6074 3395 l - 6115 3449 l 6154 3501 l 6190 3551 l 6223 3600 l 6254 3647 l - 6282 3692 l 6309 3735 l 6334 3777 l 6357 3818 l 6378 3858 l - 6399 3897 l 6418 3934 l 6436 3971 l 6453 4006 l 6469 4041 l - 6484 4073 l 6498 4104 l 6511 4133 l 6523 4160 l 6533 4184 l - 6542 4206 l 6549 4224 l 6556 4239 l 6561 4252 l 6564 4261 l - - 6570 4275 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 6489 4161 m 6564 4260 l 6544 4137 l 6489 4161 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6286 4440 m 6332 4401 l 6233 4287 l 6289 4398 l 6188 4326 l cp -eoclip -n 5130 3600 m 5131 3601 l 5134 3602 l 5139 3604 l 5147 3607 l 5158 3612 l - 5173 3618 l 5190 3626 l 5211 3635 l 5234 3645 l 5259 3656 l - 5287 3668 l 5316 3682 l 5346 3696 l 5377 3711 l 5409 3727 l - 5443 3743 l 5477 3761 l 5513 3780 l 5550 3801 l 5589 3823 l - 5629 3847 l 5671 3872 l 5715 3900 l 5760 3929 l 5805 3960 l - 5853 3994 l 5898 4027 l 5940 4059 l 5978 4090 l 6013 4119 l - 6046 4146 l 6075 4173 l 6102 4198 l 6127 4222 l 6151 4245 l - 6173 4268 l 6193 4289 l 6212 4310 l 6230 4329 l 6245 4346 l - 6259 4362 l 6271 4376 l 6281 4387 l 6288 4396 l - 6300 4410 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 6188 4326 m 6289 4398 l 6233 4287 l 6188 4326 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6135 4665 m 6135 4605 l 5984 4605 l 6104 4635 l 5984 4665 l cp -eoclip -n 5130 4635 m - 6120 4635 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 5984 4665 m 6104 4635 l 5984 4605 l 5984 4665 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6332 4878 m 6286 4839 l 6188 4953 l 6289 4882 l 6233 4992 l cp -eoclip -n 5130 5680 m 5131 5679 l 5134 5678 l 5139 5676 l 5147 5673 l 5158 5668 l - 5173 5662 l 5190 5654 l 5211 5645 l 5234 5635 l 5259 5624 l - 5287 5612 l 5316 5598 l 5346 5584 l 5377 5569 l 5409 5553 l - 5443 5537 l 5477 5519 l 5513 5500 l 5550 5479 l 5589 5457 l - 5629 5433 l 5671 5408 l 5715 5380 l 5760 5351 l 5805 5320 l - 5853 5286 l 5898 5253 l 5940 5221 l 5978 5190 l 6013 5161 l - 6046 5134 l 6075 5107 l 6102 5082 l 6127 5058 l 6151 5035 l - 6173 5012 l 6193 4991 l 6212 4970 l 6230 4951 l 6245 4934 l - 6259 4918 l 6271 4904 l 6281 4893 l 6288 4884 l - 6300 4870 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 6233 4992 m 6289 4882 l 6188 4953 l 6233 4992 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj - [60] 0 sd -gs clippath -6603 4974 m 6548 4950 l 6489 5089 l 6564 4991 l 6544 5113 l cp -eoclip -n 5085 6731 m 5086 6731 l 5088 6729 l 5091 6727 l 5096 6724 l 5104 6719 l - 5114 6713 l 5126 6705 l 5141 6695 l 5159 6684 l 5179 6670 l - 5202 6656 l 5226 6639 l 5252 6622 l 5280 6603 l 5309 6582 l - 5340 6561 l 5371 6538 l 5403 6515 l 5436 6490 l 5469 6464 l - 5504 6437 l 5538 6409 l 5574 6379 l 5611 6347 l 5648 6314 l - 5687 6279 l 5727 6241 l 5768 6201 l 5810 6159 l 5853 6114 l - 5897 6067 l 5941 6017 l 5985 5966 l 6031 5911 l 6074 5856 l - 6115 5802 l 6154 5750 l 6190 5700 l 6223 5651 l 6254 5604 l - 6282 5559 l 6309 5516 l 6334 5474 l 6357 5433 l 6378 5393 l - 6399 5354 l 6418 5317 l 6436 5280 l 6453 5245 l 6469 5210 l - 6484 5178 l 6498 5147 l 6511 5118 l 6523 5091 l 6533 5067 l - 6542 5045 l 6549 5027 l 6556 5012 l 6561 4999 l 6564 4990 l - - 6570 4976 l gs col0 s gr gr - [] 0 sd -% arrowhead -0 slj -n 6544 5113 m 6564 4991 l 6489 5089 l 6544 5113 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6961 4982 m 6901 4977 l 6888 5127 l 6929 5011 l 6948 5133 l cp -eoclip -n 5130 7920 m 5131 7919 l 5132 7918 l 5135 7916 l 5139 7912 l 5146 7907 l - 5155 7900 l 5166 7890 l 5179 7879 l 5195 7866 l 5214 7850 l - 5235 7832 l 5258 7812 l 5284 7789 l 5312 7765 l 5342 7739 l - 5373 7711 l 5406 7681 l 5441 7650 l 5476 7618 l 5513 7584 l - 5550 7549 l 5588 7513 l 5626 7476 l 5665 7437 l 5704 7398 l - 5744 7357 l 5784 7315 l 5825 7271 l 5865 7226 l 5907 7179 l - 5949 7131 l 5991 7080 l 6034 7028 l 6078 6973 l 6122 6916 l - 6167 6856 l 6212 6794 l 6257 6729 l 6302 6663 l 6346 6594 l - 6390 6525 l 6434 6452 l 6476 6379 l 6515 6308 l 6552 6239 l - 6586 6172 l 6617 6107 l 6646 6044 l 6672 5984 l 6697 5926 l - 6719 5870 l 6740 5815 l 6758 5763 l 6775 5712 l 6791 5662 l - 6806 5614 l 6819 5567 l 6831 5521 l 6843 5476 l 6853 5432 l - 6863 5390 l 6871 5349 l 6879 5310 l 6887 5272 l 6893 5236 l - 6899 5202 l 6905 5170 l 6909 5141 l 6913 5114 l 6917 5090 l - 6920 5069 l 6923 5051 l 6925 5035 l 6926 5023 l 6928 5013 l - 6929 5006 l - 6930 4995 l gs col0 s gr gr - -% arrowhead -0 slj -n 6948 5133 m 6929 5011 l 6888 5127 l 6948 5133 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3516 6737 m 3532 6679 l 3385 6641 l 3494 6701 l 3370 6699 l cp -eoclip -n 3510 7020 m 3508 7021 l 3503 7022 l 3495 7024 l 3483 7027 l 3466 7030 l - 3446 7035 l 3423 7040 l 3398 7045 l 3371 7050 l 3343 7054 l - 3315 7057 l 3287 7060 l 3259 7061 l 3231 7060 l 3204 7058 l - 3177 7053 l 3151 7045 l 3127 7034 l 3105 7020 l 3088 7005 l - 3075 6988 l 3064 6971 l 3056 6954 l 3050 6938 l 3045 6924 l - 3042 6910 l 3040 6897 l 3039 6885 l 3038 6874 l 3038 6862 l - 3038 6851 l 3039 6840 l 3040 6828 l 3042 6815 l 3045 6801 l - 3050 6787 l 3056 6771 l 3064 6754 l 3075 6737 l 3088 6720 l - 3105 6705 l 3127 6691 l 3151 6680 l 3177 6672 l 3204 6667 l - 3231 6665 l 3259 6664 l 3287 6665 l 3315 6668 l 3343 6671 l - 3371 6675 l 3398 6680 l 3423 6685 l 3446 6690 l 3466 6695 l - 3483 6698 l - 3510 6705 l gs col0 s gr gr - -% arrowhead -0 slj -n 3370 6699 m 3494 6701 l 3385 6641 l 3370 6699 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3516 7862 m 3532 7804 l 3385 7766 l 3494 7826 l 3370 7824 l cp -eoclip -n 3510 8145 m 3508 8146 l 3503 8147 l 3495 8149 l 3483 8152 l 3466 8155 l - 3446 8160 l 3423 8165 l 3398 8170 l 3371 8175 l 3343 8179 l - 3315 8182 l 3287 8185 l 3259 8186 l 3231 8185 l 3204 8183 l - 3177 8178 l 3151 8170 l 3127 8159 l 3105 8145 l 3088 8130 l - 3075 8113 l 3064 8096 l 3056 8079 l 3050 8063 l 3045 8049 l - 3042 8035 l 3040 8022 l 3039 8010 l 3038 7999 l 3038 7987 l - 3038 7976 l 3039 7965 l 3040 7953 l 3042 7940 l 3045 7926 l - 3050 7912 l 3056 7896 l 3064 7879 l 3075 7862 l 3088 7845 l - 3105 7830 l 3127 7816 l 3151 7805 l 3177 7797 l 3204 7792 l - 3231 7790 l 3259 7789 l 3287 7790 l 3315 7793 l 3343 7796 l - 3371 7800 l 3398 7805 l 3423 7810 l 3446 7815 l 3466 7820 l - 3483 7823 l - 3510 7830 l gs col0 s gr gr - -% arrowhead -0 slj -n 3370 7824 m 3494 7826 l 3385 7766 l 3370 7824 l cp gs 0.00 setgray ef gr col0 s -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/ighsign.eps --- a/documentation/images/ighsign.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,183 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%BoundingBox: 0 0 91 62 -userdict begin /AltsysDict 245 dict def end -AltsysDict begin -/bdf{bind def}bind def - -/n{newpath}bdf - -/fps{ - currentflat - exch - dup 0 le{pop 1}if - { -dup setflat 3 index stopped -{1.3 mul dup 3 index gt{pop setflat pop pop stop}if} -{exit} -ifelse - }loop - pop setflat pop pop -}bdf - -/fp{100 currentflat fps}bdf - -/filler{fill}bdf - -/F{gsave {filler}fp grestore}bdf - -/f{closepath F}bdf - -/h{closepath}bdf - -/C{curveto}bdf - -/L{lineto}bdf - -/m{moveto}bdf - -/cvc [0 0 0 1] def -/vc{ - AltsysDict /cvc 2 index put - aload length 4 eq - {setcmykcolor} - {setspotcolor} - ifelse -}bdf - -end - -AltsysDict begin - --2076 -1773 translate - -[0 0 0 1] vc -n -2078.3088 1791.6006 m -2079.7873 1791.7829 2080.8812 1792.1475 2081.5905 1792.6945 C -2082.2989 1793.2414 2082.8866 1794.3657 2083.3529 1796.0673 C -2090.9798 1823.992 L -2091.202 1824.782 2091.3643 1825.44 2091.4659 1825.9671 C -2091.5875 1826.514 2091.6482 1826.9897 2091.6482 1827.3952 C -2091.6482 1828.4483 2091.3539 1829.1063 2090.767 1829.3703 C -2090.1793 1829.6533 2088.9534 1829.8764 2087.0903 1830.0388 C -2087.0903 1831.6493 L -2105.5954 1831.6493 L -2105.5954 1830.0388 L -2104.0761 1829.8356 2102.9717 1829.471 2102.2833 1828.9449 C -2101.6148 1828.4179 2101.047 1827.2936 2100.5817 1825.5721 C -2092.9245 1797.6474 L -2092.4383 1795.49 L -2092.3974 1795.2868 2092.3566 1795.0741 2092.3167 1794.8519 C -2092.2958 1794.6487 2092.2863 1794.4568 2092.2863 1794.2745 C -2092.2863 1793.2205 2092.5693 1792.552 2093.1371 1792.2691 C -2093.7041 1791.9852 2094.929 1791.762 2096.8138 1791.6006 C -2096.8138 1790.0205 L -2078.3088 1790.0205 L -2078.3088 1791.6006 L -f -n -2108.6234 1791.5533 m -2114.5553 1791.5533 2115.3693 1792.157 2116.0179 1792.7249 C -2116.6864 1793.2917 2117.2533 1794.4056 2117.7195 1796.0673 C -2125.3768 1823.992 L -2125.5382 1824.6396 2125.6797 1825.2673 2125.8022 1825.8759 C -2125.9436 1826.4837 2126.0139 1826.9897 2126.0149 1827.3952 C -2126.0149 1828.4483 2125.731 1829.1063 2125.164 1829.3703 C -2124.5962 1829.6533 2123.3713 1829.8764 2121.4874 1830.0388 C -2121.4874 1831.6493 L -2141.2078 1831.6493 L -2141.2078 1830.0388 L -2139.04 1829.8156 2137.5815 1829.471 2136.8323 1829.0057 C -2136.0821 1828.5594 2135.4545 1827.4152 2134.9483 1825.5721 C -2131.5451 1813.205 L -2146.4038 1813.205 L -2149.3513 1823.992 L -2149.5336 1824.7004 2149.6855 1825.3385 2149.8071 1825.9063 C -2149.9286 1826.4931 2149.9894 1826.9897 2149.9894 1827.3952 C -2149.9894 1828.4891 2149.584 1829.2079 2148.7739 1829.5526 C -2148.2469 1829.7748 2147.1426 1829.9372 2145.4619 1830.0388 C -2145.4619 1831.6493 L -2163.9669 1831.6493 L -2163.9669 1830.0388 L -2162.5283 1829.8565 2161.5256 1829.5726 2160.9587 1829.188 C -2160.087 1828.5594 2159.409 1827.3544 2158.9229 1825.5721 C -2151.296 1797.6474 L -2150.7794 1795.49 L -2150.6778 1795.0237 2150.6171 1794.7303 2150.5971 1794.6088 C -2150.5762 1794.5072 2150.5667 1794.3752 2150.5667 1794.2138 C -2150.5667 1793.1398 2151.0225 1792.421 2151.9341 1792.0564 C -2152.4811 1791.8332 2153.5645 1791.6813 2155.1854 1791.6006 C -2155.1854 1790.0205 L -2135.4346 1790.0205 L -2135.4346 1791.6006 L -2137.6014 1791.8228 2139.0599 1792.157 2139.8101 1792.6033 C -2140.5792 1793.0686 2141.2173 1794.2233 2141.7244 1796.0673 C -2145.6746 1810.4703 L -2130.8462 1810.4703 L -2127.3214 1797.6474 L -2127.0784 1796.695 2126.916 1796.0161 2126.8353 1795.6115 C -2126.7536 1795.2061 2126.7137 1794.7094 2126.7137 1794.1226 C -2126.7137 1793.1294 2126.9872 1792.5017 2127.5342 1792.2387 C -2128.0811 1791.9747 2129.306 1791.762 2131.2109 1791.6006 C -2131.2109 1790.0205 L -2112.6754 1790.0205 L -2108.6234 1791.5533 L -f -n -2109.4208 1783.5683 m -2108.833 1784.1362 2108.023 1784.6318 2106.9899 1785.0573 C -2106.2806 1785.3411 2105.1364 1785.7466 2103.5563 1786.2727 C -2101.9962 1786.7797 2101.0646 1787.0323 2100.7608 1787.0323 C -2100.7608 1787.3362 2099.9498 1786.9013 2098.3299 1785.7257 C -2096.709 1784.5511 2095.899 1783.1838 2095.899 1781.6236 C -2095.899 1780.6513 2096.2731 1779.7606 2097.0233 1778.9497 C -2098.2587 1777.5728 2100.304 1776.8844 2103.1613 1776.8834 C -2105.4098 1776.8834 2107.1618 1777.2889 2108.4181 1778.0989 C -2109.6942 1778.9098 2110.3324 1779.9524 2110.3324 1781.2286 C -2110.3324 1782.2218 2110.0285 1783.0014 2109.4208 1783.5683 C -h -2110.4539 1802.8938 m -2111.7301 1805.5469 2112.3682 1808.0793 2112.3682 1810.4903 C -2112.3682 1811.5841 2112.1451 1812.4853 2111.6997 1813.1946 C -2111.2534 1813.903 2110.5242 1814.2572 2109.5119 1814.2581 C -2107.5872 1814.2581 2106.0375 1812.8395 2104.8629 1810.0041 C -2103.7082 1807.1678 2103.1309 1804.6353 2103.1309 1802.4076 C -2103.1309 1801.2729 2103.3939 1800.4116 2103.9209 1799.8248 C -2104.447 1799.237 2105.1155 1798.9436 2105.9264 1798.9436 C -2107.6888 1798.9436 2109.1976 1800.2597 2110.4539 1802.8938 C -h -2096.3244 1789.0986 m -2095.392 1789.8677 2094.9267 1790.8904 2094.9267 1792.1675 C -2094.9267 1793.2007 2095.3521 1794.1322 2096.2029 1794.9631 C -2097.0537 1795.8139 2098.6129 1796.847 2100.8823 1798.0624 C -2099.2007 1798.6701 2097.9548 1799.5912 2097.1448 1800.8275 C -2096.3339 1802.0629 2095.9294 1803.5518 2095.9294 1805.2943 C -2095.9294 1807.9075 2097.1543 1810.3782 2099.6061 1812.7085 C -2102.0569 1815.0377 2105.2873 1816.2019 2109.2992 1816.2028 C -2111.3854 1816.2028 2113.2085 1815.8686 2114.7687 1815.2001 C -2116.3488 1814.5316 2116.9625 1814.0148 2117.6794 1813.2212 C -2123.5167 1813.2212 L -2123.5167 1810.475 L -2119.3435 1810.475 L -2119.4651 1809.9479 2119.5393 1809.6898 2119.6001 1809.3052 C -2119.6608 1808.9197 2119.6912 1808.4848 2119.6912 1807.9986 C -2119.6912 1804.9999 2118.5062 1802.4276 2116.1361 1800.2806 C -2113.7859 1798.1536 2110.4738 1797.0901 2106.1998 1797.0901 C -2105.2674 1797.0901 2104.1535 1797.2012 2102.8574 1797.4243 C -2102.5327 1797.4243 2102.1889 1797.1708 2101.8243 1796.6647 C -2101.4796 1796.1576 2101.3077 1795.7227 2101.3077 1795.3581 C -2101.3077 1794.6896 2101.8034 1794.0913 2102.7966 1793.5653 C -2103.2619 1793.3013 2103.8288 1793.0687 2104.4983 1792.8664 C -2107.8103 1791.9245 L -2110.7065 1791.0936 2112.7623 1790.2836 2113.9786 1789.4936 C -2116.0648 1788.1566 2117.1075 1786.3135 2117.1084 1783.9633 C -2117.1084 1781.3302 2115.7202 1779.1424 2112.9456 1777.4 C -2110.17 1775.6585 2106.7259 1774.7877 2102.6143 1774.7868 C -2099.9195 1774.7868 2097.5797 1775.1115 2095.5952 1775.7592 C -2092.172 1776.853 2090.4609 1778.7778 2090.4599 1781.5325 C -2090.4599 1783.3157 2091.3715 1784.7638 2093.1947 1785.8777 C -2094.2069 1786.4854 2095.9997 1787.1643 2098.573 1787.9135 C -2097.5598 1788.2782 2096.8106 1788.6732 2096.3244 1789.0986 C -f - -end diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/interrupt.eps --- a/documentation/images/interrupt.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,635 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: interrupt.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Mon Aug 7 13:51:08 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 538 278 -%%Magnification: 1.0000 -%%EndComments -/MyAppDict 100 dict dup begin def -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 278 moveto 0 0 lineto 538 0 lineto 538 278 lineto closepath clip newpath --12.2 386.3 translate -1 -1 scale - -% This junk string is used by the show operators -/PATsstr 1 string def -/PATawidthshow { % cx cy cchar rx ry string - % Loop over each character in the string - { % cx cy cchar rx ry char - % Show the character - dup % cx cy cchar rx ry char char - PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char) - false charpath % cx cy cchar rx ry char - /clip load PATdraw - % Move past the character (charpath modified the - % current point) - currentpoint % cx cy cchar rx ry char x y - newpath - moveto % cx cy cchar rx ry char - % Reposition by cx,cy if the character in the string is cchar - 3 index eq { % cx cy cchar rx ry - 4 index 4 index rmoveto - } if - % Reposition all characters by rx ry - 2 copy rmoveto % cx cy cchar rx ry - } forall - pop pop pop pop pop % - - currentpoint - newpath - moveto -} bind def -/PATcg { - 7 dict dup begin - /lw currentlinewidth def - /lc currentlinecap def - /lj currentlinejoin def - /ml currentmiterlimit def - /ds [ currentdash ] def - /cc [ currentrgbcolor ] def - /cm matrix currentmatrix def - end -} bind def -% PATdraw - calculates the boundaries of the object and -% fills it with the current pattern -/PATdraw { % proc - save exch - PATpcalc % proc nw nh px py - 5 -1 roll exec % nw nh px py - newpath - PATfill % - - restore -} bind def -% PATfill - performs the tiling for the shape -/PATfill { % nw nh px py PATfill - - PATDict /CurrentPattern get dup begin - setfont - % Set the coordinate system to Pattern Space - PatternGState PATsg - % Set the color for uncolored pattezns - PaintType 2 eq { PATDict /PColor get PATsc } if - % Create the string for showing - 3 index string % nw nh px py str - % Loop for each of the pattern sources - 0 1 Multi 1 sub { % nw nh px py str source - % Move to the starting location - 3 index 3 index % nw nh px py str source px py - moveto % nw nh px py str source - % For multiple sources, set the appropriate color - Multi 1 ne { dup PC exch get PATsc } if - % Set the appropriate string for the source - 0 1 7 index 1 sub { 2 index exch 2 index put } for pop - % Loop over the number of vertical cells - 3 index % nw nh px py str nh - { % nw nh px py str - currentpoint % nw nh px py str cx cy - 2 index oldshow % nw nh px py str cx cy - YStep add moveto % nw nh px py str - } repeat % nw nh px py str - } for - 5 { pop } repeat - end -} bind def - -% PATkshow - kshow with the current pattezn -/PATkshow { % proc string - exch bind % string proc - 1 index 0 get % string proc char - % Loop over all but the last character in the string - 0 1 4 index length 2 sub { - % string proc char idx - % Find the n+1th character in the string - 3 index exch 1 add get % string proc char char+1 - exch 2 copy % strinq proc char+1 char char+1 char - % Now show the nth character - PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr) - false charpath % string proc char+1 char char+1 - /clip load PATdraw - % Move past the character (charpath modified the current point) - currentpoint newpath moveto - % Execute the user proc (should consume char and char+1) - mark 3 1 roll % string proc char+1 mark char char+1 - 4 index exec % string proc char+1 mark... - cleartomark % string proc char+1 - } for - % Now display the last character - PATsstr dup 0 4 -1 roll put % string proc (char+1) - false charpath % string proc - /clip load PATdraw - neewath - pop pop % - -} bind def -% PATmp - the makepattern equivalent -/PATmp { % patdict patmtx PATmp patinstance - exch dup length 7 add % We will add 6 new entries plus 1 FID - dict copy % Create a new dictionary - begin - % Matrix to install when painting the pattern - TilingType PATtcalc - /PatternGState PATcg def - PatternGState /cm 3 -1 roll put - % Check for multi pattern sources (Level 1 fast color patterns) - currentdict /Multi known not { /Multi 1 def } if - % Font dictionary definitions - /FontType 3 def - % Create a dummy encoding vector - /Encoding 256 array def - 3 string 0 1 255 { - Encoding exch dup 3 index cvs cvn put } for pop - /FontMatrix matrix def - /FontBBox BBox def - /BuildChar { - mark 3 1 roll % mark dict char - exch begin - Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata] - PaintType 2 eq Multi 1 ne or - { XStep 0 FontBBox aload pop setcachedevice } - { XStep 0 setcharwidth } ifelse - currentdict % mark [paintdata] dict - /PaintProc load % mark [paintdata] dict paintproc - end - gsave - false PATredef exec true PATredef - grestore - cleartomark % - - } bind def - currentdict - end % newdict - /foo exch % /foo newlict - definefont % newfont -} bind def -% PATpcalc - calculates the starting point and width/height -% of the tile fill for the shape -/PATpcalc { % - PATpcalc nw nh px py - PATDict /CurrentPattern get begin - gsave - % Set up the coordinate system to Pattern Space - % and lock down pattern - PatternGState /cm get setmatrix - BBox aload pop pop pop translate - % Determine the bounding box of the shape - pathbbox % llx lly urx ury - grestore - % Determine (nw, nh) the # of cells to paint width and height - PatHeight div ceiling % llx lly urx qh - 4 1 roll % qh llx lly urx - PatWidth div ceiling % qh llx lly qw - 4 1 roll % qw qh llx lly - PatHeight div floor % qw qh llx ph - 4 1 roll % ph qw qh llx - PatWidth div floor % ph qw qh pw - 4 1 roll % pw ph qw qh - 2 index sub cvi abs % pw ph qs qh-ph - exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph - % Determine the starting point of the pattern fill - %(px, py) - 4 2 roll % nw nh pw ph - PatHeight mul % nw nh pw py - exch % nw nh py pw - PatWidth mul exch % nw nh px py - end -} bind def - -% Save the original routines so that we can use them later on -/oldfill /fill load def -/oldeofill /eofill load def -/oldstroke /stroke load def -/oldshow /show load def -/oldashow /ashow load def -/oldwidthshow /widthshow load def -/oldawidthshow /awidthshow load def -/oldkshow /kshow load def - -% These defs are necessary so that subsequent procs don't bind in -% the originals -/fill { oldfill } bind def -/eofill { oldeofill } bind def -/stroke { oldstroke } bind def -/show { oldshow } bind def -/ashow { oldashow } bind def -/widthshow { oldwidthshow } bind def -/awidthshow { oldawidthshow } bind def -/kshow { oldkshow } bind def -/PATredef { - MyAppDict begin - { - /fill { /clip load PATdraw newpath } bind def - /eofill { /eoclip load PATdraw newpath } bind def - /stroke { PATstroke } bind def - /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def - /ashow { 0 0 null 6 3 roll PATawidthshow } - bind def - /widthshow { 0 0 3 -1 roll PATawidthshow } - bind def - /awidthshow { PATawidthshow } bind def - /kshow { PATkshow } bind def - } { - /fill { oldfill } bind def - /eofill { oldeofill } bind def - /stroke { oldstroke } bind def - /show { oldshow } bind def - /ashow { oldashow } bind def - /widthshow { oldwidthshow } bind def - /awidthshow { oldawidthshow } bind def - /kshow { oldkshow } bind def - } ifelse - end -} bind def -false PATredef -% Conditionally define setcmykcolor if not available -/setcmykcolor where { pop } { - /setcmykcolor { - 1 sub 4 1 roll - 3 { - 3 index add neg dup 0 lt { pop 0 } if 3 1 roll - } repeat - setrgbcolor - pop - } bind def -} ifelse -/PATsc { % colorarray - aload length % c1 ... cn length - dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor - } ifelse } ifelse -} bind def -/PATsg { % dict - begin - lw setlinewidth - lc setlinecap - lj setlinejoin - ml setmiterlimit - ds aload pop setdash - cc aload pop setrgbcolor - cm setmatrix - end -} bind def - -/PATDict 3 dict def -/PATsp { - true PATredef - PATDict begin - /CurrentPattern exch def - % If it's an uncolored pattern, save the color - CurrentPattern /PaintType get 2 eq { - /PColor exch def - } if - /CColor [ currentrgbcolor ] def - end -} bind def -% PATstroke - stroke with the current pattern -/PATstroke { - countdictstack - save - mark - { - currentpoint strokepath moveto - PATpcalc % proc nw nh px py - clip newpath PATfill - } stopped { - (*** PATstroke Warning: Path is too complex, stroking - with gray) = - cleartomark - restore - countdictstack exch sub dup 0 gt - { { end } repeat } { pop } ifelse - gsave 0.5 setgray oldstroke grestore - } { pop restore pop } ifelse - newpath -} bind def -/PATtcalc { % modmtx tilingtype PATtcalc tilematrix - % Note: tiling types 2 and 3 are not supported - gsave - exch concat % tilingtype - matrix currentmatrix exch % cmtx tilingtype - % Tiling type 1 and 3: constant spacing - 2 ne { - % Distort the pattern so that it occupies - % an integral number of device pixels - dup 4 get exch dup 5 get exch % tx ty cmtx - XStep 0 dtransform - round exch round exch % tx ty cmtx dx.x dx.y - XStep div exch XStep div exch % tx ty cmtx a b - 0 YStep dtransform - round exch round exch % tx ty cmtx a b dy.x dy.y - YStep div exch YStep div exch % tx ty cmtx a b c d - 7 -3 roll astore % { a b c d tx ty } - } if - grestore -} bind def -/PATusp { - false PATredef - PATDict begin - CColor PATsc - end -} bind def - -% right45 -11 dict begin -/PaintType 1 def -/PatternType 1 def -/TilingType 1 def -/BBox [0 0 1 1] def -/XStep 1 def -/YStep 1 def -/PatWidth 1 def -/PatHeight 1 def -/Multi 2 def -/PaintData [ - { clippath } bind - { 20 20 true [ 20 0 0 -20 0 20 ] - {<0040100080200100400200800401000802001004 - 0020080040100080200000401000802001004002 - 0080040100080200100400200800401000802000>} - imagemask } bind -] def -/PaintProc { - pop - exec fill -} def -currentdict -end -/P5 exch def - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Helvetica /Helvetica-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Polyline -7.500 slw -gs clippath -3450 4020 m 3450 4080 l 3602 4080 l 3482 4050 l 3602 4020 l cp -eoclip -n 4230 3915 m 3825 3915 l 3960 4050 l - 3465 4050 l gs col0 s gr gr - -% arrowhead -n 3602 4020 m 3482 4050 l 3602 4080 l col0 s -% Polyline -gs clippath -330 5910 m 390 5910 l 390 5759 l 360 5879 l 330 5759 l cp -eoclip -n 360 2295 m - 360 5895 l gs col0 s gr gr - -% arrowhead -n 330 5759 m 360 5879 l 390 5759 l 330 5759 l cp gs 0.00 setgray ef gr col0 s -% Polyline -n 3465 2160 m - 3465 6120 l gs col0 s gr -% Polyline -n 1215 2160 m - 1215 6120 l gs col0 s gr -% Polyline -n 1215 3375 m - 3465 3375 l gs col0 s gr -% Polyline -n 1215 4050 m - 3465 4050 l gs col0 s gr -% Polyline -n 1215 4770 m - 3465 4770 l gs col0 s gr -% Polyline -n 1215 3375 m 3465 3375 l 3465 4050 l 1215 4050 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P5 [16 0 0 -16 81.00 225.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 1215 4410 m - 3465 4410 l gs col0 s gr -% Polyline -n 1215 3015 m - 3465 3015 l gs col0 s gr -% Polyline -n 855 2295 m - 3465 2295 l gs col0 s gr -% Polyline -n 1215 2655 m - 3465 2655 l gs col0 s gr -% Polyline -n 1215 4770 m 3465 4770 l 3465 5445 l 1215 5445 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P5 [16 0 0 -16 81.00 318.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 855 5445 m - 3465 5445 l gs col0 s gr -% Polyline -n 1215 5805 m - 3465 5805 l gs col0 s gr -% Polyline -n 7560 2160 m - 7560 6120 l gs col0 s gr -% Polyline -n 5310 2160 m - 5310 6120 l gs col0 s gr -% Polyline -n 5310 3375 m - 7560 3375 l gs col0 s gr -% Polyline -n 5310 4770 m - 7560 4770 l gs col0 s gr -% Polyline -n 5310 3015 m - 7560 3015 l gs col0 s gr -% Polyline -n 4950 2295 m - 7560 2295 l gs col0 s gr -% Polyline -n 5310 2655 m - 7560 2655 l gs col0 s gr -% Polyline -n 5310 5805 m - 7560 5805 l gs col0 s gr -% Polyline -n 5310 3735 m - 7560 3735 l gs col0 s gr -% Polyline -n 5310 4095 m 7560 4095 l 7560 5445 l 5310 5445 l - cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def -15.00 15.00 sc P5 [16 0 0 -16 354.00 273.00] PATmp PATsp ef gr PATusp gs col0 s gr -% Polyline -n 4950 5445 m - 7560 5445 l gs col0 s gr -/Helvetica-iso ff 180.00 scf sf -3555 3870 m -gs 1 -1 sc (Interrupt) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -315 4320 m -gs 1 -1 sc 90.0 rot (Time) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2340 2880 m -gs 1 -1 sc (Frame Assembly) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2340 3240 m -gs 1 -1 sc (Frame Sending) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2340 4275 m -gs 1 -1 sc (ISR) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2340 4635 m -gs 1 -1 sc (Frame Dissection) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2340 2520 m -gs 1 -1 sc (Data Processing) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2340 5670 m -gs 1 -1 sc (Data Processing) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2340 6030 m -gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -2340 2160 m -gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1215 1845 m -gs 1 -1 sc (Interrupt Operation) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6435 5670 m -gs 1 -1 sc (ISR) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6435 6030 m -gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6435 2160 m -gs 1 -1 sc (...) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6435 3240 m -gs 1 -1 sc (Data Processing) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6435 2520 m -gs 1 -1 sc (ISR) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6435 2880 m -gs 1 -1 sc (Frame Dissection) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6435 3600 m -gs 1 -1 sc (Frame Assembly) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6435 3960 m -gs 1 -1 sc (Frame Sending) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5130 3870 m -gs 1 -1 sc 90.0 rot (Realtime Cycle) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5310 1845 m -gs 1 -1 sc (Interrupt-less Operation) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1035 3870 m -gs 1 -1 sc 90.0 rot (Realtime Cycle) dup sw pop 2 div neg 0 rm col0 sh gr -% here ends figure; -$F2psEnd -rs -end -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/master-locks.eps --- a/documentation/images/master-locks.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,254 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: master-locks.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Fri Jul 21 18:34:19 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 365 161 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 161 moveto 0 0 lineto 365 0 lineto 365 161 lineto closepath clip newpath --61.6 306.9 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 51 -% Polyline -7.500 slw -n 1140 2520 m 990 2520 990 3900 150 arcto 4 {pop} repeat - 990 4050 3180 4050 150 arcto 4 {pop} repeat - 3330 4050 3330 2670 150 arcto 4 {pop} repeat - 3330 2520 1140 2520 150 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 4260 2340 m 4140 2340 4140 4740 120 arcto 4 {pop} repeat - 4140 4860 6630 4860 120 arcto 4 {pop} repeat - 6750 4860 6750 2460 120 arcto 4 {pop} repeat - 6750 2340 4260 2340 120 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col0 s gr -% Ellipse -n 1665 3278 360 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -1665 3323 m -gs 1 -1 sc (RT) dup sw pop 2 div neg 0 rm col0 sh gr -% Arc -n 2745.0 3645.0 180.0 180.0 0.0 arc -gs col0 s gr - -% Arc -n 2745.0 3645.0 90.0 180.0 0.0 arc -gs col0 s gr - -% Ellipse -n 2745 3780 45 45 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -n 2565 3645 m 2520 3645 2520 3915 45 arcto 4 {pop} repeat - 2520 3960 2925 3960 45 arcto 4 {pop} repeat - 2970 3960 2970 3690 45 arcto 4 {pop} repeat - 2970 3645 2565 3645 45 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 2745 3780 m 2700 3915 l 2790 3915 l - cp gs 0.00 setgray ef gr gs col0 s gr -% Ellipse -n 5445 4320 360 360 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -5445 4365 m -gs 1 -1 sc (EoE) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 5938 3231 631 444 0 360 DrawEllipse gs col0 s gr - -% Polyline -2 slj -gs clippath -2506 3765 m 2552 3727 l 2457 3610 l 2510 3722 l 2410 3648 l cp -eoclip -n 2025 3375 m 2027 3375 l 2031 3375 l 2039 3376 l 2049 3377 l 2062 3378 l - 2077 3381 l 2094 3384 l 2113 3390 l 2134 3398 l 2158 3408 l - 2185 3423 l 2216 3441 l 2250 3465 l 2277 3486 l 2304 3507 l - 2329 3529 l 2352 3550 l 2374 3571 l 2394 3592 l 2413 3612 l - 2431 3631 l 2448 3651 l 2464 3669 l 2479 3686 l 2492 3701 l - 2502 3713 l - 2520 3735 l gs col0 s gr gr - -% arrowhead -0 slj -n 2410 3648 m 2510 3722 l 2457 3610 l 2410 3648 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -2942 3715 m 2971 3768 l 3103 3696 l 2984 3727 l 3075 3643 l cp -eoclip -n 5220 4005 m 5219 4004 l 5217 4002 l 5214 3998 l 5209 3992 l 5202 3984 l - 5192 3972 l 5180 3959 l 5165 3942 l 5148 3923 l 5128 3902 l - 5106 3879 l 5082 3854 l 5055 3829 l 5027 3802 l 4998 3774 l - 4967 3747 l 4934 3719 l 4899 3692 l 4863 3665 l 4826 3638 l - 4786 3612 l 4744 3587 l 4700 3563 l 4652 3539 l 4602 3517 l - 4549 3496 l 4492 3477 l 4431 3459 l 4367 3443 l 4300 3430 l - 4230 3420 l 4167 3414 l 4105 3410 l 4043 3409 l 3983 3411 l - 3925 3414 l 3868 3419 l 3814 3426 l 3761 3434 l 3710 3444 l - 3661 3455 l 3613 3467 l 3567 3480 l 3521 3494 l 3477 3508 l - 3434 3523 l 3391 3539 l 3350 3555 l 3310 3572 l 3272 3588 l - 3234 3605 l 3199 3621 l 3165 3637 l 3134 3652 l 3105 3666 l - 3078 3679 l 3055 3691 l 3034 3701 l 3017 3710 l 3003 3718 l - 2991 3724 l 2983 3728 l - 2970 3735 l gs col0 s gr gr - -% arrowhead -0 slj -n 3075 3643 m 2984 3727 l 3103 3696 l 3075 3643 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5327 3223 m 5322 3163 l 5171 3176 l 5294 3196 l 5177 3236 l cp -eoclip -n 2025 3285 m 2026 3285 l 2028 3285 l 2031 3285 l 2037 3285 l 2045 3285 l - 2056 3286 l 2070 3286 l 2087 3286 l 2108 3287 l 2132 3287 l - 2159 3288 l 2189 3288 l 2223 3289 l 2259 3289 l 2298 3290 l - 2339 3291 l 2383 3291 l 2428 3292 l 2475 3293 l 2524 3293 l - 2574 3294 l 2626 3295 l 2678 3295 l 2732 3296 l 2787 3296 l - 2843 3296 l 2900 3296 l 2958 3297 l 3018 3297 l 3079 3297 l - 3142 3296 l 3207 3296 l 3273 3296 l 3342 3295 l 3412 3294 l - 3485 3293 l 3559 3292 l 3635 3290 l 3713 3289 l 3792 3287 l - 3870 3285 l 3960 3282 l 4048 3280 l 4133 3277 l 4213 3273 l - 4289 3270 l 4361 3267 l 4430 3264 l 4494 3260 l 4555 3257 l - 4612 3253 l 4667 3250 l 4719 3247 l 4769 3243 l 4816 3240 l - 4862 3236 l 4906 3233 l 4948 3229 l 4988 3226 l 5026 3223 l - 5063 3219 l 5097 3216 l 5129 3213 l 5159 3210 l 5186 3208 l - 5211 3205 l 5233 3203 l 5252 3201 l 5268 3199 l 5281 3198 l - 5291 3197 l 5299 3196 l - 5310 3195 l gs col0 s gr gr - -% arrowhead -0 slj -n 5177 3236 m 5294 3196 l 5171 3176 l 5177 3236 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5520 3567 m 5481 3522 l 5367 3621 l 5478 3566 l 5406 3667 l cp -eoclip -n 5355 3960 m 5354 3958 l 5353 3952 l 5351 3944 l 5348 3932 l 5345 3917 l - 5342 3900 l 5340 3881 l 5338 3861 l 5338 3839 l 5338 3816 l - 5341 3791 l 5347 3764 l 5355 3735 l 5366 3707 l 5378 3682 l - 5391 3660 l 5404 3641 l 5417 3624 l 5430 3609 l 5444 3596 l - 5456 3584 l 5468 3574 l - 5490 3555 l gs col0 s gr gr - -% arrowhead -0 slj -n 5406 3667 m 5478 3566 l 5367 3621 l 5406 3667 l cp gs 0.00 setgray ef gr col0 s -/Helvetica ff 180.00 scf sf -1080 2745 m -gs 1 -1 sc (Realtime Module) col0 sh gr -/Helvetica ff 180.00 scf sf -4230 2565 m -gs 1 -1 sc (Master Module) col0 sh gr -/Helvetica ff 180.00 scf sf -5940 3285 m -gs 1 -1 sc (Master0) dup sw pop 2 div neg 0 rm col0 sh gr -% Arc -n 4140.0 3285.0 360.0 -90.0 90.0 arc -gs col7 1.00 shd ef gr gs col0 s gr - -/Helvetica ff 150.00 scf sf -4230 3285 m -gs 1 -1 sc 270.0 rot (ecrt) dup sw pop 2 div neg 0 rm col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/masterarch.eps --- a/documentation/images/masterarch.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,432 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: masterarch.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Thu Jul 27 11:10:35 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 393 517 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 517 moveto 0 0 lineto 393 0 lineto 393 517 lineto closepath clip newpath --98.5 598.1 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Helvetica /Helvetica-iso isovec ReEncode -/Courier /Courier-iso isovec ReEncode - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Polyline -7.500 slw -n 5175 7965 m 5760 7965 l 5760 8775 l 5175 8775 l 5175 8415 l 5085 8415 l - 5085 7965 l - cp gs col0 s gr -% Polyline -n 5490 8190 m 5670 8190 l 5670 8370 l 5490 8370 l - cp gs col0 s gr -% Polyline -n 5310 8505 m 5400 8505 l 5400 8595 l 5310 8595 l - cp gs col0 s gr -% Polyline -n 5175 8055 m - 5085 8055 l gs col0 s gr -% Polyline -n 5175 8145 m - 5085 8145 l gs col0 s gr -% Polyline -n 5175 8190 m - 5085 8190 l gs col0 s gr -% Polyline -n 5175 8280 m - 5085 8280 l gs col0 s gr -% Polyline -n 5175 8235 m - 5085 8235 l gs col0 s gr -% Polyline -n 5175 8100 m - 5085 8100 l gs col0 s gr -% Polyline -n 5175 8010 m - 5085 8010 l gs col0 s gr -% Polyline -n 5175 8325 m - 5085 8325 l gs col0 s gr -% Polyline -n 5175 8370 m - 5085 8370 l gs col0 s gr -% Polyline -n 5850 8775 m 5085 8775 l 5085 8815 l 5850 8815 l - cp gs col0 s gr -% Polyline -n 6525 7965 m 7110 7965 l 7110 8775 l 6525 8775 l 6525 8415 l 6435 8415 l - 6435 7965 l - cp gs col0 s gr -% Polyline -n 6840 8190 m 7020 8190 l 7020 8370 l 6840 8370 l - cp gs col0 s gr -% Polyline -n 6660 8505 m 6750 8505 l 6750 8595 l 6660 8595 l - cp gs col0 s gr -% Polyline -n 6525 8055 m - 6435 8055 l gs col0 s gr -% Polyline -n 6525 8145 m - 6435 8145 l gs col0 s gr -% Polyline -n 6525 8190 m - 6435 8190 l gs col0 s gr -% Polyline -n 6525 8280 m - 6435 8280 l gs col0 s gr -% Polyline -n 6525 8235 m - 6435 8235 l gs col0 s gr -% Polyline -n 6525 8100 m - 6435 8100 l gs col0 s gr -% Polyline -n 6525 8010 m - 6435 8010 l gs col0 s gr -% Polyline -n 6525 8325 m - 6435 8325 l gs col0 s gr -% Polyline -n 6525 8370 m - 6435 8370 l gs col0 s gr -% Polyline -n 7200 8775 m 6435 8775 l 6435 8815 l 7200 8815 l - cp gs col0 s gr -% Arc -n 5445.0 5985.0 495.0 180.0 0.0 arc -gs col0 s gr - -/Helvetica-iso ff 150.00 scf sf -5445 5760 m -gs 1 -1 sc (Device) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 150.00 scf sf -5445 5925 m -gs 1 -1 sc (Interface) dup sw pop 2 div neg 0 rm col0 sh gr -% Arc -n 3958.1 4815.0 496.9 -95.0 95.0 arc -gs col0 s gr - -/Helvetica-iso ff 150.00 scf sf -4162 4822 m -gs 1 -1 sc 270.0 rot (Realtime) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 150.00 scf sf -3997 4822 m -gs 1 -1 sc 270.0 rot (Interface) dup sw pop 2 div neg 0 rm col0 sh gr -% Arc -n 5175.0 2655.0 630.0 0.0 180.0 arc -gs col0 s gr - -/Helvetica-iso ff 180.00 scf sf -5175 3105 m -gs 1 -1 sc (Interface) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5175 2880 m -gs 1 -1 sc (Sysfs) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline - [60] 0 sd -n 7785 2655 m - 1575 2655 l gs col0 s gr [] 0 sd -/Helvetica-iso ff 180.00 scf sf -1665 2880 m -gs 1 -1 sc (Kernel-Space) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1665 2565 m -gs 1 -1 sc (User-Space) col0 sh gr -% Ellipse -n 5175 1800 495 495 0 360 DrawEllipse gs col0 s gr - -/Helvetica-iso ff 180.00 scf sf -5175 1845 m -gs 1 -1 sc (lsec) dup sw pop 2 div neg 0 rm col0 sh gr -% Arc -n 7245.0 5985.0 270.0 180.0 0.0 arc -gs col0 s gr - -% Ellipse -n 5445 4815 810 495 0 360 DrawEllipse gs col0 s gr - -% Polyline -n 5445 7965 m - 5445 7425 l gs col0 s gr -% Polyline -n 6795 7965 m - 6795 7425 l gs col0 s gr -% Polyline -n 5445 6885 m - 5445 5985 l gs col0 s gr -% Polyline -n 5535 8820 m 5625 8820 l 5625 8910 l 5535 8910 l - cp gs col0 s gr -% Polyline -n 6885 8820 m 6975 8820 l 6975 8910 l 6885 8910 l - cp gs col0 s gr -% Polyline -n 7245 6885 m - 7245 5985 l gs col0 s gr -% Polyline -n 4740 6345 m 4635 6345 4635 7500 105 arcto 4 {pop} repeat - 4635 7605 7500 7605 105 arcto 4 {pop} repeat - 7605 7605 7605 6450 105 arcto 4 {pop} repeat - 7605 6345 4740 6345 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 4905 6885 m 5985 6885 l 5985 7425 l 4905 7425 l - cp gs col0 s gr -% Polyline -n 6255 6885 m 7335 6885 l 7335 7425 l 6255 7425 l - cp gs col0 s gr -% Polyline -n 5445 5490 m - 5445 5310 l gs col0 s gr -% Polyline -n 4035 3645 m 3915 3645 3915 5865 120 arcto 4 {pop} repeat - 3915 5985 6315 5985 120 arcto 4 {pop} repeat - 6435 5985 6435 3765 120 arcto 4 {pop} repeat - 6435 3645 4035 3645 120 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline -n 4635 4815 m - 4455 4815 l gs col0 s gr -% Polyline -n 3915 4815 m - 3465 4815 l gs col0 s gr -% Polyline -n 7605 3645 m 6885 3645 l 6885 5985 l 7605 5985 l - cp gs col0 s gr -% Polyline - [60] 0 sd -n 1575 7785 m - 7785 7785 l gs col0 s gr [] 0 sd -% Polyline -n 1890 3645 m 1755 3645 1755 5850 135 arcto 4 {pop} repeat - 1755 5985 3330 5985 135 arcto 4 {pop} repeat - 3465 5985 3465 3780 135 arcto 4 {pop} repeat - 3465 3645 1890 3645 135 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline - [60] 0 sd -n 1575 8280 m - 1575 2205 l gs col0 s gr [] 0 sd -% Polyline -n 5175 3285 m - 5175 3645 l gs col0 s gr -% Polyline - [60] 0 sd -n 7785 8280 m - 7785 2205 l gs col0 s gr [] 0 sd -% Polyline -n 5175 2655 m - 5175 2295 l gs col0 s gr -% Polyline -2 slj -n 5580 8910 m 5580 8911 l 5579 8912 l 5579 8915 l 5577 8918 l 5575 8923 l - 5572 8929 l 5568 8936 l 5564 8944 l 5557 8952 l 5550 8961 l - 5541 8970 l 5530 8979 l 5516 8988 l 5500 8997 l 5480 9007 l - 5456 9016 l 5427 9026 l 5393 9036 l 5355 9045 l 5320 9052 l - 5284 9059 l 5248 9064 l 5213 9069 l 5178 9073 l 5144 9076 l - 5110 9079 l 5077 9081 l 5044 9083 l 5012 9085 l 4981 9086 l - 4950 9087 l 4920 9088 l 4892 9089 l 4866 9089 l 4843 9089 l - 4822 9090 l 4805 9090 l 4791 9090 l 4782 9090 l 4775 9090 l - 4772 9090 l - 4770 9090 l gs col0 s gr -% Polyline -n 6931 8910 m 6931 8912 l 6931 8914 l 6931 8917 l 6930 8921 l 6929 8927 l - 6928 8934 l 6926 8943 l 6924 8953 l 6921 8964 l 6917 8976 l - 6911 8989 l 6905 9003 l 6897 9017 l 6887 9032 l 6876 9047 l - 6862 9062 l 6846 9078 l 6827 9094 l 6805 9110 l 6780 9126 l - 6750 9143 l 6716 9160 l 6676 9178 l 6631 9196 l 6580 9214 l - 6523 9233 l 6459 9252 l 6390 9270 l 6335 9283 l 6278 9296 l - 6220 9308 l 6161 9319 l 6103 9330 l 6044 9339 l 5986 9349 l - 5929 9357 l 5872 9365 l 5815 9372 l 5759 9379 l 5704 9385 l - 5649 9391 l 5594 9396 l 5540 9401 l 5486 9406 l 5432 9410 l - 5380 9414 l 5327 9418 l 5276 9422 l 5226 9425 l 5177 9428 l - 5130 9431 l 5084 9434 l 5041 9436 l 5000 9439 l 4962 9441 l - 4927 9442 l 4896 9444 l 4868 9445 l 4844 9447 l 4824 9448 l - 4807 9448 l 4794 9449 l 4784 9449 l 4778 9450 l 4773 9450 l - 4771 9450 l - 4770 9450 l gs col0 s gr -/Helvetica-iso ff 150.00 scf sf -5445 7200 m -gs 1 -1 sc (net_device) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 150.00 scf sf -6795 7200 m -gs 1 -1 sc (net_device) dup sw pop 2 div neg 0 rm col0 sh gr -/Courier-iso ff 150.00 scf sf -5355 6210 m -gs 1 -1 sc (ecdev_*\(\)) dup sw pop neg 0 rm col0 sh gr -/Courier-iso ff 150.00 scf sf -7110 6210 m -gs 1 -1 sc (netif_*\(\)) dup sw pop neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6345 6570 m -gs 1 -1 sc (EtherCAT Network) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6345 6750 m -gs 1 -1 sc (Driver Module) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5445 4860 m -gs 1 -1 sc (Master0) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4005 3870 m -gs 1 -1 sc (EtherCAT Master Module) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -7290 4815 m -gs 1 -1 sc 90.0 rot (Network Stack) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 9135 m -gs 1 -1 sc (EtherCAT) dup sw pop neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 9495 m -gs 1 -1 sc (Ethernet) dup sw pop neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4995 8100 m -gs 1 -1 sc (NIC) dup sw pop neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -6345 8100 m -gs 1 -1 sc (NIC) dup sw pop neg 0 rm col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1665 8010 m -gs 1 -1 sc (Hardware) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1845 3870 m -gs 1 -1 sc (Realtime Module) col0 sh gr -/Courier-iso ff 150.00 scf sf -3645 4725 m -gs 1 -1 sc 270.0 rot (ecrt_*\(\)) dup sw pop neg 0 rm col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/masterarch.fig --- a/documentation/images/masterarch.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,156 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 7245.000 5985.000 6975 5985 7245 5715 7515 5985 -6 5085 7965 5850 8820 -2 3 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 8 - 5175 7965 5760 7965 5760 8775 5175 8775 5175 8415 5085 8415 - 5085 7965 5175 7965 -2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 - 5490 8190 5670 8190 5670 8370 5490 8370 5490 8190 -2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 - 5310 8505 5400 8505 5400 8595 5310 8595 5310 8505 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 8055 5085 8055 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 8145 5085 8145 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 8190 5085 8190 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 8280 5085 8280 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 8235 5085 8235 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 8100 5085 8100 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 8010 5085 8010 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 8325 5085 8325 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 8370 5085 8370 -2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 - 5850 8775 5085 8775 5085 8815 5850 8815 5850 8775 --6 -6 6435 7965 7200 8820 -2 3 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 8 - 6525 7965 7110 7965 7110 8775 6525 8775 6525 8415 6435 8415 - 6435 7965 6525 7965 -2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 - 6840 8190 7020 8190 7020 8370 6840 8370 6840 8190 -2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 - 6660 8505 6750 8505 6750 8595 6660 8595 6660 8505 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 6525 8055 6435 8055 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 6525 8145 6435 8145 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 6525 8190 6435 8190 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 6525 8280 6435 8280 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 6525 8235 6435 8235 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 6525 8100 6435 8100 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 6525 8010 6435 8010 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 6525 8325 6435 8325 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 6525 8370 6435 8370 -2 2 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 5 - 7200 8775 6435 8775 6435 8815 7200 8815 7200 8775 --6 -6 4905 5445 5985 6030 -5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 5445.000 5985.000 4950 5985 5445 5490 5940 5985 -4 1 0 50 -1 16 10 0.0000 4 105 795 5445 5760 Device\001 -4 1 0 50 -1 16 10 0.0000 4 105 975 5445 5925 Interface\001 --6 -6 3870 4275 4500 5355 -5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 3958.125 4815.000 3915 4320 4455 4815 3915 5310 -4 1 0 50 -1 16 10 4.7124 4 105 1020 4162 4822 Realtime\001 -4 1 0 50 -1 16 10 4.7124 4 105 975 3997 4822 Interface\001 --6 -6 4500 2610 5850 3330 -5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 5175.000 2655.000 5805 2655 5175 3285 4545 2655 -4 1 0 50 -1 16 12 0.0000 4 120 1215 5175 3105 Interface\001 -4 1 0 50 -1 16 12 0.0000 4 165 795 5175 2880 Sysfs\001 --6 -6 1575 2430 7785 2925 -2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 7785 2655 1575 2655 -4 0 0 50 -1 16 12 0.0000 4 150 1980 1665 2880 Kernel-Space\001 -4 0 0 50 -1 16 12 0.0000 4 150 1725 1665 2565 User-Space\001 --6 -6 4635 1260 5715 2340 -1 2 0 1 0 7 50 -1 -1 4.000 1 0.0000 5175 1800 495 495 5670 2295 4680 1305 -4 1 0 50 -1 16 12 0.0000 4 120 585 5175 1845 lsec\001 --6 -1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 5445 4815 810 495 4635 4320 6255 5310 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 5445 7965 5445 7425 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 6795 7965 6795 7425 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 5445 6885 5445 5985 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 5535 8820 5625 8820 5625 8910 5535 8910 5535 8820 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 6885 8820 6975 8820 6975 8910 6885 8910 6885 8820 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 7245 6885 7245 5985 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 - 7605 7605 7605 6345 4635 6345 4635 7605 7605 7605 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 4905 6885 5985 6885 5985 7425 4905 7425 4905 6885 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 6255 6885 7335 6885 7335 7425 6255 7425 6255 6885 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 5445 5490 5445 5310 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 8 0 0 5 - 6435 5985 6435 3645 3915 3645 3915 5985 6435 5985 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 4635 4815 4455 4815 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 3915 4815 3465 4815 -2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5 - 7605 3645 6885 3645 6885 5985 7605 5985 7605 3645 -2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 1575 7785 7785 7785 -2 4 0 1 0 7 50 -1 -1 0.000 0 0 9 0 0 5 - 1755 5985 1755 3645 3465 3645 3465 5985 1755 5985 -2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 1575 8280 1575 2205 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 3285 5175 3645 -2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 7785 8280 7785 2205 -2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2 - 5175 2655 5175 2295 -3 2 0 1 0 7 50 -1 -1 0.000 0 0 0 3 - 5580 8910 5355 9045 4770 9090 - 0.000 -1.000 0.000 -3 2 0 1 0 7 50 -1 -1 0.000 0 0 0 3 - 6931 8910 6390 9270 4770 9450 - 0.000 -1.000 0.000 -4 1 0 50 -1 16 10 0.0000 4 135 1215 5445 7200 net_device\001 -4 1 0 50 -1 16 10 0.0000 4 135 1215 6795 7200 net_device\001 -4 2 0 50 -1 12 10 0.0000 4 105 1080 5355 6210 ecdev_*()\001 -4 2 0 50 -1 12 10 0.0000 4 105 1080 7110 6210 netif_*()\001 -4 1 0 50 -1 16 12 0.0000 4 120 2685 6345 6570 EtherCAT Network\001 -4 1 0 50 -1 16 12 0.0000 4 120 1995 6345 6750 Driver Module\001 -4 1 0 50 -1 16 12 0.0000 4 120 1140 5445 4860 Master0\001 -4 0 0 50 -1 16 12 0.0000 4 120 3585 4005 3870 EtherCAT Master Module\001 -4 1 0 50 -1 16 12 1.5708 4 120 2070 7290 4815 Network Stack\001 -4 2 0 50 -1 16 12 0.0000 4 120 1425 4725 9135 EtherCAT\001 -4 2 0 50 -1 16 12 0.0000 4 120 1200 4725 9495 Ethernet\001 -4 2 0 50 -1 16 12 0.0000 4 120 555 4995 8100 NIC\001 -4 2 0 50 -1 16 12 0.0000 4 120 555 6345 8100 NIC\001 -4 0 0 50 -1 16 12 0.0000 4 120 1410 1665 8010 Hardware\001 -4 0 0 50 -1 16 12 0.0000 4 120 2385 1845 3870 Realtime Module\001 -4 2 0 50 -1 12 10 4.7124 4 105 960 3645 4725 ecrt_*()\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/masterarch.pdf Binary file documentation/images/masterarch.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/masters.eps --- a/documentation/images/masters.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: masters.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Thu Jul 27 11:18:48 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 278 143 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 143 moveto 0 0 lineto 278 0 lineto 278 143 lineto closepath clip newpath --98.5 221.9 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 3037 2700 697 337 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -3015 2790 m -gs 1 -1 sc (master 0) dup sw pop 2 div neg 0 rm col0 sh gr -% Ellipse -n 4747 2700 697 337 0 360 DrawEllipse gs col0 s gr - -/Helvetica ff 180.00 scf sf -4770 2790 m -gs 1 -1 sc (master 1) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 2265 1890 m 2160 1890 2160 3135 105 arcto 4 {pop} repeat - 2160 3240 5520 3240 105 arcto 4 {pop} repeat - 5625 3240 5625 1995 105 arcto 4 {pop} repeat - 5625 1890 2265 1890 105 arcto 4 {pop} repeat - cp gs col0 s gr -% Polyline - [60] 0 sd -n 1575 1275 m 5895 1275 l 5895 3510 l 1575 3510 l - cp gs col0 s gr [] 0 sd -/Helvetica ff 180.00 scf sf -2295 2115 m -gs 1 -1 sc (EtherCAT master module) col0 sh gr -/Helvetica ff 180.00 scf sf -1710 1530 m -gs 1 -1 sc (Kernel space) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/modes.eps --- a/documentation/images/modes.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,254 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: modes.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Sat Aug 5 17:19:24 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 428 87 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 87 moveto 0 0 lineto 428 0 lineto 428 87 lineto closepath clip newpath --69.2 130.4 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 100 -% Polyline -7.500 slw -n 1500 1125 m 1395 1125 1395 1560 105 arcto 4 {pop} repeat - 1395 1665 2370 1665 105 arcto 4 {pop} repeat - 2475 1665 2475 1230 105 arcto 4 {pop} repeat - 2475 1125 1500 1125 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col0 s gr -/Helvetica ff 180.00 scf sf -1935 1462 m -gs 1 -1 sc (Orphaned) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 4110 1125 m 4005 1125 4005 1560 105 arcto 4 {pop} repeat - 4005 1665 4980 1665 105 arcto 4 {pop} repeat - 5085 1665 5085 1230 105 arcto 4 {pop} repeat - 5085 1125 4110 1125 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col0 s gr -/Helvetica ff 180.00 scf sf -4545 1462 m -gs 1 -1 sc (Idle) dup sw pop 2 div neg 0 rm col0 sh gr -% Polyline -n 6720 1125 m 6615 1125 6615 1560 105 arcto 4 {pop} repeat - 6615 1665 7590 1665 105 arcto 4 {pop} repeat - 7695 1665 7695 1230 105 arcto 4 {pop} repeat - 7695 1125 6720 1125 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col0 s gr -/Helvetica ff 180.00 scf sf -7155 1462 m -gs 1 -1 sc (Operation) dup sw pop 2 div neg 0 rm col0 sh gr -% here ends figure; -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 1170 810 64 64 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -4049 1158 m 4077 1105 l 3944 1034 l 4036 1117 l 3916 1087 l cp -eoclip -n 2430 1125 m 2431 1124 l 2434 1123 l 2438 1121 l 2445 1117 l 2455 1112 l - 2468 1105 l 2484 1097 l 2502 1087 l 2524 1077 l 2548 1065 l - 2574 1053 l 2603 1040 l 2633 1027 l 2664 1013 l 2697 1000 l - 2731 988 l 2767 975 l 2804 963 l 2843 952 l 2884 942 l - 2927 932 l 2973 923 l 3021 916 l 3072 909 l 3126 904 l - 3182 901 l 3240 900 l 3298 901 l 3354 904 l 3408 909 l - 3459 916 l 3507 923 l 3553 932 l 3596 942 l 3637 952 l - 3676 963 l 3713 975 l 3749 988 l 3783 1000 l 3816 1013 l - 3848 1027 l 3877 1040 l 3906 1053 l 3932 1065 l 3956 1077 l - 3978 1087 l 3996 1097 l 4012 1105 l 4025 1112 l 4035 1117 l - - 4050 1125 l gs col0 s gr gr - -% arrowhead -0 slj -n 3916 1087 m 4036 1117 l 3944 1034 l 3916 1087 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -6659 1158 m 6687 1105 l 6554 1034 l 6646 1117 l 6526 1087 l cp -eoclip -n 5040 1125 m 5041 1124 l 5044 1123 l 5048 1121 l 5055 1117 l 5065 1112 l - 5078 1105 l 5094 1097 l 5112 1087 l 5134 1077 l 5158 1065 l - 5184 1053 l 5213 1040 l 5243 1027 l 5274 1013 l 5307 1000 l - 5341 988 l 5377 975 l 5414 963 l 5453 952 l 5494 942 l - 5537 932 l 5583 923 l 5631 916 l 5682 909 l 5736 904 l - 5792 901 l 5850 900 l 5908 901 l 5964 904 l 6018 909 l - 6069 916 l 6117 923 l 6163 932 l 6206 942 l 6247 952 l - 6286 963 l 6323 975 l 6359 988 l 6393 1000 l 6426 1013 l - 6458 1027 l 6487 1040 l 6516 1053 l 6542 1065 l 6566 1077 l - 6588 1087 l 6606 1097 l 6622 1105 l 6635 1112 l 6645 1117 l - - 6660 1125 l gs col0 s gr gr - -% arrowhead -0 slj -n 6526 1087 m 6646 1117 l 6554 1034 l 6526 1087 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -1426 1155 m 1472 1116 l 1373 1002 l 1429 1113 l 1328 1041 l cp -eoclip -n 1170 810 m - 1440 1125 l gs col0 s gr gr - -% arrowhead -0 slj -n 1328 1041 m 1429 1113 l 1373 1002 l 1328 1041 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -2430 1631 m 2402 1684 l 2535 1755 l 2444 1673 l 2564 1703 l cp -eoclip -n 4050 1665 m 4049 1666 l 4046 1667 l 4042 1669 l 4035 1673 l 4025 1678 l - 4012 1685 l 3996 1693 l 3978 1703 l 3956 1713 l 3932 1725 l - 3906 1737 l 3877 1750 l 3847 1763 l 3816 1777 l 3783 1790 l - 3749 1802 l 3713 1815 l 3676 1827 l 3637 1838 l 3596 1848 l - 3553 1858 l 3507 1867 l 3459 1874 l 3408 1881 l 3354 1886 l - 3298 1889 l 3240 1890 l 3182 1889 l 3126 1886 l 3072 1881 l - 3021 1874 l 2973 1867 l 2927 1858 l 2884 1848 l 2843 1838 l - 2804 1827 l 2767 1815 l 2731 1802 l 2697 1790 l 2664 1777 l - 2632 1763 l 2603 1750 l 2574 1737 l 2548 1725 l 2524 1713 l - 2502 1703 l 2484 1693 l 2468 1685 l 2455 1678 l 2445 1673 l - - 2430 1665 l gs col0 s gr gr - -% arrowhead -0 slj -n 2564 1703 m 2444 1673 l 2535 1755 l 2564 1703 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5040 1631 m 5012 1684 l 5145 1755 l 5054 1673 l 5174 1703 l cp -eoclip -n 6660 1665 m 6659 1666 l 6656 1667 l 6652 1669 l 6645 1673 l 6635 1678 l - 6622 1685 l 6606 1693 l 6588 1703 l 6566 1713 l 6542 1725 l - 6516 1737 l 6487 1750 l 6457 1763 l 6426 1777 l 6393 1790 l - 6359 1802 l 6323 1815 l 6286 1827 l 6247 1838 l 6206 1848 l - 6163 1858 l 6117 1867 l 6069 1874 l 6018 1881 l 5964 1886 l - 5908 1889 l 5850 1890 l 5792 1889 l 5736 1886 l 5682 1881 l - 5631 1874 l 5583 1867 l 5537 1858 l 5494 1848 l 5453 1838 l - 5414 1827 l 5377 1815 l 5341 1802 l 5307 1790 l 5274 1777 l - 5242 1763 l 5213 1750 l 5184 1737 l 5158 1725 l 5134 1713 l - 5112 1703 l 5094 1693 l 5078 1685 l 5065 1678 l 5055 1673 l - - 5040 1665 l gs col0 s gr gr - -% arrowhead -0 slj -n 5174 1703 m 5054 1673 l 5145 1755 l 5174 1703 l cp gs 0.00 setgray ef gr col0 s -/Helvetica ff 180.00 scf sf -3240 810 m -gs 1 -1 sc (Device connection) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -5850 810 m -gs 1 -1 sc (Master request) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -3240 2070 m -gs 1 -1 sc (Device disconnection) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -5850 2070 m -gs 1 -1 sc (Master release) dup sw pop 2 div neg 0 rm col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/modes.fig --- a/documentation/images/modes.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -6 1215 1125 2655 1665 -2 4 0 1 0 7 100 0 20 4.000 0 0 7 0 0 5 - 2475 1665 2475 1125 1395 1125 1395 1665 2475 1665 -4 1 0 100 0 16 12 0.0000 4 150 1440 1935 1462 Orphaned\001 --6 -6 4005 1125 5085 1665 -2 4 0 1 0 7 100 0 20 4.000 0 0 7 0 0 5 - 5085 1665 5085 1125 4005 1125 4005 1665 5085 1665 -4 1 0 100 0 16 12 0.0000 4 120 510 4545 1462 Idle\001 --6 -6 6450 1125 7860 1665 -2 4 0 1 0 7 100 0 20 4.000 0 0 7 0 0 5 - 7695 1665 7695 1125 6615 1125 6615 1665 7695 1665 -4 1 0 100 0 16 12 0.0000 4 150 1410 7155 1462 Operation\001 --6 -1 3 0 1 0 0 50 -1 20 0.000 1 0.0000 1170 810 64 64 1170 810 1125 765 -3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3 - 1 1 1.00 60.00 120.00 - 2430 1125 3240 900 4050 1125 - 0.000 -1.000 0.000 -3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3 - 1 1 1.00 60.00 120.00 - 5040 1125 5850 900 6660 1125 - 0.000 -1.000 0.000 -3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2 - 1 1 1.00 60.00 120.00 - 1170 810 1440 1125 - 0.000 0.000 -3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3 - 1 1 1.00 60.00 120.00 - 4050 1665 3240 1890 2430 1665 - 0.000 -1.000 0.000 -3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3 - 1 1 1.00 60.00 120.00 - 6660 1665 5850 1890 5040 1665 - 0.000 -1.000 0.000 -4 1 0 50 -1 16 12 0.0000 4 120 2640 3240 810 Device connection\001 -4 1 0 50 -1 16 12 0.0000 4 150 2100 5850 810 Master request\001 -4 1 0 50 -1 16 12 0.0000 4 120 3060 3240 2070 Device disconnection\001 -4 1 0 50 -1 16 12 0.0000 4 120 2100 5850 2070 Master release\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/modes.pdf Binary file documentation/images/modes.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/phases.fig --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/documentation/images/phases.fig Thu Jul 03 15:17:51 2008 +0000 @@ -0,0 +1,50 @@ +#FIG 3.2 +Portrait +Center +Metric +A4 +100.00 +Single +-2 +1200 2 +0 32 #8e8e8e +6 1215 1125 2655 1665 +2 4 0 1 0 7 100 0 20 4.000 0 0 7 0 0 5 + 2475 1665 2475 1125 1395 1125 1395 1665 2475 1665 +4 1 0 100 0 16 12 0.0000 4 150 1440 1935 1462 Orphaned\001 +-6 +6 4005 1125 5085 1665 +2 4 0 1 0 7 100 0 20 4.000 0 0 7 0 0 5 + 5085 1665 5085 1125 4005 1125 4005 1665 5085 1665 +4 1 0 100 0 16 12 0.0000 4 120 510 4545 1462 Idle\001 +-6 +6 6450 1125 7860 1665 +2 4 0 1 0 7 100 0 20 4.000 0 0 7 0 0 5 + 7695 1665 7695 1125 6615 1125 6615 1665 7695 1665 +4 1 0 100 0 16 12 0.0000 4 150 1410 7155 1462 Operation\001 +-6 +1 3 0 1 0 0 50 -1 20 0.000 1 0.0000 1170 810 64 64 1170 810 1125 765 +3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3 + 1 1 1.00 60.00 120.00 + 2430 1125 3240 900 4050 1125 + 0.000 -1.000 0.000 +3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3 + 1 1 1.00 60.00 120.00 + 5040 1125 5850 900 6660 1125 + 0.000 -1.000 0.000 +3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 2 + 1 1 1.00 60.00 120.00 + 1170 810 1440 1125 + 0.000 0.000 +3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3 + 1 1 1.00 60.00 120.00 + 4050 1665 3240 1890 2430 1665 + 0.000 -1.000 0.000 +3 2 0 1 0 7 50 -1 -1 0.000 0 1 0 3 + 1 1 1.00 60.00 120.00 + 6660 1665 5850 1890 5040 1665 + 0.000 -1.000 0.000 +4 1 0 50 -1 16 12 0.0000 4 120 2640 3240 810 Device connection\001 +4 1 0 50 -1 16 12 0.0000 4 150 2100 5850 810 Master request\001 +4 1 0 50 -1 16 12 0.0000 4 120 3060 3240 2070 Device disconnection\001 +4 1 0 50 -1 16 12 0.0000 4 120 2100 5850 2070 Master release\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/phases.pdf Binary file documentation/images/phases.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/statetrans.eps --- a/documentation/images/statetrans.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,287 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: statetrans.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Wed Aug 9 13:16:04 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 296 178 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 178 moveto 0 0 lineto 296 0 lineto 296 178 lineto closepath clip newpath --109.4 255.3 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 100 -% Ellipse -7.500 slw -n 1845 2025 101 101 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -2715 2055 m 2715 1995 l 2564 1995 l 2684 2025 l 2564 2055 l cp -eoclip -n 1840 2025 m - 2700 2025 l gs col0 s gr gr - -% arrowhead -0 slj -n 2564 2055 m 2684 2025 l 2564 1995 l 2564 2055 l cp gs 0.00 setgray ef gr col0 s -% here ends figure; -% -% here starts figure with depth 50 -% Ellipse -7.500 slw -n 3150 2025 445 445 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr - -% Ellipse -n 4280 3600 445 445 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr - -% Ellipse -n 5405 2025 445 445 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr - -% Polyline -2 slj -gs clippath -4022 3214 m 4081 3205 l 4059 3055 l 4048 3179 l 4000 3064 l cp -eoclip -n 3465 2340 m 3466 2341 l 3469 2343 l 3475 2346 l 3483 2351 l 3495 2358 l - 3509 2366 l 3526 2377 l 3545 2389 l 3565 2402 l 3587 2417 l - 3610 2434 l 3634 2451 l 3658 2470 l 3683 2490 l 3708 2513 l - 3734 2537 l 3760 2564 l 3787 2594 l 3815 2626 l 3843 2662 l - 3870 2700 l 3896 2739 l 3918 2778 l 3939 2815 l 3956 2850 l - 3971 2884 l 3984 2916 l 3995 2947 l 4005 2976 l 4013 3005 l - 4020 3032 l 4026 3059 l 4031 3084 l 4036 3107 l 4040 3128 l - 4043 3147 l 4045 3162 l 4047 3175 l - 4050 3195 l gs col0 s gr gr - -% arrowhead -0 slj -n 4000 3064 m 4048 3179 l 4059 3055 l 4000 3064 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4997 1878 m 5020 1822 l 4880 1765 l 4980 1839 l 4857 1821 l cp -eoclip -n 3600 1935 m 3601 1934 l 3604 1933 l 3608 1930 l 3615 1926 l 3625 1920 l - 3637 1913 l 3652 1904 l 3670 1894 l 3691 1883 l 3714 1871 l - 3738 1858 l 3765 1845 l 3792 1832 l 3822 1819 l 3852 1806 l - 3884 1793 l 3918 1781 l 3954 1769 l 3992 1758 l 4032 1747 l - 4075 1737 l 4121 1728 l 4170 1721 l 4222 1714 l 4275 1710 l - 4328 1708 l 4381 1707 l 4431 1708 l 4478 1711 l 4523 1715 l - 4566 1721 l 4606 1727 l 4644 1734 l 4680 1742 l 4715 1750 l - 4748 1759 l 4780 1768 l 4811 1778 l 4840 1787 l 4867 1796 l - 4893 1805 l 4916 1814 l 4936 1821 l 4953 1828 l 4967 1834 l - 4978 1838 l - 4995 1845 l gs col0 s gr gr - -% arrowhead -0 slj -n 4857 1821 m 4980 1839 l 4880 1765 l 4857 1821 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -4467 3201 m 4524 3217 l 4565 3071 l 4504 3179 l 4507 3055 l cp -eoclip -n 5130 2385 m 5129 2386 l 5126 2388 l 5120 2391 l 5112 2396 l 5102 2404 l - 5088 2413 l 5072 2424 l 5053 2437 l 5033 2451 l 5012 2467 l - 4989 2483 l 4966 2501 l 4943 2521 l 4918 2541 l 4893 2563 l - 4867 2588 l 4840 2614 l 4812 2643 l 4783 2675 l 4754 2709 l - 4725 2745 l 4697 2782 l 4672 2818 l 4649 2853 l 4629 2886 l - 4611 2917 l 4596 2946 l 4582 2974 l 4569 3000 l 4558 3026 l - 4548 3051 l 4539 3074 l 4531 3096 l 4524 3117 l 4518 3136 l - 4513 3152 l 4508 3166 l 4505 3177 l - 4500 3195 l gs col0 s gr gr - -% arrowhead -0 slj -n 4507 3055 m 4504 3179 l 4565 3071 l 4507 3055 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3597 2126 m 3574 2182 l 3715 2238 l 3615 2166 l 3737 2182 l cp -eoclip -n 4950 2115 m 4949 2116 l 4946 2117 l 4942 2119 l 4935 2122 l 4925 2127 l - 4912 2133 l 4896 2141 l 4877 2149 l 4856 2158 l 4833 2168 l - 4808 2179 l 4781 2190 l 4753 2200 l 4723 2211 l 4692 2222 l - 4660 2232 l 4626 2242 l 4590 2251 l 4553 2260 l 4513 2269 l - 4470 2276 l 4425 2283 l 4377 2288 l 4327 2292 l 4275 2295 l - 4223 2296 l 4173 2295 l 4125 2293 l 4080 2289 l 4037 2284 l - 3997 2279 l 3960 2272 l 3924 2265 l 3890 2258 l 3858 2250 l - 3827 2241 l 3797 2232 l 3769 2223 l 3742 2214 l 3717 2205 l - 3694 2197 l 3673 2189 l 3654 2182 l 3638 2176 l 3625 2171 l - 3615 2166 l - 3600 2160 l gs col0 s gr gr - -% arrowhead -0 slj -n 3737 2182 m 3615 2166 l 3715 2238 l 3737 2182 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -3268 2457 m 3208 2463 l 3224 2613 l 3242 2491 l 3283 2607 l cp -eoclip -n 3870 3420 m 3869 3419 l 3866 3418 l 3861 3416 l 3854 3413 l 3843 3408 l - 3830 3402 l 3814 3394 l 3796 3385 l 3776 3375 l 3755 3364 l - 3732 3351 l 3709 3337 l 3684 3322 l 3660 3306 l 3635 3288 l - 3609 3268 l 3583 3247 l 3557 3223 l 3530 3196 l 3503 3167 l - 3475 3134 l 3447 3098 l 3420 3060 l 3395 3020 l 3372 2980 l - 3352 2941 l 3335 2903 l 3319 2867 l 3306 2831 l 3295 2798 l - 3286 2765 l 3278 2733 l 3271 2702 l 3265 2672 l 3260 2642 l - 3255 2614 l 3252 2588 l 3249 2564 l 3246 2542 l 3244 2523 l - 3243 2507 l 3242 2495 l - 3240 2475 l gs col0 s gr gr - -% arrowhead -0 slj -n 3283 2607 m 3242 2491 l 3224 2613 l 3283 2607 l cp gs 0.00 setgray ef gr col0 s -% Polyline -2 slj -gs clippath -5681 1668 m 5737 1689 l 5791 1548 l 5721 1650 l 5735 1527 l cp -eoclip -n 5805 1800 m 5807 1800 l 5813 1800 l 5822 1799 l 5836 1799 l 5855 1798 l - 5879 1797 l 5907 1795 l 5938 1793 l 5970 1791 l 6005 1787 l - 6039 1783 l 6074 1779 l 6107 1773 l 6140 1766 l 6171 1758 l - 6200 1748 l 6227 1736 l 6251 1722 l 6272 1705 l 6289 1686 l - 6300 1665 l 6305 1642 l 6305 1618 l 6300 1594 l 6292 1572 l - 6283 1550 l 6271 1530 l 6259 1511 l 6246 1493 l 6233 1476 l - 6220 1460 l 6206 1444 l 6192 1428 l 6177 1413 l 6161 1398 l - 6145 1383 l 6126 1367 l 6107 1353 l 6085 1338 l 6062 1326 l - 6038 1315 l 6012 1308 l 5985 1305 l 5956 1308 l 5929 1318 l - 5904 1332 l 5881 1350 l 5861 1372 l 5842 1395 l 5824 1421 l - 5808 1449 l 5792 1478 l 5778 1508 l 5765 1537 l 5753 1565 l - 5743 1591 l 5734 1614 l 5727 1633 l - 5715 1665 l gs col0 s gr gr - -% arrowhead -0 slj -n 5735 1527 m 5721 1650 l 5791 1548 l 5735 1527 l cp gs 0.00 setgray ef gr col0 s -/Helvetica ff 240.00 scf sf -3150 2115 m -gs 1 -1 sc (s0) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 240.00 scf sf -5400 2115 m -gs 1 -1 sc (s1) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 240.00 scf sf -4275 3690 m -gs 1 -1 sc (s2) dup sw pop 2 div neg 0 rm col0 sh gr -/Symbol ff 240.00 scf sf -3915 2610 m -gs 1 -1 sc (e) dup sw pop 2 div neg 0 rm col0 sh gr -/Symbol ff 240.00 scf sf -3375 3240 m -gs 1 -1 sc (e) dup sw pop 2 div neg 0 rm col0 sh gr -/Symbol ff 240.00 scf sf -4320 2250 m -gs 1 -1 sc (e) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 240.00 scf sf -3015 3240 m -gs 1 -1 sc (a, b,) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 240.00 scf sf -4590 2745 m -gs 1 -1 sc (a) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 240.00 scf sf -6300 1395 m -gs 1 -1 sc (b) dup sw pop 2 div neg 0 rm col0 sh gr -/Helvetica ff 240.00 scf sf -4185 1665 m -gs 1 -1 sc (a, b) dup sw pop 2 div neg 0 rm col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-all.eps --- a/documentation/images/uml-all.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,539 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: uml-all.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Mon Aug 7 21:30:07 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 551 542 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 542 moveto 0 0 lineto 551 0 lineto 551 542 lineto closepath clip newpath --16.3 556.3 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 101 -% Polyline -7.500 slw -n 270 292 m 2556 292 l 2556 720 l 270 720 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 270 8392 m 2556 8392 l 2556 8820 l 270 8820 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 270 7492 m 2556 7492 l 2556 7920 l 270 7920 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3465 292 m 5751 292 l 5751 720 l 3465 720 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3465 2092 m 5751 2092 l 5751 2520 l 3465 2520 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3465 1192 m 5751 1192 l 5751 1620 l 3465 1620 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3465 5377 m 5751 5377 l 5751 5805 l 3465 5805 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3465 6277 m 5751 6277 l 5751 6705 l 3465 6705 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 6705 292 m 8991 292 l 8991 720 l 6705 720 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 6705 2092 m 8991 2092 l 8991 2520 l 6705 2520 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3465 3307 m 5751 3307 l 5751 3735 l 3465 3735 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3465 4207 m 5751 4207 l 5751 4635 l 3465 4635 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 270 4207 m 2556 4207 l 2556 4635 l 270 4635 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3465 7492 m 5751 7492 l 5751 7920 l 3465 7920 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 3465 8392 m 5751 8392 l 5751 8820 l 3465 8820 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 270 577 m - 2556 577 l gs col0 s gr -% Polyline -n 270 649 m - 2556 649 l gs col0 s gr -/Helvetica ff 180.00 scf sf -341 506 m -gs 1 -1 sc (ec_master_t) col0 sh gr -% Polyline -n 270 8677 m - 2556 8677 l gs col0 s gr -% Polyline -n 270 8749 m - 2556 8749 l gs col0 s gr -/Helvetica ff 180.00 scf sf -341 8606 m -gs 1 -1 sc (ec_sii_pdo_entry_t) col0 sh gr -% Polyline -n 270 7777 m - 2556 7777 l gs col0 s gr -% Polyline -n 270 7849 m - 2556 7849 l gs col0 s gr -/Helvetica ff 180.00 scf sf -341 7706 m -gs 1 -1 sc (ec_sii_pdo_t) col0 sh gr -% Polyline -n 3465 577 m - 5751 577 l gs col0 s gr -% Polyline -n 3465 649 m - 5751 649 l gs col0 s gr -/Helvetica ff 180.00 scf sf -3536 506 m -gs 1 -1 sc (ec_device_t) col0 sh gr -% Polyline -n 3465 2377 m - 5751 2377 l gs col0 s gr -% Polyline -n 3465 2449 m - 5751 2449 l gs col0 s gr -/Helvetica ff 180.00 scf sf -3536 2306 m -gs 1 -1 sc (ec_eoe_t) col0 sh gr -% Polyline -n 3465 1477 m - 5751 1477 l gs col0 s gr -% Polyline -n 3465 1549 m - 5751 1549 l gs col0 s gr -/Helvetica ff 180.00 scf sf -3536 1406 m -gs 1 -1 sc (ec_fsm_t) col0 sh gr -% Polyline -n 3465 5662 m - 5751 5662 l gs col0 s gr -% Polyline -n 3465 5734 m - 5751 5734 l gs col0 s gr -/Helvetica ff 180.00 scf sf -3536 5591 m -gs 1 -1 sc (ec_sii_sync_t) col0 sh gr -% Polyline -n 3465 6562 m - 5751 6562 l gs col0 s gr -% Polyline -n 3465 6634 m - 5751 6634 l gs col0 s gr -/Helvetica ff 180.00 scf sf -3536 6491 m -gs 1 -1 sc (ec_fmmu_t) col0 sh gr -% Polyline -n 6705 577 m - 8991 577 l gs col0 s gr -% Polyline -n 6705 649 m - 8991 649 l gs col0 s gr -/Helvetica ff 180.00 scf sf -6776 506 m -gs 1 -1 sc (ec_debug_t) col0 sh gr -% Polyline -n 6705 2377 m - 8991 2377 l gs col0 s gr -% Polyline -n 6705 2449 m - 8991 2449 l gs col0 s gr -/Helvetica ff 180.00 scf sf -6776 2306 m -gs 1 -1 sc (ec_datagram_t) col0 sh gr -% Polyline -n 3465 3592 m - 5751 3592 l gs col0 s gr -% Polyline -n 3465 3664 m - 5751 3664 l gs col0 s gr -/Helvetica ff 180.00 scf sf -3536 3521 m -gs 1 -1 sc (ec_domain_t) col0 sh gr -% Polyline -n 3465 4492 m - 5751 4492 l gs col0 s gr -% Polyline -n 3465 4564 m - 5751 4564 l gs col0 s gr -/Helvetica ff 180.00 scf sf -3536 4421 m -gs 1 -1 sc (ec_data_reg_t) col0 sh gr -% Polyline -n 270 4492 m - 2556 4492 l gs col0 s gr -% Polyline -n 270 4564 m - 2556 4564 l gs col0 s gr -/Helvetica ff 180.00 scf sf -341 4421 m -gs 1 -1 sc (ec_slave_t) col0 sh gr -% Polyline -n 3465 7777 m - 5751 7777 l gs col0 s gr -% Polyline -n 3465 7849 m - 5751 7849 l gs col0 s gr -/Helvetica ff 180.00 scf sf -3536 7706 m -gs 1 -1 sc (ec_sdo_t) col0 sh gr -% Polyline -n 3465 8677 m - 5751 8677 l gs col0 s gr -% Polyline -n 3465 8749 m - 5751 8749 l gs col0 s gr -/Helvetica ff 180.00 scf sf -3536 8606 m -gs 1 -1 sc (ec_sdo_entry_t) col0 sh gr -% here ends figure; -% -% here starts figure with depth 50 -% Polyline -7.500 slw -n 1395 7920 m 1305 8055 l 1395 8190 l 1485 8055 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 1395 8190 m - 1395 8370 l gs col0 s gr -% Polyline -n 4590 7920 m 4500 8055 l 4590 8190 l 4680 8055 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 4590 8190 m - 4590 8370 l gs col0 s gr -% Polyline -n 2565 540 m - 3465 540 l gs col0 s gr -% Polyline -n 1890 990 m 1890 2340 l - 3465 2340 l gs col0 s gr -% Polyline -n 1440 990 m 1440 3375 l - 3465 3375 l gs col0 s gr -% Polyline -n 2340 720 m 2250 855 l 2340 990 l 2430 855 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 1440 720 m 1350 855 l 1440 990 l 1530 855 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 1890 720 m 1800 855 l 1890 990 l 1980 855 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 990 720 m 900 855 l 990 990 l 1080 855 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -gs clippath -2550 4425 m 2550 4485 l 2702 4485 l 2582 4455 l 2702 4425 l cp -eoclip -n 3465 4455 m - 2565 4455 l gs col0 s gr gr - -% arrowhead -n 2702 4425 m 2582 4455 l 2702 4485 l col0 s -% Polyline -n 2340 4905 m 2340 5625 l - 3465 5625 l gs col0 s gr -% Polyline -n 1890 4905 m 1890 6615 l - 3465 6615 l gs col0 s gr -% Polyline -n 990 4905 m - 990 7470 l gs col0 s gr -% Polyline -n 1440 4905 m 1440 7065 l 4590 7065 l - 4590 7470 l gs col0 s gr -% Polyline -n 2340 990 m 2340 1440 l - 3465 1440 l gs col0 s gr -% Polyline -n 990 990 m - 990 4185 l gs col0 s gr -% Polyline -n 5760 2340 m 5895 2250 l 6030 2340 l 5895 2430 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 5760 1440 m 5895 1350 l 6030 1440 l 5895 1530 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 5760 540 m 5895 450 l 6030 540 l 5895 630 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 5760 3555 m 5895 3465 l 6030 3555 l 5895 3645 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -gs clippath -4560 5415 m 4620 5415 l 4620 5263 l 4590 5383 l 4560 5263 l cp -eoclip -n 4590 4635 m - 4590 5400 l gs col0 s gr gr - -% arrowhead -n 4560 5263 m 4590 5383 l 4620 5263 l col0 s -% Polyline -n 4590 3735 m 4500 3870 l 4590 4005 l 4680 3870 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 4590 4005 m - 4590 4185 l gs col0 s gr -% Polyline -gs clippath -4620 5790 m 4560 5790 l 4560 5942 l 4590 5822 l 4620 5942 l cp -eoclip -n 4590 6255 m - 4590 5805 l gs col0 s gr gr - -% arrowhead -n 4620 5942 m 4590 5822 l 4560 5942 l col0 s -% Polyline -n 6030 3555 m 6930 3555 l - 6930 2520 l gs col0 s gr -% Polyline -n 6030 2340 m - 6705 2340 l gs col0 s gr -% Polyline -n 6030 1440 m 6930 1440 l - 6930 2070 l gs col0 s gr -% Polyline -gs clippath -6720 570 m 6720 510 l 6568 510 l 6688 540 l 6568 570 l cp -eoclip -n 6030 540 m - 6705 540 l gs col0 s gr gr - -% arrowhead -n 6568 570 m 6688 540 l 6568 510 l col0 s -% Polyline -gs clippath -3480 3675 m 3480 3615 l 3328 3615 l 3448 3645 l 3328 3675 l cp -eoclip -n 3465 6345 m 3060 6345 l 3060 3645 l - 3465 3645 l gs col0 s gr gr - -% arrowhead -n 3328 3675 m 3448 3645 l 3328 3615 l col0 s -% Polyline -n 2340 4663 m 2250 4798 l 2340 4933 l 2430 4798 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 1890 4663 m 1800 4798 l 1890 4933 l 1980 4798 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 1440 4663 m 1350 4798 l 1440 4933 l 1530 4798 l - cp gs col32 1.00 shd ef gr gs col0 s gr -% Polyline -n 990 4663 m 900 4798 l 990 4933 l 1080 4798 l - cp gs col32 1.00 shd ef gr gs col0 s gr -/Helvetica ff 180.00 scf sf -2655 450 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -2070 900 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -2520 900 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -1620 900 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -1170 900 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -1080 7380 m -gs 1 -1 sc (*) col0 sh gr -/Helvetica ff 180.00 scf sf -1575 8100 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -1575 8325 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -3375 450 m -gs 1 -1 sc (1) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -3375 2250 m -gs 1 -1 sc (*) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -3375 1350 m -gs 1 -1 sc (1) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -5850 360 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -5850 1260 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -5850 2160 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -3375 3330 m -gs 1 -1 sc (*) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -3375 3825 m -gs 1 -1 sc (1) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -5850 3375 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -4770 4140 m -gs 1 -1 sc (*) col0 sh gr -/Helvetica ff 180.00 scf sf -3375 4365 m -gs 1 -1 sc (*) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -4770 5310 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -4770 5985 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -4770 6210 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -3375 5535 m -gs 1 -1 sc (*) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -3375 6795 m -gs 1 -1 sc (*) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -3375 6300 m -gs 1 -1 sc (1) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -7020 1980 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -7020 2745 m -gs 1 -1 sc (*) col0 sh gr -/Helvetica ff 180.00 scf sf -4770 8325 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -4770 8100 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -4770 7380 m -gs 1 -1 sc (*) col0 sh gr -/Helvetica ff 180.00 scf sf -4770 3915 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -1080 4095 m -gs 1 -1 sc (*) col0 sh gr -/Helvetica ff 180.00 scf sf -1170 4815 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -1620 4815 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -2070 4815 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -2520 4815 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -2655 4365 m -gs 1 -1 sc (1) col0 sh gr -/Helvetica ff 180.00 scf sf -4770 4815 m -gs 1 -1 sc (*) col0 sh gr -/Helvetica ff 180.00 scf sf -6615 360 m -gs 1 -1 sc (1) dup sw pop neg 0 rm col0 sh gr -/Helvetica ff 180.00 scf sf -6615 2160 m -gs 1 -1 sc (1) dup sw pop neg 0 rm col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-all.fig --- a/documentation/images/uml-all.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,264 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -6 270 292 2556 720 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 270 577 2556 577 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 270 649 2556 649 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 270 292 2556 292 2556 720 270 720 270 292 -4 0 0 100 0 16 12 0.0000 4 150 1740 341 506 ec_master_t\001 --6 -6 270 8392 3041 8820 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 270 8677 2556 8677 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 270 8749 2556 8749 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 270 8392 2556 8392 2556 8820 270 8820 270 8392 -4 0 0 100 0 16 12 0.0000 4 165 2700 341 8606 ec_sii_pdo_entry_t\001 --6 -6 1305 7920 1485 8370 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 1395 7920 1305 8055 1395 8190 1485 8055 1395 7920 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 1395 8190 1395 8370 --6 -6 270 7492 2556 7920 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 270 7777 2556 7777 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 270 7849 2556 7849 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 270 7492 2556 7492 2556 7920 270 7920 270 7492 -4 0 0 100 0 16 12 0.0000 4 150 1815 341 7706 ec_sii_pdo_t\001 --6 -6 3465 292 5751 720 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 577 5751 577 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 649 5751 649 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 3465 292 5751 292 5751 720 3465 720 3465 292 -4 0 0 100 0 16 12 0.0000 4 150 1725 3536 506 ec_device_t\001 --6 -6 3465 2092 5751 2520 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 2377 5751 2377 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 2449 5751 2449 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 3465 2092 5751 2092 5751 2520 3465 2520 3465 2092 -4 0 0 100 0 16 12 0.0000 4 150 1320 3536 2306 ec_eoe_t\001 --6 -6 3465 1192 5751 1620 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 1477 5751 1477 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 1549 5751 1549 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 3465 1192 5751 1192 5751 1620 3465 1620 3465 1192 -4 0 0 100 0 16 12 0.0000 4 150 1275 3536 1406 ec_fsm_t\001 --6 -6 3465 5377 5751 5805 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 5662 5751 5662 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 5734 5751 5734 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 3465 5377 5751 5377 5751 5805 3465 5805 3465 5377 -4 0 0 100 0 16 12 0.0000 4 165 1950 3536 5591 ec_sii_sync_t\001 --6 -6 3465 6277 5751 6705 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 6562 5751 6562 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 6634 5751 6634 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 3465 6277 5751 6277 5751 6705 3465 6705 3465 6277 -4 0 0 100 0 16 12 0.0000 4 150 1545 3536 6491 ec_fmmu_t\001 --6 -6 6705 292 8991 720 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 6705 577 8991 577 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 6705 649 8991 649 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 6705 292 8991 292 8991 720 6705 720 6705 292 -4 0 0 100 0 16 12 0.0000 4 165 1680 6776 506 ec_debug_t\001 --6 -6 6705 2092 8991 2520 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 6705 2377 8991 2377 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 6705 2449 8991 2449 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 6705 2092 8991 2092 8991 2520 6705 2520 6705 2092 -4 0 0 100 0 16 12 0.0000 4 165 2115 6776 2306 ec_datagram_t\001 --6 -6 3465 3307 5751 3735 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 3592 5751 3592 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 3664 5751 3664 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 3465 3307 5751 3307 5751 3735 3465 3735 3465 3307 -4 0 0 100 0 16 12 0.0000 4 150 1830 3536 3521 ec_domain_t\001 --6 -6 3465 4207 5751 4635 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 4492 5751 4492 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 4564 5751 4564 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 3465 4207 5751 4207 5751 4635 3465 4635 3465 4207 -4 0 0 100 0 16 12 0.0000 4 165 2040 3536 4421 ec_data_reg_t\001 --6 -6 270 4207 2556 4635 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 270 4492 2556 4492 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 270 4564 2556 4564 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 270 4207 2556 4207 2556 4635 270 4635 270 4207 -4 0 0 100 0 16 12 0.0000 4 150 1545 341 4421 ec_slave_t\001 --6 -6 3465 7492 5751 7920 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 7777 5751 7777 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 7849 5751 7849 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 3465 7492 5751 7492 5751 7920 3465 7920 3465 7492 -4 0 0 100 0 16 12 0.0000 4 150 1305 3536 7706 ec_sdo_t\001 --6 -6 3465 8392 5751 8820 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 8677 5751 8677 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 3465 8749 5751 8749 -2 2 0 1 0 7 101 0 20 4.000 0 0 7 0 0 5 - 3465 8392 5751 8392 5751 8820 3465 8820 3465 8392 -4 0 0 100 0 16 12 0.0000 4 165 2190 3536 8606 ec_sdo_entry_t\001 --6 -6 4500 7920 4680 8370 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 4590 7920 4500 8055 4590 8190 4680 8055 4590 7920 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 4590 8190 4590 8370 --6 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 2565 540 3465 540 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 1890 990 1890 2340 3465 2340 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 1440 990 1440 3375 3465 3375 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 2340 720 2250 855 2340 990 2430 855 2340 720 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 1440 720 1350 855 1440 990 1530 855 1440 720 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 1890 720 1800 855 1890 990 1980 855 1890 720 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 990 720 900 855 990 990 1080 855 990 720 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 3465 4455 2565 4455 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 2340 4905 2340 5625 3465 5625 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 1890 4905 1890 6615 3465 6615 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 990 4905 990 7470 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 - 1440 4905 1440 7065 4590 7065 4590 7470 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 2340 990 2340 1440 3465 1440 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 990 990 990 4185 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 5760 2340 5895 2250 6030 2340 5895 2430 5760 2340 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 5760 1440 5895 1350 6030 1440 5895 1530 5760 1440 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 5760 540 5895 450 6030 540 5895 630 5760 540 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 5760 3555 5895 3465 6030 3555 5895 3645 5760 3555 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 4590 4635 4590 5400 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 4590 3735 4500 3870 4590 4005 4680 3870 4590 3735 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 4590 4005 4590 4185 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 4590 6255 4590 5805 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 6030 3555 6930 3555 6930 2520 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2 - 6030 2340 6705 2340 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 - 6030 1440 6930 1440 6930 2070 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 6030 540 6705 540 -2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4 - 0 0 1.00 60.00 120.00 - 3465 6345 3060 6345 3060 3645 3465 3645 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 2340 4663 2250 4798 2340 4933 2430 4798 2340 4663 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 1890 4663 1800 4798 1890 4933 1980 4798 1890 4663 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 1440 4663 1350 4798 1440 4933 1530 4798 1440 4663 -2 3 0 1 0 32 50 -1 20 0.000 0 0 -1 0 0 5 - 990 4663 900 4798 990 4933 1080 4798 990 4663 -4 0 0 50 -1 16 12 0.0000 4 120 180 2655 450 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 2070 900 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 2520 900 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 1620 900 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 1170 900 1\001 -4 0 0 50 -1 16 12 0.0000 4 45 120 1080 7380 *\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 1575 8100 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 1575 8325 1\001 -4 2 0 50 -1 16 12 0.0000 4 120 180 3375 450 1\001 -4 2 0 50 -1 16 12 0.0000 4 45 120 3375 2250 *\001 -4 2 0 50 -1 16 12 0.0000 4 120 180 3375 1350 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 5850 360 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 5850 1260 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 5850 2160 1\001 -4 2 0 50 -1 16 12 0.0000 4 45 120 3375 3330 *\001 -4 2 0 50 -1 16 12 0.0000 4 120 180 3375 3825 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 5850 3375 1\001 -4 0 0 50 -1 16 12 0.0000 4 45 120 4770 4140 *\001 -4 2 0 50 -1 16 12 0.0000 4 45 120 3375 4365 *\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 4770 5310 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 4770 5985 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 4770 6210 1\001 -4 2 0 50 -1 16 12 0.0000 4 45 120 3375 5535 *\001 -4 2 0 50 -1 16 12 0.0000 4 45 120 3375 6795 *\001 -4 2 0 50 -1 16 12 0.0000 4 120 180 3375 6300 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 7020 1980 1\001 -4 0 0 50 -1 16 12 0.0000 4 45 120 7020 2745 *\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 4770 8325 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 4770 8100 1\001 -4 0 0 50 -1 16 12 0.0000 4 45 120 4770 7380 *\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 4770 3915 1\001 -4 0 0 50 -1 16 12 0.0000 4 45 120 1080 4095 *\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 1170 4815 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 1620 4815 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 2070 4815 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 2520 4815 1\001 -4 0 0 50 -1 16 12 0.0000 4 120 180 2655 4365 1\001 -4 0 0 50 -1 16 12 0.0000 4 45 120 4770 4815 *\001 -4 2 0 50 -1 16 12 0.0000 4 120 180 6615 360 1\001 -4 2 0 50 -1 16 12 0.0000 4 120 180 6615 2160 1\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-all.pdf Binary file documentation/images/uml-all.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-datagram.eps --- a/documentation/images/uml-datagram.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: uml-datagram.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Mon Aug 7 20:49:08 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 178 297 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 297 moveto 0 0 lineto 273 0 lineto 273 297 lineto closepath clip newpath --27.6 323.9 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 110 -% Polyline -7.500 slw -n 450 450 m 3240 450 l 3240 5130 l 450 5130 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% here ends figure; -% -% here starts figure with depth 100 -% Polyline -7.500 slw -n 450 765 m - 3240 765 l gs col0 s gr -% Polyline -n 450 2925 m - 3240 2925 l gs col0 s gr -/Helvetica ff 180.00 scf sf -540 675 m -gs 1 -1 sc (ec_datagram_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 990 m -gs 1 -1 sc (list: struct list_head) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1170 m -gs 1 -1 sc (queue: struct list_head) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1350 m -gs 1 -1 sc (type: ec_datagram_type_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1530 m -gs 1 -1 sc (address: ec_address_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1710 m -gs 1 -1 sc (data: uint8_t *) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1890 m -gs 1 -1 sc (mem_size: size_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2070 m -gs 1 -1 sc (data_size: size_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2250 m -gs 1 -1 sc (index: uint8_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2430 m -gs 1 -1 sc (working_counter: uint16_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2610 m -gs 1 -1 sc (state: ec_datagram_state_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2790 m -gs 1 -1 sc (t_sent: cylces_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 3150 m -gs 1 -1 sc (+ ec_datagram_init\(\)) col0 sh gr -/Helvetica ff 180.00 scf sf -540 3330 m -gs 1 -1 sc (+ ec_datagram_clear\(\)) col0 sh gr -/Helvetica ff 180.00 scf sf -540 3540 m -gs 1 -1 sc (+ ec_datagram_prealloc\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 3750 m -gs 1 -1 sc (+ ec_datagram_nprd\(\):int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 3960 m -gs 1 -1 sc (+ ec_datagram_npwr\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 4170 m -gs 1 -1 sc (+ ec_datagram_aprd\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 4380 m -gs 1 -1 sc (+ ec_datagram_apwr\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 4590 m -gs 1 -1 sc (+ ec_datagram_brd\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 4800 m -gs 1 -1 sc (+ ec_datagram_bwr\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 5010 m -gs 1 -1 sc (+ ec_datagram_lrw\(\): int) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-datagram.fig --- a/documentation/images/uml-datagram.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 765 3240 765 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 2925 3240 2925 -2 2 0 1 0 7 110 -1 20 0.000 0 0 -1 0 0 5 - 450 450 3240 450 3240 5130 450 5130 450 450 -4 0 0 100 0 16 12 0.0000 4 165 2115 540 675 ec_datagram_t\001 -4 0 0 100 0 16 12 0.0000 4 150 2670 540 990 list: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 150 3180 540 1170 queue: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 3645 540 1350 type: ec_datagram_type_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3240 540 1530 address: ec_address_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 1905 540 1710 data: uint8_t *\001 -4 0 0 100 -1 16 12 0.0000 4 150 2445 540 1890 mem_size: size_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 2370 540 2070 data_size: size_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 1875 540 2250 index: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 3645 540 2430 working_counter: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 3795 540 2610 state: ec_datagram_state_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 2175 540 2790 t_sent: cylces_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 2910 540 3150 + ec_datagram_init()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3210 540 3330 + ec_datagram_clear()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4125 540 3540 + ec_datagram_prealloc(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3555 540 3750 + ec_datagram_nprd():int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3690 540 3960 + ec_datagram_npwr(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3630 540 4170 + ec_datagram_aprd(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3690 540 4380 + ec_datagram_apwr(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3450 540 4590 + ec_datagram_brd(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3510 540 4800 + ec_datagram_bwr(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3405 540 5010 + ec_datagram_lrw(): int\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-datagram.pdf Binary file documentation/images/uml-datagram.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-debug.eps --- a/documentation/images/uml-debug.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: /home/fp/diplom/diplom/bilder/uml-debug.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Mon Aug 7 17:57:04 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 177 121 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 121 moveto 0 0 lineto 269 0 lineto 269 121 lineto closepath clip newpath --27.6 148.2 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 110 -% Polyline -7.500 slw -n 450 450 m 3240 450 l 3240 2340 l 450 2340 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% here ends figure; -% -% here starts figure with depth 100 -% Polyline -7.500 slw -n 450 765 m - 3240 765 l gs col0 s gr -% Polyline -n 450 1575 m - 3240 1575 l gs col0 s gr -/Helvetica ff 180.00 scf sf -540 990 m -gs 1 -1 sc (dev: struct net_device *) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1215 m -gs 1 -1 sc (stats: struct net_device_stats) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1440 m -gs 1 -1 sc (opened: uint8_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 675 m -gs 1 -1 sc (ec_debug_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1800 m -gs 1 -1 sc (+ ec_debug_init\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2010 m -gs 1 -1 sc (+ ec_debug_clear\(\)) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2220 m -gs 1 -1 sc (+ ec_debug_send\(\)) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-debug.fig --- a/documentation/images/uml-debug.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 765 3240 765 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 1575 3240 1575 -2 2 0 1 0 7 110 -1 20 0.000 0 0 -1 0 0 5 - 450 450 3240 450 3240 2340 450 2340 450 450 -4 0 0 100 0 16 12 0.0000 4 150 3270 540 990 dev: struct net_device *\001 -4 0 0 100 -1 16 12 0.0000 4 150 4050 540 1215 stats: struct net_device_stats\001 -4 0 0 100 -1 16 12 0.0000 4 150 2175 540 1440 opened: uint8_t\001 -4 0 0 100 0 16 12 0.0000 4 165 1680 540 675 ec_debug_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 2955 540 1800 + ec_debug_init(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 2775 540 2010 + ec_debug_clear()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2775 540 2220 + ec_debug_send()\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-debug.pdf --- a/documentation/images/uml-debug.pdf Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -%PDF-1.3 -%쏢 -5 0 obj -<> -stream -xmOO0 сdi.'M[6iBȇ> -/Contents 5 0 R ->> -endobj -3 0 obj -<< /Type /Pages /Kids [ -4 0 R -] /Count 1 ->> -endobj -1 0 obj -<> -endobj -7 0 obj -<>endobj -9 0 obj -<> -endobj -10 0 obj -<> -endobj -8 0 obj -<> -endobj -2 0 obj -<>endobj -xref -0 11 -0000000000 65535 f -0000000599 00000 n -0000000811 00000 n -0000000540 00000 n -0000000381 00000 n -0000000015 00000 n -0000000362 00000 n -0000000647 00000 n -0000000747 00000 n -0000000688 00000 n -0000000717 00000 n -trailer -<< /Size 11 /Root 1 0 R /Info 2 0 R -/ID [(Nv;O*YQ0)(Nv;O*YQ0)] ->> -startxref -1052 -%%EOF diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-device.eps --- a/documentation/images/uml-device.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: uml-device.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Mon Aug 7 17:47:24 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 176 280 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 280 moveto 0 0 lineto 294 0 lineto 294 280 lineto closepath clip newpath --27.6 306.9 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 110 -% Polyline -7.500 slw -n 450 450 m 3240 450 l 3240 4860 l 450 4860 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% here ends figure; -% -% here starts figure with depth 100 -% Polyline -7.500 slw -n 450 765 m - 3240 765 l gs col0 s gr -% Polyline -n 450 2700 m - 3240 2700 l gs col0 s gr -/Helvetica ff 180.00 scf sf -540 990 m -gs 1 -1 sc (master: ec_master_t *) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1215 m -gs 1 -1 sc (dev: struct net_device *) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1440 m -gs 1 -1 sc (open: uint8_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1665 m -gs 1 -1 sc (tx_skb: struct sk_buff *) col0 sh gr -/Helvetica ff 180.00 scf sf -540 1890 m -gs 1 -1 sc (isr: ec_isr_t *) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2115 m -gs 1 -1 sc (module: struct module *) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2340 m -gs 1 -1 sc (link_state: uint8_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2565 m -gs 1 -1 sc (dbg: ec_debug_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 3150 m -gs 1 -1 sc (+ ec_device_clear\(\)) col0 sh gr -/Helvetica ff 180.00 scf sf -540 2925 m -gs 1 -1 sc (+ ec_device_init\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 3375 m -gs 1 -1 sc (+ ec_device_open\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 3600 m -gs 1 -1 sc (+ ec_device_close\(\): int) col0 sh gr -/Helvetica ff 180.00 scf sf -540 3825 m -gs 1 -1 sc (+ ec_device_call_isr\(\)) col0 sh gr -/Helvetica ff 180.00 scf sf -540 4050 m -gs 1 -1 sc (+ ec_device_tx_data\(\): uint8_t *) col0 sh gr -/Helvetica ff 180.00 scf sf -540 675 m -gs 1 -1 sc (ec_device_t) col0 sh gr -/Helvetica ff 180.00 scf sf -540 4275 m -gs 1 -1 sc (+ ec_device_send\(\)) col0 sh gr -/Helvetica ff 180.00 scf sf -540 4500 m -gs 1 -1 sc (+ ecdev_receive\(\)) col0 sh gr -/Helvetica ff 180.00 scf sf -540 4725 m -gs 1 -1 sc (+ ecdev_link_state\(\)) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-device.fig --- a/documentation/images/uml-device.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 765 3240 765 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 2700 3240 2700 -2 2 0 1 0 7 110 -1 20 0.000 0 0 -1 0 0 5 - 450 450 3240 450 3240 4860 450 4860 450 450 -4 0 0 100 0 16 12 0.0000 4 150 3045 540 990 master: ec_master_t *\001 -4 0 0 100 -1 16 12 0.0000 4 150 3270 540 1215 dev: struct net_device *\001 -4 0 0 100 -1 16 12 0.0000 4 150 1815 540 1440 open: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3135 540 1665 tx_skb: struct sk_buff *\001 -4 0 0 100 -1 16 12 0.0000 4 150 1815 540 1890 isr: ec_isr_t *\001 -4 0 0 100 -1 16 12 0.0000 4 120 3285 540 2115 module: struct module *\001 -4 0 0 100 -1 16 12 0.0000 4 150 2445 540 2340 link_state: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 2370 540 2565 dbg: ec_debug_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 2820 540 3150 + ec_device_clear()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3000 540 2925 + ec_device_init(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3315 540 3375 + ec_device_open(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3360 540 3600 + ec_device_close(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3135 540 3825 + ec_device_call_isr()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4440 540 4050 + ec_device_tx_data(): uint8_t *\001 -4 0 0 100 0 16 12 0.0000 4 150 1725 540 675 ec_device_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 2820 540 4275 + ec_device_send()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2565 540 4500 + ecdev_receive()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2865 540 4725 + ecdev_link_state()\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-device.pdf Binary file documentation/images/uml-device.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-domain.eps --- a/documentation/images/uml-domain.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,220 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: uml-domain.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Mon Aug 7 21:01:39 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 236 294 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 294 moveto 0 0 lineto 399 0 lineto 399 294 lineto closepath clip newpath --27.6 321.1 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Helvetica /Helvetica-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 110 -% Polyline -7.500 slw -n 450 450 m 4140 450 l 4140 5085 l 450 5085 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% here ends figure; -% -% here starts figure with depth 100 -% Polyline -7.500 slw -n 450 765 m - 4140 765 l gs col0 s gr -% Polyline -n 450 2925 m - 4140 2925 l gs col0 s gr -/Helvetica-iso ff 180.00 scf sf -540 675 m -gs 1 -1 sc (ec_domain_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 990 m -gs 1 -1 sc (kobj: struct kobject) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1170 m -gs 1 -1 sc (list: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1350 m -gs 1 -1 sc (index: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1530 m -gs 1 -1 sc (master: ec_master_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1710 m -gs 1 -1 sc (data_size: size_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1890 m -gs 1 -1 sc (datagrams: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2070 m -gs 1 -1 sc (base_address: uint32_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2250 m -gs 1 -1 sc (response_count: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2430 m -gs 1 -1 sc (data_regs: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2610 m -gs 1 -1 sc (working_counter_changes: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2790 m -gs 1 -1 sc (t_last: cycles_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3150 m -gs 1 -1 sc (+ ec_domain_init\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3330 m -gs 1 -1 sc (+ ec_domain_clear\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3510 m -gs 1 -1 sc (+ ec_domain_alloc\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3690 m -gs 1 -1 sc (+ ec_domain_queue\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3870 m -gs 1 -1 sc (- ec_domain_reg_pdo_entry\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4050 m -gs 1 -1 sc (- ec_domain_clear_data_regs\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4230 m -gs 1 -1 sc (- ec_domain_add_datagram\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4410 m -gs 1 -1 sc (+ ecrt_domain_register_pdo\(\): ec_slave_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4590 m -gs 1 -1 sc (+ ecrt_domain_register_pdo_list\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4770 m -gs 1 -1 sc (+ ecrt_domain_process\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4950 m -gs 1 -1 sc (+ ecrt_domain_state\(\): int) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-domain.fig --- a/documentation/images/uml-domain.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 765 4140 765 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 2925 4140 2925 -2 2 0 1 0 7 110 -1 20 0.000 0 0 -1 0 0 5 - 450 450 4140 450 4140 5085 450 5085 450 450 -4 0 0 100 0 16 12 0.0000 4 150 1830 540 675 ec_domain_t\001 -4 0 0 100 0 16 12 0.0000 4 165 2610 540 990 kobj: struct kobject\001 -4 0 0 100 -1 16 12 0.0000 4 150 2670 540 1170 list: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 2655 540 1350 index: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 150 3045 540 1530 master: ec_master_t *\001 -4 0 0 100 -1 16 12 0.0000 4 150 2370 540 1710 data_size: size_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 3780 540 1890 datagrams: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 150 3315 540 2070 base_address: uint32_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 4170 540 2250 response_count: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3705 540 2430 data_regs: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 5655 540 2610 working_counter_changes: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 165 2070 540 2790 t_last: cycles_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 3105 540 3150 + ec_domain_init(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 2925 540 3330 + ec_domain_clear()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2895 540 3510 + ec_domain_alloc()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3120 540 3690 + ec_domain_queue()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4695 540 3870 - ec_domain_reg_pdo_entry(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 4455 540 4050 - ec_domain_clear_data_regs()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4680 540 4230 - ec_domain_add_datagram(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 6075 540 4410 + ecrt_domain_register_pdo(): ec_slave_t *\001 -4 0 0 100 -1 16 12 0.0000 4 165 5235 540 4590 + ecrt_domain_register_pdo_list(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3540 540 4770 + ecrt_domain_process()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3555 540 4950 + ecrt_domain_state(): int\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-domain.pdf Binary file documentation/images/uml-domain.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-eoe.eps --- a/documentation/images/uml-eoe.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,259 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: uml-eoe.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Mon Aug 7 20:40:53 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 178 439 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 439 moveto 0 0 lineto 299 0 lineto 299 439 lineto closepath clip newpath --27.6 465.6 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Helvetica /Helvetica-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 110 -% Polyline -7.500 slw -n 450 450 m 3240 450 l 3240 7380 l 450 7380 l - cp gs col7 1.00 shd ef gr gs col0 s gr -% here ends figure; -% -% here starts figure with depth 100 -% Polyline -7.500 slw -n 450 765 m - 3240 765 l gs col0 s gr -% Polyline -n 450 5220 m - 3240 5220 l gs col0 s gr -/Helvetica-iso ff 180.00 scf sf -540 675 m -gs 1 -1 sc (ec_eoe_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 990 m -gs 1 -1 sc (list: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1170 m -gs 1 -1 sc (slave: ec_slave_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1350 m -gs 1 -1 sc (datagram: ec_datagram_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1530 m -gs 1 -1 sc (state: void \(*\)\(ec_eoe_t *\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1710 m -gs 1 -1 sc (dev: struct net_device *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1890 m -gs 1 -1 sc (stats: struct net_device_stats) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2070 m -gs 1 -1 sc (opened: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2250 m -gs 1 -1 sc (t_last: cycles_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2430 m -gs 1 -1 sc (rx_skb: struct sk_buff *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2610 m -gs 1 -1 sc (rx_skb_offset: off_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2790 m -gs 1 -1 sc (rx_skb_size: size_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2970 m -gs 1 -1 sc (rx_expected_fragment: uint8_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3150 m -gs 1 -1 sc (rx_counter: uint32_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3330 m -gs 1 -1 sc (rx_rate: uint32_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3510 m -gs 1 -1 sc (tx_queue: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3690 m -gs 1 -1 sc (tx_queue_active: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3870 m -gs 1 -1 sc (tx_queued_frames: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4050 m -gs 1 -1 sc (tx_queue_lock: spinlock_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4230 m -gs 1 -1 sc (tx_frame: ec_eoe_frame_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4410 m -gs 1 -1 sc (tx_frame_number: uint8_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4590 m -gs 1 -1 sc (tx_fragment_number: uint8_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4770 m -gs 1 -1 sc (tx_offset: size_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4950 m -gs 1 -1 sc (tx_counter: uint32_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5130 m -gs 1 -1 sc (tx_rate: uint32_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5445 m -gs 1 -1 sc (+ ec_eoe_init\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5625 m -gs 1 -1 sc (+ ec_eoe_clear\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5805 m -gs 1 -1 sc (+ ec_eoe_run\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5985 m -gs 1 -1 sc (+ ec_eoe_active\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6165 m -gs 1 -1 sc (- ec_eoe_flush\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6345 m -gs 1 -1 sc (- ec_eoe_send\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6525 m -gs 1 -1 sc (- ec_eoe_state_rx_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6705 m -gs 1 -1 sc (- ec_eoe_state_rx_check\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6885 m -gs 1 -1 sc (- ec_eoe_state_rx_fetch\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 7065 m -gs 1 -1 sc (- ec_eoe_state_tx_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 7245 m -gs 1 -1 sc (- ec_eoe_state_tx_sent\(\)) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-eoe.fig --- a/documentation/images/uml-eoe.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 765 3240 765 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 5220 3240 5220 -2 2 0 1 0 7 110 -1 20 0.000 0 0 -1 0 0 5 - 450 450 3240 450 3240 7380 450 7380 450 450 -4 0 0 100 0 16 12 0.0000 4 150 1320 540 675 ec_eoe_t\001 -4 0 0 100 0 16 12 0.0000 4 150 2670 540 990 list: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 150 2655 540 1170 slave: ec_slave_t *\001 -4 0 0 100 -1 16 12 0.0000 4 165 3600 540 1350 datagram: ec_datagram_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 3555 540 1530 state: void (*)(ec_eoe_t *)\001 -4 0 0 100 -1 16 12 0.0000 4 150 3270 540 1710 dev: struct net_device *\001 -4 0 0 100 -1 16 12 0.0000 4 150 4050 540 1890 stats: struct net_device_stats\001 -4 0 0 100 -1 16 12 0.0000 4 165 2955 540 2070 opened: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 165 2070 540 2250 t_last: cycles_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3165 540 2430 rx_skb: struct sk_buff *\001 -4 0 0 100 -1 16 12 0.0000 4 150 2625 540 2610 rx_skb_offset: off_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 2715 540 2790 rx_skb_size: size_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 4260 540 2970 rx_expected_fragment: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 2790 540 3150 rx_counter: uint32_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 2265 540 3330 rx_rate: uint32_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3600 540 3510 tx_queue: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 4215 540 3690 tx_queue_active: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 165 4515 540 3870 tx_queued_frames: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 150 3675 540 4050 tx_queue_lock: spinlock_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3660 540 4230 tx_frame: ec_eoe_frame_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3570 540 4410 tx_frame_number: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 4005 540 4590 tx_fragment_number: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 2160 540 4770 tx_offset: size_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 2760 540 4950 tx_counter: uint32_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 2235 540 5130 tx_rate: uint32_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 2595 540 5445 + ec_eoe_init(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 2415 540 5625 + ec_eoe_clear()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2175 540 5805 + ec_eoe_run()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3030 540 5985 + ec_eoe_active(): int\001 -4 0 0 100 -1 16 12 0.0000 4 165 2310 540 6165 - ec_eoe_flush()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2340 540 6345 - ec_eoe_send()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3540 540 6525 - ec_eoe_state_rx_start()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3795 540 6705 - ec_eoe_state_rx_check()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3615 540 6885 - ec_eoe_state_rx_fetch()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3510 540 7065 - ec_eoe_state_tx_start()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3510 540 7245 - ec_eoe_state_tx_sent()\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-eoe.pdf Binary file documentation/images/uml-eoe.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-fsm.eps --- a/documentation/images/uml-fsm.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,382 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: uml-fsm.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Fri Feb 22 12:25:41 2008 -%%For: fp@fetlas (Florian Pose) -%%BoundingBox: 0 0 498 461 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 461 moveto 0 0 lineto 498 0 lineto 498 461 lineto closepath clip newpath --27.6 488.3 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Helvetica /Helvetica-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 110 -% Polyline -7.500 slw -n 4635 450 m 4635 7740 l 8325 7740 l - 8325 450 l gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 450 7695 m 450 450 l 4140 450 l - 4140 7740 l gs col7 1.00 shd ef gr gs col0 s gr -% here ends figure; -% -% here starts figure with depth 100 -% Polyline -7.500 slw -n 450 765 m - 4140 765 l gs col0 s gr -% Polyline -n 450 4365 m - 4140 4365 l gs col0 s gr -/Helvetica-iso ff 180.00 scf sf -540 675 m -gs 1 -1 sc (ec_fsm_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 990 m -gs 1 -1 sc (master: ec_master_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1170 m -gs 1 -1 sc (slave: ec_slave_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1350 m -gs 1 -1 sc (datagram: ec_datagram_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1530 m -gs 1 -1 sc (master_state: void \(*\)\(ec_fsm_t *\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1710 m -gs 1 -1 sc (master_slaves_responding: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 1890 m -gs 1 -1 sc (master_slave_states: ec_slave_state_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2070 m -gs 1 -1 sc (master_validation: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2250 m -gs 1 -1 sc (slave_state: void \(*\)\(ec_fsm_t *\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2430 m -gs 1 -1 sc (sii_state: void \(*\)\(ec_fsm_t *\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2610 m -gs 1 -1 sc (sii_offset: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2790 m -gs 1 -1 sc (sii_mode: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 2970 m -gs 1 -1 sc (sii_value: uint8_t[4]) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3150 m -gs 1 -1 sc (sii_start: cycles_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3330 m -gs 1 -1 sc (change_state: void \(*\)\(ec_fsm_t *\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3510 m -gs 1 -1 sc (change_new: ec_sllave_state_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3690 m -gs 1 -1 sc (change_start: cycles_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 3870 m -gs 1 -1 sc (coe_state: void \(*\)\(ec_fsm_t *\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4050 m -gs 1 -1 sc (sdodata: ec_sdo_data_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4230 m -gs 1 -1 sc (coe_start: cycles_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4590 m -gs 1 -1 sc (+ ec_fsm_init\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4770 m -gs 1 -1 sc (+ ec_fsm_clear\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 4950 m -gs 1 -1 sc (+ ec_fsm_reset\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5130 m -gs 1 -1 sc (+ ec_fsm_execute\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5310 m -gs 1 -1 sc (+ ec_fsm_startup\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5490 m -gs 1 -1 sc (+ ec_fsm_startup_running\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5670 m -gs 1 -1 sc (+ ec_fsm_startup_success\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 5850 m -gs 1 -1 sc (+ ec_fsm_configuration\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6030 m -gs 1 -1 sc (+ ec_fsm_configuration_running\(\): int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6210 m -gs 1 -1 sc (+ ec_fsm_configuration_success\(\): int) col0 sh gr -% here ends figure; -% -% here starts figure with depth 50 -/Helvetica-iso ff 180.00 scf sf -4725 1665 m -gs 1 -1 sc (- ec_fsm_configuration_conf\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 1845 m -gs 1 -1 sc (- ec_fsm_slavescan_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 2025 m -gs 1 -1 sc (- ec_fsm_slavescan_address\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 2205 m -gs 1 -1 sc (- ec_fsm_slavescan_state\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 2385 m -gs 1 -1 sc (- ec_fsm_slavescan_base\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 2565 m -gs 1 -1 sc (- ec_fsm_slavescan_datalink\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 2745 m -gs 1 -1 sc (- ec_fsm_slavescan_eeprom_size\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 2925 m -gs 1 -1 sc (- ec_fsm_slavescan_eeprom_data\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 3105 m -gs 1 -1 sc (- ec_fsm_slaveconf_init\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 3285 m -gs 1 -1 sc (- ec_fsm_slaveconf_sync\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 3465 m -gs 1 -1 sc (- ec_fsm_slaveconf_preop\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 3645 m -gs 1 -1 sc (- ec_fsm_slaveconf_fmmu\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 3825 m -gs 1 -1 sc (- ec_fsm_slaveconf_sdoconf\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 4005 m -gs 1 -1 sc (- ec_fsm_slaveconf_safeop\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 4185 m -gs 1 -1 sc (- ec_fsm_slaveconf_op\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 4365 m -gs 1 -1 sc (- ec_fsm_sii_start_reading\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 4545 m -gs 1 -1 sc (- ec_fsm_sii_read_check\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 4725 m -gs 1 -1 sc (- ec_fsm_sii_read_fetch\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 4905 m -gs 1 -1 sc (- ec_fsm_sii_start_writing\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 5085 m -gs 1 -1 sc (- ec_fsm_sii_write_check\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 5265 m -gs 1 -1 sc (- ec_fsm_sii_write_check2\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 5445 m -gs 1 -1 sc (- ec_fsm_change_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 5625 m -gs 1 -1 sc (- ec_fsm_change_check\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 5805 m -gs 1 -1 sc (- ec_fsm_change_status\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 5985 m -gs 1 -1 sc (- ec_fsm_change_code\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 6165 m -gs 1 -1 sc (- ec_fsm_change_ack\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 6345 m -gs 1 -1 sc (- ec_fsm_change_check_ack\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 6525 m -gs 1 -1 sc (- ec_fsm_coe_down_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 6705 m -gs 1 -1 sc (- ec_fsm_coe_down_request\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 6885 m -gs 1 -1 sc (- ec_fsm_coe_down_check\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 7065 m -gs 1 -1 sc (- ec_fsm_coe_down_response\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 7245 m -gs 1 -1 sc (- ec_fsm_end\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 7425 m -gs 1 -1 sc (- ec_fsm_error\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 765 m -gs 1 -1 sc (- ec_fsm_master_write_eeprom\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 945 m -gs 1 -1 sc (- ec_fsm_startup_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 1125 m -gs 1 -1 sc (- ec_fsm_startup_broadcast\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 1305 m -gs 1 -1 sc (- ec_fsm_startup_scan\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -4725 1485 m -gs 1 -1 sc (- ec_fsm_configuration_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6390 m -gs 1 -1 sc (- ec_fsm_master_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6570 m -gs 1 -1 sc (- ec_fsm_master_broadcast\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6750 m -gs 1 -1 sc (- ec_fsm_master_read_states\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 6930 m -gs 1 -1 sc (- ec_fsm_master_validate_vendor\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 7110 m -gs 1 -1 sc (- ec_fsm_master_validate_product\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 7290 m -gs 1 -1 sc (- ec_fsm_master_rewrite_addresses\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -540 7470 m -gs 1 -1 sc (- ec_fsm_master_configure_slaves\(\)) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-fsm.fig --- a/documentation/images/uml-fsm.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 765 4140 765 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 450 4365 4140 4365 -2 1 0 1 0 7 110 -1 20 0.000 0 0 -1 0 0 4 - 4635 450 4635 7740 8325 7740 8325 450 -2 1 0 1 0 7 110 -1 20 0.000 0 0 -1 0 0 4 - 450 7695 450 450 4140 450 4140 7740 -4 0 0 100 0 16 12 0.0000 4 165 735 540 675 ec_fsm_t\001 -4 0 0 100 0 16 12 0.0000 4 165 1785 540 990 master: ec_master_t *\001 -4 0 0 100 -1 16 12 0.0000 4 165 1605 540 1170 slave: ec_slave_t *\001 -4 0 0 100 -1 16 12 0.0000 4 180 2100 540 1350 datagram: ec_datagram_t\001 -4 0 0 100 -1 16 12 0.0000 4 180 2745 540 1530 master_state: void (*)(ec_fsm_t *)\001 -4 0 0 100 -1 16 12 0.0000 4 180 3345 540 1710 master_slaves_responding: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 165 3195 540 1890 master_slave_states: ec_slave_state_t\001 -4 0 0 100 -1 16 12 0.0000 4 180 2580 540 2070 master_validation: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 180 2655 540 2250 slave_state: void (*)(ec_fsm_t *)\001 -4 0 0 100 -1 16 12 0.0000 4 180 2385 540 2430 sii_state: void (*)(ec_fsm_t *)\001 -4 0 0 100 -1 16 12 0.0000 4 165 1485 540 2610 sii_offset: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 180 1860 540 2790 sii_mode: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 180 1605 540 2970 sii_value: uint8_t[4]\001 -4 0 0 100 -1 16 12 0.0000 4 180 1440 540 3150 sii_start: cycles_t\001 -4 0 0 100 -1 16 12 0.0000 4 180 2835 540 3330 change_state: void (*)(ec_fsm_t *)\001 -4 0 0 100 -1 16 12 0.0000 4 180 2640 540 3510 change_new: ec_sllave_state_t\001 -4 0 0 100 -1 16 12 0.0000 4 180 1890 540 3690 change_start: cycles_t\001 -4 0 0 100 -1 16 12 0.0000 4 180 2520 540 3870 coe_state: void (*)(ec_fsm_t *)\001 -4 0 0 100 -1 16 12 0.0000 4 165 2130 540 4050 sdodata: ec_sdo_data_t *\001 -4 0 0 100 -1 16 12 0.0000 4 180 1575 540 4230 coe_start: cycles_t\001 -4 0 0 100 -1 16 12 0.0000 4 180 1515 540 4590 + ec_fsm_init(): int\001 -4 0 0 100 -1 16 12 0.0000 4 180 1395 540 4770 + ec_fsm_clear()\001 -4 0 0 100 -1 16 12 0.0000 4 180 1380 540 4950 + ec_fsm_reset()\001 -4 0 0 100 -1 16 12 0.0000 4 180 1635 540 5130 + ec_fsm_execute()\001 -4 0 0 100 -1 16 12 0.0000 4 180 1530 540 5310 + ec_fsm_startup()\001 -4 0 0 100 -1 16 12 0.0000 4 180 2565 540 5490 + ec_fsm_startup_running(): int\001 -4 0 0 100 -1 16 12 0.0000 4 180 2625 540 5670 + ec_fsm_startup_success(): int\001 -4 0 0 100 -1 16 12 0.0000 4 180 2055 540 5850 + ec_fsm_configuration()\001 -4 0 0 100 -1 16 12 0.0000 4 180 3090 540 6030 + ec_fsm_configuration_running(): int\001 -4 0 0 50 -1 16 12 0.0000 4 180 2490 4725 1665 - ec_fsm_configuration_conf()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2250 4725 1845 - ec_fsm_slavescan_start()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2565 4725 2025 - ec_fsm_slavescan_address()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2295 4725 2205 - ec_fsm_slavescan_state()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2310 4725 2385 - ec_fsm_slavescan_base()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2550 4725 2565 - ec_fsm_slavescan_datalink()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2955 4725 2745 - ec_fsm_slavescan_eeprom_size()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2985 4725 2925 - ec_fsm_slavescan_eeprom_data()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2100 4725 3105 - ec_fsm_slaveconf_init()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2265 4725 3285 - ec_fsm_slaveconf_sync()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2340 4725 3465 - ec_fsm_slaveconf_preop()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2280 4725 3645 - ec_fsm_slaveconf_fmmu()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2520 4725 3825 - ec_fsm_slaveconf_sdoconf()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2415 4725 4005 - ec_fsm_slaveconf_safeop()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2070 4725 4185 - ec_fsm_slaveconf_op()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2310 4725 4365 - ec_fsm_sii_start_reading()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2220 4725 4545 - ec_fsm_sii_read_check()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2115 4725 4725 - ec_fsm_sii_read_fetch()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2220 4725 4905 - ec_fsm_sii_start_writing()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2235 4725 5085 - ec_fsm_sii_write_check()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2340 4725 5265 - ec_fsm_sii_write_check2()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2025 4725 5445 - ec_fsm_change_start()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2190 4725 5625 - ec_fsm_change_check()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2160 4725 5805 - ec_fsm_change_status()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2100 4725 5985 - ec_fsm_change_code()\001 -4 0 0 50 -1 16 12 0.0000 4 180 1980 4725 6165 - ec_fsm_change_ack()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2595 4725 6345 - ec_fsm_change_check_ack()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2265 4725 6525 - ec_fsm_coe_down_start()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2535 4725 6705 - ec_fsm_coe_down_request()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2430 4725 6885 - ec_fsm_coe_down_check()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2685 4725 7065 - ec_fsm_coe_down_response()\001 -4 0 0 50 -1 16 12 0.0000 4 180 1260 4725 7245 - ec_fsm_end()\001 -4 0 0 50 -1 16 12 0.0000 4 180 1335 4725 7425 - ec_fsm_error()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2700 4725 765 - ec_fsm_master_write_eeprom()\001 -4 0 0 50 -1 16 12 0.0000 4 180 1950 4725 945 - ec_fsm_startup_start()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2430 4725 1125 - ec_fsm_startup_broadcast()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2010 4725 1305 - ec_fsm_startup_scan()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2475 4725 1485 - ec_fsm_configuration_start()\001 -4 0 0 100 -1 16 12 0.0000 4 180 3150 540 6210 + ec_fsm_configuration_success(): int\001 -4 0 0 50 -1 16 12 0.0000 4 180 1935 540 6390 - ec_fsm_master_start()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2415 540 6570 - ec_fsm_master_broadcast()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2550 540 6750 - ec_fsm_master_read_states()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2940 540 6930 - ec_fsm_master_validate_vendor()\001 -4 0 0 50 -1 16 12 0.0000 4 180 2985 540 7110 - ec_fsm_master_validate_product()\001 -4 0 0 50 -1 16 12 0.0000 4 180 3105 540 7290 - ec_fsm_master_rewrite_addresses()\001 -4 0 0 50 -1 16 12 0.0000 4 180 3015 540 7470 - ec_fsm_master_configure_slaves()\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-fsm.pdf Binary file documentation/images/uml-fsm.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-master.eps --- a/documentation/images/uml-master.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,303 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: uml-master.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Mon Aug 7 13:47:53 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 478 365 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 365 moveto 0 0 lineto 594 0 lineto 594 365 lineto closepath clip newpath --55.9 411.8 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Helvetica /Helvetica-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 101 -% Polyline -7.500 slw -n 900 6525 m 900 765 l 4140 765 l - 4140 6525 l gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 5220 975 m 5220 6315 l 8460 6315 l - 8460 975 l gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 900 1077 m - 4140 1080 l gs col0 s gr -% Polyline -n 900 6210 m - 4140 6210 l gs col0 s gr -/Helvetica-iso ff 180.00 scf sf -1005 972 m -gs 1 -1 sc (ec_master_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 1258 m -gs 1 -1 sc (list: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 1468 m -gs 1 -1 sc (reserved: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 1678 m -gs 1 -1 sc (index: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 1888 m -gs 1 -1 sc (kobj: struct kobj) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2098 m -gs 1 -1 sc (slaves: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2308 m -gs 1 -1 sc (slave_count: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2518 m -gs 1 -1 sc (device: ec_device_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2728 m -gs 1 -1 sc (datagram_queue: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2938 m -gs 1 -1 sc (datagram_index: uint8_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3148 m -gs 1 -1 sc (domains: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3360 m -gs 1 -1 sc (debug_level: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3570 m -gs 1 -1 sc (stats: ec_stats_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3780 m -gs 1 -1 sc (workqueue: struct workqueue_struct *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3990 m -gs 1 -1 sc (idle_work: struct work_struct) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 4200 m -gs 1 -1 sc (fsm: ec_fsm_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 4408 m -gs 1 -1 sc (mode: ec_master_mode_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 4618 m -gs 1 -1 sc (eoe_timer: struct timer_list) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 4828 m -gs 1 -1 sc (eoe_running: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5038 m -gs 1 -1 sc (eoe_handlers: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5248 m -gs 1 -1 sc (internal_lock: spinlock_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5458 m -gs 1 -1 sc (request_cb: int \(*\)\(void *\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5668 m -gs 1 -1 sc (release_cb: void \(*\)\(void *\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5878 m -gs 1 -1 sc (cb_data: void *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 6088 m -gs 1 -1 sc (eeprom_write_enable: uint8_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 6435 m -gs 1 -1 sc (+ ec_master_init\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 2628 m -gs 1 -1 sc (+ ec_master_queue_datagram\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 1788 m -gs 1 -1 sc (+ ec_master_idle_stop\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 2208 m -gs 1 -1 sc (+ ec_master_eoe_stop\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 2418 m -gs 1 -1 sc (+ ec_master_receive_datagrams\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 1368 m -gs 1 -1 sc (+ ec_master_reset\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 1998 m -gs 1 -1 sc (+ ec_master_eoe_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 1578 m -gs 1 -1 sc (+ ec_master_idle_start\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 2835 m -gs 1 -1 sc (+ ec_master_output_stats\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 3045 m -gs 1 -1 sc (+ ec_master_clear_slaves\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 3255 m -gs 1 -1 sc (- ec_master_send_datagrams\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 3468 m -gs 1 -1 sc (- ec_master_idle\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 3678 m -gs 1 -1 sc (- ec_master_eoe_run\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 3888 m -gs 1 -1 sc (+ ecrt_master_callbacks\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 4098 m -gs 1 -1 sc (+ ecrt_master_create_domain\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 4308 m -gs 1 -1 sc (+ ecrt_master_activate\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 4518 m -gs 1 -1 sc (+ ecrt_master_deactivate\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5325 1155 m -gs 1 -1 sc (+ ec_master_clear\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 4725 m -gs 1 -1 sc (+ ecrt_master_send\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 4935 m -gs 1 -1 sc (+ ecrt_master_receive\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 5148 m -gs 1 -1 sc (+ ecrt_master_prepare\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 5358 m -gs 1 -1 sc (+ ecrt_master_run\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 5568 m -gs 1 -1 sc (+ ecrt_master_start_eoe\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 5778 m -gs 1 -1 sc (+ ecrt_master_debug\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 5988 m -gs 1 -1 sc (+ ecrt_master_print\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5321 6198 m -gs 1 -1 sc (+ ecrt_master_get_slave\(\)) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-master.fig --- a/documentation/images/uml-master.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -2 1 0 1 0 7 101 -1 20 0.000 0 0 -1 0 0 4 - 900 6525 900 765 4140 765 4140 6525 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 900 1077 4140 1080 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 900 6210 4140 6210 -2 1 0 1 0 7 101 -1 20 0.000 0 0 -1 0 0 4 - 5220 975 5220 6315 8460 6315 8460 975 -4 0 0 100 0 16 12 0.0000 4 150 1740 1005 972 ec_master_t\001 -4 0 0 100 0 16 12 0.0000 4 150 2670 1005 1258 list: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 3135 1005 1468 reserved: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 165 2655 1005 1678 index: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 165 2190 1005 1888 kobj: struct kobj\001 -4 0 0 100 -1 16 12 0.0000 4 150 3210 1005 2098 slaves: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 3600 1005 2308 slave_count: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 150 3015 1005 2518 device: ec_device_t *\001 -4 0 0 100 -1 16 12 0.0000 4 165 4695 1005 2728 datagram_queue: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 3390 1005 2938 datagram_index: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3495 1005 3148 domains: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 3630 1005 3360 debug_level: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 150 2250 1005 3570 stats: ec_stats_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 5310 1005 3780 workqueue: struct workqueue_struct *\001 -4 0 0 100 -1 16 12 0.0000 4 150 4005 1005 3990 idle_work: struct work_struct\001 -4 0 0 100 -1 16 12 0.0000 4 150 1920 1005 4200 fsm: ec_fsm_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3660 1005 4408 mode: ec_master_mode_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3660 1005 4618 eoe_timer: struct timer_list\001 -4 0 0 100 -1 16 12 0.0000 4 165 3675 1005 4828 eoe_running: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 150 4245 1005 5038 eoe_handlers: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 150 3405 1005 5248 internal_lock: spinlock_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 3480 1005 5458 request_cb: int (*)(void *)\001 -4 0 0 100 -1 16 12 0.0000 4 165 3750 1005 5668 release_cb: void (*)(void *)\001 -4 0 0 100 -1 16 12 0.0000 4 150 2085 1005 5878 cb_data: void *\001 -4 0 0 100 -1 16 12 0.0000 4 150 4185 1005 6088 eeprom_write_enable: uint8_t\001 -4 0 0 100 0 16 12 0.0000 4 165 2535 1005 6435 + ec_master_init()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4545 5325 2628 + ec_master_queue_datagram()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3420 5325 1788 + ec_master_idle_stop()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3450 5325 2208 + ec_master_eoe_stop()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4860 5325 2418 + ec_master_receive_datagrams()\001 -4 0 0 100 0 16 12 0.0000 4 165 2835 5325 1368 + ec_master_reset()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3450 5325 1998 + ec_master_eoe_start()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3420 5325 1578 + ec_master_idle_start()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3840 5325 2835 + ec_master_output_stats()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3945 5325 3045 + ec_master_clear_slaves()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4440 5325 3255 - ec_master_send_datagrams()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2565 5325 3468 - ec_master_idle()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3240 5325 3678 - ec_master_eoe_run()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3660 5321 3888 + ecrt_master_callbacks()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4425 5321 4098 + ecrt_master_create_domain()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3405 5321 4308 + ecrt_master_activate()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3765 5321 4518 + ecrt_master_deactivate()\001 -4 0 0 100 0 16 12 0.0000 4 165 2835 5325 1155 + ec_master_clear()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3015 5321 4725 + ecrt_master_send()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3360 5321 4935 + ecrt_master_receive()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3420 5321 5148 + ecrt_master_prepare()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2775 5321 5358 + ecrt_master_run()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3630 5321 5568 + ecrt_master_start_eoe()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3210 5321 5778 + ecrt_master_debug()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2925 5321 5988 + ecrt_master_print()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3690 5321 6198 + ecrt_master_get_slave()\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-master.pdf Binary file documentation/images/uml-master.pdf has changed diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-slave.eps --- a/documentation/images/uml-slave.eps Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,357 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: uml-slave.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Thu Jul 13 16:33:29 2006 -%%For: fp@jupiter (Florian Pose) -%%BoundingBox: 0 0 457 478 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def -/col32 {0.555 0.555 0.555 srgb} bind def - -end -save -newpath 0 478 moveto 0 0 lineto 586 0 lineto 586 478 lineto closepath clip newpath --55.9 522.3 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Helvetica /Helvetica-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06299 0.06299 sc -% -% Fig objects follow -% -% -% here starts figure with depth 101 -% Polyline -7.500 slw -n 900 8265 m 900 720 l 4185 720 l - 4185 8250 l gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 4860 855 m 4860 8280 l 8145 8280 l - 8145 855 l gs col7 1.00 shd ef gr gs col0 s gr -% Polyline -n 4860 3525 m - 8145 3525 l gs col0 s gr -/Helvetica-iso ff 180.00 scf sf -5010 3225 m -gs 1 -1 sc (online: unsigned int) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 3435 m -gs 1 -1 sc (varsize_fields: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 3735 m -gs 1 -1 sc (+ ec_slave_init\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 3945 m -gs 1 -1 sc (+ ec_slave_clear\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 4170 m -gs 1 -1 sc (+ ec_slave_prepare_fmmu\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 4380 m -gs 1 -1 sc (+ ec_slave_fetch_strings\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 4590 m -gs 1 -1 sc (+ ec_slave_fetch_general\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 4800 m -gs 1 -1 sc (+ ec_slave_fetch_sync\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 5010 m -gs 1 -1 sc (+ ec_slave_fetch_pdo\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 5220 m -gs 1 -1 sc (+ ec_slave_locate_string\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 5430 m -gs 1 -1 sc (+ ec_slave_calc_sync_size\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 5640 m -gs 1 -1 sc (+ ec_slave_print\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 5850 m -gs 1 -1 sc (+ ec_slave_mbox_prepare_send\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 6060 m -gs 1 -1 sc (+ ec_slave_mbox_prepare_check\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 6270 m -gs 1 -1 sc (+ ec_slave_mbox_check\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 6480 m -gs 1 -1 sc (+ ec_slave_mbox_prepare_fetch\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 6690 m -gs 1 -1 sc (+ ec_slave_mbox_fetch\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 6900 m -gs 1 -1 sc (+ ec_slave_mbox_simple_io\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 7110 m -gs 1 -1 sc (+ ec_slave_mbox_simple_receive\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 7320 m -gs 1 -1 sc (- ec_slave_write_eeprom\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 7530 m -gs 1 -1 sc (+ ecrt_slave_conf_sdo8\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 7740 m -gs 1 -1 sc (+ ecrt_slave_conf_sdo16\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 7950 m -gs 1 -1 sc (+ ecrt_slave_conf_sdo32\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5006 8160 m -gs 1 -1 sc (+ ecrt_slave_field_size\(\)) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 1125 m -gs 1 -1 sc (eeprom_group: char *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 1335 m -gs 1 -1 sc (eeprom_image: char *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 1545 m -gs 1 -1 sc (eeprom_order: char *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 1755 m -gs 1 -1 sc (eeprom_name: char *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 1965 m -gs 1 -1 sc (new_eeprom_data: uint8_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 2175 m -gs 1 -1 sc (new_eeprom_size: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 2385 m -gs 1 -1 sc (sdo_dictionary: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 2595 m -gs 1 -1 sc (requested_state: ec_slave_state_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 2805 m -gs 1 -1 sc (current_state: ec_slave_state_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -5010 3015 m -gs 1 -1 sc (error_flag: unsigned int) col0 sh gr -% Polyline -n 900 1035 m - 4185 1043 l gs col0 s gr -/Helvetica-iso ff 180.00 scf sf -1005 972 m -gs 1 -1 sc (ec_slave_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 1258 m -gs 1 -1 sc (list: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 1440 m -gs 1 -1 sc (kobj: struct kobj) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 1650 m -gs 1 -1 sc (master: ec_master_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 1860 m -gs 1 -1 sc (ring_position: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2070 m -gs 1 -1 sc (station_address: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2280 m -gs 1 -1 sc (coupler_index: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2490 m -gs 1 -1 sc (coupler_subindex: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2700 m -gs 1 -1 sc (base_type: uint8_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 2910 m -gs 1 -1 sc (base_revision: uint8_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3120 m -gs 1 -1 sc (base_build: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3330 m -gs 1 -1 sc (base_fmmu_count: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3540 m -gs 1 -1 sc (base_sync_count: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3750 m -gs 1 -1 sc (dl_link: uint8_t[4]) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 3960 m -gs 1 -1 sc (dl_loop: uint8_t[4]) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 4170 m -gs 1 -1 sc (dl_signal: uint8_t[4]) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 4380 m -gs 1 -1 sc (sii_alias: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 4590 m -gs 1 -1 sc (sii_vendor_id: uint32_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 4800 m -gs 1 -1 sc (sii_product_code: uint32_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5010 m -gs 1 -1 sc (sii_revision_number: uint32_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5220 m -gs 1 -1 sc (sii_serial_number: uint32_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5430 m -gs 1 -1 sc (sii_rx_mailbox_offset: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5850 m -gs 1 -1 sc (sii_tx_mailbox_offset: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 6060 m -gs 1 -1 sc (sii_tx_mailbox_size: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 6270 m -gs 1 -1 sc (sii_mailbox_protocols: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 6480 m -gs 1 -1 sc (sii_physical_layer: uint8_t[4]) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 6690 m -gs 1 -1 sc (registered: uint8_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 6900 m -gs 1 -1 sc (fmmus: ec_fmmu_t[EC_MAX_FMMUS]) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 7110 m -gs 1 -1 sc (fmmu_count: uint8_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 7320 m -gs 1 -1 sc (eeprom_data: uint8_t *) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 7530 m -gs 1 -1 sc (eeprom_size: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 7740 m -gs 1 -1 sc (eeprom_strings: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 7950 m -gs 1 -1 sc (eeprom_syncs: struct list_head) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 5640 m -gs 1 -1 sc (sii_rx_mailbox_size: uint16_t) col0 sh gr -/Helvetica-iso ff 180.00 scf sf -1005 8160 m -gs 1 -1 sc (eeprom_pdos: struct list_head) col0 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-slave.fig --- a/documentation/images/uml-slave.fig Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -#FIG 3.2 -Portrait -Center -Metric -A4 -100.00 -Single --2 -1200 2 -0 32 #8e8e8e -6 4860 1005 10061 8205 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 4860 3525 8145 3525 -4 0 0 100 -1 16 12 0.0000 4 165 2745 5010 3225 online: unsigned int\001 -4 0 0 100 -1 16 12 0.0000 4 150 4245 5010 3435 varsize_fields: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 2340 5006 3735 + ec_slave_init()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2640 5006 3945 + ec_slave_clear()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3990 5006 4170 + ec_slave_prepare_fmmu()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3735 5006 4380 + ec_slave_fetch_strings()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3870 5006 4590 + ec_slave_fetch_general()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3465 5006 4800 + ec_slave_fetch_sync()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3330 5006 5010 + ec_slave_fetch_pdo()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3750 5006 5220 + ec_slave_locate_string()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4140 5006 5430 + ec_slave_calc_sync_size()\001 -4 0 0 100 -1 16 12 0.0000 4 165 2550 5006 5640 + ec_slave_print()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4890 5006 5850 + ec_slave_mbox_prepare_send()\001 -4 0 0 100 -1 16 12 0.0000 4 165 5040 5006 6060 + ec_slave_mbox_prepare_check()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3750 5006 6270 + ec_slave_mbox_check()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4860 5006 6480 + ec_slave_mbox_prepare_fetch()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3570 5006 6690 + ec_slave_mbox_fetch()\001 -4 0 0 100 -1 16 12 0.0000 4 165 4260 5006 6900 + ec_slave_mbox_simple_io()\001 -4 0 0 100 -1 16 12 0.0000 4 165 5055 5006 7110 + ec_slave_mbox_simple_receive()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3795 5010 7320 - ec_slave_write_eeprom()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3600 5006 7530 + ecrt_slave_conf_sdo8()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3780 5006 7740 + ecrt_slave_conf_sdo16()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3780 5006 7950 + ecrt_slave_conf_sdo32()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3465 5006 8160 + ecrt_slave_field_size()\001 -4 0 0 100 -1 16 12 0.0000 4 165 3060 5010 1125 eeprom_group: char *\001 -4 0 0 100 -1 16 12 0.0000 4 165 3105 5010 1335 eeprom_image: char *\001 -4 0 0 100 -1 16 12 0.0000 4 150 2985 5010 1545 eeprom_order: char *\001 -4 0 0 100 -1 16 12 0.0000 4 150 3030 5010 1755 eeprom_name: char *\001 -4 0 0 100 -1 16 12 0.0000 4 150 3945 5010 1965 new_eeprom_data: uint8_t *\001 -4 0 0 100 -1 16 12 0.0000 4 150 3900 5010 2175 new_eeprom_size: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 4365 5010 2385 sdo_dictionary: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 150 4830 5010 2595 requested_state: ec_slave_state_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 4395 5010 2805 current_state: ec_slave_state_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 3240 5010 3015 error_flag: unsigned int\001 --6 -2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2 - 900 1035 4185 1043 -2 1 0 1 0 7 101 -1 20 0.000 0 0 -1 0 0 4 - 900 8265 900 720 4185 720 4185 8250 -2 1 0 1 0 7 101 -1 20 0.000 0 0 -1 0 0 4 - 4860 855 4860 8280 8145 8280 8145 855 -4 0 0 100 0 16 12 0.0000 4 150 1545 1005 972 ec_slave_t\001 -4 0 0 100 0 16 12 0.0000 4 150 2670 1005 1258 list: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 2190 1005 1440 kobj: struct kobj\001 -4 0 0 100 -1 16 12 0.0000 4 150 3045 1005 1650 master: ec_master_t *\001 -4 0 0 100 -1 16 12 0.0000 4 165 3105 1005 1860 ring_position: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3540 1005 2070 station_address: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3300 1005 2280 coupler_index: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3825 1005 2490 coupler_subindex: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 2580 1005 2700 base_type: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3105 1005 2910 base_revision: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 2850 1005 3120 base_build: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3885 1005 3330 base_fmmu_count: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 3795 1005 3540 base_sync_count: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 2355 1005 3750 dl_link: uint8_t[4]\001 -4 0 0 100 -1 16 12 0.0000 4 165 2475 1005 3960 dl_loop: uint8_t[4]\001 -4 0 0 100 -1 16 12 0.0000 4 165 2715 1005 4170 dl_signal: uint8_t[4]\001 -4 0 0 100 -1 16 12 0.0000 4 150 2445 1005 4380 sii_alias: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3195 1005 4590 sii_vendor_id: uint32_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3720 1005 4800 sii_product_code: uint32_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 4155 1005 5010 sii_revision_number: uint32_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3810 1005 5220 sii_serial_number: uint32_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 4260 1005 5430 sii_rx_mailbox_offset: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 4230 1005 5850 sii_tx_mailbox_offset: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 4065 1005 6060 sii_tx_mailbox_size: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 4365 1005 6270 sii_mailbox_protocols: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 3990 1005 6480 sii_physical_layer: uint8_t[4]\001 -4 0 0 100 -1 16 12 0.0000 4 165 2520 1005 6690 registered: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 5475 1005 6900 fmmus: ec_fmmu_t[EC_MAX_FMMUS]\001 -4 0 0 100 -1 16 12 0.0000 4 150 2820 1005 7110 fmmu_count: uint8_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 3165 1005 7320 eeprom_data: uint8_t *\001 -4 0 0 100 -1 16 12 0.0000 4 150 3120 1005 7530 eeprom_size: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 165 4485 1005 7740 eeprom_strings: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 165 4380 1005 7950 eeprom_syncs: struct list_head\001 -4 0 0 100 -1 16 12 0.0000 4 150 4095 1005 5640 sii_rx_mailbox_size: uint16_t\001 -4 0 0 100 -1 16 12 0.0000 4 150 4245 1005 8160 eeprom_pdos: struct list_head\001 diff -r 1c0edf99def0 -r c75cdcc5ce87 documentation/images/uml-slave.pdf --- a/documentation/images/uml-slave.pdf Wed Jul 02 14:41:29 2008 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -%PDF-1.3 -%쏢 -5 0 obj -<> -stream -xVMo6WgD}8v -.Zmnw/2A/(3<*s&8h׀ t 00Iq%4KfHQeĞHB du $pLPa,GQf8]"¢("|X4)1l<_d'Wuq!8q߇GQ_W QqGh z%Ns%&IVUhj%kZH~# 1 8F#F -UGd)i, ^!Lb@r/`3]xpIQZ-ZaڏLW^N̍ŎA}ޚzoE-4W7qs`[6L5bك\]^ZXh=jݼMQ)vxEzdvEz4jڧ9AB(]y8-}M5laEo 3e_Lr8e8T1x f[GTFJ@V|+&n7yuA +parfPWhYX) +V/x c|?z{Emߣ6ogNs|\N.t=ytd/ iҐTZoq9$NCܩ@fh~F4dA*)LNY@$2^Zs 05 -Ⱥo~t ؊i i2Α^ғ.܆}m=`iT ^,._14'솂9`d\I>ƅ`0Tr(9NL| =Jq -z_]#&ߠR9?k6#.O!h,pl.||flύˆmS4#L; /q[fSlm~=7/Gy@;ȁ3'at=q'CnxSw))9zendstream -endobj -6 0 obj -964 -endobj -4 0 obj -<> -/Contents 5 0 R ->> -endobj -3 0 obj -<< /Type /Pages /Kids [ -4 0 R -] /Count 1 ->> -endobj -1 0 obj -<> -endobj -7 0 obj -<>endobj -9 0 obj -<> -endobj -10 0 obj -<> -endobj -8 0 obj -<> -endobj -11 0 obj -<> -endobj -2 0 obj -<>endobj -xref -0 12 -0000000000 65535 f -0000001286 00000 n -0000001572 00000 n -0000001227 00000 n -0000001068 00000 n -0000000015 00000 n -0000001049 00000 n -0000001334 00000 n -0000001434 00000 n -0000001375 00000 n -0000001404 00000 n -0000001514 00000 n -trailer -<< /Size 12 /Root 1 0 R /Info 2 0 R -/ID [(a+gijE\rdDa)(a+gijE\rdDa)] ->> -startxref -1783 -%%EOF