#include <ieee1284.h>
enum ieee1284_control_bits { C1284_NSTROBE = 0x01, C1284_NAUTOFD = 0x02, C1284_NINIT = 0x04, C1284_NSELECTIN = 0x08, /* To convert those values into PC-style register values, use this: */ C1284_INVERTED = (C1284_NSTROBE| C1284_NAUTOFD| C1284_NSELECTIN), };
These functions all act on the parallel port associated with port, which must be claimed.
The current values on the control lines are available by calling ieee1284_read_control, and may be set by calling ieee1284_write_control.
To adjust the values on a set of control lines, use ieee1284_frob_control. The effect of this can be expressed by: ctr = ((ctr & ~mask) ^ val); that is, the bits in mask are unset, and then those in val are inverted.
The special function ieee1284_do_nack_handshake is for responding very quickly in a protocol where the peripheral sets nAck and the host must respond by setting a control line. Its operation, which relies on the host machine knowing which interrupt nAck generates, is as follows:
On Linux using the ppdev driver, this is performed by the device driver in the kernel, and so is faster than normally possible in a user-space library.
The return value of ieee1284_read_control, if non-negative, is a number representing the value on the control lines.
Possible error codes for ieee1284_read_control:
E1284_NOTAVAIL
E1284_INVALIDPORT
Possible error codes for ieee1284_do_nack_handshake:
E1284_OK
E1284_NOTAVAIL
E1284_INVALIDPORT
Tim Waugh <twaugh@redhat.com>