Blame doc/ieee1284_nibble_read.3

Packit d36e9b
.\"     Title: ieee1284_transfer
Packit d36e9b
.\"    Author: Tim Waugh <twaugh@redhat.com>
Packit d36e9b
.\" Generator: DocBook XSL Stylesheets v1.72.0 <http://docbook.sf.net/>
Packit d36e9b
.\"      Date: 09/18/2007
Packit d36e9b
.\"    Manual: Functions
Packit d36e9b
.\"    Source: 
Packit d36e9b
.\"
Packit d36e9b
.TH "IEEE1284_TRANSFER" "3" "09/18/2007" "" "Functions"
Packit d36e9b
.\" disable hyphenation
Packit d36e9b
.nh
Packit d36e9b
.\" disable justification (adjust text to left margin only)
Packit d36e9b
.ad l
Packit d36e9b
.SH "NAME"
Packit d36e9b
ieee1284_nibble_read, ieee1284_compat_write, ieee1284_byte_read, ieee1284_epp_read_data, ieee1284_epp_write_data, ieee1284_epp_read_addr, ieee1284_epp_write_addr, ieee1284_ecp_read_data, ieee1284_ecp_write_data, ieee1284_ecp_read_addr, ieee1284_ecp_write_addr \- data transfer functions
Packit d36e9b
.SH "SYNOPSIS"
Packit d36e9b
.sp
Packit d36e9b
.ft B
Packit d36e9b
.nf
Packit d36e9b
#include <ieee1284.h>
Packit d36e9b
.fi
Packit d36e9b
.ft
Packit d36e9b
.HP 29
Packit d36e9b
.BI "ssize_t ieee1284_nibble_read(struct\ parport\ *" "port" ", int\ " "flags" ", char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 30
Packit d36e9b
.BI "ssize_t ieee1284_compat_write(struct\ parport\ *" "port" ", int\ " "flags" ", const\ char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 27
Packit d36e9b
.BI "ssize_t ieee1284_byte_read(struct\ parport\ *" "port" ", int\ " "flags" ", char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 31
Packit d36e9b
.BI "ssize_t ieee1284_epp_read_data(struct\ parport\ *" "port" ", int\ " "flags" ", char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 32
Packit d36e9b
.BI "ssize_t ieee1284_epp_write_data(struct\ parport\ *" "port" ", int\ " "flags" ", const\ char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 31
Packit d36e9b
.BI "ssize_t ieee1284_epp_read_addr(struct\ parport\ *" "port" ", int\ " "flags" ", char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 32
Packit d36e9b
.BI "ssize_t ieee1284_epp_write_addr(struct\ parport\ *" "port" ", int\ " "flags" ", const\ char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 31
Packit d36e9b
.BI "ssize_t ieee1284_ecp_read_data(struct\ parport\ *" "port" ", int\ " "flags" ", char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 32
Packit d36e9b
.BI "ssize_t ieee1284_ecp_write_data(struct\ parport\ *" "port" ", int\ " "flags" ", const\ char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 31
Packit d36e9b
.BI "ssize_t ieee1284_ecp_read_addr(struct\ parport\ *" "port" ", int\ " "flags" ", char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.HP 32
Packit d36e9b
.BI "ssize_t ieee1284_ecp_write_addr(struct\ parport\ *" "port" ", int\ " "flags" ", const\ char\ *" "buffer" ", size_t\ " "len" ");"
Packit d36e9b
.SH "DESCRIPTION"
Packit d36e9b
.PP
Packit d36e9b
This set of functions is for tranferring bytes in the relevant transfer mode. For ECP and EPP modes two types of transfer are possible:
Packit d36e9b
data
Packit d36e9b
and
Packit d36e9b
address
Packit d36e9b
(usually referred to as
Packit d36e9b
channel
Packit d36e9b
in ECP).
Packit d36e9b
.PP
Packit d36e9b
The supplied
Packit d36e9b
\fIport\fR
Packit d36e9b
must be a claimed port.
Packit d36e9b
.PP
Packit d36e9b
The supplied
Packit d36e9b
\fIbuffer\fR
Packit d36e9b
must be at least
Packit d36e9b
\fIlen\fR
Packit d36e9b
bytes long. When reading, the transferred data is stored in the buffer; when writing the data to be transferred is taken from the buffer.
Packit d36e9b
.PP
Packit d36e9b
For reads (peripheral to host): if no data is available and
Packit d36e9b
\fBF1284_NONBLOCK\fR
Packit d36e9b
is not in effect, the inactivity timer is started. If data becomes available before the inactivity time\-out elapses it is read; otherwise the return value will be
Packit d36e9b
\fBE1284_TIMEDOUT\fR.
Packit d36e9b
.PP
Packit d36e9b
For writes (host to peripheral): if the peripheral is not willing to accept data and
Packit d36e9b
\fBF1284_NONBLOCK\fR
Packit d36e9b
is not in effect, the inactivity timer is started. If the peripheral indicates that it is willing to accept data before the inactivity time\-out elapses it is sent; otherwise the return value will be
Packit d36e9b
\fBE1284_TIMEDOUT\fR
Packit d36e9b
.PP
Packit d36e9b
The
Packit d36e9b
\fIflags\fR
Packit d36e9b
may alter the behaviour slightly:
Packit d36e9b
.PP
Packit d36e9b
\fBF1284_NONBLOCK\fR
Packit d36e9b
.RS 4
Packit d36e9b
For reads (peripheral to host): if no data is available, return immediately (with
Packit d36e9b
\fBE1284_TIMEDOUT\fR).
Packit d36e9b
.sp
Packit d36e9b
For writes (host to peripheral): if the peripheral is not willing to accept data, return immediately (with
Packit d36e9b
\fBE1284_TIMEDOUT\fR).
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBF1284_SWE\fR
Packit d36e9b
.RS 4
Packit d36e9b
Don't use hardware assistance for the transfer, but instead set the parallel port pins according to the wire protocol.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBF1284_RLE\fR (for ECP only)
Packit d36e9b
.RS 4
Packit d36e9b
Use run length encoding. If the peripheral is in ECP mode with RLE, calls to
Packit d36e9b
\fBieee1284_ecp_read_data\fR
Packit d36e9b
\fImust\fR
Packit d36e9b
set this flag in order for the RLE from the peripheral to be interpreted correctly, and calls to
Packit d36e9b
\fBieee1284_ecp_write_data\fR
Packit d36e9b
\fImay\fR
Packit d36e9b
set this flag in order to take advantage of RLE.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBF1284_FASTEPP\fR (for EPP only)
Packit d36e9b
.RS 4
Packit d36e9b
Use multi\-byte transfers. Several bytes at a time are transferred using hardware assistance, if supporting hardware is present. The price of this increased speed is that the return value will be less reliable when this flag is used.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
For ECP mode, a given direction is in force at any particular time, and it is up to the application to ensure that it is only writing when in forward mode, and reading when in reverse mode.
Packit d36e9b
.SH "RETURN VALUE"
Packit d36e9b
.PP
Packit d36e9b
The return value is the number of bytes successfully transferred or, if negative, one of:
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_NOTIMPL\fR
Packit d36e9b
.RS 4
Packit d36e9b
This transfer mode and flags combination is not yet implemented in libieee1284.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_TIMEDOUT\fR
Packit d36e9b
.RS 4
Packit d36e9b
Timed out waiting for peripheral to handshake.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_NOMEM\fR
Packit d36e9b
.RS 4
Packit d36e9b
Not enough memory is available.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_SYS\fR
Packit d36e9b
.RS 4
Packit d36e9b
There was a problem at the operating system level. The global variable
Packit d36e9b
\fIerrno\fR
Packit d36e9b
has been set appropriately.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_INVALIDPORT\fR
Packit d36e9b
.RS 4
Packit d36e9b
The
Packit d36e9b
\fIport\fR
Packit d36e9b
parameter is invalid (for instance, perhaps the
Packit d36e9b
\fIport\fR
Packit d36e9b
is not claimed).
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
If any bytes are successfully transferred, that number is returned. An error is returned only if no bytes are transferred.
Packit d36e9b
.PP
Packit d36e9b
For host\-to\-peripheral transfers, all data is at the peripheral by the time the call returns.
Packit d36e9b
.SH "SEE ALSO"
Packit d36e9b
.PP
Packit d36e9b
\fBieee1284_ecp_fwd_to_rev\fR(3)
Packit d36e9b
.SH "AUTHOR"
Packit d36e9b
.PP
Packit d36e9b
\fBTim Waugh\fR <\&twaugh@redhat.com\&>
Packit d36e9b
.sp -1n
Packit d36e9b
.IP "" 4
Packit d36e9b
Author.
Packit d36e9b
.SH "COPYRIGHT"
Packit d36e9b
Copyright \(co 2001\-2003 Tim Waugh
Packit d36e9b
.br
Packit d36e9b