ieee1284_read_control, ieee1284_write_control, ieee1284_frob_control, ieee1284_do_nack_handshake - manipulate control lines
#include <ieee1284.h>
There are four control lines, three of which are usually inverted on PC-style ports. Where they differ, libieee1284 operates on the IEEE 1284 values, not the PC-style inverted values. The control lines are represented by the following enumeration:
enum ieee1284_control_bits { C1284_NSTROBE = 0x01, C1284_NAUTOFD = 0x02, C1284_NINIT = 0x04, C1284_NSELECTIN = 0x08, /* To convert those values into PC-style register values, use this: */ C1284_INVERTED = (C1284_NSTROBE| C1284_NAUTOFD| C1284_NSELECTIN), };
These functions all act on the parallel port associated with port, which must be claimed.
The current values on the control lines are available by calling ieee1284_read_control, and may be set by calling ieee1284_write_control.
To adjust the values on a set of control lines, use ieee1284_frob_control. The effect of this can be expressed by: ctr = ((ctr & ~mask) ^ val); that is, the bits in mask are unset, and then those in val are inverted.
The special function ieee1284_do_nack_handshake is for responding very quickly in a protocol where the peripheral sets nAck and the host must respond by setting a control line. Its operation, which relies on the host machine knowing which interrupt nAck generates, is as follows:
On Linux using the ppdev driver, this is performed by the device driver in the kernel, and so is faster than normally possible in a user-space library.
The return value of ieee1284_read_control, if non-negative, is a number representing the value on the control lines.
Possible error codes for ieee1284_read_control:
Possible error codes for ieee1284_do_nack_handshake:
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |