Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

ieee1284_get_deviceid(3) [suse man page]

IEEE1284_GET_DEVICEI(3) 					     Functions						   IEEE1284_GET_DEVICEI(3)

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 (C) 2001-2003 Tim Waugh 09/18/2007 IEEE1284_GET_DEVICEI(3)

Check Out this Related Man Page

IEEE1284_NEGOTIATION(3) 					     Functions						   IEEE1284_NEGOTIATION(3)

NAME
ieee1284_negotiate, ieee1284_terminate - IEEE 1284 negotiation SYNOPSIS
#include <ieee1284.h> int ieee1284_negotiate(struct parport *port, int mode); void ieee1284_terminate(struct parport *port); DESCRIPTION
These functions are for negotiating to and terminating from IEEE 1284 data transfer modes. The default mode is called compatibility mode, or in other words normal printer protocol. It is a host-to-peripheral mode only. There are special modes that allow peripheral-to-host transfer as well, which may be negotiated to using ieee1284_negotiate. IEEE 1284 negotiation is a process by which the host requests a transfer mode and the peripheral accepts or rejects it. An IEEE 1284-compliant device will require a successful negotiation to a particular mode before it is used for data transfer (but simpler devices may not if they only speak one transfer mode). To terminate the special mode and go back to compatilibity mode use ieee1284_terminate. These functions act on the parallel port associated with port, which must be claimed. With a device strictly complying to IEEE 1284 you will need to call ieee1284_terminate in between any two calls to ieee1284_negotiate for modes other than M1284_COMPAT. AVAILABLE MODES
Uni-directional modes o M1284_COMPAT: Compatibility mode. Normal printer protocol. This is not a negotiated mode, but is the default mode in absence of negotiation. ieee1284_negotiate(port, M1284_COMPAT) is equivalent to ieee1284_terminate(port). This host-to-peripheral mode is used for sending data to printers, and is historically the mode that has been used for that before IEEE 1284. o M1284_NIBBLE: Nibble mode. This peripheral-to-host mode uses the status lines to read data from the peripheral four bits at a time. o M1284_BYTE: Byte mode. This peripheral-to-host mode uses the data lines in reverse mode to read data from the peripheral a byte at a time. Bi-directional modes o M1284_ECP: ECP mode. On entry to ECP mode it is a host-to-peripheral (i.e. forward) mode, but it may be set to reverse mode using ieee1284_ecp_fwd_to_rev(3). It is common for PC hardware to provide assistance with this mode by the use of a FIFO which the host (or, in reverse mode, the peripheral) may fill, so that the hardware can do the handshaking itself. o M1284_EPP: EPP mode. In this bi-directional mode the direction of data transfer is signalled at each byte. Mode variations o M1284_FLAG_DEVICEID: Device ID retrieval. This flag may be combined with a nibble, byte, or ECP mode to notify the device that it should send its IEEE 1284 Device ID when asked for data. o M1284_BECP: Bounded ECP is a modification to ECP that makes it more robust at the point that the direction is changed. (Unfortunately it is not yet implemented in the Linux kernel driver.) o M1284_ECPRLE: ECP with run length encoding. In this mode, consecutive data bytes of the same value may be transferred in only a few cycles. RETURN VALUE
E1284_OK The negotiation was successful. E1284_NOTAVAIL Negotiation is not available with this port type. E1284_REJECTED Negotiation was rejected by the peripheral. E1284_NEGFAILED Negotiation failed for some reason. Perhaps the device is not IEEE 1284 compliant. E1284_SYS A system error occured during negotiation. E1284_INVALIDPORT The port parameter is invalid (for instance, perhaps the port is not claimed). AUTHOR
Tim Waugh <twaugh@redhat.com> Author. COPYRIGHT
Copyright (C) 2001-2003 Tim Waugh 09/18/2007 IEEE1284_NEGOTIATION(3)
Man Page