---
name: "ieee1284_wait_status"
section: "3"
platform: "linux"
package: "libieee1284-3-dev"
version: "0.2.11-14.1+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ieee1284_read_status"
---

# ieee1284\_wait\_status(3)

analyse status lines

Part of [ieee1284\_read\_status(3)](/ieee1284_read_status/3.md).

## NAME

ieee1284\_read\_status, ieee1284\_wait\_status - analyse status lines

## SYNOPSIS

```
#include <ieee1284.h>
```

**int ieee1284\_read\_status(struct parport \****port***);**

**int ieee1284\_wait\_status(struct parport \****port***, unsigned char** *mask***, unsigned char** *val***, struct timeval \****timeout***);**

## DESCRIPTION

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.

## RETURN VALUE

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:

**E1284\_NOTIMPL**

The *port* lacks the required capability. This could be due to a limitation of this version of libieee1284, or a hardware limitation.

**E1284\_NOTAVAIL**

Access to the status lines is not available on this port type.

**E1284\_TIMEDOUT**

The *timeout* has elapsed.

**E1284\_INVALIDPORT**

The *port* parameter is invalid (for instance, perhaps the *port* is not claimed).

## NOTES

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.

## AUTHOR

**Tim Waugh** \<twaugh@redhat.com\>

-

  Author.

## COPYRIGHT

Copyright © 2001-2003 Tim Waugh\
