Provided by: libieee1284-3-dev_0.2.11-12_amd64 bug

NAME

       ieee1284_get_deviceid - retrieve an IEEE 1284 Device ID

SYNOPSIS

       #include <ieee1284.h>

       ssize_t ieee1284_get_deviceid(struct parport *port, int daisy, int flags, char *buffer, size_t len);

DESCRIPTION

       This function is for retrieving the IEEE 1284 Device ID of the specified device. The device is specified
       by the port to which it is attached, and optionally an address (daisy) on the daisy chain of devices on
       that port.

       daisy should be −1 to indicate that the device is not participating in a IEEE 1284.3 daisy chain, meaning
       it is the last (or only) device on the port, or should be a number from 0 to 3 inclusive to indicate that
       it has the specified daisy chain address (0 is next to the port).

       The flags parameter should be a bitwise union of any flags that the program wants to use. Available flags
       are:

       F1284_FRESH
           Guarantee a fresh Device ID. A cached or OS-provided ID will not be used.

       The provided buffer must be at least len bytes long, and will contain the Device ID including the initial
       two-byte length field and a terminating zero byte on successful return, or as much of the above as will
       fit into the buffer.

RETURN VALUE

       A return value less than zero indicates an error as below. Otherwise, the return value is the number of
       bytes of buffer that have been filled. A return value equal to the length of the buffer indicates that
       the Device ID may be longer than the buffer will allow.

       E1284_NOID
           The device did not provide an IEEE 1284 Device ID when interrogated (perhaps by the operating system
           if F1284_FRESH was not specified).

       E1284_NOTIMPL
           One or more of the supplied flags is not supported in this implementation, or if no flags were
           supplied then this function is not implemented for this type of port or this type of system. This can
           also be returned if a daisy chain address is specified but daisy chain Device IDs are not yet
           supported.

       E1284_NOTAVAIL
           F1284_FRESH was specified and the library is unable to access the port to interrogate the device.

       E1284_NOMEM
           There is not enough memory.

       E1284_INIT
           There was a problem initializing the port.

       E1284_INVALIDPORT
           The port parameter is invalid.

NOTES

       Unless the F1284_FRESH flag is given, the library will try to find the device's ID as unobtrusively as
       possible. First it will ask the operating system if it knows it, and then it will try actually asking the
       device for it. Because of this, the Device ID may be partially computed (the length field, for example)
       or even partially missing if the operating system has only remembered some parts of the ID. To guarantee
       that you are getting the bytes that the device sent, use F1284_FRESH. Be aware that the operating system
       may allow any user to inspect the Device IDs that it provides, whereas device access is normally more
       restricted.

       The initial two-byte length field is a big-endian 16 bit unsigned integer provided by the device and may
       not be accurate. In particular, it is meant to indicate the length of the entire string including the
       length field itself; however, some manufacturers exclude the length field or just set the length field to
       some arbitrary number greater than the ID length.

AUTHOR

       Tim Waugh <twaugh@redhat.com>
           Author.

COPYRIGHT

       Copyright © 2001-2003 Tim Waugh

                                                   09/18/2007                            IEEE1284_GET_DEVICEI(3)