Blame doc/ieee1284_negotiate.3

Packit d36e9b
.\"     Title: ieee1284_negotiation
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_NEGOTIATION" "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_negotiate, ieee1284_terminate \- IEEE 1284 negotiation
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 23
Packit d36e9b
.BI "int ieee1284_negotiate(struct\ parport\ *" "port" ", int\ " "mode" ");"
Packit d36e9b
.HP 24
Packit d36e9b
.BI "void ieee1284_terminate(struct\ parport\ *" "port" ");"
Packit d36e9b
.SH "DESCRIPTION"
Packit d36e9b
.PP
Packit d36e9b
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
Packit d36e9b
\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).
Packit d36e9b
.PP
Packit d36e9b
To terminate the special mode and go back to compatilibity mode use
Packit d36e9b
\fBieee1284_terminate\fR.
Packit d36e9b
.PP
Packit d36e9b
These functions act on the parallel port associated with
Packit d36e9b
\fIport\fR, which must be claimed.
Packit d36e9b
.PP
Packit d36e9b
With a device strictly complying to IEEE 1284 you will need to call
Packit d36e9b
\fBieee1284_terminate\fR
Packit d36e9b
in between any two calls to
Packit d36e9b
\fBieee1284_negotiate\fR
Packit d36e9b
for modes other than
Packit d36e9b
\fBM1284_COMPAT\fR.
Packit d36e9b
.SH "AVAILABLE MODES"
Packit d36e9b
.SS "Uni\-directional modes"
Packit d36e9b
.RS 4
Packit d36e9b
\h'-04'\(bu\h'+03'\fBM1284_COMPAT\fR: Compatibility mode. Normal printer protocol. This is not a negotiated mode, but is the default mode in absence of negotiation.
Packit d36e9b
\fBieee1284_negotiate(port, M1284_COMPAT)\fR
Packit d36e9b
is equivalent to
Packit d36e9b
\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.
Packit d36e9b
.RE
Packit d36e9b
.RS 4
Packit d36e9b
\h'-04'\(bu\h'+03'\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.
Packit d36e9b
.RE
Packit d36e9b
.RS 4
Packit d36e9b
\h'-04'\(bu\h'+03'\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.
Packit d36e9b
.RE
Packit d36e9b
.SS "Bi\-directional modes"
Packit d36e9b
.RS 4
Packit d36e9b
\h'-04'\(bu\h'+03'\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
Packit d36e9b
\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.
Packit d36e9b
.RE
Packit d36e9b
.RS 4
Packit d36e9b
\h'-04'\(bu\h'+03'\fBM1284_EPP\fR: EPP mode. In this bi\-directional mode the direction of data transfer is signalled at each byte.
Packit d36e9b
.RE
Packit d36e9b
.SS "Mode variations"
Packit d36e9b
.RS 4
Packit d36e9b
\h'-04'\(bu\h'+03'\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.
Packit d36e9b
.RE
Packit d36e9b
.RS 4
Packit d36e9b
\h'-04'\(bu\h'+03'\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.)
Packit d36e9b
.RE
Packit d36e9b
.RS 4
Packit d36e9b
\h'-04'\(bu\h'+03'\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.
Packit d36e9b
.RE
Packit d36e9b
.SH "RETURN VALUE"
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_OK\fR
Packit d36e9b
.RS 4
Packit d36e9b
The negotiation was successful.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_NOTAVAIL\fR
Packit d36e9b
.RS 4
Packit d36e9b
Negotiation is not available with this port type.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_REJECTED\fR
Packit d36e9b
.RS 4
Packit d36e9b
Negotiation was rejected by the peripheral.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_NEGFAILED\fR
Packit d36e9b
.RS 4
Packit d36e9b
Negotiation failed for some reason. Perhaps the device is not IEEE 1284 compliant.
Packit d36e9b
.RE
Packit d36e9b
.PP
Packit d36e9b
\fBE1284_SYS\fR
Packit d36e9b
.RS 4
Packit d36e9b
A system error occured during negotiation.
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
.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