ieee1284_negotiate (3) - Linux Manuals
ieee1284_negotiate: IEEE 1284 negotiation
NAME
ieee1284_negotiate, ieee1284_terminate - IEEE 1284 negotiation
SYNOPSIS
#include <ieee1284.h>
-
int ieee1284_negotiate(struct parport
* port, intmode); - void ieee1284_terminate(struct parport
* port); - void ieee1284_terminate(struct parport
DESCRIPTION
To terminate the special mode and go back to compatilibity mode use ieee1284_terminate.
These functions act on the parallel port associated with port, which must be claimed.
With a device strictly complying to IEEE 1284 you will need to call ieee1284_terminate in between any two calls to ieee1284_negotiate for modes other than M1284_COMPAT.
AVAILABLE MODES
Uni-directional modes
- • M1284_COMPAT: Compatibility mode. Normal printer protocol. This is not a negotiated mode, but is the default mode in absence of negotiation. ieee1284_negotiate(port, M1284_COMPAT) is equivalent to ieee1284_terminate(port). 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.
- • M1284_NIBBLE: Nibble mode. This peripheral-to-host mode uses the status lines to read data from the peripheral four bits at a time.
- • M1284_BYTE: 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.
Bi-directional modes
- • M1284_ECP: 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 ieee1284_ecp_fwd_to_rev(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.
- • M1284_EPP: EPP mode. In this bi-directional mode the direction of data transfer is signalled at each byte.
Mode variations
- • M1284_FLAG_DEVICEID: 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.
- • M1284_BECP: 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.)
- • M1284_ECPRLE: ECP with run length encoding. In this mode, consecutive data bytes of the same value may be transferred in only a few cycles.
RETURN VALUE
E1284_OK
- The negotiation was successful.
E1284_NOTAVAIL
- Negotiation is not available with this port type.
E1284_REJECTED
- Negotiation was rejected by the peripheral.
E1284_NEGFAILED
- Negotiation failed for some reason. Perhaps the device is not IEEE 1284 compliant.
E1284_SYS
- A system error occured during negotiation.
E1284_INVALIDPORT
- The port parameter is invalid (for instance, perhaps the port is not claimed).
AUTHOR
Tim Waugh <twaugh [at] redhat.com>
- Author.
COPYRIGHT
Copyright © 2001-2003 Tim Waugh