.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "IEEE1284_NEGOTIATI" 3 "" "" ""
.SH NAME
ieee1284_negotiate, ieee1284_terminate \- IEEE 1284 negotiation
.SH "SYNOPSIS"
.ad l
.hy 0

#include <ieee1284\&.h>
.sp
.HP 24
int\ \fBieee1284_negotiate\fR\ (struct\ parport\ *\fIport\fR, int\ \fImode\fR);
.HP 25
void\ \fBieee1284_terminate\fR\ (struct\ parport\ *\fIport\fR);
.ad
.hy

.SH "DESCRIPTION"

.PP
These functions are for negotiating to and terminating from IEEE 1284 data transfer modes\&. The default mode is called compatibility mode, or in other words normal printer protocol\&. It is a host\-to\-peripheral mode only\&. There are special modes that allow peripheral\-to\-host transfer as well, which may be negotiated to using \fBieee1284_negotiate\fR\&. IEEE 1284 negotiation is a process by which the host requests a transfer mode and the peripheral accepts or rejects it\&. An IEEE 1284\-compliant device will require a successful negotiation to a particular mode before it is used for data transfer (but simpler devices may not if they only speak one transfer mode)\&.

.PP
To terminate the special mode and go back to compatilibity mode use \fBieee1284_terminate\fR\&.

.PP
These functions act on the parallel port associated with \fIport\fR, which must be claimed\&.

.PP
With a device strictly complying to IEEE 1284 you will need to call \fBieee1284_terminate\fR in between any two calls to \fBieee1284_negotiate\fR for modes other than \fBM1284_COMPAT\fR\&.

.SH "AVAILABLE MODES"

.SS "Uni-directional modes"

.TP 3
\(bu
\fBM1284_COMPAT\fR: Compatibility mode\&. Normal printer protocol\&. This is not a negotiated mode, but is the default mode in absence of negotiation\&. \fBieee1284_negotiate(port, M1284_COMPAT)\fR is equivalent to \fBieee1284_terminate(port)\fR\&. This host\-to\-peripheral mode is used for sending data to printers, and is historically the mode that has been used for that before IEEE 1284\&.
.TP
\(bu
\fBM1284_NIBBLE\fR: Nibble mode\&. This peripheral\-to\-host mode uses the status lines to read data from the peripheral four bits at a time\&.
.TP
\(bu
\fBM1284_BYTE\fR: Byte mode\&. This peripheral\-to\-host mode uses the data lines in reverse mode to read data from the peripheral a byte at a time\&.
.LP

.SS "Bi-directional modes"

.TP 3
\(bu
\fBM1284_ECP\fR: ECP mode\&. On entry to ECP mode it is a host\-to\-peripheral (i\&.e\&. forward) mode, but it may be set to reverse mode using \fBieee1284_ecp_fwd_to_rev\fR(3)\&. It is common for PC hardware to provide assistance with this mode by the use of a FIFO which the host (or, in reverse mode, the peripheral) may fill, so that the hardware can do the handshaking itself\&.
.TP
\(bu
\fBM1284_EPP\fR: EPP mode\&. In this bi\-directional mode the direction of data transfer is signalled at each byte\&.
.LP

.SS "Mode variations"

.TP 3
\(bu
\fBM1284_FLAG_DEVICEID\fR: Device ID retrieval\&. This flag may be combined with a nibble, byte, or ECP mode to notify the device that it should send its IEEE 1284 Device ID when asked for data\&.
.TP
\(bu
\fBM1284_BECP\fR: Bounded ECP is a modification to ECP that makes it more robust at the point that the direction is changed\&. (Unfortunately it is not yet implemented in the Linux kernel driver\&.)
.TP
\(bu
\fBM1284_ECPRLE\fR: ECP with run length encoding\&. In this mode, consecutive data bytes of the same value may be transferred in only a few cycles\&.
.LP

.SH "RETURN VALUE"

.TP
\fBE1284_OK\fR
The negotiation was successful\&.

.TP
\fBE1284_NOTAVAIL\fR
Negotiation is not available with this port type\&.

.TP
\fBE1284_REJECTED\fR
Negotiation was rejected by the peripheral\&.

.TP
\fBE1284_NEGFAILED\fR
Negotiation failed for some reason\&. Perhaps the device is not IEEE 1284 compliant\&.

.TP
\fBE1284_SYS\fR
A system error occured during negotiation\&.

.TP
\fBE1284_INVALIDPORT\fR
The \fIport\fR parameter is invalid (for instance, perhaps the \fIport\fR is not claimed)\&.

.SH AUTHOR
Tim Waugh <twaugh@redhat\&.com>.
