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 speci-
fied device. The device is specified by the port to which it is at-
tached, 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 termi-
nating 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 interro-
gated (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 im-
plementation, or if no flags were supplied then this function is
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 operat-
ing system if it knows it, and then it will try actually asking the de-
vice for it. Because of this, the Device ID may be partially computed
(the length field, for example) or even partially missing if the oper-
ating 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 re-
stricted.
The initial two-byte length field is a big-endian 16 bit unsigned inte-
ger 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>.
IEEE1284_GET_DEVIC(3)
Man(1) output converted with
man2html