|
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 |
|