
				   libraw1394
				   ==========

1. About libraw1394

	libraw1394 is the only supported interface to the kernel side raw1394 of
the Linux IEEE-1394 subsystem, which provides direct access to the connected
1394 buses to user space.  Through libraw1394/raw1394, applications can directly
send to and receive from other nodes without requiring a kernel driver for the
protocol in question.

	The reason for making a library the interface to the kernel is to avoid
a program dependancy on the kernel version, which would hinder development and
optimization of raw1394.  If development changed the protocol and made it
incompatible with previous versions only the libraw1394 has to be upgraded to
match the kernel version (instead of all applications).


2. Copyleft

	libraw1394 itself is licensed under the Lesser General Public License
(short LGPL, see file COPYING.LIB in the source distribution).  Other files in
the source archives not belonging to but being part of the build procedure of
libraw1394 are under their own licenses, as stated at the top of the individual
files.


3. API documentation

	There is currently no external document describing the library
functions, but you can find documentation for all functions in the header file
raw1394.h.  Some real documentation will come Real Soon Now.

	To clear up some confusion (it wasn't documented before, what was I
thinking), here is a description of the return values of the
raw1394_(read|write|lock) functions and also the errcode parameter of
tag_handler_t or reeqhandler_t:

	If it is negative it signals an error in handling the request locally
(1394 target node not reached) and errno contains a Unix error code just like
with other library functions.  If it is positive it still does not signal
success of the request itself, just that it was properly communicated to the
1394 target node.  To know whether it succeeded the lower 32 bits have to be
further decoded.

	The upper 16 bits contain the acknowledge code from the other node, the
lower 16 bits the response code.  Both of these codes are the standard codes
from the 1394 standard with the exception of 0x10 for the ack which is set on an
access to the local node (there is no 1394 bus involved and therefore no ack
exists).  Most of the acks completely determine the success of the request
(ack_complete or one of the error codes).  The response code has to be
interpreted if the ack is ack_pending or the dummy ack 0x10.  Only in this case
is the response code valid.

	This way of reporting errors will be replaced by a more sensible
approach with (one of the, but hopefully) the next version of libraw.
Documented here only for those who can't wait.


4. Multithreading

	This library should be multithreadable with the restriction that one
raw1394handle_t may be used only within a single thread.  Multiple threads
operating on the same handle would royally mess up the kernel-user protocol.
Simply use separate handles for each thread in which you need to use libraw1394.


5. Maintainer

	Maintainer of libraw1394 is currently Andreas Bombe.  Send suggestions,
bug reports and fixes to andreas.bombe@munich.netsurf.de.  See the file AUTHORS
for a complete list of contributors to libraw1394.

	You can get updates through this project's homepage on SourceForge, see
http://sourceforge.net/project/?group_id=2514 for more information.  You can
also submit bugs through this page.


2000-11-25  Andreas Bombe
