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