ieee1284_read_status, ieee1284_wait_status — analyse status lines
#include <ieee1284.h>
int ieee1284_read_status( | port) ; |
struct parport * | port; |
int ieee1284_wait_status( | port, | |
mask, | ||
val, | ||
timeout) ; |
struct parport * | port; |
unsigned char | mask; |
unsigned char | val; |
struct timeval * | timeout; |
There are five status lines, one of which is usually inverted on PC-style ports. Where they differ, libieee1284 operates on the IEEE 1284 values, not the PC-style inverted values. The status lines are represented by the following enumeration:
enum ieee1284_status_bits { S1284_NFAULT = 0x08, S1284_SELECT = 0x10, S1284_PERROR = 0x20, S1284_NACK = 0x40, S1284_BUSY = 0x80, /* To convert those values into PC-style register values, use this: */ S1284_INVERTED = S1284_BUSY, };
These functions all act on the parallel port associated
with port
, which must be
claimed.
The purpose of ieee1284_wait_status
is to wait until particular status lines have specified
values. Its timeout
parameter may be
modified on return.
For ieee1284_read_status
, the
return value is a non-negative integer with bits set as
appropriate representing the status lines. A negative result
indicates an error.
For ieee1284_wait_status
, the
return value is E1284_OK if the status
lines now reflect the desired values (i.e. status &
mask
is val
),
or a negative result indicating an error.
Possible error codes:
The port
lacks the
required capability. This could be due to a limitation
of this version of libieee1284, or a hardware
limitation.
Access to the status lines is not available on this port type.
The timeout
has
elapsed.
The port
parameter is
invalid (for instance, perhaps the
port
is not claimed).
The nAck pin is often able to trigger interrupts on the
host machine. With operating system help these interrupts
may be visible to the application via the file descriptor
returned by ieee1284_get_irq_fd
.
Under Linux, the conditions are that the parallel port
driver knows which interrupt line to use and is using it, and
that the relevant /dev/parport
device
node is accessible and backed by a device driver.