Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > e38ebcbd4a78eb9e1c78c44013a03cc5 > files > 9

libticables3-3.4.5-1mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
	<TITLE>Untitled Document</TITLE>
	<META NAME="GENERATOR" CONTENT="StarOffice/5.1 (Linux)">
	<META NAME="CREATED" CONTENT="20000726;23212300">
	<META NAME="CHANGEDBY" CONTENT=" ">
	<META NAME="CHANGED" CONTENT="20010916;14461500">
	<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-1">
</HEAD>
<BODY BGCOLOR="#ffffff">
<P ALIGN=CENTER><B><U><FONT SIZE=6><FONT FACE="Charter">Link cable
library</FONT></FONT></U></B> <BR><B><U><FONT SIZE=6><FONT FACE="Charter">Reference
manual</FONT></FONT></U></B></P>
<P><BR><BR><BR>
</P>
<P><I>Note: doc have not been completely updated !</I> <BR><I>The
authoritative source of informations are the headers (*.h) and the
example program (test_libticables.c)</I> <BR><BR><FONT FACE="Charter">This
documentation describes the libticables library v2.x.x. The v2.x.x
version is backwards compatible with the v1.x.x but it is recommended
to use the new version which brings about some new features and
enhancements.</FONT> 
</P>
<P><FONT FACE="Charter">The source code of the v2.x.x has been
cleaned up. Also, it is easier to use and configure now.</FONT> <BR> 
</P>
<P><B><U><FONT SIZE=4><FONT FACE="Charter">What in this manual ?</FONT></FONT></U></B>
</P>
<P><FONT SIZE=3><FONT FACE="Charter">This documentation is for those
who want use the library under Linux or Windows.</FONT></FONT> <BR><FONT SIZE=3><FONT FACE="Charter">The
documentation is divided into six chapters:</FONT></FONT> 
</P>
<P><FONT FACE="Charter">Chapter 1: <I>Introduction</I> discusses
adding the library to your system and provides an overview of handled
link cables and available functions.</FONT> 
</P>
<P><FONT FACE="Charter">Chapter 2: Data t<I>ypes</I> tells about the
different definition of types which are provided to the user.</FONT> 
</P>
<P><FONT FACE="Charter">Chapter 3: <I>Setting up link cables</I>
guides you through the steps to set up link cables on your computer.</FONT>
</P>
<P><FONT FACE="Charter">Chapter 4: <I>General functions</I> details
the software functions that are not specific to link cable.</FONT> 
</P>
<P><FONT FACE="Charter">Chapter 5: <I>Link cable functions</I>
details functions that are specific to link cable.</FONT> 
</P>
<P><FONT FACE="Charter">Chapter 6: <I>Appendices</I> include
installation instructions for the libTIcable library and procedures
to add the lib to your system. In addition the Appendix D explains
the procedure for compiling programs which use this library. For your
convenience separate Appendices cover &quot;Flags for use&quot;, a
&quot;Code Index&quot; and a list of &quot;Error messages&quot;.</FONT>
<BR>&nbsp; 
</P>
<P><B><U><FONT SIZE=4><FONT FACE="Charter">I Introduction</FONT></FONT></U></B>
</P>
<P><FONT FACE="Charter">Chapter 1 provides an overview of the
libTicable library. The topics covered are:</FONT> 
</P>
<UL>
	<P><FONT FACE="Charter">overview,</FONT> 
	</P>
	<P><FONT FACE="Charter">functions,</FONT> 
	</P>
	<P><FONT FACE="Charter">conventions used in this manual.</FONT></P>
</UL>
<P><B><FONT FACE="Charter">Overview</FONT></B> 
</P>
<P><FONT FACE="Charter">The library contains routines to handle the
different link cables designed for the TI calculators under different
platforms. It can also manage virtual linking. The library is easy to
use: you simply say which link cable you want to use on which port
and the library make the work ! It has an I/O management system which
determines the best method to use and some auto-probing routines for
detecting Operating System, I/O ports and link cable type.</FONT>
<BR><FONT FACE="Charter">The library is independant of the OS and
completely transparent.</FONT> 
</P>
<P><FONT FACE="Charter">The supported platform are: Linux,
Windows9x/Me and WindowsNT4/2000. The use of this library under
Windows NT4/2000 may require a special I/O driver: DriverLYNX
DLPortIO driver. This driver can also be used under Windows9x/Me.</FONT>
<BR><FONT FACE="Charter">Supported architectures are: ix86
(Intel/AMD) processors, Alpha and Sparc.</FONT> 
</P>
<P><FONT FACE="Charter">The supported link cables are:</FONT> <BR><FONT FACE="Charter">-
the home-made parallel (alias 5$-cable),</FONT> <BR><FONT FACE="Charter">-
the home-made serial (alias 4$-cable),</FONT> <BR><FONT FACE="Charter">-
the Black TIGraphLink,</FONT> <BR><FONT FACE="Charter">- the
Grey/Gray TIGraphLink cable,</FONT> <BR><FONT FACE="Charter">- the
(fast)AVRlink cable (this is the link cable I have designed: Grey
TIGL compatible, 4 times faster),</FONT> <BR><FONT FACE="Charter">-
experimental support of the TPUlink (Ti/Pc USB link cable).</FONT>
<BR><FONT FACE="Charter">At last, there is a full support for the TI
device kernel module (Linux only).</FONT> <BR><FONT FACE="Charter">The
library provides also two virtual link cables for connecting an
emulator to a linking software for instance:</FONT> <BR><FONT FACE="Charter">-
'Vti' virtual link for communicating with VirtualTI, a TI emulator,</FONT>
<BR><FONT FACE="Charter">- 'GtkTiEmu' virtual link.</FONT> 
</P>
<P><FONT FACE="Charter">Remark: it may be necessary to be the
super-user ('root') under Linux for using some link cables
(serial/parallel/BlackLink). If you do not want this or can do it
(due to GTK &gt;1.2.9 for instance), you must use a kernel module
(such as 'tidev' (obsolete) or 'tipar'/'tiser').</FONT> <BR><BR><B><FONT FACE="Charter">Functions</FONT></B>
</P>
<P><FONT FACE="Charter">The libTIcable is a set of 'C' languages
subroutines (but useable with C and C++ languages) designed to handle
the different link cables through a same set of functions. This
constitute a complete API.</FONT> 
</P>
<P><FONT FACE="Charter">The libTIcable library (Linux version) was
written and tested using gcc under Linux. It was ported under Windows
and tested using the Microsoft Visual C++ version 5.0. It seems that
others compilers such as Borland C++ 4.0 or DJGPP do not work because
they do not support long filenames !</FONT> 
</P>
<P><FONT FACE="Charter">Thomas Wolf &lt;<A HREF="mailto:two@chello.at">two@chello.at</A>&gt;
has wroten a wrapper for the libticables and the source code is
BCC5.x compliant. This wrapper is unsupported. Please mail Thomas
Wolf for any questions about BorlandC.</FONT> 
</P>
<P><FONT FACE="Charter">There are also some Delphi projects but they
are not maintain any longer.</FONT> 
</P>
<P><FONT FACE="Charter">The functions are supplied both in source
form and linked as a DLL. The source code is released under the GPL
licence and the libraries under the LGPL license.</FONT> 
</P>
<P><FONT FACE="Charter">Each function is presented with its formal
definition, including data types of all input and output variables. A
brief description of the purpose of the function is provided along
with the legal values for inputs where applicable. All structures and
flags used by the libTIcable library are in Appendix G: &quot;Flags
for use&quot;.</FONT> 
</P>
<P><FONT FACE="Charter">Functions are written as &quot;C&quot;
functions, i.e. they return values except few of them. A non zero
value signifies an error.</FONT> 
</P>
<P><B><FONT FACE="Charter">Conventions used</FONT></B> 
</P>
<P><FONT FACE="Charter">To help differentiate between different kinds
of information, the following text styles are used in the Reference
Manual.</FONT> 
</P>
<P><FONT FACE="Charter">Functions look like this (charter font).</FONT>
<BR><FONT FACE="Charter">Variables look like this (courier font).</FONT>
<BR><FONT FACE="Charter">Parameter look like this (helmet font).</FONT>
<BR><FONT FACE="Charter"><B>File names</B> look like this (timmons
font, bold).</FONT> <BR><FONT FACE="Charter">FLAGS look like this
(timmons font).</FONT> <BR> 
</P>
<P><B><U><FONT SIZE=4><FONT FACE="Charter">II Data types</FONT></FONT></U></B>
</P>
<P STYLE="margin-bottom: 0in; font-weight: medium"><FONT FACE="Charter">Chapter
2 details the different data types provided to the user. These types
are defined in the cable_defs.h file or in typedefs.h for the basic
types.</FONT> 
</P>
<P><FONT FACE="Charter">Basic types:</FONT> <BR><FONT FACE="Charter">-
byte: a 8-bit unsigned integer,</FONT> <BR><FONT FACE="Charter">-
word: a 16-bit unsigned integer,</FONT> <BR><FONT FACE="Charter">-
longword: a 32-bit unsigned integer.</FONT> 
</P>
<P><FONT FACE="Charter">The most important type is a structure and is
defined as below:</FONT> 
</P>
<P STYLE="margin-bottom: 0in"><I><FONT FACE="Charter">struct
ticable_link</FONT> <BR><FONT FACE="Charter">{ // cooked access</FONT>
<BR><FONT FACE="Charter">int (*init_port) ();</FONT> <BR><FONT FACE="Charter">int
(*open_port) ();</FONT> <BR><FONT FACE="Charter">int (*put) (byte
data);</FONT> <BR><FONT FACE="Charter">int (*get) (byte *data);</FONT>
<BR><FONT FACE="Charter">int (*probe_port) ();</FONT> <BR><FONT FACE="Charter">int
(*close_port) ();</FONT> <BR><FONT FACE="Charter">int (*term_port)
();</FONT> <BR><FONT FACE="Charter">int (*check_port) (int *status);</FONT>
</I>
</P>
<P STYLE="margin-bottom: 0in"><I><FONT FACE="Charter">// raw access</FONT>
<BR><FONT FACE="Charter">int (*set_red_wire) ();</FONT> <BR><FONT FACE="Charter">int
(*set_white_wire) ();</FONT> </I>
</P>
<P STYLE="margin-bottom: 0in; font-weight: medium"><FONT FACE="Charter"><I>int
(*get_red_wire) ();</I></FONT></P>
<P><I><SPAN STYLE="font-weight: medium"><FONT FACE="Charter">int
(*get_white_wire) ();</FONT></SPAN><BR><FONT FACE="Charter">};</FONT>
<BR><FONT FACE="Charter">typedef struct ticable_link LINK_CABLE;</FONT>
<BR><FONT FACE="Charter">typedef struct ticable_link LinkCable;</FONT></I></P>
<P><FONT FACE="Charter">This structure contains a set of functions.
These functions are used to handle a link cable. You will find more
explanations on these functions further in the documentation.</FONT> 
</P>
<P><FONT FACE="Charter">The other data type is not used by the
libTicable but is provided for your convenience.</FONT> 
</P>
<P><I><FONT FACE="Charter">struct ticable_param</FONT> <BR><FONT FACE="Charter">{</FONT>
<BR><FONT FACE="Charter">int calc_type;</FONT> <BR><FONT FACE="Charter">int
link_type;</FONT> <BR><FONT FACE="Charter">unsigned int io_addr;</FONT>
<BR><FONT FACE="Charter">char device[16];</FONT> <BR><FONT FACE="Charter">int
timeout;</FONT> <BR><FONT FACE="Charter">int delay;</FONT> <BR><FONT FACE="Charter">int
baud_rate;</FONT> <BR><FONT FACE="Charter">int hfc;</FONT> </I>
</P>
<P><I><FONT FACE="Charter">// new fields starting at lib v2.x.x</FONT>
<BR><FONT FACE="Charter">int port;</FONT> <BR><FONT FACE="Charter">int
method;</FONT> <BR><FONT FACE="Charter">};</FONT> <BR><FONT FACE="Charter">typedef
struct ticable_param LINK_PARAM;</FONT></I> <BR><I><FONT FACE="Charter">typedef
struct ticable_param LinkParam;</FONT></I></P>
<P><FONT FACE="Charter">It contains all variables required for
setting up a link cable.</FONT> 
</P>
<P><FONT FACE="Charter">At last, the third structure is used by the
library for auto-detection operations:</FONT> 
</P>
<P><I><FONT FACE="Charter">struct port_info_</FONT> <BR><FONT FACE="Charter">{</FONT>
<BR><FONT FACE="Charter">int lpt_count;</FONT> <BR><FONT FACE="Charter">int
lpt_addr[MAX_LPT_PORTS+1];</FONT> <BR><FONT FACE="Charter">int
lpt_mode[MAX_LPT_PORTS+1];</FONT> <BR><FONT FACE="Charter">char
lpt_name[MAX_LPT_PORTS+1][17];</FONT> <BR><BR><FONT FACE="Charter">int
com_count;</FONT> <BR><FONT FACE="Charter">int
com_addr[MAX_COM_PORTS+1];</FONT> <BR><FONT FACE="Charter">int
com_mode[MAX_COM_PORTS+1];</FONT> <BR><FONT FACE="Charter">char
com_name[MAX_COM_PORTS+1][17];<BR><SPAN STYLE="font-weight: medium">};</SPAN></FONT><SPAN STYLE="font-weight: medium">
<BR><FONT FACE="Charter">typedef struct port_info_ PortInfo;</FONT></SPAN></I><SPAN STYLE="font-weight: medium">
<BR></SPAN><BR><BR>
</P>
<P><B><U><FONT SIZE=4><FONT FACE="Charter">III Setting up link cables</FONT></FONT></U></B>
</P>
<P><FONT FACE="Charter">Chapter 2 guides you through the steps to set
up a link cable on your computer. Detailed operating instructions for
the functions are described in Chapter 3.</FONT> 
</P>
<P><FONT FACE="Charter">To set up the libTIcable library:</FONT> <BR><FONT FACE="Charter">1.
call the ticable_get_default_param function,</FONT> <BR><FONT FACE="Charter">2.
set up the timeout and delay variables,</FONT> <BR><FONT FACE="Charter">3.
set up the port and method variables,</FONT> <BR><FONT FACE="Charter">4.
eventually set up the device and io_addr variables if you want
override automatic settings,</FONT> <BR><FONT FACE="Charter">5. set
up the parameters with ticable_set_param</FONT> <BR><FONT FACE="Charter">6.
finally, set up the link cable with ticable_set_cable.</FONT> 
</P>
<P><B><FONT FACE="Charter">The I/O ports</FONT></B> 
</P>
<P><FONT FACE="Charter">To use some functions, you should know some
informations about the I/O ports. This is not compulsory since the
libticables automatically manage I/O ports.</FONT> <BR><FONT FACE="Charter">A
parallel link cable use the printer ports based on 0x3BC, 0x378 or
0x278.</FONT> <BR><FONT FACE="Charter">A serial link cable or
Black/Grey TIGraphLink or fastAVRlink cable use the serial ports
based on 0x3F8, 0x2F8, 0x3E8, 0x2E8.</FONT> <BR><FONT FACE="Charter">These
addresses are standard addresses but the library automatically use
the right one. You can also pas any addresses. So, you can use your
cable with a strange serial board... On the other hand, you should
pay attention whether the address is valid or not.</FONT> 
</P>
<P><B><FONT FACE="Charter">Global setup function</FONT></B> 
</P>
<P><FONT FACE="Charter">To implement the global setup functions call:</FONT>
</P>
<P><FONT FACE="Charter">1.get_cable_version to check the library
version number.</FONT> <BR><FONT FACE="Charter">2. call
ticable_get_default_param. This will fill you structure with some
default values.</FONT> <BR><FONT FACE="Charter">2. fill up your
LINK_PARAM structure with the values you want.</FONT> <BR><FONT FACE="Charter">3.
use ticable_set_param</FONT> <BR><FONT FACE="Charter">4. use
ticable_set_cable to set the link_cable structure according to your
cable type.</FONT> 
</P>
<P><FONT FACE="Charter">NOTE: under Windows NT, the use of the
DLPortIO driver is required but this driver is not compulsory under
Windows9x. Anyways the library will auto-detect if this driver is
present. If yes, it will use it else it will use its own I/O
routines. If the driver is not present and if you are under Windows
NT, you will get an error message in order to avoid an access
violation.</FONT> 
</P>
<P><B><FONT FACE="Charter">Setting up a link cable</FONT></B> 
</P>
<P><FONT FACE="Charter">To set a link cable, you must follow this
sequence:</FONT> 
</P>
<P><FONT FACE="Charter">1. init_port: this function must be called
prior to any others.</FONT> <BR><FONT FACE="Charter">2. open_port:
this function must be called before a transfer if you do not call yet
or if you have closed the port with close_port.</FONT> <BR><FONT FACE="Charter">3.
close_port: this function must be called once you have finished a
transfer.</FONT> <BR><FONT FACE="Charter">4. term_port: this function
must be called whenever you exit of your program or if you want
change of link cable.</FONT> <BR><BR><BR>
</P>
<P><B><U><FONT SIZE=4><FONT FACE="Charter">IV General functions</FONT></FONT></U></B>
</P>
<P><FONT FACE="Charter">Chapter 3 details the software functions that
are not specific to a link cable.</FONT> <BR><FONT FACE="Charter">The
flags included in each functions are defined in Appendix ?.</FONT> 
</P>
<P><FONT FACE="Charter">The functions listed below are described in
this chapter:</FONT> 
</P>
<P><U><FONT FACE="Charter">- general functions:</FONT></U>
<BR><FONT FACE="Charter">ticable_get_version</FONT>
<BR><FONT FACE="Charter">ticable_get_error</FONT> <BR><FONT FACE="Charter">ticable_set_param</FONT>
<BR><FONT FACE="Charter">ticable_get_param</FONT>
<BR><FONT FACE="Charter">ticable_get_default_param</FONT>
<BR><FONT FACE="Charter">ticable_set_cable</FONT>
<BR><FONT FACE="Charter">ticable_get_support<BR></FONT> <BR><U><FONT FACE="Charter">-
set/get functions:</FONT></U> <BR><FONT FACE="Charter">ticable_set_timeout</FONT>
<BR><FONT FACE="Charter">ticable_get_timeout</FONT>
<BR><FONT FACE="Charter">ticable_set_delay</FONT> <BR><FONT FACE="Charter">ticable_get_delay</FONT>
<BR><FONT FACE="Charter">ticable_set_baudrate</FONT>
<BR><FONT FACE="Charter">ticable_get_baudrate</FONT> <BR><FONT FACE="Charter">ticable_set_hfc</FONT>
<BR><FONT FACE="Charter">ticable_get_hfc</FONT>
<BR><FONT FACE="Charter">ticable_set_io_address</FONT>
<BR><FONT FACE="Charter">ticable_get_io_address</FONT>
<BR><FONT FACE="Charter">ticable_set_io_device</FONT>
<BR><FONT FACE="Charter">ticable_get_io_device</FONT>
<BR><FONT FACE="Charter">ticable_set_port</FONT> <BR><FONT FACE="Charter">ticable_get_port</FONT>
<BR><FONT FACE="Charter">ticable_set_method</FONT>
<BR><FONT FACE="Charter">ticable_get_method</FONT> 
</P>
<P><U><FONT FACE="Charter">- probing funtions:</FONT></U>
<BR><FONT FACE="Charter">ticable_detect_os</FONT>
<BR><FONT FACE="Charter">ticable_detect_port</FONT>
<BR><FONT FACE="Charter">ticable_detect_cable<BR></FONT> <BR><U><FONT FACE="Charter">-
display funtions:</FONT></U> <BR><FONT FACE="Charter">DISPLAY</FONT>
<BR><FONT FACE="Charter">ticable_DISPLAY_settings</FONT> <BR><BR>Please
not that any changes made with the set/get functions will be taken
into account to the next ticable_set_cable call. <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_version</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions returns
the version number of the library as a string. This string as the
following format: &quot;major.minor.release&quot; such as &quot;1.0.5&quot;.</FONT>
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> const char
*ticable_get_version()</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Charter"><B>Return values:</B>
const char pointer, to a string.</FONT> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter"><BR><BR>ticable_get_error</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>returns the string
corresponding to the error code returned by a link cable function.
This function propagate the error code that is to say it returns the
passed error code if it can not find the corresponding error message
else it returns 0. This mechanism of propagation is useful for the
libTIcalc library for instance.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_get_error(int
err_num, char *error_msg)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>err_num, an error
code returned by a link cable function.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> error_msg, a string
which contains the corresponding error message.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, 0 if the error
code has been caught else the error code.</FONT>
<BR><BR><BR><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_default_param</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions fills the
passed structure with default values.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int
ticable_get_default_param(LINK_PARAM *lp)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>lp, the address of
the structure to fill.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> lp, the filled
structure.</FONT> 
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Charter"><B>Return values:</B>
int, an error code.</FONT> <BR> 
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Charter"><FONT SIZE=4><B><SPAN STYLE="background: #ffff00"><BR>ticable_set_param</SPAN></B></FONT></FONT></P>
<P><FONT FACE="Charter"><B><BR>Description: </B>This functions set
the internal library parameters with your settings.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> void
ticable_set_param(LINK_PARAM lp)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>lp, a structure to
fill up.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_param</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions retrieve
the internal library settings.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int
ticable_get_param(LINK_PARAM *lp)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>lp, the address of
the structure to fill.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> lp, the filled
structure.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, an error code.</FONT>
<BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_set_cable</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>this functions takes as
first parameter the link cable type and returns via the second
parameter a structure of functions which contains the functions for
the suitable link cable.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> void ticable_set_cable(int
type, LINK_CABLE *lc)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>type, one of the
following flags: LINK_PAR, LINK_SER, LINK_TGL, LINK_AVR, LINK_VTI,
LINK_TIE, LINK_TPU which can be combined (| OR) with LINK_DEV for
using the 'tidev' kernel module.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> lc, a pointer on a
structure which contains the twelve functions used for manipulating
transfers on the link cables and one for probing the link cable type.</FONT>
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_set_timeout</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions set up the
timeout value which is used by all link cable functions for exiting
when the timeout delay is elapsed.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_set_timeout(int
timeout_v)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>timeout_v, the
timeout value in tenth of seconds. Example: 20 represents 2 seconds.</FONT>
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_timeout</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions returns
the timeout value which is used by all link cable functions for
breaking when the timeout delay is elapsed.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_get_timeout()</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, the timeout value
in tenth of seconds.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_set_delay</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions set up the
delay value which is used by home-made link cable functions for
defining the inter-bit delay. The lower, the faster but less stable.</FONT>
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_set_delay(int
delay_v)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>delay_v, the delay
value in micro-seconds.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_delay</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions returns
the delay value which is used by home-made link cable functions for
defining the inter-bit delay.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_get_timeout()</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, the delay value in
micro-seconds.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_set_baudrate</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions set up the
baud-rate value which is used by fastAVRlink cable functions for
defining the transfer rate. The value must be the same as than one
defined by the 'fastAVRlink Setup Utility' else the link cable will
not work (different baud-rates).</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> void ticable_set_baudrate(int
br);</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: br</B>, the baud-rate
value which can be one of the following flags: BR9600, BR19200,
BR38400 or BR57600.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_baudrate</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions returns
the baud-rate value which is used by fastAVRlink link cable functions
for defining the transfer rate.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_get_baudrate()</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, the baud-rate
value such as BR9600 for 9600 bauds.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_set_io_address</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions set up the
I/O port base address which is used by the link cable functions. The
value must be a valid value. Moreover, for Linux user, this address
must be an authorized address (see the tilp.access file which defines
I/O permissions).</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> void
ticable_set_io_address(uint io_addr);</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>io_addr, an unsigned
int number which contains the base address of the I/O port to access.</FONT>
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_io_address</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions returns
the I/O port base address.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> uint ticable_get_io_address()</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, the baud-rate
value such as BR9600 for 9600 bauds.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_set_io_device</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions set up the
character device (Linux only) to use by the link cable functions. The
value must be an existing character device else the libTIcable
functions will return an error.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> void
ticable_set_io_device(char * device);</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>device, a string
which contains a character device name such as &quot;/dev/ttyS0&quot;.</FONT>
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_io_device</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions returns
the character device name which is used by link cable functions.</FONT>
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> char *ticable_get_io_device()</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> char *, the character
device name.</FONT> <BR><BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_set_hfc</FONT></FONT></B></SPAN>
<BR><BR>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions enables or
disables the hardware flow control (CTS/RTS).</FONT>  This is used
only for the (fast)AVRlink cable.</P>
<P><FONT FACE="Charter"><B>Syntax:</B> void ticable_set_hfc(int
action)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>action, 0 for
disabling the flow control.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.<BR><BR><BR></FONT>
<SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_hfc</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions returns
the hardware flow control status.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_get_hfc(void)</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, an error
code.<BR><BR><BR><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_set_port</FONT></FONT></B></SPAN>
</FONT>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions set up a
port to use.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_set_port(int port)</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>port, the port to
use.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_port</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions returns
the port which is currently used.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_get_port(void)</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, the
port.<BR><BR><BR><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_set_method</FONT></FONT></B></SPAN>
</FONT>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions set up the
method to use for performing I/O operations.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_set_method(int
method)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>method, usually,
simply pass IOM_AUTO.</FONT> The library will automatically use the
best appropriate method.</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> none.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_get_method</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>This functions returns
the I/O method used by library.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_get_method()</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, the method used.</FONT><BR>
<BR><BR>
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_detect_os</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>tries to detect the
running Operating System.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int ticable_detect_os(char
**os_type)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> os_type, the
address of a pointer for storing the resulting string into. String
can be 'Windows9x' for 9x/Me, 'WindowsNT'' for NT4/2000, 'Linux' for
any Linux machine or 'unknown'.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, an error code.</FONT>
<BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_detect_port</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>the function lists in a
structure all available ports on the machine.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int
ticable_detect_port(PortInfo *pi)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> pi, the address of
a structure where the function will store the results.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, an error code.</FONT>
<BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">ticable_detect_cable</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>try to detect one or more
link cables connected on the listed ports (the ticable_detect_port
function must have been called before). Beware, this function can
hang up the mouse if you have a serial mouse...</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int
ticable_detect_cable(PortInfo *pi)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>pi, a structure
previously filled up with the ticable_detect_port function.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> pi, a PortInfo
structure which contains both available ports and cables.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, an error code.</FONT>
<BR> 
</P>
<P><B><U><FONT SIZE=4><FONT FACE="Charter">V Link cables functions</FONT></FONT></U></B>
</P>
<P><FONT FACE="Charter">Chapter 4 details the software functions that
are specific to link cable.</FONT> 
</P>
<P><FONT FACE="Charter">The functions listed below are described in
this chapter:</FONT> <BR><FONT FACE="Charter">- cooked access:</FONT>
<BR><FONT FACE="Charter">init_port</FONT> <BR><FONT FACE="Charter">open_port</FONT>
<BR><FONT FACE="Charter">put</FONT> <BR><FONT FACE="Charter">get</FONT>
<BR><FONT FACE="Charter">probe_port</FONT> <BR><FONT FACE="Charter">close_port</FONT>
<BR><FONT FACE="Charter">term_port</FONT> <BR><FONT FACE="Charter">check_port</FONT>
</P>
<P><FONT FACE="Charter">- raw access:</FONT> <BR><FONT FACE="Charter">set_red_wire</FONT>
<BR><FONT FACE="Charter">set_white_wire</FONT> <BR><FONT FACE="Charter">get_red_wire</FONT>
<BR><FONT FACE="Charter">get_white_wire</FONT> 
</P>
<P><FONT FACE="Charter">Most of the functions described above returns
an error code which can have different origins. In fact, the first
set of functions always returns an error code whereas the second set
does not return any error code.</FONT> <BR><FONT FACE="Charter">The
error could be a timeout error, a byte error on the device, an error
during the opening of a device or for obtaining some I/O permissions.
You can get the corresponding error message with the get_cable_error
function.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">init_port</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>this functions must be
called prior to any of the following functions for initializing some
internal variables and configuring ports or devices.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int init_port(void)</FONT> 
</P>
<P><B><FONT FACE="Charter">Input parameters:</FONT></B> <FONT FACE="Charter">none.</FONT><BR><BR><FONT FACE="Charter"><B>Output
Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> an error code which can
be turned into a string with the get_cable_error function.</FONT> <BR>
<BR><BR>
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">open_port</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>this functions must be
called prior to any transfers for initializing some things and
flushing some buffers.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int open_port(void)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> an error code which can
be turned into a string with the get_cable_error function.</FONT> <BR>
<BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">put</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B><BR>Description: </B>this functions send a
byte (unsigned char) to the link cable.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int put(byte data)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>data, the byte to
transmit on the link cable.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> an error code which can
be turned into a string with the get_cable_error function.</FONT> <BR>
<BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">get</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B><BR>Description: </B>this functions waits
a byte (unsigned char) from the link cable.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int get(byte *data)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> data, the byte
received from the link cable.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> an error code which can
be turned into a string with the get_cable_error function.</FONT> <BR>
<BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">close_port</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B><BR>Description: </B>this functions closes
the transmission.You should call it whenever a transfer is finished.</FONT>
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int close_port(void)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> an error code which can
be turned into a string with the get_cable_error function.</FONT> <BR><BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">term_port</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B><BR>Description: </B>this functions closes
the port and frees some ressources or devices. It must be called if
you quit your program or if you have changed the link cable type
before using init_port.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int term_port(void)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> an error code which can
be turned into a string with the get_cable_error function.</FONT> <BR>
<BR><BR>
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">probe_port</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>not useable for the
moment.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int probe_port(void)</FONT> 
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> an error code which can
be turned into a string with the get_cable_error function.</FONT> <BR>
<BR><BR>
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">check_port</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>this functions can be
called to check the status of the link cable: check if a byte has
been received and so on. This function is useful to check the
receiving buffer without calling the 'get' function which is a
blocking function.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int check_port(int *status)</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> status, the status
of the link cable. For the moment, this value can take only 3 values
which are STATUS_NONE, STATUS_RX when a byte has been received or
STATUS_TX if a byte can be sent.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> an error code which can
be turned into a string with the get_cable_error function.</FONT> <BR>
<BR><BR>
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">set_red_wire</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>this functions simply
sets the 'red' wire to the desired value.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int set_red_wire(int b)</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>b, the value of line
that is to say 0 or 1.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, always 0.</FONT> <BR>
<BR><BR>
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">set_white_wire</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>this functions simply
sets the 'white' wire to the desired value.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int set_white_wire(int b)</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>b, the value of line
that is to say 0 or 1.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, always 0.</FONT> <BR><BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">get_red_wire</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>this functions returns
the logical value of the 'red' wire.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int get_red_wire(void)</FONT>
<BR><BR><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Return values:</B> int, the value of the
wire.</FONT> <BR> 
</P>
<P><SPAN STYLE="background: #ffff00"><B><FONT SIZE=4><FONT FACE="Charter">get_white_wire</FONT></FONT></B></SPAN>
</P>
<P><FONT FACE="Charter"><B>Description: </B>this functions returns
the logical value of the 'white' wire.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Syntax:</B> int get_white_wire(void)</FONT>
</P>
<P><FONT FACE="Charter"><B>Input parameters: </B>none.</FONT> 
</P>
<P><FONT FACE="Charter"><B>Output Parameters:</B> none.</FONT> 
</P>
<P STYLE="margin-bottom: 0in"><FONT FACE="Charter"><B>Return values:</B>
int, the value of the wire.</FONT> <BR><BR><BR>
</P>
<P><B><U><FONT SIZE=4><FONT FACE="Charter">VI Appendices</FONT></FONT></U></B>
</P>
<P><FONT FACE="Charter">Appendix A: installation instructions.</FONT>
<BR><FONT FACE="Charter">Appendix B: compiling programs under Linux
and/or Windows.</FONT> <BR><FONT FACE="Charter">Appendix C: flags for
use.</FONT> <BR><FONT FACE="Charter">Appendix D: software tools
library</FONT> <BR><FONT FACE="Charter">Appendix E: Code Index.</FONT>
<BR><FONT FACE="Charter">Appendix F: Error Messages.</FONT> <BR><FONT FACE="Charter">Appendix
G: Function Index.</FONT> <BR> <BR><B><FONT FACE="Charter">Appendix
A: installation instructions</FONT></B> 
</P>
<P STYLE="font-style: normal; font-weight: medium"><FONT FACE="Charter">This
appendix explains the procedure for adding/using libTIcable library
on your system.</FONT> 
</P>
<P STYLE="font-style: normal; font-weight: medium"><FONT FACE="Charter"><U>Linux
procedure:</U> retrieve a tarball of the library source code, make a
'tar xvzf libticable.tar.gz', go into the libTIcable directory. Type
'configure' to check your system and create the Makefile. Next, type
'make' to compile the library and at last, type 'make install' to
install it.</FONT> <BR><FONT FACE="Charter">By default, the shared
object 'libticables.so' is placed in the '/usr/lib' directory and
necessary links are created.</FONT> <BR><FONT FACE="Charter">The
headers files are placed in the '/usr/include/ti' directory. For
including them, you just have to place a #include &lt;tilp/cabl_int.h&gt;
on the beginning of your program.</FONT> 
</P>
<P><SPAN STYLE="font-style: normal"><SPAN STYLE="font-weight: medium"><FONT FACE="Charter"><U>Windows
procedure:</U> retrieve a ZIP archive of the library source code and
uncompress it in the default folder. Next, place the .DLL file in the
same directory than your program (local folder) or place it either in
the C:\Windows\System32 directory either in the C:\WinNT\System32
directory according to your OS type.</FONT> <BR><BR></SPAN><B><FONT FACE="Charter">Appendix
B: compiling programs under Linux and/or Windows</FONT></B></SPAN> 
</P>
<P><FONT FACE="Charter"><U>Linux procedure:</U> I provide the source
of the library. Its installation as described above provides the
shared object and necessary headers files. You just have to include
the right headers files and compile your program during the
linking/last stage with the -lti_cable option on the gcc command
line.</FONT> 
</P>
<P><FONT FACE="Charter"><U>Windows procedure:</U> I provide a DLL for
use with all versions of Windows and for the Microsoft compiler only.
If you want use it with a Borland compiler, you have to recompile the
library since the calling conventions are not the same (standard call
calling convention (&quot;stdcall&quot;) for Borland, C calling
convention (&quot;cdecl&quot;) for Microsoft). You can also use
cygwin or mygwin (GCC ported under Win32). It should work also with
the Linux makefiles. But, you will need the cygwin environment with
Automake/Autoconf and maybe some other stuffs...</FONT> <BR><FONT FACE="Charter">To
compile Windows program, to link together with the appropriate DLL,
perform the following steps:</FONT> <BR><FONT FACE="Charter">1. a
.lib file is provided. Include the .lib file as part of your project.</FONT>
<BR><FONT FACE="Charter">2. include the &quot;cable_interface.h&quot;
header files at the top of your test program. This header file
include three files. The first, &quot;typedefs.h&quot; contains some
type definitions. The second, &quot;cable_defs.h&quot; contains...</FONT>
<BR><BR><B><FONT FACE="Charter">Appendix C: flags for use</FONT></B> 
</P>
<P><FONT FACE="Charter">Flags are grouped according to the function
in which they are used. Some flags are used in more than one
function, and they are duplicated in each section for clarity. Most
flags are input parameters to the functions they are listed under.</FONT>
</P>
<P><FONT FACE="Charter">NOTE: Always use flags where provided, rather
than the value associated with it, since values may change. For
example, use LINK_TGL with set_cable rather than 1.</FONT> <BR> 
</P>
<P STYLE="margin-bottom: 0in"><B><FONT FACE="Charter">ticable_set_timeout</FONT></B>
<BR> 
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<THEAD>
		<TR>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">DFLT_TIMEOUT</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="15" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">15</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">Default timeout value</FONT></P>
			</TD>
		</TR>
	</THEAD>
</TABLE>
<P><BR><BR>
</P>
<P STYLE="margin-bottom: 0in"><B><FONT FACE="Charter">ticable_set_delay</FONT></B>
<BR> 
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<THEAD>
		<TR>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">DFLT_DELAY</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="10" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">10</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">default delay value</FONT></P>
			</TD>
		</TR>
	</THEAD>
</TABLE>
<P><BR><BR><B><FONT FACE="Charter">ticable_set_baudrate</FONT></B></P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=85*>
	<COL WIDTH=85*>
	<COL WIDTH=85*>
	<THEAD>
		<TR>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">BR9600</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="9600" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">9600</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">9600 bauds</FONT></P>
			</TD>
		</TR>
	</THEAD>
	<TBODY>
		<TR>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">BR19200</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="19200" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">19200</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">19200 bauds</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">BR38400</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="38400" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">38400</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">38400 bauds</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">BR57600</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="57600" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">57600</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">75600 bauds</FONT></P>
			</TD>
		</TR>
	</TBODY>
</TABLE>
<P><BR><BR><B><FONT FACE="Charter">ticable_set_cable</FONT></B></P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=46*>
	<COL WIDTH=33*>
	<COL WIDTH=177*>
	<THEAD>
		<TR>
			<TD WIDTH=18% VALIGN=TOP>
				<P><FONT FACE="Charter">LINK_TGL</FONT></P>
			</TD>
			<TD WIDTH=13% VALIGN=BOTTOM SDVAL="1" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">1</FONT></P>
			</TD>
			<TD WIDTH=69% VALIGN=TOP>
				<P><FONT FACE="Charter">Grey TIGraphLink, PIClink or AVRlink</FONT></P>
			</TD>
		</TR>
	</THEAD>
	<TBODY>
		<TR>
			<TD WIDTH=18% VALIGN=TOP>
				<P><FONT FACE="Charter">LINK_SER</FONT></P>
			</TD>
			<TD WIDTH=13% VALIGN=BOTTOM SDVAL="2" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">2</FONT></P>
			</TD>
			<TD WIDTH=69% VALIGN=TOP>
				<P><FONT FACE="Charter">Black TIGraphLink or home-made serial
				link cable</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=18% VALIGN=TOP>
				<P><FONT FACE="Charter">LINK_PAR</FONT></P>
			</TD>
			<TD WIDTH=13% VALIGN=BOTTOM SDVAL="3" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">3</FONT></P>
			</TD>
			<TD WIDTH=69% VALIGN=TOP>
				<P><FONT FACE="Charter">Home-made parallel link cable</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=18% VALIGN=TOP>
				<P><FONT FACE="Charter">LINK_AVR</FONT></P>
			</TD>
			<TD WIDTH=13% VALIGN=BOTTOM SDVAL="4" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">4</FONT></P>
			</TD>
			<TD WIDTH=69% VALIGN=TOP>
				<P><FONT FACE="Charter">FastAVRlink link cable</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=18% VALIGN=TOP>
				<P><FONT FACE="Charter">LINK_VTL</FONT></P>
			</TD>
			<TD WIDTH=13% VALIGN=BOTTOM SDVAL="5" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">5</FONT></P>
			</TD>
			<TD WIDTH=69% VALIGN=TOP>
				<P><FONT FACE="Charter">Virtual linking</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=18% VALIGN=TOP>
				<P><FONT FACE="Charter">LINK_TIE</FONT></P>
			</TD>
			<TD WIDTH=13% VALIGN=BOTTOM SDVAL="6" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">6</FONT></P>
			</TD>
			<TD WIDTH=69% VALIGN=TOP>
				<P><FONT FACE="Charter">TIEmulator virtual linking</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=18% VALIGN=TOP>
				<P><FONT FACE="Charter">LINK_VTI</FONT></P>
			</TD>
			<TD WIDTH=13% VALIGN=BOTTOM SDVAL="7" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">7</FONT></P>
			</TD>
			<TD WIDTH=69% VALIGN=TOP>
				<P><FONT FACE="Charter">Vti virtual linking</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=18% VALIGN=TOP>
				<P><FONT FACE="Charter">LINK_TPU</FONT></P>
			</TD>
			<TD WIDTH=13% VALIGN=BOTTOM SDVAL="8" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">8</FONT></P>
			</TD>
			<TD WIDTH=69% VALIGN=TOP>
				<P><FONT FACE="Charter">TI/PC USB link</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=18% VALIGN=TOP>
				<P><FONT FACE="Charter">LINK_UGL</FONT></P>
			</TD>
			<TD WIDTH=13% VALIGN=BOTTOM SDVAL="9" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">9</FONT></P>
			</TD>
			<TD WIDTH=69% VALIGN=TOP>
				<P><FONT FACE="Charter">TIGraphLink USB</FONT></P>
			</TD>
		</TR>
	</TBODY>
</TABLE>
<P><BR><BR><B><FONT FACE="Charter">ticable_set_port</FONT></B> 
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<COL WIDTH=64*>
	<COL WIDTH=64*>
	<COL WIDTH=128*>
	<THEAD>
		<TR VALIGN=TOP>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">PARALLEL_PORT_1</FONT></P>
			</TD>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">0x378&nbsp;</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">Parallel port #1</FONT></P>
			</TD>
		</TR>
	</THEAD>
	<TBODY>
		<TR VALIGN=TOP>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">PARALLEL_PORT_2</FONT></P>
			</TD>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">0x278&nbsp;</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">Parallel port #2</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">PARALLEL_PORT_3</FONT></P>
			</TD>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">0x3BC</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">Parallel port #3</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">SERIAL_PORT_1</FONT></P>
			</TD>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">0x3F8</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">Serial port #1</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">SERIAL_PORT_2</FONT></P>
			</TD>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">0x2F8</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">Serial port #2</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">SERIAL_PORT_3</FONT></P>
			</TD>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">0x3E8</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">Serial port #3</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">SERIAL_PORT_4</FONT></P>
			</TD>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">0x2E8</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">Serial port #4</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=25% VALIGN=TOP>
				<P><FONT FACE="Charter">VIRTUAL_PORT_1</FONT></P>
			</TD>
			<TD WIDTH=25% VALIGN=BOTTOM SDVAL="1" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">1</FONT></P>
			</TD>
			<TD WIDTH=50% VALIGN=TOP>
				<P><FONT FACE="Charter">Virtual linking #1 (emulator)</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=25% VALIGN=TOP>
				<P><FONT FACE="Charter">VIRTUAL_PORT_2</FONT></P>
			</TD>
			<TD WIDTH=25% VALIGN=BOTTOM SDVAL="2" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">2</FONT></P>
			</TD>
			<TD WIDTH=50% VALIGN=TOP>
				<P><FONT FACE="Charter">Virtual linking #2 (linking program)</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=25%>
				<P><FONT FACE="Charter">USB_PORT</FONT></P>
			</TD>
			<TD WIDTH=25%>
				<P><BR>
				</P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">USB link (not yet)</FONT></P>
			</TD>
		</TR>
	</TBODY>
</TABLE>
<P><BR><B><FONT FACE="Charter">check_port</FONT></B> <BR><BR><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<THEAD>
		<TR>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">STATUS_NONE</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="0" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">0</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">Nothing&nbsp;</FONT></P>
			</TD>
		</TR>
	</THEAD>
	<TBODY>
		<TR>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">STATUS_RX</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="1" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">1</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">At least 1 byte has been received</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">STATUS_TX</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=BOTTOM SDVAL="2" SDNUM="1033;">
				<P ALIGN=CENTER><FONT FACE="Charter">2</FONT></P>
			</TD>
			<TD WIDTH=33% VALIGN=TOP>
				<P><FONT FACE="Charter">1 byte can be sent (no more)</FONT></P>
			</TD>
		</TR>
	</TBODY>
</TABLE>
<P><BR><BR><B><FONT FACE="Charter">Appendix D: software tools library</FONT></B>
<BR><BR><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<THEAD>
		<TR VALIGN=TOP>
			<TH WIDTH=20%>
				<P><FONT FACE="Charter">Filename</FONT></P>
			</TH>
			<TH WIDTH=20%>
				<P><FONT FACE="Charter">Ext</FONT></P>
			</TH>
			<TH WIDTH=60%>
				<P><FONT FACE="Charter">Description</FONT></P>
			</TH>
		</TR>
	</THEAD>
	<TBODY>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">par_link</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">C/H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Manage the home-made parallel link cable</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">ser_link</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">C/H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Manage the home-made serial link cable</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">tig_link</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">C/H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Manage the Grey/Gray TI GraphLink cable</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">avr_link</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">C/H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Manage the fastAVRlink</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">vtl_link</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">C/H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Manage the 2 virtual link cables</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">probe_cable</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">C/H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Try to auto-detect the I/O ports and the
				link cable type</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">ioports</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">C/H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Win32 only. Used for switching between
				internal I/O routines or kernel driver I/O routines</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">interface</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">C</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">The interface of the library</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">error</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">C/H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Manage the error codes and error messages</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">errorcodes</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">The list of error codes and error
				messages</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">cable_defs</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Structure and macro definitions</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">cable_interface</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">The header which contains the prototype
				of exported functions</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">extern</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Thhis header contains extern variables
				but for internal use</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%></TD>
			<TD WIDTH=20%></TD>
			<TD WIDTH=60%></TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">win_port</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Used for making the Windows DLL</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">Typedefs</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Some importants definitions of type such
				'byte', 'word'</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">Macros</FONT></P>
			</TD>
			<TD WIDTH=20%>
				<P><FONT FACE="Charter">H</FONT></P>
			</TD>
			<TD WIDTH=60%>
				<P><FONT FACE="Charter">Some useful macros</FONT></P>
			</TD>
		</TR>
	</TBODY>
</TABLE>
<P><BR><BR><B><FONT FACE="Charter">Appendix E: Code Index</FONT></B> 
</P>
<P><FONT FACE="Charter">The libTIcable is a set of 'C' language
subroutines designed to handle the different link cable types though
a unique set of functions. Below is an alphabetical listing of all
libTIcable functions and the name of the C file which contains its
programming code.</FONT> 
</P>
<P><FONT FACE="Charter">The functions below are exported functions:</FONT>
<BR><BR><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<THEAD>
		<TR VALIGN=TOP>
			<TH WIDTH=50%>
				<P><FONT FACE="Charter">Driver function</FONT></P>
			</TH>
			<TH WIDTH=50%>
				<P><FONT FACE="Charter">Code filename</FONT></P>
			</TH>
		</TR>
	</THEAD>
	<TBODY>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">get_cable_version</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">set_timeout</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">get_timeout</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">set_delay</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">get_delay</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">set_baudrate</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">get_baudrate</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">set_io_address</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">get_io_address</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">set_io_device</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">get_io_device</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">set_cable</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">Interface.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">get_cable_error</FONT></P>
			</TD>
			<TD WIDTH=50%>
				<P><FONT FACE="Charter">Error.c</FONT></P>
			</TD>
		</TR>
	</TBODY>
</TABLE>
<P><BR><BR><FONT FACE="Charter">The functions below are internal
functions:</FONT> <BR><BR><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<THEAD>
		<TR VALIGN=TOP>
			<TH WIDTH=64%>
				<P><FONT FACE="Charter">Driver function</FONT></P>
			</TH>
			<TH WIDTH=36%>
				<P><FONT FACE="Charter">Code filename</FONT></P>
			</TH>
		</TR>
	</THEAD>
	<TBODY>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">par_init_port, par_open_port, par_put,
				par_get, par_probe, par_close_port, par_term_port, par_check_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">Par_link.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">ser_init_port, ser_open_port, ser_put,
				ser_get, ser_probe_port, ser_close_port, ser_term_port,
				ser_check_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">Ser_link.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">tig_init_port, tig_open_port, tig_put,
				tig_get, tig_probe_port, tig_close_port, tig_term_port,
				tig_check_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">Tig_link.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">avr_init_port, avr_open_port, avr_put,
				avr_get, avr_probe_port, avr_close_port, avr_term_port,
				avr_check_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">Avr_link.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">vtl_init_port, vtl_open_port, vtl_put,
				vtl_get, vtl_probe_port, vtl_close_port, vtl_term_port,
				vtl_check_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">Vtl_link.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">vti_init_port, vti_open_port, vti_put,
				vti_get, vti_probe_port, vti_close_port,</FONT><BR><FONT FACE="Charter">vti_term_port,
				vti_check_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">Vti_link.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">tie_init_port, tie_open_port, tie_put,
				tie_get, tie_probe_port, tie_close_port,</FONT><BR><FONT FACE="Charter">tie_term_port,
				tie_check_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">Tie_link.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">tpu_init_port, tpu_open_port, tpu_put,
				tpu_get, tpu_probe_port, tpu_close_port, tpu_term_port,
				tpu_check_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">Tpu_link.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">ugl_init_port, ugl_open_port, ugl_put,
				ugl_get, ugl_probe_port, ugl_close_port,</FONT><BR><FONT FACE="Charter">ugl_term_port,
				ugl_check_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">Ugl_link.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">detect_port</FONT></P>
			</TD>
			<TD WIDTH=36%>
				<P><FONT FACE="Charter">probe_cable.c</FONT></P>
			</TD>
		</TR>
		<TR VALIGN=TOP>
			<TD WIDTH=64%>
				<P><FONT FACE="Charter">detect_cable</FONT></P>
			</TD>
			<TD WIDTH=36%></TD>
		</TR>
	</TBODY>
</TABLE>
<P><BR><BR><B><FONT FACE="Charter">Appendix F: Error Messages</FONT></B>
</P>
<P><SPAN STYLE="font-weight: medium"><FONT FACE="Charter">All
routines in the libTIcable are written as 'C' functions i.e., thery
return values. A non zero value signifies an error. Full error
messages may be printed using the get_cable_error function. Below is
a list of all error messages, the value of each, and an explanation
of the error.</FONT></SPAN> 
</P>
<P><SPAN STYLE="font-weight: medium"><FONT FACE="Charter">L = Linux</FONT>
<BR><FONT FACE="Charter">W = Windows9x or Windows NT4</FONT></SPAN> <BR><BR><BR>
</P>
<TABLE WIDTH=100% BORDER=1 CELLPADDING=4 CELLSPACING=3>
	<THEAD>
		<TR VALIGN=TOP>
			<TH WIDTH=36%>
				<P><FONT FACE="Charter">Error code</FONT></P>
			</TH>
			<TH WIDTH=8%>
				<P><FONT FACE="Charter">Value</FONT></P>
			</TH>
			<TH WIDTH=10%>
				<P ALIGN=CENTER><FONT FACE="Charter">L &amp; W</FONT></P>
			</TH>
			<TH WIDTH=46%>
				<P><FONT FACE="Charter">Explanation</FONT></P>
			</TH>
		</TR>
	</THEAD>
	<TBODY>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_ABORT</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="-1" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">-1</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Operation aborted</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_ROOT</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="1" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">1</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Root permissions required</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_SND_BIT_TIMEOUT</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="2" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">2</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Send bit timeout</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_RCV_BIT_TIMEOUT</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="3" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">3</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Receive bit timeout</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_OPEN_SER_DEVICE</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="32" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">32</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Unable to open a serial device
				(/dev/ttySx)</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_SND_BYT</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="33" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">33</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Send byte error</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_RCV_BYT</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="34" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">34</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Receive byte error</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_SND_BYT_TIMEOUT</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="36" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">36</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Send byte timeout</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_RCV_BYT_TIMEOUT</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="35" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">35</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Receive byte timeout</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_CREATE_FILE</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="41" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">41</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Unable to open a COM port (COMx)</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_OPEN_COM_PORT</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="42" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">42</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Unable to open a COM port (COMx)</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_READ_FILE</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="47" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">47</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Error while reading the COM port</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_OPEN_TIDEV_DEV</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="48" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">48</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Error while opening a 'tidev' char device</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_VT0_ALREADY_USED&nbsp;</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="49" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">49</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Error when the pipe is already used</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_VT1_ALREADY_USED</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="50" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">50</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Error when the pipe is already used</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_OPEN_PIPE</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="51" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">51</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Unable to open a pipe</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_PIPE_FCNTL</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="52" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">52</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Unable to modify the pipe characteristics</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_OPP_NOT_AVAIL</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="53" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">53</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L/W</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">No answer</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_CLOSE_PIPE</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="54" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">54</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P><FONT FACE="Charter">&nbsp;</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">Unable to close a pipe</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_BYTE_LOST</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="55" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">55</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">A byte might have been lost due to
				check_port</FONT></P>
			</TD>
		</TR>
		<TR>
			<TD WIDTH=36% VALIGN=TOP>
				<P><FONT FACE="Charter">ERR_ILLEGAL_OP</FONT></P>
			</TD>
			<TD WIDTH=8% VALIGN=BOTTOM SDVAL="56" SDNUM="1033;">
				<P ALIGN=RIGHT><FONT FACE="Charter">56</FONT></P>
			</TD>
			<TD WIDTH=10% VALIGN=TOP>
				<P ALIGN=CENTER><FONT FACE="Charter">L</FONT></P>
			</TD>
			<TD WIDTH=46% VALIGN=TOP>
				<P><FONT FACE="Charter">An illegal argument has been used</FONT></P>
			</TD>
		</TR>
	</TBODY>
</TABLE>
<P><BR><BR><B><FONT FACE="Charter">Appendix G: Function Index</FONT></B>
</P>
<P><FONT FACE="Charter">To do...</FONT> 
</P>
<P ALIGN=CENTER><FONT FACE="Charter"><B>---------------------</B></FONT></P>
<P><FONT FACE="Charter">I hope this documentation to be useful. If
you have comments, suggestions, and so on, feel free to mail me.</FONT>
<BR><FONT FACE="Charter">If you want additional informations, fire me
an e-mail...</FONT> <BR><BR><BR>
</P>
<P><FONT FACE="Charter">libticable, (c) 1999-2001, Romain Li&eacute;vin</FONT>
<BR><FONT FACE="Charter">All code is placed under GPL license and
libraries under the LGPL license.</FONT> <BR><FONT FACE="Charter">Lib
version 2.0.2.</FONT> <BR><FONT FACE="Charter">Doc version 1.8,
14/09/2001.</FONT> <BR><FONT FACE="Charter">This doc has been written
with StarOffice 5.1 Personnal Edition for Linux (StarOffice = 50 MB
of RAM !!!). SGML could be a better choice but I have not enough time
to learn it ...</FONT> 
</P>
</BODY>
</HTML>