Sophie

Sophie

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

libticables3-3.4.5-1mdk.i586.rpm

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta http-equiv="CONTENT-TYPE" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.77 [en] (X11; U; Linux 2.4.7 i586) [Netscape]">
   <meta name="CREATED" content="20000726;23212300">
   <meta name="CHANGED" content="20010602;21365100">
   <title>Untitled Document</title>
</head>
<body bgcolor="#FFFFFF">

<center><b><u><font face="charter"><font size=+3>Link cable library</font></font></u></b>
<br><b><u><font face="charter"><font size=+3>Reference manual</font></font></u></b></center>

<p><br>
<br>
<br>
<br>
<br>
<p><b><u><font face="charter"><font size=+1>What in this manual ?</font></font></u></b>
<p><font face="charter"><font size=+0>This documentation is for those who
want use the library under Linux or Windows. This library is being ported
under BeOS and is going to be ported on Macintosh computers.</font></font>
<br><font face="charter"><font size=+0>The documentation is divided into
six chapters:</font></font>
<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><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><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><font face="charter">Chapter 4: <i>General functions</i> details the
software functions that are not specific to link cable.</font>
<p><font face="charter">Chapter 5: <i>Link cable functions</i> details
functions that are specific to link cable.</font>
<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 "Flags for use", a "Code Index" and a list of "Error messages".</font>
<br>&nbsp;
<br>&nbsp;
<p><b><u><font face="charter"><font size=+1>I Introduction</font></font></u></b>
<p><font face="charter">Chapter 1 provides an overview of the libTicable
library. The topics covered are:</font>
<ul><font face="charter">overview,</font>
<p><font face="charter">functions,</font>
<p><font face="charter">conventions used in this manual.</font></ul>
<b><font face="charter">Overview</font></b>
<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. This feature is discussed further in
the text.</font>
<p><font face="charter">The supported platform are: Linux, Windows9x/Me
and WindowsNT4/2000. The use of this library under Windows NT4/2000 requires
a special I/O driver: DriverLYNX DLPortIO driver. This driver can also
be used under Windows9x.</font>
<br><font face="charter">Supported architectures are: Intel processors,
Alpha and Sparc.</font>
<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><font face="charter">Remark: it is is necessary to be 'root' under Linux
for using the some link cables (serial/parallel/BlackLink). If you do not
want this, you must use a kernel module (such as 'tidev', 'tipar' or 'tiser').</font>
<br>&nbsp;
<br>&nbsp;
<p><b><font face="charter">Functions</font></b>
<p><font face="charter">The libTIcable is a set of 'C' languages subroutines
designed to handle the different link cables through a same set of functions.
This constitute a complete API.</font>
<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 ! In my mind, Microsoft compiler is a good choice (hmm,
I prefer Linux !).</font>
<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><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: "Flags for use".</font>
<p><font face="charter">Functions are written as "C" functions, i.e. they
return values except few of them. A non zero value signifies an error.</font>
<br>&nbsp;
<p><b><font face="charter">Conventions used</font></b>
<p><font face="charter">To help differentiate between different kinds of
information, the following text styles are used in the Reference Manual.</font>
<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>&nbsp;
<p><b><u><font face="charter"><font size=+1>II Data types</font></font></u></b>

<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><font face="charter">Basic types:</font>
<br><font face="charter">- </font><font face="Terminal">byte</font><font face="charter">:
a 8-bit unsigned integer,</font>

<p STYLE="margin-bottom: 0in; font-weight: medium"><font face="charter">-
</font><font face="Terminal">word</font><font face="charter">:
a 16-bit unsigned integer,</font>
<br><font face="charter">-
</font><font face="Terminal">longword</font><font face="charter">:
a 32-bit unsigned integer.</font>
<p><font face="charter">The most important type is a structure and is defined
as below:</font>
<p><font face="terminal">struct ticable_link</font>
<br><font face="terminal">{</font>

<p STYLE="margin-bottom: 0in; font-weight: medium"><font face="terminal">//
cooked access</font>
<br><font face="terminal">int (*init_port) ();</font>
<br><font face="terminal">int (*open_port) ();</font>
<br><font face="terminal">int (*put) (byte data);</font>
<br><font face="terminal">int (*get) (byte *data);</font>
<br><font face="terminal">int (*probe_port) ();</font>
<br><font face="terminal">int (*close_port) ();</font>
<br><font face="terminal">int (*term_port) ();</font>
<br><font face="terminal">int (*check_port) (int *status);</font>
<br>&nbsp;
<div STYLE="margin-bottom: 0in; font-weight: medium"></div>&nbsp;


<p STYLE="margin-bottom: 0in; font-weight: medium"><font face="terminal">//
raw access</font>

<p STYLE="margin-bottom: 0in; font-weight: medium"><font face="terminal">int
(*set_red_wire) ();</font>

<p STYLE="margin-bottom: 0in; font-weight: medium"><font face="terminal">int
(*set_white_wire) ();</font>

<p STYLE="margin-bottom: 0in; font-weight: medium"><font face="terminal">int
(*get_red_wire) ();</font>

<p STYLE="margin-bottom: 0in; font-weight: medium"><font face="terminal">int
(*get_white_wire) ();</font>
<br><font face="terminal">};</font>
<br><font face="terminal">typedef struct ticable_link LINK_CABLE;</font>
<br>&nbsp;
<div STYLE="font-weight: medium"></div>

<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><font face="charter">The other data type is not used by the libTicable
but is provided for your convenience.</font>
<p><font face="terminal">struct ticable_param</font>
<br><font face="terminal">{</font>
<br><font face="terminal">int calc_type;</font>
<br><font face="terminal">int link_type;</font>
<br><font face="terminal">unsigned int io_addr;</font>
<br><font face="terminal">char device[16];</font>
<br><font face="terminal">int timeout;</font>
<br><font face="terminal">int delay;</font>
<br><font face="terminal">int tidev;</font>
<br><font face="terminal">int dlportio;</font>
<br><font face="terminal">int baud_rate;</font>
<br><font face="terminal">int hfc;</font>
<br><font face="terminal">};</font>
<br><font face="terminal">typedef struct ticable_param LINK_PARAM;</font>
<p><font face="charter">It contains all variables required for setting
up a link cable.</font>
<p>At last, the third structure is used by the library for auto-detection
operations:
<p><font face="Terminal">struct port_info_</font>
<br><font face="Terminal">{</font>
<br><font face="Terminal">int lpt_count;</font>
<br><font face="Terminal">int lpt_addr[MAX_LPT_PORTS+1];</font>
<br><font face="Terminal">int lpt_mode[MAX_LPT_PORTS+1];</font>
<br><font face="Terminal">char lpt_name[MAX_LPT_PORTS+1][17];</font>
<p><font face="Terminal">int com_count;</font>
<br><font face="Terminal">int com_addr[MAX_COM_PORTS+1];</font>
<br><font face="Terminal">int com_mode[MAX_COM_PORTS+1];</font>
<br><font face="Terminal">char com_name[MAX_COM_PORTS+1][17];</font>

<p STYLE="font-weight: medium"><font face="Terminal">};</font>
<br><font face="Terminal">typedef struct port_info_ PortInfo;</font>
<br>&nbsp;
<br>&nbsp;
<p><b><u><font size=+1>III Setting up link cables</font></u></b>
<p><span STYLE="font-weight: medium"><font face="charter">Chapter 2 guides
you through the steps to set up a link cable on your computer. Detailed
operating instructions</span> for the functions are described in Chapter
3.</font>
<p><font face="charter">To set up the libTIcable library:</font>
<br><font face="charter">1. call the main setup function,</font>
<br><font face="charter">2. set up the timeout and delay variables,</font>
<br><font face="charter">3. set up the io_address and io_device variables,</font>
<br><font face="charter">4. set up the baud_rate variable,</font>
<br><font face="charter">5. set up the link cable.</font>
<br>&nbsp;
<br>&nbsp;
<p><b><font face="charter">The I/O ports</font></b>
<p><font face="charter">To use the setup functions, you should know some
informations about the I/O ports.</font>
<br><font face="charter">A parallel link cable can 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 can use the serial ports based on 0x3F8, 0x2F8, 0x3E8,
0x2E8.</font>
<br><font face="charter">These addresses are standard addresses but the
library let you to use any address. 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>
<br>&nbsp;
<br>&nbsp;
<p><b><font face="charter">Global setup function</font></b>
<p><font face="charter">To implement the global setup functions call:</font>
<p><font face="charter">1.&nbsp;<span STYLE="font-weight: medium">get_cable_version</span>
to check the library version number.</font>
<br><font face="charter">2. fill up a LINK_PARAM structure with the right
values</font>
<br><font face="charter">3. use ticable_set_param</font>
<br><font face="charter">4. ticable_set_cable to set the link_cable structure
according to your cable type.</font>
<p><font face="charter">NOTE: under Windows NT, the use of the DLPortIO
driver is required but this driver 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>
<br>&nbsp;
<br>&nbsp;
<p><b><font face="charter">Setting up a link cable</font></b>
<p><font face="charter">To set a link cable, you must follow this sequence:</font>
<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>&nbsp;
<p><b><u><font face="charter"><font size=+1>IV General functions</font></font></u></b>
<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><font face="charter">The functions listed below are described in this
chapter:</font>
<p><font face="charter">- obsolete functions. Please use the ticable_set_param/ticable_get_param
function instead.</font>
<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_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>
<p><font face="charter">- general functions:</font>
<br><font face="charter">ticable_get_version</font>
<br><font face="charter">ticable_set_param</font>
<br><font face="charter">ticable_get_param</font>
<br><font face="charter">ticable_set_cable</font>
<br><font face="charter">ticable_get_error</font>
<br><font face="charter">ticable_get_support</font>
<p><font face="charter">- probing funtions:</font>
<br><font face="charter">ticable_detect_os</font>
<br><font face="charter">ticable_detect_port</font>
<br><font face="charter">ticable_detect_cable</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_get_version</font></font></b></span>
<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: "major.minor.release" such as "1.0.5".</font>
<p><font face="charter"><b>Syntax:</b> const char *ticable_get_version()</font>
<p><font face="charter"><b>Input parameters: </b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>

<p STYLE="margin-bottom: 0in"><font face="charter"><b>Return values:</b>
const char pointer, to a string.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_set_timeout</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> int ticable_set_timeout(int timeout_v)</font>
<p><font face="charter"><b>Input parameters: </b>timeout_v, the timeout
value in tenth of seconds. Example: 20 represents 2 seconds.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> none.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_get_timeout</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> int ticable_get_timeout()</font>
<p><font face="charter"><b>Input parameters: </b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> int, the timeout value in
tenth of seconds.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_set_delay</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> int ticable_set_delay(int delay_v)</font>
<p><font face="charter"><b>Input parameters: </b>delay_v, the delay value
in micro-seconds.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> none.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_get_delay</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> int ticable_get_timeout()</font>
<p><font face="charter"><b>Input parameters: </b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> int, the delay value in micro-seconds.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_set_baudrate</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> void ticable_set_baudrate(int br);</font>
<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><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> none.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_get_baudrate</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> int ticable_get_baudrate()</font>
<p><font face="charter"><b>Input parameters: </b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> int, the baud-rate value
such as BR9600 for 9600 bauds.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_set_io_address</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> void ticable_set_io_address(uint
io_addr);</font>
<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><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> none.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_get_io_address</font></font></b></span>
<p><font face="charter"><b>Description:
</b>This functions returns the
I/O port base address.</font>
<p><font face="charter"><b>Syntax:</b> uint ticable_get_io_address()</font>
<p><font face="charter"><b>Input parameters: </b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> int, the baud-rate value
such as BR9600 for 9600 bauds.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_set_io_device</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> void ticable_set_io_device(char
* device);</font>
<p><font face="charter"><b>Input parameters: </b>device, a string which
contains a character device name such as "/dev/ttyS0".</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> none.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_get_io_device</font></font></b></span>
<p><font face="charter"><b>Description:
</b>This functions returns the
character device name which is used by link cable functions.</font>
<p><font face="charter"><b>Syntax:</b> char *ticable_get_io_device()</font>
<p><font face="charter"><b>Input parameters: </b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> char *, the character device
name.</font>
<br>&nbsp;
<br>&nbsp;

<p STYLE="margin-bottom: 0in"><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_set_param</font></font></b></span>
<p><font face="charter"><b>Description:
</b>This functions set the internal
library parameters with your settings.</font>
<p><font face="charter"><b>Syntax:</b> void ticable_set_param(LINK_PARAM
lp)</font>
<p><font face="charter"><b>Input parameters: </b>lp, a structure to fill
up.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> none.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_get_param</font></font></b></span>
<p><font face="charter"><b>Description:
</b>This functions retrieve the
internal library settings.</font>
<p><font face="charter"><b>Syntax:</b> int ticable_get_param(LINK_PARAM
*lp)</font>
<p><font face="charter"><b>Input parameters: </b>lp, the address of the
structure to fill.</font>
<p><font face="charter"><b>Output Parameters:</b> lp, the filled structure.</font>
<p><font face="charter"><b>Return values:</b> int, an error code.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_set_cable</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> void ticable_set_cable(int type,
LINK_CABLE *lc)</font>
<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><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><font face="charter"><b>Return values:</b> none.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_get_error</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> int ticable_get_error(int err_num,
char *error_msg)</font>
<p><font face="charter"><b>Input parameters: </b>err_num, an error code
returned by a link cable function.</font>
<p><font face="charter"><b>Output Parameters:</b> error_msg, a string which
contains the corresponding error message.</font>
<p><font face="charter"><b>Return values:</b> int, 0 if the error code
has been caught else the error code.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_detect_os</font></font></b></span>
<p><font face="charter"><b>Description:
</b>tries to detect the running
Operating System.</font>
<p><font face="charter"><b>Syntax:</b> int ticable_detect_os(char **os_type)</font>
<p><font face="charter"><b>Input parameters: </b>none.</font>
<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><font face="charter"><b>Return values:</b> int, an error code.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_detect_port</font></font></b></span>
<p><font face="charter"><b>Description:
</b>the function lists in a structure
all available ports on the machine.</font>
<p><font face="charter"><b>Syntax:</b> int ticable_detect_port(PortInfo
*pi)</font>
<p><font face="charter"><b>Input parameters: </b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> pi, the address of a
structure where the function will store the results.</font>
<p><font face="charter"><b>Return values:</b> int, an error code.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>ticable_detect_cable</font></font></b></span>
<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).</font> Beware, this function can hang up
the mouse if you have a serial mouse...
<p><font face="charter"><b>Syntax:</b> int ticable_detect_cable(PortInfo
*pi)</font>
<p><font face="charter"><b>Input parameters: </b>pi, a structure previously
filled up with the ticable_detect_port function.</font>
<p><font face="charter"><b>Output Parameters:</b> pi, a PortInfo structure
which contains both available ports and cables.</font>
<p><font face="charter"><b>Return values:</b> int, an error code.</font>
<br>&nbsp;
<p><b><u><font face="charter"><font size=+1>V Link cables functions</font></font></u></b>
<p><font face="charter">Chapter 4 details the software functions that are
specific to link cable.</font>
<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><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><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>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>init_port</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> int init_port(unsigned int io_addr,
char *device)</font>
<p><b><font face="charter">Input parameters:</font></b>
<br><font face="charter">- io_addr, used by parallel, serial and Black
TIGL cable. This is the base address of the I/O port where the cable is
plugged. It must be a valid I/O address (often in the range 0x3ff).</font>
<br><font face="charter">This is also used for choosing the virtual link
cable: either the #0 with VLINK0, either the #1 with VLINK1. By convention,
the #0 is used by ab emulator for instance and the #1 is used by a linking
software.</font>
<br><font face="charter">- device, used by the Grey/Gray TIGL cable.</font>
<br><font face="charter">Under Linux, this string contains the name of
the character device where the cable is plugged in. Example: "/dev/ttyS0"
... "/dev/ttyS3".</font>
<br><font face="charter">Under Windows, this string contains the name of
the COM port. Example: "COM1" ... "COM4".</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<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>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>open_port</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> int open_port(void)</font>
<p><font face="charter"><b>Input parameters:
</b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<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>&nbsp;
<br>&nbsp;

<p STYLE="margin-bottom: 0in"><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>put</font></font></b></span>
<p><font face="charter"><b>Description:
</b>this functions send a byte
(unsigned char) to the link cable.</font>
<p><font face="charter"><b>Syntax:</b> int put(byte data)</font>
<p><font face="charter"><b>Input parameters: </b>data, the byte to transmit
on the link cable.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<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>&nbsp;
<br>&nbsp;

<p STYLE="margin-bottom: 0in"><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>get</font></font></b></span>
<p><font face="charter"><b>Description:
</b>this functions waits a byte
(unsigned char) from the link cable.</font>
<p><font face="charter"><b>Syntax:</b> int get(byte *data)</font>
<p><font face="charter"><b>Input parameters:
</b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> data, the byte received
from the link cable.</font>
<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>&nbsp;
<br>&nbsp;

<p STYLE="margin-bottom: 0in"><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>close_port</font></font></b></span>
<p><font face="charter"><b>Description:
</b>this functions closes the transmission.You
should call it whenever a transfer is finished.</font>
<p><font face="charter"><b>Syntax:</b> int close_port(void)</font>
<p><font face="charter"><b>Input parameters:
</b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<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>&nbsp;
<br>&nbsp;

<p STYLE="margin-bottom: 0in"><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>term_port</font></font></b></span>
<p><font face="charter"><b>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><font face="charter"><b>Syntax:</b> int term_port(void)</font>
<p><font face="charter"><b>Input parameters:
</b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<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>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>probe_port</font></font></b></span>
<p><font face="charter"><b>Description:
</b>not useable for the moment.</font>
<p><font face="charter"><b>Syntax:</b> int probe_port(void)</font>
<p><font face="charter"><b>Input parameters:
</b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<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>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>check_port</font></font></b></span>
<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><font face="charter"><b>Syntax:</b> int check_port(int *status)</font>
<p><font face="charter"><b>Input parameters:
</b>none.</font>
<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><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>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>set_red_wire</font></font></b></span>
<p><font face="charter"><b>Description:
</b>this functions simply sets
the 'red' wire to the desired value.</font>
<p><font face="charter"><b>Syntax:</b> int set_red_wire(int b)</font>
<p><font face="charter"><b>Input parameters: </b>b, the value of line that
is to say 0 or 1.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> int, always 0.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>set_white_wire</font></font></b></span>
<p><font face="charter"><b>Description:
</b>this functions simply sets
the 'white' wire to the desired value.</font>
<p><font face="charter"><b>Syntax:</b> int set_white_wire(int b)</font>
<p><font face="charter"><b>Input parameters: </b>b, the value of line that
is to say 0 or 1.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> int, always 0.</font>
<br>&nbsp;
<br>&nbsp;

<p STYLE="margin-bottom: 0in"><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>get_red_wire</font></font></b></span>
<p><font face="charter"><b>Description:
</b>this functions returns the
logical value of the 'red' wire.</font>
<p><font face="charter"><b>Syntax:</b> int get_red_wire(void)</font>
<br>&nbsp;
<p><font face="charter"><b>Input parameters:
</b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> int, the value of the wire.</font>
<br>&nbsp;
<p><span STYLE="background: #ffff00"><b><font face="charter"><font size=+1>get_white_wire</font></font></b></span>
<p><font face="charter"><b>Description:
</b>this functions returns the
logical value of the 'white' wire.</font>
<p><font face="charter"><b>Syntax:</b> int get_white_wire(void)</font>
<p><font face="charter"><b>Input parameters:
</b>none.</font>
<p><font face="charter"><b>Output Parameters:</b> none.</font>
<p><font face="charter"><b>Return values:</b> int, the value of the wire.</font>
<br>&nbsp;
<div STYLE="margin-bottom: 0in"></div>&nbsp;

<p><b><u><font face="charter"><font size=+1>VI Appendices</font></font></u></b>
<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>&nbsp;
<br>&nbsp;
<p><b><font face="charter">Appendix A: installation instructions</font></b>
<p><span STYLE="font-style: normal"><span STYLE="font-weight: medium"><font face="charter">This
appendix explains the procedure for adding/using libTIcable library on
your system.</font>
<p><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 'libti_cable.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;ti/foo.h>
on the beginning of your program.</font>
<p><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>&nbsp;
<p></span><b><font face="charter">Appendix B: compiling programs under
Linux and/or Windows</font></b></span>
<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><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
("stdcall") for Borland, C calling convention ("cdecl") 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 "cable_interface.h" header files
at the top of your test program. This header file include three files.
The first, "typedefs.h" contains some type definitions. The second, "cable_defs.h"
contains...</font>
<br>&nbsp;
<br>&nbsp;
<p><b><font face="charter">Appendix C: flags for use</font></b>
<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><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>&nbsp;
<p><b><font face="charter">set_timeout</font></b>
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=85*><COL WIDTH=85*><COL WIDTH=85*><THEAD>
<br></THEAD></caption>

<tr>
<td VALIGN=TOP WIDTH="33%"><font face="charter">DFLT_TIMEOUT</font></td>

<td VALIGN=BOTTOM WIDTH="33%" SDVAL="15" SDNUM="1033;">
<center><font face="charter">15</font></center>
</td>

<td VALIGN=TOP WIDTH="33%"><font face="charter">Default timeout value</font></td>
</tr>
</table>

<br>&nbsp;
<p><b><font face="charter">set_delay</font></b>
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=85*><COL WIDTH=85*><COL WIDTH=85*><THEAD>
<br></THEAD></caption>

<tr>
<td VALIGN=TOP WIDTH="33%"><font face="charter">DFLT_DELAY</font></td>

<td VALIGN=BOTTOM WIDTH="33%" SDVAL="10" SDNUM="1033;">
<center><font face="charter">10</font></center>
</td>

<td VALIGN=TOP WIDTH="33%"><font face="charter">default delay value</font></td>
</tr>
</table>

<br>&nbsp;
<p><b><font face="charter">set_baudrate</font></b>
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=85*><COL WIDTH=85*><COL WIDTH=85*><THEAD>
<br></THEAD><TBODY>
<br></TBODY></caption>

<tr>
<td VALIGN=TOP WIDTH="33%"><font face="charter">BR9600</font></td>

<td VALIGN=BOTTOM WIDTH="33%" SDVAL="9600" SDNUM="1033;">
<center><font face="charter">9600</font></center>
</td>

<td VALIGN=TOP WIDTH="33%"><font face="charter">9600 bauds</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="33%"><font face="charter">BR19200</font></td>

<td VALIGN=BOTTOM WIDTH="33%" SDVAL="19200" SDNUM="1033;">
<center><font face="charter">19200</font></center>
</td>

<td VALIGN=TOP WIDTH="33%"><font face="charter">19200 bauds</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="33%"><font face="charter">BR38400</font></td>

<td VALIGN=BOTTOM WIDTH="33%" SDVAL="38400" SDNUM="1033;">
<center><font face="charter">38400</font></center>
</td>

<td VALIGN=TOP WIDTH="33%"><font face="charter">38400 bauds</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="33%"><font face="charter">BR57600</font></td>

<td VALIGN=BOTTOM WIDTH="33%" SDVAL="57600" SDNUM="1033;">
<center><font face="charter">57600</font></center>
</td>

<td VALIGN=TOP WIDTH="33%"><font face="charter">75600 bauds</font></td>
</tr>
</table>

<br>&nbsp;
<p><b><font face="charter">set_cable</font></b>
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=45*><COL WIDTH=33*><COL WIDTH=178*><THEAD>
<br></THEAD><TBODY>
<br></TBODY></caption>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_TGL</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="1" SDNUM="1033;">
<center><font face="charter">1</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">Grey TIGraphLink, PIClink
or AVRlink</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_SER</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="2" SDNUM="1033;">
<center><font face="charter">2</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">Black TIGraphLink or home-made
serial link cable</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_PAR</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="3" SDNUM="1033;">
<center><font face="charter">3</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">Home-made parallel link
cable</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_AVR</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="4" SDNUM="1033;">
<center><font face="charter">4</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">FastAVRlink link cable</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_VTL</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="5" SDNUM="1033;">
<center><font face="charter">5</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">Virtual linking</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_TIE</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="6" SDNUM="1033;">
<center><font face="charter">6</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">TIEmulator virtual linking</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_VTI</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="7" SDNUM="1033;">
<center><font face="charter">7</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">Vti virtual linking</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_TPU</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="8" SDNUM="1033;">
<center><font face="charter">8</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">TI/PC USB link</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_UGL</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="9" SDNUM="1033;">
<center><font face="charter">9</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">TIGraphLink USB</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="18%"><font face="charter">LINK_DEV</font></td>

<td VALIGN=BOTTOM WIDTH="13%" SDVAL="128" SDNUM="1033;">
<center><font face="charter">128</font></center>
</td>

<td VALIGN=TOP WIDTH="70%"><font face="charter">'tidev' kernel module access
rather than low level I/O accesses ('OR'ed value)</font></td>
</tr>
</table>

<br>&nbsp;
<p><b><font face="charter">init_port</font></b>
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=64*><COL WIDTH=64*><COL WIDTH=128*><THEAD>
<br></THEAD><TBODY>
<br></TBODY></caption>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">LPT3&nbsp;</font></td>

<td WIDTH="25%"><font face="charter">0x3BC&nbsp;</font></td>

<td WIDTH="50%"><font face="charter">Parallel port address #3</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">LPT1&nbsp;</font></td>

<td WIDTH="25%"><font face="charter">0x378&nbsp;</font></td>

<td WIDTH="50%"><font face="charter">Parallel port address #1</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">LPT2</font></td>

<td WIDTH="25%"><font face="charter">0x278</font></td>

<td WIDTH="50%"><font face="charter">Parallel port address #2</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">COM1</font></td>

<td WIDTH="25%"><font face="charter">0x3F8</font></td>

<td WIDTH="50%"><font face="charter">Serial port address #1</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">COM2</font></td>

<td WIDTH="25%"><font face="charter">0x2F8</font></td>

<td WIDTH="50%"><font face="charter">Serial port address #2</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">COM3</font></td>

<td WIDTH="25%"><font face="charter">0x3E8</font></td>

<td WIDTH="50%"><font face="charter">Serial port address #3</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">COM4</font></td>

<td WIDTH="25%"><font face="charter">0x2E8</font></td>

<td WIDTH="50%"><font face="charter">Serial port address #4</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TTY0</font></td>

<td WIDTH="25%"><font face="charter">"/dev/ttyS0" or "COM1"</font></td>

<td WIDTH="50%"><font face="charter">Serial port device</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TTY1</font></td>

<td WIDTH="25%"><font face="charter">"/dev/ttyS1" or "COM2"</font></td>

<td WIDTH="50%"><font face="charter">Serial port device</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TTY2</font></td>

<td WIDTH="25%"><font face="charter">"/dev/ttyS2" or "COM3"</font></td>

<td WIDTH="50%"><font face="charter">Serial port device</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TTY3</font></td>

<td WIDTH="25%"><font face="charter">"/dev/ttyS3" or "COM4"</font></td>

<td WIDTH="50%"><font face="charter">Serial port device</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="25%"><font face="charter">VLINK0</font></td>

<td VALIGN=BOTTOM WIDTH="25%" SDVAL="1" SDNUM="1033;"><font face="charter">1</font></td>

<td VALIGN=TOP WIDTH="50%"><font face="charter">Virtual linking #0</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="25%"><font face="charter">VLINK1</font></td>

<td VALIGN=BOTTOM WIDTH="25%" SDVAL="2" SDNUM="1033;"><font face="charter">2</font></td>

<td VALIGN=TOP WIDTH="50%"><font face="charter">Virtual linking #1</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="25%"><font face="charter">TPU_RAW_MODE</font></td>

<td VALIGN=BOTTOM WIDTH="25%" SDVAL="1" SDNUM="1033;"><font face="charter">1</font></td>

<td VALIGN=TOP WIDTH="50%"><font face="charter">TI/PC USB GraphLink in
'raw' mode</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="25%"><font face="charter">TPU_COOKED_MODE</font></td>

<td VALIGN=BOTTOM WIDTH="25%" SDVAL="2" SDNUM="1033;"><font face="charter">2</font></td>

<td VALIGN=TOP WIDTH="50%"><font face="charter">TI/PC USB GraphLink in
'cooked' mode</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV</font></td>

<td WIDTH="25%"><font face="charter">"/dev/ti"</font></td>

<td WIDTH="50%"><font face="charter">Generic 'tidev' device</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV_P0</font></td>

<td WIDTH="25%"><font face="charter">"/dev/tiP0"</font></td>

<td WIDTH="50%"><font face="charter">'tidev' device for parallel link at
0x3BC</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV_P1</font></td>

<td WIDTH="25%"><font face="charter">"/dev/tiP1"</font></td>

<td WIDTH="50%"><font face="charter">'tidev' device for parallel link at
0x378</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV_P2</font></td>

<td WIDTH="25%"><font face="charter">"/dev/tiP2"</font></td>

<td WIDTH="50%"><font face="charter">'tidev' device for parallel link at
0x278</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV_S0</font></td>

<td WIDTH="25%"><font face="charter">"/dev/tiS0"</font></td>

<td WIDTH="50%"><font face="charter">'tidev' device for serial link at
0x3F8</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV_S1</font></td>

<td WIDTH="25%"><font face="charter">"/dev/tiS1"</font></td>

<td WIDTH="50%"><font face="charter">'tidev' device for serial link at
0x2F8</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV_S2</font></td>

<td WIDTH="25%"><font face="charter">"/dev/tiS2"</font></td>

<td WIDTH="50%"><font face="charter">'tidev' device for serial link at
0x3E8</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV_S3</font></td>

<td WIDTH="25%"><font face="charter">"/dev/tiS3"</font></td>

<td WIDTH="50%"><font face="charter">'tidev' device for serial link at
0x2E8</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV_V0</font></td>

<td WIDTH="25%"><font face="charter">"/dev/ti0"</font></td>

<td WIDTH="50%"><font face="charter">'tidev' device for virtual linking</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="25%"><font face="charter">TIDEV_V1</font></td>

<td WIDTH="25%"><font face="charter">"/dev/ti1"</font></td>

<td WIDTH="50%"><font face="charter">'tidev' device for virtual linking</font></td>
</tr>
</table>

<br>&nbsp;
<p><b><font face="charter">check_port</font></b>
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=85*><COL WIDTH=85*><COL WIDTH=85*><THEAD>
<br></THEAD><TBODY>
<br></TBODY></caption>

<tr>
<td VALIGN=TOP WIDTH="33%"><font face="charter">STATUS_NONE</font></td>

<td VALIGN=BOTTOM WIDTH="33%" SDVAL="0" SDNUM="1033;">
<center><font face="charter">0</font></center>
</td>

<td VALIGN=TOP WIDTH="33%"><font face="charter">Nothing&nbsp;</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="33%">STATUS_RX</td>

<td VALIGN=BOTTOM WIDTH="33%" SDVAL="1" SDNUM="1033;">
<center><font face="charter">1</font></center>
</td>

<td VALIGN=TOP WIDTH="33%"><font face="charter">At least 1 byte has been
received</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="33%">STATUS_TX</td>

<td VALIGN=BOTTOM WIDTH="33%" SDVAL="2" SDNUM="1033;">
<center><font face="charter">2</font></center>
</td>

<td VALIGN=TOP WIDTH="33%"><font face="charter">1 byte can be sent (no
more)</font></td>
</tr>
</table>

<br>&nbsp;
<p><b><font face="charter">Appendix D: software tools library</font></b>
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=51*><COL WIDTH=51*><COL WIDTH=154*><THEAD>
<br></THEAD><TBODY>
<br></TBODY></caption>

<tr VALIGN=TOP>
<th WIDTH="20%"><font face="charter">Filename</font></th>

<th WIDTH="20%"><font face="charter">Ext</font></th>

<th WIDTH="60%"><font face="charter">Description</font></th>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">parlink</font></td>

<td WIDTH="20%"><font face="charter">C/H</font></td>

<td WIDTH="60%"><font face="charter">Manage the home-made parallel link
cable</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">serlink</font></td>

<td WIDTH="20%"><font face="charter">C/H</font></td>

<td WIDTH="60%"><font face="charter">Manage the home-made serial link cable</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">tiglink</font></td>

<td WIDTH="20%"><font face="charter">C/H</font></td>

<td WIDTH="60%"><font face="charter">Manage the Grey/Gray TI GraphLink
cable</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">avrlink</font></td>

<td WIDTH="20%"><font face="charter">C/H</font></td>

<td WIDTH="60%"><font face="charter">Manage the fastAVRlink</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">vtllink.</font></td>

<td WIDTH="20%"><font face="charter">C/H</font></td>

<td WIDTH="60%"><font face="charter">Manage the 2 virtual link cables</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">probe_cable</font></td>

<td WIDTH="20%"><font face="charter">C/H</font></td>

<td WIDTH="60%"><font face="charter">Try to auto-detect the I/O ports and
the link cable type</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">ioports</font></td>

<td WIDTH="20%"><font face="charter">C/H</font></td>

<td WIDTH="60%"><font face="charter">Win32 only. Used for switching between
internal I/O routines or kernel driver I/O routines</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">interface</font></td>

<td WIDTH="20%"><font face="charter">C</font></td>

<td WIDTH="60%"><font face="charter">The interface of the library</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">error</font></td>

<td WIDTH="20%"><font face="charter">C/H</font></td>

<td WIDTH="60%"><font face="charter">Manage the error codes and error messages</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">errorcodes</font></td>

<td WIDTH="20%"><font face="charter">H</font></td>

<td WIDTH="60%"><font face="charter">The list of error codes and error
messages</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">cable_defs</font></td>

<td WIDTH="20%"><font face="charter">H</font></td>

<td WIDTH="60%"><font face="charter">Structure and macro definitions</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">cable_interface</font></td>

<td WIDTH="20%"><font face="charter">H</font></td>

<td WIDTH="60%"><font face="charter">The header which contains the prototype
of exported functions</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%">extern</td>

<td WIDTH="20%">H</td>

<td WIDTH="60%"><font face="charter">Th</font>his header contains extern
variables but for internal use</td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"></td>

<td WIDTH="20%"></td>

<td WIDTH="60%"></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">win_port</font></td>

<td WIDTH="20%"><font face="charter">H</font></td>

<td WIDTH="60%"><font face="charter">Used for making the Windows DLL</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">Typedefs</font></td>

<td WIDTH="20%"><font face="charter">H</font></td>

<td WIDTH="60%"><font face="charter">Some importants definitions of type
such 'byte', 'word'</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="20%"><font face="charter">Macros</font></td>

<td WIDTH="20%"><font face="charter">H</font></td>

<td WIDTH="60%"><font face="charter">Some useful macros</font></td>
</tr>
</table>

<br>&nbsp;
<p><b><font face="charter">Appendix E: Code Index</font></b>
<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><font face="charter">The functions below are exported functions:</font>
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=128*><COL WIDTH=128*><THEAD>
<br></THEAD><TBODY>
<br></TBODY></caption>

<tr VALIGN=TOP>
<th WIDTH="50%"><font face="charter">Driver function</font></th>

<th WIDTH="50%"><font face="charter">Code filename</font></th>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">get_cable_version</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">set_timeout</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">get_timeout</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">set_delay</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">get_delay</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">set_baudrate</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">get_baudrate</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">set_io_address</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">get_io_address</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">set_io_device</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">get_io_device</font></td>

<td WIDTH="50%"><font face="charter">interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">set_cable</font></td>

<td WIDTH="50%"><font face="charter">Interface.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="50%"><font face="charter">get_cable_error</font></td>

<td WIDTH="50%"><font face="charter">Error.c</font></td>
</tr>
</table>

<br>&nbsp;
<p><font face="charter">The functions below are internal functions:</font>
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=164*><COL WIDTH=92*><THEAD>
<br></THEAD><TBODY>
<br></TBODY></caption>

<tr VALIGN=TOP>
<th WIDTH="64%"><font face="charter">Driver function</font></th>

<th WIDTH="36%"><font face="charter">Code filename</font></th>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><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></td>

<td WIDTH="36%"><font face="charter">Par_link.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><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></td>

<td WIDTH="36%"><font face="charter">Ser_link.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><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></td>

<td WIDTH="36%"><font face="charter">Tig_link.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><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></td>

<td WIDTH="36%"><font face="charter">Avr_link.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><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></td>

<td WIDTH="36%"><font face="charter">Vtl_link.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><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></td>

<td WIDTH="36%"><font face="charter">Vti_link.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><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></td>

<td WIDTH="36%"><font face="charter">Tie_link.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><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></td>

<td WIDTH="36%"><font face="charter">Tpu_link.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><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></td>

<td WIDTH="36%"><font face="charter">Ugl_link.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><font face="charter">detect_port</font></td>

<td WIDTH="36%"><font face="charter">probe_cable.c</font></td>
</tr>

<tr VALIGN=TOP>
<td WIDTH="64%"><font face="charter">detect_cable</font></td>

<td WIDTH="36%"></td>
</tr>
</table>

<br>&nbsp;
<br>&nbsp;
<p><b><font face="charter">Appendix F: Error Messages</font></b>
<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><span STYLE="font-weight: medium"><font face="charter">L = Linux</font>
<br><font face="charter">W = Windows9x or Windows NT4</font></span>
<br>&nbsp;
<table BORDER CELLSPACING=3 CELLPADDING=4 WIDTH="100%" >
<caption><COL WIDTH=92*><COL WIDTH=21*><COL WIDTH=27*><COL WIDTH=117*><THEAD>
<br></THEAD><TBODY>
<br></TBODY></caption>

<tr VALIGN=TOP>
<th WIDTH="36%"><font face="charter">Error code</font></th>

<th WIDTH="8%"><font face="charter">Value</font></th>

<th WIDTH="10%">
<center><font face="charter">L &amp; W</font></center>
</th>

<th WIDTH="46%"><font face="charter">Explanation</font></th>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_ABORT</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="-1" SDNUM="1033;">
<div align=right><font face="charter">-1</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Operation aborted</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_ROOT</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="1" SDNUM="1033;">
<div align=right><font face="charter">1</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Root permissions required</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_SND_BIT_TIMEOUT</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="2" SDNUM="1033;">
<div align=right><font face="charter">2</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Send bit timeout</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_RCV_BIT_TIMEOUT</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="3" SDNUM="1033;">
<div align=right><font face="charter">3</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Receive bit timeout</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_OPEN_SER_DEVICE</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="32" SDNUM="1033;">
<div align=right><font face="charter">32</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Unable to open a serial
device (/dev/ttySx)</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_SND_BYT</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="33" SDNUM="1033;">
<div align=right><font face="charter">33</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Send byte error</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_RCV_BYT</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="34" SDNUM="1033;">
<div align=right><font face="charter">34</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Receive byte error</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_SND_BYT_TIMEOUT</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="36" SDNUM="1033;">
<div align=right><font face="charter">36</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Send byte timeout</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_RCV_BYT_TIMEOUT</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="35" SDNUM="1033;">
<div align=right><font face="charter">35</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Receive byte timeout</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_CREATE_FILE</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="41" SDNUM="1033;">
<div align=right><font face="charter">41</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Unable to open a COM port
(COMx)</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_OPEN_COM_PORT</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="42" SDNUM="1033;">
<div align=right><font face="charter">42</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Unable to open a COM port
(COMx)</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_READ_FILE</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="47" SDNUM="1033;">
<div align=right><font face="charter">47</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Error while reading the
COM port</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_OPEN_TIDEV_DEV</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="48" SDNUM="1033;">
<div align=right><font face="charter">48</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Error while opening a 'tidev'
char device</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_VT0_ALREADY_USED&nbsp;</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="49" SDNUM="1033;">
<div align=right><font face="charter">49</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Error when the pipe is
already used</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_VT1_ALREADY_USED</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="50" SDNUM="1033;">
<div align=right><font face="charter">50</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Error when the pipe is
already used</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_OPEN_PIPE</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="51" SDNUM="1033;">
<div align=right><font face="charter">51</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Unable to open a pipe</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_PIPE_FCNTL</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="52" SDNUM="1033;">
<div align=right><font face="charter">52</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Unable to modify the pipe
characteristics</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_OPP_NOT_AVAIL</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="53" SDNUM="1033;">
<div align=right><font face="charter">53</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L/W</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">No answer</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_CLOSE_PIPE</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="54" SDNUM="1033;">
<div align=right><font face="charter">54</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">&nbsp;</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">Unable to close a pipe</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_BYTE_LOST</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="55" SDNUM="1033;">
<div align=right><font face="charter">55</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">A byte might have been
lost due to check_port</font></td>
</tr>

<tr>
<td VALIGN=TOP WIDTH="36%"><font face="charter">ERR_ILLEGAL_OP</font></td>

<td VALIGN=BOTTOM WIDTH="8%" SDVAL="56" SDNUM="1033;">
<div align=right><font face="charter">56</font></div>
</td>

<td VALIGN=TOP WIDTH="10%">
<center><font face="charter">L</font></center>
</td>

<td VALIGN=TOP WIDTH="46%"><font face="charter">An illegal argument has
been used</font></td>
</tr>
</table>

<br>&nbsp;
<p><b><font face="charter">Appendix G: Function Index</font></b>
<p><font face="charter">To do...</font>
<center>
<p><b><font face="charter">---------------------</font></b></center>

<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>&nbsp;
<br>&nbsp;
<br>&nbsp;
<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 1.8.5.</font>
<br><font face="charter">Doc version 1.7, 10/09/2001.</font>
<br><font face="charter">This doc has been written with StarOffice 5.2
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>
</body>
</html>