]> rtime.felk.cvut.cz Git - CanFestival-3.git/blobdiff - doc/manual/en/manual.tex
FastScan review
[CanFestival-3.git] / doc / manual / en / manual.tex
index aa05c1c6177b300a448c271dfd4df455e1acd9c0..f35822eebca1c11564e5c2adf680a2ff27b3fc55 100644 (file)
@@ -1,10 +1,6 @@
-%% LyX 1.5.1 created this file.  For more info, see http://www.lyx.org/.
-%% Do not edit unless you really know what you are doing.
 \documentclass[12pt,english,a4paper]{book}
 \usepackage[T1]{fontenc}
 \usepackage[latin9]{inputenc}
-\setcounter{secnumdepth}{5}
-\setcounter{tocdepth}{3}
 \usepackage{graphicx}
 \usepackage{amsfonts}
 \usepackage{textcomp}
 \author{Edouard TISSERANT}
 \date{\today}
 
+\setcounter{secnumdepth}{5}
+\renewcommand\thesection{\arabic{section} -}
+\renewcommand\thesubsection{\arabic{section}.\arabic{subsection})}
+\renewcommand\thesubsubsection{\arabic{section}.\arabic{subsection}.\arabic{subsubsection})}
+\renewcommand\theparagraph{\alph{paragraph})}
+\renewcommand\thesubparagraph{\roman{subparagraph})}
+
 \newcommand{\canopen}{CANopen }
 
 \begin{document}
@@ -79,7 +82,7 @@ The \canopen library is coming with some tools :
 
 \begin{enumerate}
 \item Object Dictionary editor GUI. WxPython Model-View-Controler based
-GUI, that help a lot in generating object dictionary source code for
+GUI, that helps a lot in generating object dictionary source code for
 each node. 
 \item A configure script, that let you chose compile time options such as
 target CPU/HOST, CAN and TIMER drivers.\\
@@ -87,10 +90,7 @@ target CPU/HOST, CAN and TIMER drivers.\\
 keeping micro-controller target in mind. 
 \end{enumerate}
 
-\subsection{Standard conformance}
-
-
-\subsubsection{Multi-Platform}
+\subsection{Multi-Platform}
 
 \begin{enumerate}
 \item Library source code is C-ANSI. 
@@ -100,55 +100,43 @@ contributor/compiler.
 any Unix system (tested on GNU/Linux and GNU/FreeBSD). 
 \end{enumerate}
 
-\subsubsection{\canopen conformance}
+\subsection{\canopen standard conformance}
 
+\subsubsection{DS-301}
 
-\paragraph{DS-301}
+Supported features should conform to DS301. V.4.02 13 february 2002. 
 
 \begin{enumerate}
-\item Should conform to DS301. V.4.02 13 february 2002. 
-\item Master and Slave functionality implemented. 
-\item Sending SYNC implemented. 
-\item 1 SDO server per node. (update: more than one possible. To be more
-tested) 
-\item Unlimited SDO client. 
-\item SDO transmission mode : normal, expedited download and upload. 
-\item Unlimited PDO receive. 
-\item Unlimited PDO transmit. 
-\item Object Data type implemented : 8, 16, 32 bits values, and fixed length
-strings. 
-\item Slave state full implemented. 
-\item NMT to change slaves state implemented. 
-\item PDO transmission mode : on request, every reception of 0 to n SYNC,
-on event. 
-\item NMT Heartbeat implemented : A node can be either heartbeat producer
-or receiver. 
-\item NMT NodeGuard implemented : Not fully implemented. 
-\item TIME (time Stamp) : Not implemented. 
-\item EMCY (emergency objects) : Sending and reception of EMCY objectos
-(without manufacturer specific error field). 
-\item PDO Mapping bit per bit implemented. 
+\item NMT master and slave
+\item Heartbeat consumer and producer
+\item NodeGuard slave reponder and basic master without tracking
+\item SYNC service
+\item SDO multiples client and server, segmented and expedited
+\item PDO : TPDO and RPDO, with respect to transmission type
+\item PDO mapping from/to OD variables bit per bit. 
+\item EMCY : Send and receive and keeps track of emergency objects
+\item Data types : 8 to 64 bits values, fixed length strings.
 \end{enumerate}
 
-\paragraph{DS-302}
+\subsubsection{DS-302}
 
-\begin{enumerate}
-\item Concise DFC : implemented. 
-\end{enumerate}
+Only concise DFC is supported.
 
-\section{How to start}
+\subsubsection{DS-305}
+
+LSS services are fully supported although they have to be enabled at compile time. Additionally, FastScan LSS service is also optionally enabled. 
 
+\section{How to start}
 
 \subsection{Host requirements}
 
 What you need on your development workstation.
 
-
 \subsubsection{Object Dictionary Editor GUI}
 
 \begin{enumerate}
 \item Python, with 
-\item wxPyhon modules installed (at least version 2.6.3). 
+\item wxPython modules installed (at least version 2.6.3).
 \item Gnosis xml tools. (Optional can also be installed locally to the project
 automatically with the help of a Makefile. Please see {}``Using Dictionary
 Editor GUI'' ) 
@@ -169,9 +157,10 @@ context sensitive help.
 \subsubsection{Windows (for native win32 target)}
 
 \begin{enumerate}
-\item Visual Studio Express 2005 or worst. 
-\item Microsoft platform SDK (requires Genuine Advantage) 
-\item Cygwin (for configuration only) 
+\item Visual Studio Express 2005 or worst.
+\item Microsoft platform SDK (requires Genuine Advantage)
+\item Cygwin (for configuration only)
+\item MinGW/MSYS
 \end{enumerate}
 
 \subsection{How to get CanFestival}
@@ -179,68 +168,55 @@ context sensitive help.
 Please always use CVS, this is the best way to get the most reactive
 support from the developer community :
 
-cvs -d:pserver:anonymous@lolitech.dyndns.org:/canfestival login\\
- (type return, without entering a password)
-
-Then, enter : \\
- cvs -z3 -d:pserver:anonymous@lolitech.dyndns.org:/canfestival co
--P CanFestival-3
-
-
-\section{Understanding Canfestival}
-
-
-\subsection{CanFestival Project tree layout}
-
-Simplified directory structure.
-
-\texttt{\textbf{./src ANSI-C source of \canopen stack}}
-
-\texttt{\textbf{./include Exportables Header files}}
-
-\texttt{\textbf{./drivers Interfaces to specific platforms/HW}}
-
-\texttt{./drivers/unix Linux and Cygwin OS interface}
-
-\texttt{./drivers/win32 Native Win32 OS interface}
 
-\texttt{./drivers/timers\_xeno Xenomai timers/threads (Linux only)}
+\begin{verbatim}
+       cvs -d:pserver:anonymous@lolitech.dyndns.org:/canfestival login
+\end{verbatim}
 
-\texttt{./drivers/timers\_kernel Linux kernel timer/threads}
+(type return, without entering a password)
 
-\texttt{./drivers/timers\_unix Posix timers/threads (Linux, Cygwin)}
+Then, enter :
 
-\texttt{./drivers/can\_virtual\_kernel Fake CAN network (kernel space)}
+\begin{verbatim}
+       cvs -z3 -d:pserver:anonymous@lolitech.dyndns.org:/canfestival co -P CanFestival-3
+\end{verbatim}
 
-\texttt{./drivers/can\_peak\_linux PeakSystem CAN library interface}
 
-\texttt{./drivers/can\_peak\_win32 PeakSystem PCAN -Light interface}
 
-\texttt{./drivers/can\_uvccm\_win32 Acacetus{\textquotesingle}s
-RS232 {}``CAN -uVCCM'' interface}
-
-\texttt{./drivers/can\_virtual Fake CAN network (Linux, Cygwin)}
-
-\texttt{./drivers/hcs12 HCS12 full target interface}
-
-\texttt{\textbf{./examples Examples}}
-
-\texttt{./examples/TestMasterSlave 2 nodes, NMT SYNC SDO PDO, win32+unix}
-
-\texttt{./examples/TestMasterMicroMod 1 node, control Peak I/O Module,
-unix}
-
-\texttt{./examples/gene\_SYNC\_HCS12 Just send periodic SYNC on HCS12}
-
-\texttt{./examples/win32test Ask some DS301 infos to a node (}\texttt{\textbf{win32)}}
-
-\texttt{\textbf{./objdictgen Object Dictionary editor GUI}}
-
-\texttt{./objdictgen/config Pre -defined OD profiles}
+\section{Understanding Canfestival}
 
-\texttt{./objdictgen/examples Some examples/test OD}
+\subsection{CanFestival Project tree layout}
+Simplified directory structure.
+\begin{verbatim}
+./src ANSI-C source of \canopen stack
+./include Exportables Header files
+./drivers Interfaces to specific platforms/HW
+./drivers/unix Linux and Cygwin OS interface
+./drivers/win32 Native Win32 OS interface
+./drivers/timers_xeno Xenomai timers/threads (Linux only)
+./drivers/timers_rtai Rtai timers/threads (Linux only)
+./drivers/timers_kernel Linux kernel timer/threads
+./drivers/timers_unix Posix timers/threads (Linux, Cygwin)
+./drivers/can_virtual_kernel Fake CAN network (kernel space)
+./drivers/can_serial Serial point to point and PTY hub (*nix only)
+./drivers/can_peak_linux PeakSystem CAN library interface
+./drivers/can_peak_win32 PeakSystem PCAN-Light interface
+./drivers/can_uvccm_win32 Acacetus's RS232 CAN-uVCCM interface
+./drivers/can_virtual Fake CAN network (Linux, Cygwin)
+./drivers/can_vcom VScom VSCAN interface
+./drivers/hcs12 HCS12 full target interface
+./examples Examples
+./examples/TestMasterSlave 2 nodes, NMT SYNC SDO PDO, win32+unix
+./examples/TestMasterSlaveLSS 3 nodes, NMT SYNC SDO PDO LSS, win32+unix
+./examples/TestMasterMicroMod 1 node, control Peak I/O Module, unix
+./examples/gene_SYNC_HCS12 Just send periodic SYNC on HCS12
+./examples/win32test Ask some DS301 infos to a node (win32)
+./objdictgen Object Dictionary editor GUI
+./objdictgen/config Pre-defined OD profiles
+./objdictgen/examples Some examples/test OD
+./doc Documentation source
+\end{verbatim}
 
-\texttt{\textbf{./doc Project and \canopen doc}}
 
 
 \subsection{Implement CanFestival in your application}
@@ -256,14 +232,13 @@ unix}
 \subsection{CanFestival CAN interfaces}
 
 Because most CAN controllers and drivers implement FIFOs, CanFestival
-consider sending message as a non bloking operation.
+consider sending message as a non blocking operation.
 
-In order to prevent reentrent calls to the stack, messages reception
+In order to prevent reentrant calls to the stack, messages reception
 is implemented differently on {\textmu}C and OS.:
 
 \begin{enumerate}
-\item {\textmu}C must provide interuption masking for timer and can receive
-TI\\
+\item {\textmu}C must provide interruption masking, mutually excluding timer and CAN receive interrupts.\\
 
 
 
@@ -272,7 +247,7 @@ TI\\
 \par\end{center}
 
 \item OS must provide a receive thread, a timer thread and a mutex. CAN
-reception is a bloking operation.\\
+reception should be a blocking operation.\\
 
 
 
@@ -282,14 +257,14 @@ reception is a bloking operation.\\
 
 \end{enumerate}
 
-\subsection{CanFestival events scheduling}
+\subsection{CanFestival event scheduling}
 
 A \canopen node must be able to take delayed actions.
 
-As exemples, periodic sync emission, heartbeat production or SDO timeout
+For instance, periodic sync emission, heartbeat production or SDO timeout
 need to set some alarms that will be called later and do the job.
 
-{\textmu}C generaly do not have enough free timers to handle all
+{\textmu}C generally do not have enough free timers to handle all
 the \canopen needs directly. Moreover, CanFestival internal data
 may be corrupt by reentrant calls.
 
@@ -330,18 +305,24 @@ Call ./configure -- help to see all available compile time options.
 After invoking ./configure with your platform specific switches, just
 type make.
 
-\texttt{./configure {[}options]}
 
-\texttt{make}
 
-\texttt{make install}
+\begin{verbatim}
+       ./configure [options]
+       make
+       make install
+\end{verbatim}
+
+
 
 
 \subsubsection{Standard Linux node}
 
-Configure switch:
 
-\texttt{- -timers=unix}
+\begin{verbatim}
+       ./configure --timers=unix
+\end{verbatim}
+
 
 To do a \canopen node running on PC -Linux, you need :
 
@@ -353,14 +334,19 @@ installed.
 
 \subsubsection{Real -Time Linux node}
 
-Configure switch:
-
-\texttt{- -timers=xeno}
+With Xenomai :
+\begin{verbatim}
+       ./configure --timers=xeno
+\end{verbatim}
+With Rtai :
+\begin{verbatim}
+       ./configure --timers=rtai
+\end{verbatim}
 
 To do a \canopen node running on PC -Linux, you need :
 
 \begin{enumerate}
-\item A working Linux distribution patched with XENOMAI 2.1 or greater
+\item A working Linux distribution patched with XENOMAI (2.1 or greater) or RTAI (3.6)
 \item One or more Peak system PC CAN interface and the last Peak Real Time
 Linux driver installed. 
 \end{enumerate}
@@ -370,23 +356,19 @@ Linux driver installed.
 To do a CANopen node running on PC-Linux in kernel space, you need:
 
 
-\paragraph{A working Linux distribution with pre-built 2.6.x.x kernel sources}
-
-
-\paragraph{A CAN card driver compatible with CanFestival}
+\begin{enumerate}
+\item A working Linux distribution with pre-built 2.6.x.x kernel sources
+\item A CAN card driver compatible with CanFestival
+\end{enumerate}
 
 
 \subsubsection{CAN devices}
-
-Curently supported CAN devices and corresponding configure switch:
-
+Currently supported CAN devices and corresponding configure switch:
 
 \paragraph{Peak systems}
-
-Configure switch:
-
-\texttt{- -can=peak\_linux}
-
+\begin{verbatim}
+       ./configure --can=peak_linux
+\end{verbatim}
 PeakSystems CAN interface is automatically chosen as default CAN interface
 if libpcan is present in the system.
 
@@ -394,41 +376,68 @@ Please download driver at \href{http://www.peak-system.com/linux}{http://www.pea
 -system.com/linux} and follow instructions in order to install driver
 on your system.
 
+\paragraph{Socket-Can (http://socketcan.berlios.de)}
+\begin{verbatim}
+       ./configure --can=socket
+\end{verbatim}
 
-\paragraph{Socket -Can (http://socketcan.berlios.de)}
-
-Configure switch:
-
-\texttt{- -can=socket}
+\paragraph{Serial}
+\begin{verbatim}
+       ./configure --can=serial
+\end{verbatim}
+The CAN serial driver implements a 1:1 serial connection between 2 CAN devices.
+For example, you can connect 2 CANFestival applications via a NULL modem cable.
 
+Also with this driver comes a software hub, for up to 16 CANFestival apps to 
+be connected on a single PC, with an optional connection to another CAN driver.
+Note that only the serial driver is supported at this time.  The hub uses ptys 
+(pseudo ttys) available on a *nix like system.
 
 \paragraph{LinCan}
-
-Configure switch:
-
-\texttt{- -can=lincan}
-
+\begin{verbatim}
+       ./configure --can=lincan
+\end{verbatim}
 
 \paragraph{Virtual CAN interfaces (for test/debug)}
-
-Configure switch:
-
-\texttt{- -can=virtual (in user space)}
-
-\texttt{- -can=virtual\_kernel (in kernel space)}
-
+\begin{verbatim}
+       ./configure --can=virtual
+               or, for kernel space:
+       ./configure --can=kernel_virtual
+\end{verbatim}
 Virtual CAN interface use Unix pipes to emulate a virtual CAN network.
 Each message issued from a node is repeat to all other nodes. Currently
 only works with nodes running in the same process, and does not support
-work with Xenomai.
+work with Xenomai or RTAI.
 
+\paragraph{VScom}
+\begin{verbatim}
+       ./configure --can=vscom
+\end{verbatim}
+The VSCAN API archive will be automatically downloaded and decompressed (unzip required). See \href{http://www.vscom.de/1_1_05.htm}{www.vscom.de} for available adapters.
+
+\subsubsection{LSS services}
+Canfestival optionally supports LSS services but they must be enabled.
+\begin{verbatim}
+       ./configure --enable-lss
+\end{verbatim}
+
+Additionally, the FastScan LSS service can also be enabled.
+\begin{verbatim}
+       ./configure --enable-lss --enable-lss-fs
+\end{verbatim}
 
 \subsection{Testing your CanFestival installation}
 
+\subsubsection{User space}
+
 Sample provided in /example/TestMasterSlave is installed into your
 system during installation.
 
-\texttt{TestMasterSlave}
+
+\begin{verbatim}
+       TestMasterSlave
+\end{verbatim}
+
 
 Default CAN driver library is libcanfestival\_can\_virtual.so., which
 will simply pass CAN messages through Unix pipes between Master and
@@ -438,11 +447,24 @@ You may also want to specify different can interface and define some
 CAN ports. Another example using Peak{\textquotesingle}s dual PCMCIA
 (configure and install with --can=peak) :
 
-\texttt{TestMasterSlave -l libcanfestival\_can\_peak.so -s 40 -m 41}
 
-\texttt{example/kerneltest} It's based on TestMasterSlave example
+\begin{verbatim}
+       TestMasterSlave -l libcanfestival_can_peak.so -s 40 -m 41
+\end{verbatim}
+
+If the LSS services are enabled the sample provided in /example/TestMasterSlaveLSS will be also installed. It behaves the same as TestMasterSlave except that there are 2 slave nodes without a valid nodeID so the the initializations is done via  the LSS services. If FastScan optional service is enabled the example will use it. 
+
+\subsubsection{Kernel space}
+
+
+\begin{verbatim}
+       example/kerneltest
+\end{verbatim}
+
+
+It's based on TestMasterSlave example
 and has the same functionality. Uses virtual can driver as default
-too. After successfull installation you can insert the module by typing:
+too. After successful installation you can insert the module by typing:
 modprobe canf\_ktest Module control is done by simple console 'canf\_ktest\_console'
 which is used to start/stop sending data.
 
@@ -452,16 +474,13 @@ which is used to start/stop sending data.
 CanFestival can be compiled and run on Windows platform. It is possible
 to use both Cygwin and win32 native runtime environment.
 
-
 \subsection{Object Dictionary Editor GUI installation.}
 
 Please refer to \hyperlink{a821UsingDictionaryEditorGUIoutline}{8.2.1)Using
 Dictionary Editor GUI}
 
-
 \subsection{CYGWIN}
 
-
 \subsubsection{Requirements}
 
 Cygwin have to be installed with those packages :
@@ -489,94 +508,109 @@ Open a Cygwin terminal, and follow those instructions:
 
 \paragraph{A single node with PcanLight and Peak CAN -USB adapter}
 
-Download the PCAN -Light Zip file for your HW ( URL from download
+Download the PCAN-Light Zip file for your HW ( URL from download
 page ):
 
-\texttt{wget http://www.peak -system.com/files/usb.zip}
+
+\begin{verbatim}
+       wget http://www.peak -system.com/files/usb.zip
+\end{verbatim}
+
 
 Extract its content into your cygwin home (it will create a {}``Disk''
 directory):
 
-\texttt{unzip usb.zip}
-
-Configure CanFestival3 providing path to the desired PcanLight implementation:
 
-\texttt{cd CanFestival -3}
+\begin{verbatim}
+       unzip usb.zip
+\end{verbatim}
 
-\texttt{export PCAN\_INCLUDE=\~{ }/Disk/PCAN -Light/Api/}
 
-\texttt{export PCAN\_HEADER=Pcan\_usb.h}
+Configure CanFestival3 providing path to the desired PcanLight implementation:
 
-\texttt{export PCAN\_LIB=\~{ }/Disk/PCAN -Light/Lib/Visual\textbackslash{}
-C++/Pcan\_usb.lib}
 
-\texttt{./configure -{}-can=peak\_win32}
+\begin{verbatim}
+       cd CanFestival -3
+       export PCAN_INCLUDE=~/Disk/PCAN-Light/Api/
+       export PCAN_HEADER=Pcan_usb.h
+       export PCAN_LIB=~/Disk/PCAN-Light/Lib/Visual\ C++/Pcan_usb.lib
+       ./configure --can=peak_win32
+       make
+\end{verbatim}
 
-\texttt{make}
 
 In order to test, you have to use another CanFestival node, connect
 with a CAN cable.
 
-\texttt{cp \~{ }/Disk/PCAN -Light/Pcan\_usb.dll .}
-
-\texttt{./examples/TestMasterSlave/TestMasterSlave \textbackslash{}} 
 
-\texttt{-l drivers/can\_peak\_win32/cygcan\_peak\_win32.dll \textbackslash{}}
+\begin{verbatim}
+       cp ~/Disk/PCAN-Light/Pcan_usb.dll .
+       ./examples/TestMasterSlave/TestMasterSlave \
+       -l drivers/can\_peak\_win32/cygcan\_peak\_win32.dll \
+       -S 500K -M none
+\end{verbatim}
 
-\texttt{-S 500K -M none}
 
 Then, on the other node :
 
-\texttt{./TestMasterSlave -l my\_driver.so -S none -M 500K}
 
-Now messages are beeing exchanged between master and slave node.
+\begin{verbatim}
+       ./TestMasterSlave -l my_driver.so -S none -M 500K
+\end{verbatim}
+
 
+Now messages are being exchanged between master and slave node.
 
 \paragraph{Two nodes with PcanLight and Peak dual PCMCIA -CAN adapter}
 
-Download the PCAN -Light Zip file for your HW ( URL from download
+Download the PCAN-Light Zip file for your HW ( URL from download
 page ):
 
-\texttt{wget http://www.peak -system.com/files/pccard.zip}
+
+\begin{verbatim}
+       wget http://www.peak-system.com/files/pccard.zip
+\end{verbatim}
+
 
 Extract its content into your cygwin home (it will create a {}``Disk''
 directory):
 
-\texttt{unzip pccard.zip}
 
-The configure CanFestival3 providing path to the desired PcanLight
-implementation:
+\begin{verbatim}
+       unzip pccard.zip
+\end{verbatim}
 
-\texttt{export PCAN\_INCLUDE=\~{ }/Disk/PCAN -Light/Api/}
 
-\texttt{export PCAN\_HEADER=Pcan\_pcc.h}
+The configure CanFestival3 providing path to the desired PcanLight
+implementation:
 
-\texttt{export PCAN\_LIB=\~{ }/Disk/PCAN -Light/Lib/Visual\textbackslash{}
-C++/Pcan\_pcc.lib}
 
-\texttt{export PCAN2\_HEADER=Pcan\_2pcc.h}
+\begin{verbatim}
+       export PCAN_INCLUDE=~/Disk/PCAN-Light/Api/
+       export PCAN_HEADER=Pcan_pcc.h
+       export PCAN_LIB=~/Disk/PCAN-Light/Lib/Visual\ C++/Pcan_pcc.lib
+       export PCAN2_HEADER=Pcan_2pcc.h
+       export PCAN2_LIB=~/Disk/PCAN-Light/Lib/Visual\ C++/Pcan_2pcc.lib
+\end{verbatim}
 
-\texttt{export PCAN2\_LIB=\~{ }/Disk/PCAN -Light/Lib/Visual\textbackslash{}
-C++/Pcan\_2pcc.lib}
 
 In order to test, just connect together both CAN ports of the PCMCIA
 card. Don{\textquotesingle}t forget 120ohms terminator.
 
-\texttt{cp \~{ }/Disk/PCAN -Light/Pcan\_pcc.dll .}
 
-\texttt{cp \~{ }/Disk/PCAN -Light/Pcan\_2pcc.dll .}
+\begin{verbatim}
+       cp ~/Disk/PCAN-Light/Pcan_pcc.dll .
+       cp ~/Disk/PCAN-Light/Pcan_2pcc.dll .
+       ./examples/TestMasterSlave/TestMasterSlave \
+          -l drivers/can_peak_win32/cygcan_peak_win32.dll
+\end{verbatim}
 
-\texttt{./examples/TestMasterSlave/TestMasterSlave \textbackslash{}} 
-
-\texttt{-l drivers/can\_peak\_win32/cygcan\_peak\_win32.dll}
 
 Messages are then exchanged between master and slave node, both inside
 TestMasterSlave{\textquotesingle}s process.
 
-
 \subsection{Visual Studio C++}
 
-
 \subsubsection{Requirements}
 
 Minimal Cygwin installation is required at configuration time in order
@@ -598,7 +632,7 @@ to your configuration parameters, and the desired CAN hardware.
 
 \subsubsection{Compilation with Visual Studio}
 
-You can either load independents {}``{*}.vcproj'' project files
+You can either load independent {}``{*}.vcproj'' project files
 along your own projects in your own solution or load the provided
 {}``CanFestival -3.vc8.sln'' solution files directly.
 
@@ -616,7 +650,10 @@ to can\_peak\_win32 \ \ project before build of the DLL.
 Copy eventually needed dlls (ie : Pcan\_Nxxx.lib) into Release or
 Debug directory, and run the test program:
 
-\texttt{TestMasterSlave.exe -l can\_peak\_win32.dll}
+
+\begin{verbatim}
+       TestMasterSlave.exe -l can_peak_win32.dll
+\end{verbatim}
 
 
 \subsection{MSYS}
@@ -655,49 +692,47 @@ Instructions for compilation are nearly the same as CYGWIN part.
 Download the PCAN-Light Zip file for your HW ( URL from download page
 ):
 
-\begin{quotation}
-\texttt{wget http://www.peak-system.com/files/usb.zip} 
-\end{quotation}
+\begin{verbatim}
+       wget http://www.peak-system.com/files/usb.zip
+\end{verbatim}
+
 Extract its content into your MSYS's home (it will create a \char`\"{}
 Disk\char`\"{} directory):
 
-\begin{quotation}
-\texttt{unzip usb.zip} 
-\end{quotation}
-Configure CanFestival3 providing path to the desired PcanLight implementation:
-
-\begin{quotation}
-\texttt{cd CanFestival-3}
 
-\texttt{export PCAN\_INCLUDE=\~{ }/Disk/PCAN-Light/Api/}
+\begin{verbatim}
+       unzip usb.zip
+\end{verbatim}
 
-\texttt{export PCAN\_HEADER=Pcan\_usb.h}
 
-\texttt{export PCAN\_LIB=\~{ }/Disk/PCAN-Light/Lib/Visual\textbackslash{}
-C++/Pcan\_usb.lib}
+Configure CanFestival3 providing path to the desired PcanLight implementation:
 
-\texttt{./configure - -can=peak\_win32}
+\begin{verbatim}
+       cd CanFestival-3
+       export PCAN_INCLUDE=~/Disk/PCAN-Light/Api/
+       export PCAN_HEADER=Pcan_usb.h
+       export PCAN_LIB=~/Disk/PCAN-Light/Lib/Visual\ C++/Pcan_usb.lib
+       ./configure --can=peak_win32
+       make
+\end{verbatim}
 
-\texttt{make} 
-\end{quotation}
 In order to test, you have to use another CanFestival node, connect
 with a CAN cable.
 
-\begin{quotation}
-\texttt{cp \~{ }/Disk/PCAN-Light/Pcan\_usb.dll .}
 
-\texttt{./examples/TestMasterSlave/TestMasterSlave \textbackslash{}}
+\begin{verbatim}
+       cp ~/Disk/PCAN-Light/Pcan_usb.dll .
+       ./examples/TestMasterSlave/TestMasterSlave \
+         -l drivers/can_peak_win32/cygcan_peak_win32.dll \
+         -S 500K -M none
+\end{verbatim}
 
-\texttt{-l drivers/can\_peak\_win32/cygcan\_peak\_win32.dll \textbackslash{}}
-
-\texttt{-S 500K -M none} 
-\end{quotation}
 Then, on the other node :
 
-\begin{quotation}
-\texttt{./TestMasterSlave -l my\_driver.so -S none -M 500K -m 0} 
-\end{quotation}
-Now messages are beeing exchanged between master and slave node.
+\begin{verbatim}
+       ./TestMasterSlave -l my_driver.so -S none -M 500K -m 0
+\end{verbatim}
+Now messages are being exchanged between master and slave node.
 
 
 \paragraph{Two nodes with PcanLight and Peak dual PCMCIA-CAN adapter}
@@ -705,48 +740,38 @@ Now messages are beeing exchanged between master and slave node.
 Download the PCAN-Light Zip file for your HW ( URL from download page
 ):
 
-\begin{quotation}
-\texttt{wget http://www.peak-system.com/files/pccard.zip} 
-\end{quotation}
+\begin{verbatim}
+       wget http://www.peak-system.com/files/pccard.zip
+\end{verbatim}
 Extract its content into your MSYS's home (it will create a \char`\"{}
 Disk\char`\"{} directory):
 
-\begin{quotation}
-\texttt{unzip pccard.zip} 
-\end{quotation}
+\begin{verbatim}
+       unzip pccard.zip
+\end{verbatim}
 The configure CanFestival3 providing path to the desired PcanLight
 implementation:
 
-\begin{quotation}
-\texttt{export PCAN\_INCLUDE=\~{ }/Disk/PCAN-Light/Api/}
-
-\texttt{export PCAN\_HEADER=Pcan\_pcc.h}
+\begin{verbatim}
+       export PCAN_INCLUDE=~/Disk/PCAN-Light/Api/
+       export PCAN_HEADER=Pcan_pcc.h}
+       export PCAN_LIB=~/Disk/PCAN-Light/Lib/Visual\ C++/Pcan_pcc.lib
+       export PCAN2_HEADER=Pcan_2pcc.h
+       export PCAN2_LIB=~/Disk/PCAN-Light/Lib/Visual\ C++/Pcan_2pcc.lib
+\end{verbatim}
 
-\texttt{export PCAN\_LIB=\~{ }/Disk/PCAN-Light/Lib/Visual\textbackslash{}
-C++/Pcan\_pcc.lib}
-
-\texttt{export PCAN2\_HEADER=Pcan\_2pcc.h}
-
-\texttt{export PCAN2\_LIB=\~{ }/Disk/PCAN-Light/Lib/Visual\textbackslash{}
-C++/Pcan\_2pcc.lib} 
-\end{quotation}
 In order to test, just connect together both CAN ports of the PCMCIA
 card. Don't forget 120ohms terminator.
 
-\begin{quotation}
-\texttt{cp\~{ }/Disk/PCAN-Light/Pcan\_pcc.dll ~.}
-
-\texttt{cp \~{ }/Disk/PCAN-Light/Pcan\_2pcc.dll ~.}
-
-\texttt{./examples/TestMasterSlave/TestMasterSlave \textbackslash{}}
-
-\texttt{-l drivers/can\_peak\_win32/cygcan\_peak\_win32.dll -m 0 -s
-1} 
-\end{quotation}
+\begin{verbatim}
+       cp~/Disk/PCAN-Light/Pcan_pcc.dll ~.
+       cp ~/Disk/PCAN-Light/Pcan_2pcc.dll ~.
+       ./examples/TestMasterSlave/TestMasterSlave \
+               -l drivers/can\_peak\_win32/cygcan\_peak\_win32.dll -m 0 -s 1
+\end{verbatim}
 Messages are then exchanged between master and slave node, both inside
 TestMasterSlave's process.
 
-
 \section{Motorola HCS12}
 
 The examples have been tested on a MC9S12DG255 mounted on a Elektronikladen
@@ -761,7 +786,9 @@ note AN2011/D.
 
 Configure switch:
 
-\texttt{-{}-target=hcs12}
+\begin{verbatim}
+       --target=hcs12
+\end{verbatim}
 
 To do a \canopen node running on a microncontroller Motorola MC9S12DP256,
 you need :
@@ -769,9 +796,9 @@ you need :
 \begin{enumerate}
 \item The compiler GNU gcc for HC11, HC12, HCS12 : m6811 -elf. \\
  Download the \textbf{release 3.1} at : \href{http://m68hc11.serveftp.org/m68hc11_pkg_rpm.php}{http://m68hc11.serveftp.org/m68hc11\_pkg\_rpm.php} 
-\item A board with this chip. We are using the T -board from Electronikladden. 
+\item A board with this chip. We are using the T -board from Electronikladen. 
 \item At least about 40 kBytes of program memory. 
-\item A tool to flash the memory. (We are using the hight cost Lauterbach
+\item A tool to flash the memory. (We are using the high cost Lauterbach
 debugger). 
 \end{enumerate}
 
@@ -780,19 +807,23 @@ debugger).
 
 \subsubsection{Compiling Canfestival:}
 
-\texttt{./configure -{}-target=hcs12}
+\begin{verbatim}
+       ./configure --target=hcs12
+\end{verbatim}
 
 
 \subsubsection{Compiling and building an example}
 
 Enter in the folder of an HCS12 example,
 
-\texttt{make all}
+\begin{verbatim}
+       make all
+\end{verbatim}
 
 
 \subsubsection{Flashing the memory :}
 
-Use your prefered loader ! If you are using a debugger Lauterbach,
+Use your preferred loader ! If you are using a debugger Lauterbach,
 you can load the bash file : trace32\_flash\_programmer.cmm. It loads
 directly the elf file.
 
@@ -800,15 +831,15 @@ directly the elf file.
 \subsubsection{Connecting to a serial RS232 console :}
 
 Connect the portS(TxD0) of the HCS12 to a console configured at 19200
-bauds 8N1, via a Max232 chip to adapt the electricals levels. On Linux,
-you can use minicom. Connecting to a console is usefull to read the
+bauds 8N1, via a Max232 chip to adapt the electrical levels. On Linux,
+you can use minicom. Connecting to a console is useful to read the
 messages, but not required.
 
 
 \subsubsection{Connecting to the CAN network :}
 
 Connect the port CAN0 (pin PM0, PM1) to the network via a CAN controller.
-On our board, the CAN controler is a PCA82C250 chip.
+On our board, the CAN controller is a PCA82C250 chip.
 
 
 \subsubsection{starting the node :}
@@ -824,108 +855,82 @@ use as example for your own developments.
 
 \subsection{TestMasterSlave}
 
-\texttt{{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}\ }
-
-\texttt{{*} \ TestMasterSlave \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ A simple example for PC. It does implement 2 \canopen
-\ \ \ \ \ {*}}
-
-\texttt{{*} \ nodes in the same process. A master and a slave. Both
-\ \ \ \ {*}}
-
-\texttt{{*} \ communicate together, exchanging periodically NMT,
-SYNC, \ {*}}
-
-\texttt{{*} \ SDO and PDO. Master configure heartbeat producer time
-\ \ \ \ {*}}
-
-\texttt{{*} \ at 1000 ms for slave node -id 0x02 by concise DCF. \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ Usage: \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ ./TestMasterSlave \ {[}OPTIONS] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ OPTIONS: \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ -l : Can library {[}{\textquotedbl}libcanfestival\_can\_virtual.so{\textquotedbl}]
-\ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ Slave: \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
 
-\texttt{{*} \ \ \ \ -s : bus name {[}{\textquotedbl}0{\textquotedbl}]
-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ -S : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable)
-\ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ Master: \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ -m : bus name {[}{\textquotedbl}1{\textquotedbl}]
-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ -M : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable)
-\ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
+\begin{verbatim}
+  **************************************************************
+  *  TestMasterSlave                                           *
+  *                                                            *
+  *  A simple example for PC. It does implement 2 CanOpen      *
+  *  nodes in the same process. A master and a slave. Both     *
+  *  communicate together, exchanging periodically NMT, SYNC,  *
+  *  SDO and PDO. Master configure heartbeat producer time     *
+  *  at 1000 ms for slave node-id 0x02 by concise DCF.         *                                  
+  *                                                            *
+  *   Usage:                                                   *
+  *   ./TestMasterSlave  [OPTIONS]                             *
+  *                                                            *
+  *   OPTIONS:                                                 *
+  *     -l : Can library ["libcanfestival_can_virtual.so"]     *
+  *                                                            *
+  *    Slave:                                                  *
+  *     -s : bus name ["0"]                                    *
+  *     -S : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable)  *
+  *                                                            *
+  *    Master:                                                 *
+  *     -m : bus name ["1"]                                    *
+  *     -M : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable)  *
+  *                                                            *
+  **************************************************************
+\end{verbatim}
+
+
+Notes aboute use of voncise DCF :
+
+In this example, Master configure heartbeat producer time
+at 1000 ms for slave node -id 0x02 by concise DCF according DS -302
+profile.
 
-\texttt{{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}}
+Index 0x1F22, sub-index 0x00 of the master OD, correspond
+to the number of entries. This equal to the maximum possible nodeId
+(127). Each sub -index points to the Node -ID of the device, to which
+the configuration belongs.
 
-\bigskip{}
+To add more parameters configurations to the slave, the value
+at sub -index 0x02 must be a binary stream (little -endian) following
+this structure :
 
 
-\textsf{Notes for Concise DCF :}
+\begin{verbatim}
 
-\bigskip{}
+        (UNS32) nb of entries
+        (UNS16) index parameter 1
+        (UNS8) sub -index parameter 1
+        (UNS32) size data parameter 1
+        (DOMAIN) data parameter 1
+        (UNS16) index parameter 2
+        (UNS8) sub -index parameter 2
+        (UNS32) size data parameter 2
+        (DOMAIN) data parameter 2
+             ....
+        (UNS16) index parameter n
+        (UNS8) sub -index parameter n
+        (UNS32) size data parameter n
+        (DOMAIN) data parameter n
+        
+\end{verbatim}
 
 
-\textsf{In this example, Master configure \ heartbeat producer time
-at 1000 ms for slave node -id 0x02 by concise DCF according DS -302
-profile.}
+So the binary value stream to configure heartbeat producer
+time must be :
 
-\textsf{Index 0x1F22 , sub -index 0x00 of the master OD, correspond
-to the number of entries. This equal to the maximum possible nodeId
-(127). Each sub -index points to the Node -ID of the device, to which
-the configuration belongs.}
 
-\bigskip{}
+\begin{verbatim}
+       0100000017100002000000e803
+\end{verbatim}
 
 
-\textsf{To add more parameters configurations to the slave, the value
-at sub -index 0x02 must be a binary stream (little -endian) following
-this structure :}\\
- \textsf{ \{ (UNS32) nb of entries}\\
- \textsf{ (UNS16) index parameter 1}\\
- \textsf{ (UNS8) sub -index parameter 1}\\
- \textsf{ (UNS32) size data parameter 1}\\
- \textsf{ (DOMAIN) data parameter 1}\\
- \textsf{ (UNS16) index parameter 2}\\
- \textsf{ (UNS8) sub -index parameter 2}\\
- \textsf{ (UNS32) size data parameter 2}\\
- \textsf{ (DOMAIN) data parameter 2}\\
- \textsf{ \ \ \ \ \ ....}\\
- \textsf{ (UNS16) index parameter n}\\
- \textsf{ (UNS8) sub -index parameter n}\\
- \textsf{ (UNS32) size data parameter n}\\
- \textsf{ (DOMAIN) data parameter n}\\
- \textsf{ \}}
-
-\textsf{So the binary value stream to configure heartbeat producer
-time must be :}\\
- \textsf{ 0100000017100002000000e803}
-
-\textsf{The slave node is configured just before the Master entering
-in Pre\_operational state.}
+The slave node is configured just before the Master entering
+in Pre\_operational state.
 
 
 \subsection{gene\_SYNC\_HCS12 :}
@@ -951,7 +956,10 @@ another separate module 'canfestival.ko' implementing CanOpen stack
 which exports requisite functions. Canfestival.ko module is then dependent
 on CAN card driver module, by default CAN virtual driver will be loaded.
 After installing modules (make install), all dependencies are solved
-automatically by kernel. To run the example type: \texttt{sh run.sh}
+automatically by kernel. To run the example type: 
+\begin{verbatim}
+       sh run.sh
+\end{verbatim}
 It will insert required modules, start console, and after quitting
 console it'll remove modules from kernel.
 
@@ -961,69 +969,97 @@ console it'll remove modules from kernel.
 
 \subsection{TestMasterMicroMod }
 
-\texttt{{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}}
-
-\texttt{{*} \ TestMasterMicroMod \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ A simple example for PC. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ A \canopen master that control a MicroMod module: \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ - setup module TPDO 1 transmit type \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ - setup module RPDO 1 transmit type \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ - setup module hearbeatbeat period \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
 
-\texttt{{*} \ - disable others TPDOs \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ - set state to operational \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ - send periodic SYNC \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ - send periodic RPDO 1 to Micromod (digital output)
-\ \ \ \ \ \ {*}}
-
-\texttt{{*} \ - listen Micromod{\textquotesingle}s TPDO 1 (digital
-input) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ - Mapping RPDO 1 bit per bit (digital input) \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ Usage: \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ ./TestMasterMicroMod \ {[}OPTIONS] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ OPTIONS: \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ -l : Can library {[}{\textquotedbl}libcanfestival\_can\_virtual.so{\textquotedbl}]
-\ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ Slave: \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ -i : Slave Node id format {[}0x01 , 0x7F]
-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ Master: \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ -m : bus name {[}{\textquotedbl}1{\textquotedbl}]
-\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ -M : 1M,500K,250K,125K,100K,50K,20K,10K \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}}
-
-\texttt{{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}{*}}
 
+\begin{verbatim}
+  **************************************************************
+  *  TestMasterMicroMod                                        *
+  *                                                            *
+  *  A simple example for PC.                                  *
+  *  A CanOpen master that control a MicroMod module:          *
+  *  - setup module TPDO 1 transmit type                       *
+  *  - setup module RPDO 1 transmit type                       *
+  *  - setup module hearbeatbeat period                        *
+  *  - disable others TPDOs                                    *
+  *  - set state to operational                                *
+  *  - send periodic SYNC                                      *
+  *  - send periodic RPDO 1 to Micromod (digital output)       *
+  *  - listen Micromod's TPDO 1 (digital input)                *
+  *  - Mapping RPDO 1 bit per bit (digital input)              *
+  *                                                            *
+  *   Usage:                                                   *
+  *   ./TestMasterMicroMod  [OPTIONS]                          *
+  *                                                            *
+  *   OPTIONS:                                                 *
+  *     -l : Can library ["libcanfestival_can_virtual.so"]     *
+  *                                                            *
+  *    Slave:                                                  *
+  *     -i : Slave Node id format [0x01 , 0x7F]                *
+  *                                                            *
+  *    Master:                                                 *
+  *     -m : bus name ["1"]                                    *
+  *     -M : 1M,500K,250K,125K,100K,50K,20K,10K                *
+  *                                                            *
+  **************************************************************
+\end{verbatim}
+
+\subsection{TestMasterSlaveLSS}
+
+
+\begin{verbatim}
+**************************************************************
+*  TestMasterSlaveLSS                                        *
+*                                                            *
+*  A LSS example for PC. It does implement 3 CanOpen         *
+*  nodes in the same process. A master and 2 slaves. All     *
+*  communicate together, exchanging periodically NMT, SYNC,  *
+*  SDO and PDO. Master configure heartbeat producer time     *
+*  at 1000 ms for the slaves by concise DCF.                 *
+*                                                            *
+*   Usage:                                                   *
+*   ./TestMasterSlaveLSS  [OPTIONS]                          *
+*                                                            *
+*   OPTIONS:                                                 *
+*     -l : Can library ["libcanfestival_can_virtual.so"]     *
+*                                                            *
+*    SlaveA:                                                 *
+*     -a : bus name ["0"]                                    *
+*     -A : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable)  *
+*                                                            *
+*    SlaveB:                                                 *
+*     -b : bus name ["1"]                                    *
+*     -B : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable)  *
+*                                                            *
+*    Master:                                                 *
+*     -m : bus name ["2"]                                    *
+*     -M : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable)  *
+*                                                            *
+**************************************************************
+\end{verbatim}
+
+The function used to request LSS services is \textit{configNetworkNode}. It works similar to \textit{writeNetworkDict} and its model is the following:
+\begin{verbatim}
+UNS8 configNetworkNode (CO_Data* d, UNS8 command, void *dat1, void* dat2, 
+LSSCallback_t Callback)
+\end{verbatim}
+
+\subsection{FastScan}
+FastScan is a special LSS service that allow the dynamically identification of the slave nodes even if they do not have a valid nodeID. This identification is based on the LSS address, composed by vendor ID, product code, revision number and serial number (refer to the DS305 for more information). The LSS address can be partially known or fully unknown. To represent this fact in Canfestival, we use the structure \textit{lss\_fs\_transfer\_t}. The parameter \textit{FS\_LSS\_ID} is an array of four elements which represents the four elements of the LSS address. The other parameter, \textit{FS\_BitChecked}, is also an array and it represents how many bits of each LSS address element are UNKNOWN. The next example is taken from \textit{TestMasterSlaveLSS}, where only the last two digits (8 bits) of vendor ID and product code are unknown and revision number and serial number are totally unknown. 
+
+\begin{verbatim}
+lss_fs_transfer_t lss_fs;
+/* The VendorID and ProductCode are partialy known, */
+/* except the last two digits (8 bits). */
+lss_fs.FS_LSS_ID[0]=Vendor_ID;
+lss_fs.FS_BitChecked[0]=8;
+lss_fs.FS_LSS_ID[1]=Product_Code;
+lss_fs.FS_BitChecked[1]=8;
+/* serialNumber and RevisionNumber are unknown, */
+/* i.e. the 8 digits (32bits) are unknown. */
+lss_fs.FS_BitChecked[2]=32;
+lss_fs.FS_BitChecked[3]=32;
+res=configNetworkNode(&d,LSS_IDENT_FASTSCAN,&lss_fs,0,CheckLSSAndContinue);
+\end{verbatim}
 
 \section{Developing a new node}
 
@@ -1048,13 +1084,16 @@ to create the C file needed to create a new \canopen node.
 You first have to download and install Gnosis XML modules. This is
 automated by a Makefile rule.
 
-\texttt{cd objdictgen}
-
-\texttt{make}
+\begin{verbatim}
+       cd objdictgen 
+       make
+\end{verbatim}
 
 Now start the editor.
 
-\texttt{python objdictedit.py {[}od files...]}
+\begin{verbatim}
+       python objdictedit.py [od files...]
+\end{verbatim}
 
 
 \subsubsection{Installation and usage on Windows}
@@ -1065,26 +1104,24 @@ Install Python (at least version 2.4) and wxPython (at least version
 Cygwin users can install Gnosis XML utils the same as Linux use. Just
 call make.
 
-\texttt{cd objdictgen}
-
-\texttt{make}
-
-Others will have to download and intall Gnosis XML by hand :
-
-\texttt{Gnosis Utils:}
-
-\texttt{http://freshmeat.net/projects/gnosisxml/}
+\begin{verbatim}
+       cd objdictgen
+       make
+\end{verbatim}
 
-\texttt{http://www.gnosis.cx/download/Gnosis\_Utils.More/Gnosis\_Utils
--1.2.1.win32 -py24.exe}
+Others will have to download and install Gnosis XML by hand :
 
-\texttt{Get latest version.}
+\begin{verbatim}
+       Gnosis Utils:
+       http://freshmeat.net/projects/gnosisxml/
+       http://www.gnosis.cx/download/
+       Get latest version.
+\end{verbatim}
 
 Download CanFestival archive and uncompress it. Use windows file explorer
 to go into CanFestival3\textbackslash{}objdicgten, and double -click
 on objdictedit.py.
 
-
 \subsubsection{About}
 
 The Object Dictionary editor GUI is a python application that use
@@ -1125,19 +1162,19 @@ sub -indexes.
 
 \subsubsection{New node}
 
-Edit your node name, ID and type. Choose your inherited specific profile.
+Edit your node name and type. Choose your inherited specific profile.
 
 \begin{center}
-\includegraphics[width=11cm]{Pictures/10000201000001CB0000015F4FC09B68
+\includegraphics[width=11cm]{Pictures/new_node
 \par\end{center}
 
 
 \subsubsection{Node info}
 
-Edit your node name, ID and type.
+Edit your node name and type.
 
 \begin{center}
-\includegraphics[width=7cm]{Pictures/10000201000001010000011DA724D25C
+\includegraphics[width=7cm]{Pictures/node_info
 \par\end{center}
 
 
@@ -1158,7 +1195,7 @@ Pick up optional chosen profile entries.
 
 \subsubsection{User types}
 
-Use User Types to implement value boundaries, and string lentgth
+Use User Types to implement value boundaries, and string length
 
 \begin{center}
 \includegraphics[width=11cm]{Pictures/10000201000001C40000010766961D7F} 
@@ -1212,9 +1249,11 @@ with the same prefix as C file.
 
 \subsubsection{With command line}
 
-\texttt{Usage of objdictgen.py :}
+\begin{verbatim}
+       Usage of objdictgen.py :
+       python objdictgen.py XMLFilePath CfilePath
+\end{verbatim}
 
-\texttt{python objdictgen.py XMLFilePath CfilePath}
 
 
 \section{FAQ}
@@ -1232,7 +1271,7 @@ Because \canopen layer is coded with C, put a compilation option
 about that.
 
 
-\subsubsection{How to fit the library to an other microcontrôler ?}
+\subsubsection{How to fit the library to an other microcontrler ?}
 
 First, be sure that you have at least 40K bytes of program memory,
 and about 2k of RAM.
@@ -1320,56 +1359,70 @@ from Philippe Foureys. :
 \paragraph{Interrupt functions}
 
 
-\subparagraph{Code for GCC:}
+\subparagraph{Code for GCC:
+}
 
-\texttt{// prototype}~\\
- \texttt{ void \_\_attribute\_\_((interrupt))timer3Hdl(void):}~\\
- \texttt{ // function}~\\
- \texttt{ void \_\_attribute\_\_((interrupt))timer3Hdl(void)\{...\}}
 
+\begin{verbatim}
+       // prototype
+       void __attribute__((interrupt))timer3Hdl(void):
+       // function
+       void __attribute__((interrupt))timer3Hdl(void){...}
+\end{verbatim}
 
-\subparagraph{Code for CodeWarrior}
+       
+\subparagraph{Code for CodeWarrior
+}
 
-\texttt{// protoype}~\\
- \texttt{ void interrupt timer3Hdl(void);}~\\
- \texttt{ // function}~\\
- \texttt{ pragma CODE\_SEG\_\_NEAR\_SEG\_NON\_BANKED}~\\
- \texttt{ void interrupt timer3Hdl(void)}~\\
- \texttt{ \{...\}}~\\
- \texttt{ pragma CODE\_SEG\_DEFAULT}
 
+\begin{verbatim}
+       // protoype
+       void interrupt timer3Hdl(void);
+       // function
+       pragma CODE_SEG__NEAR_SEG_NON_BANKED
+       void interrupt timer3Hdl(void)
+       {...}
+       pragma CODE_SEG_DEFAULT\end{verbatim}
 
-\paragraph{Interrupt lock, unlock}
 
+\paragraph{Interrupt lock, unlock
+}
 
-\subparagraph{Code for GCC}
 
-\texttt{void unlock (void)}~\\
- \texttt{ \ }~\\
- \texttt{ \ \_\_asm\_\_ \_\_volatile\_\_({\textquotedbl}cli{\textquotedbl});}~\\
- \texttt{ \}}~\\
- \texttt{ void lock (void)}~\\
- \texttt{ \ }~\\
- \texttt{ \ unsigned short mask;}~\\
- \texttt{ \ \_\_asm\_\_ \_\_volatile\_\_({\textquotedbl}tpa{\textbackslash{}
-}n{\textbackslash{} }tsei{\textquotedbl}:{\textquotedbl}=d{\textquotedbl}(mask));}~\\
- \texttt{ \}}
+\subparagraph{Code for GCC
+}
+
+
+\begin{verbatim}
+ void unlock (void)
+ {
+   __asm__ __volatile__("cli");
+ }
+ void lock (void)
+ {
+   unsigned short mask;
+   __asm__ __volatile__("tpa\n\tsei":"=d"(mask));
+ }
+\end{verbatim}
 
 
 \subparagraph{Code for CodeWarrior}
 
-\texttt{void unlock (void)}~\\
- \texttt{ \ }~\\
- \texttt{ \ \_\_asm({\textquotedbl}cli{\textquotedbl});}~\\
- \texttt{ \}}~\\
- \texttt{ void lock (void)}~\\
- \texttt{ \ }~\\
- \texttt{ \ unsigned short mask;}~\\
- \texttt{ \ \_\_asm}~\\
- \texttt{ \ }~\\
- \texttt{ \ tpa:tsei:{\textquotedbl}=d{\textquotedbl}(mask);}~\\
- \texttt{ \}}~\\
- \texttt{ \}}
+
+\begin{verbatim}
+void unlock (void)
+       {
+         __asm("cli");
+       }
+       void lock (void)
+       {
+         unsigned short mask;
+         __asm
+        {
+         tpa:tsei:"=d"(mask);
+        }
+       }
+\end{verbatim}
 
 
 \paragraph{Initialize function}
@@ -1377,93 +1430,78 @@ from Philippe Foureys. :
 
 \subparagraph{Code for GCC}
 
-\texttt{void initCanHCS12 (void)}~\\
- \texttt{ \{ \ }~\\
- \texttt{ \ //Init the HCS12 microcontroler for \canopen} ~\\
- \texttt{ \ initHCS12();}~\\
- \texttt{ \ \ // Init the HCS12 \ CAN driver}~\\
- \texttt{ \ const canBusInit bi0 = \ }~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no low power \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}
-~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no time stamp \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ 1, \ \ \ /{*} enable MSCAN \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} clock source : oscillator (In
-fact, it is not used) \ \ {*}/}~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no loop back \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no listen only \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no low pass filter for wk up {*}/}~\\
- \texttt{ \ CAN\_Baudrates{[}CAN\_BAUDRATE\_250K],}~\\
- \texttt{ \ \ \ \ }~\\
- \texttt{ \ \ \ \ \ 0x00, \ \ \ /{*} Filter on 16 bits.}~\\
- \texttt{ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ See Motorola
-Block Guide V02.14 fig 4 -3 {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 0 hight accept all
-msg \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 0 low accept all
-msg \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 1 hight filter all
-of \ msg \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 1 low filter all
-of \ msg \ \ \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 2 hight filter most
-of \ msg {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 2 low filter most
-of \ msg \ \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 3 hight filter most
-of \ msg {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 3 low filter most
-of \ msg \ \ {*}/}~\\
- \texttt{ \ \ \ \}}~\\
- \texttt{ \ \};}
 
-
-\subparagraph{Code for CodeWarrior}
-
-\texttt{void initCanHCS12 (void)}~\\
- \texttt{ \{ \ }~\\
- \texttt{ \ //Init the HCS12 microcontroler for \canopen} ~\\
- \texttt{ \ initHCS12();}~\\
- \texttt{ \ \ // Init the HCS12 \ CAN driver}~\\
- \texttt{ \ const canBusInit bi0 = \ }~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no low power \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}
-~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no time stamp \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ 1, \ \ \ /{*} enable MSCAN \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} clock source : oscillator (In
-fact, it is not used) \ \ {*}/}~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no loop back \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no listen only \ \ \ \ \ \ \ \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ 0, \ \ \ /{*} no low pass filter for wk up {*}/}~\\
- \texttt{ \ \ \ \ }~\\
- \texttt{ \ \ \ \ 1, /{*} clksrc {*}/}~\\
- \texttt{ \ \ \ \ 3, /{*} brp \ \ \ {*}/}~\\
- \texttt{ \ \ \ \ 0, /{*} sjw \ \ \ {*}/}~\\
- \texttt{ \ \ \ \ 0, /{*} samp \ \ {*}/}~\\
- \texttt{ \ \ \ \ 1, /{*} tseg2 \ {*}/}~\\
- \texttt{ \ \ \ \ 12,/{*} tseg1 \ {*}/}~\\
- \texttt{ \ \ \ \},}~\\
- \texttt{ \ \ \ \ }~\\
- \texttt{ \ \ \ \ \ 0x00, \ \ \ /{*} Filter on 16 bits.}~\\
- \texttt{ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ See Motorola
-Block Guide V02.14 fig 4 -3 {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 0 hight accept all
-msg \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 0 low accept all
-msg \ \ \ \ \ \ \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 1 hight filter all
-of \ msg \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 1 low filter all
-of \ msg \ \ \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 2 hight filter most
-of \ msg {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 2 low filter most
-of \ msg \ \ {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 3 hight filter most
-of \ msg {*}/}~\\
- \texttt{ \ \ \ \ \ 0x00, 0xFF, /{*} filter 3 low filter most
-of \ msg \ \ {*}/}~\\
- \texttt{ \ \ \ \}}~\\
- \texttt{ \ \};}
+\begin{verbatim}
+void initCanHCS12 (void)
+{  
+  //Init the HCS12 microcontroler for CanOpen 
+  initHCS12();
+   // Init the HCS12  CAN driver
+  const canBusInit bi0 = {
+    0,    /* no low power                 */ 
+    0,    /* no time stamp                */
+    1,    /* enable MSCAN                 */
+    0,    /* clock source : oscillator (In fact, it is not used)   */
+    0,    /* no loop back                 */
+    0,    /* no listen only               */
+    0,    /* no low pass filter for wk up */
+  CAN_Baudrates[CAN_BAUDRATE_250K],
+    {
+      0x00,    /* Filter on 16 bits.
+                  See Motorola Block Guide V02.14 fig 4-3 */
+      0x00, 0xFF, /* filter 0 hight accept all msg      */
+      0x00, 0xFF, /* filter 0 low accept all msg        */
+      0x00, 0xFF, /* filter 1 hight filter all of  msg  */
+      0x00, 0xFF, /* filter 1 low filter all of  msg    */
+      0x00, 0xFF, /* filter 2 hight filter most of  msg */
+      0x00, 0xFF, /* filter 2 low filter most of  msg   */
+      0x00, 0xFF, /* filter 3 hight filter most of  msg */
+      0x00, 0xFF, /* filter 3 low filter most of  msg   */
+    }
+};
+\end{verbatim}
+
+
+\subparagraph{Code for CodeWarrior
+}
+
+
+\begin{verbatim}
+void initCanHCS12 (void)
+{  
+  //Init the HCS12 microcontroler for CanOpen 
+  initHCS12();
+   // Init the HCS12  CAN driver
+  const canBusInit bi0 = {
+    0,    /* no low power                 */ 
+    0,    /* no time stamp                */
+    1,    /* enable MSCAN                 */
+    0,    /* clock source : oscillator (In fact, it is not used)   */
+    0,    /* no loop back                 */
+    0,    /* no listen only               */
+    0,    /* no low pass filter for wk up */
+    {
+     1, /* clksrc */
+     3, /* brp    */
+     0, /* sjw    */
+     0, /* samp   */
+     1, /* tseg2  */
+     12,/* tseg1  */
+    },
+    {
+      0x00,    /* Filter on 16 bits.
+                 See Motorola Block Guide V02.14 fig 4-3 */
+      0x00, 0xFF, /* filter 0 hight accept all msg      */
+      0x00, 0xFF, /* filter 0 low accept all msg        */
+      0x00, 0xFF, /* filter 1 hight filter all of  msg  */
+      0x00, 0xFF, /* filter 1 low filter all of  msg    */
+      0x00, 0xFF, /* filter 2 hight filter most of  msg */
+      0x00, 0xFF, /* filter 2 low filter most of  msg   */
+      0x00, 0xFF, /* filter 3 hight filter most of  msg */
+      0x00, 0xFF, /* filter 3 low filter most of  msg   */
+    }
+};
+\end{verbatim}
 
 
 \subsubsection{Does the code works in banked memory ?}
@@ -1485,37 +1523,38 @@ We are using the stable RPM release 2.2 :
 \section{Documentation resources}
 
 
-\paragraph{CIA : Can in Automation }
+\subsection{CIA : Can in Automation }
 
 \href{http://www.can-cia.de/}{http://www.can -cia.de}
 
 
-\paragraph{Resources and training in \canopen }
+\subsection{Resources and training in \canopen 
+}
 
 \href{http://www.esacademy.com/}{http://www.esacademy.com}
 
 
-\paragraph{Elektronikladen HCS12 T -board }
+\subsection{Elektronikladen HCS12 T -board }
 
 \href{http://www.elektronikladen.de/en_hcs12tb.html}{http://www.elektronikladen.de/en\_hcs12tb.html}
 
 
-\paragraph{Gnu gcc compiler for HC12}
+\subsection{Gnu gcc compiler for HC12 }
 
 \href{http://m68hc11.serveftp.org/m68hc11_port.php}{http://m68hc11.serveftp.org/m68hc11\_port.php}
 
 
-\paragraph{Motorola documentation on HC12 }
+\subsection{Motorola documentation on HC12 }
 
 \href{http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC9S12DP256}{http://www.freescale.com/webapp/sps/site/prod\_summary.jsp?code=MC9S12DP256}
 
 
-\paragraph{Lauterbach debugger for HC12 }
+\subsection{Lauterbach debugger for HC12 }
 
 \href{http://www.lauterbach.com/}{http://www.lauterbach.com}
 
 
-\paragraph{Python language }
+\subsection{Python language }
 
 \href{http://www.python.org/}{http://www.python.org}
 
@@ -1531,11 +1570,11 @@ We are using the stable RPM release 2.2 :
 \includegraphics[width=10cm]{Pictures/1000020100000258000000832C6FFAB4} 
 \par\end{center}
 
-Unité mixte de recherche INRETS -LCPC
+Unit mixte de recherche INRETS -LCPC
 
-sur les Interractions Véhicule -Infrastructure -Conducteur
+sur les Interractions Vhicule -Infrastructure -Conducteur
 
-14, route de la minière
+14, route de la minire
 
 78000 Versailles
 
@@ -1581,7 +1620,7 @@ Many thanks to the other contributors for their great work:
 
 Raphael ZULLIGER
 
-David DUMINY (sté A6R)
+David DUMINY (st A6R)
 
 Zakaria BELAMRI
 
@@ -1612,50 +1651,28 @@ specifications.
 All the project is licensed with LGPL. This mean you can link CanFestival
 with any code without being obliged to publish it.
 
-\texttt{\#This file is part of CanFestival, a library implementing
-\canopen Stack.}
-
-\texttt{\#}
-
-\texttt{\#Copyright (C): Edouard TISSERANT, Francis DUPIN and Laurent
-BESSARD}
-
-\texttt{\#}
-
-\texttt{\#See COPYING file for copyrights details.}
-
-\texttt{\#}
-
-\texttt{\#This library is free software; you can redistribute it and/or}
-
-\texttt{\#modify it under the terms of the GNU Lesser General Public}
-
-\texttt{\#License as published by the Free Software Foundation; either}
-
-\texttt{\#version 2.1 of the License, or (at your option) any later
-version.}
-
-\texttt{\#}
-
-\texttt{\#This library is distributed in the hope that it will be
-useful,}
-
-\texttt{\#but WITHOUT ANY WARRANTY; without even the implied warranty
-of}
-
-\texttt{\#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
-the GNU}
-
-\texttt{\#Lesser General Public License for more details.}
-
-\texttt{\#}
 
-\texttt{\#You should have received a copy of the GNU Lesser General
-Public}
+\begin{verbatim}
+#This file is part of CanFestival, a library implementing CanOpen Stack. 
+# 
+#Copyright (C): Edouard TISSERANT, Francis DUPIN and Laurent BESSARD 
+# 
+#See COPYING file for copyrights details. 
+# 
+#This library is free software; you can redistribute it and/or 
+#modify it under the terms of the GNU Lesser General Public 
+#License as published by the Free Software Foundation; either 
+#version 2.1 of the License, or (at your option) any later version. 
+# 
+#This library is distributed in the hope that it will be useful, 
+#but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#Lesser General Public License for more details. 
+# 
+#You should have received a copy of the GNU Lesser General Public 
+#License along with this library; if not, write to the Free Software 
+#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
+\end{verbatim}
 
-\texttt{\#License along with this library; if not, write to the Free
-Software}
 
-\texttt{\#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-\ 02111 -1307 \ USA}
 \end{document}