int serialMonitorWaitLines (SerialDevice *serial) { #ifdef TIOCMIWAIT if (ioctl(serial->fileDescriptor, TIOCMIWAIT, serial->waitLines) != -1) return 1; logSystemError("TIOCMIWAIT"); #else /* TIOCMIWAIT */ SerialLines old = serial->linesState & serial->waitLines; while (serialGetLines(serial)) { if ((serial->linesState & serial->waitLines) != old) return 1; } #endif /* TIOCMIWAIT */ return 0; }
int serialPutLines (SerialDevice *serial, SerialLines high, SerialLines low) { #ifdef TIOCMSET if (serialGetLines(serial)) { SerialLines lines = serial->linesState; lines |= high; lines &= ~low; if (ioctl(serial->fileDescriptor, TIOCMSET, &lines) != -1) return 1; logSystemError("TIOCMSET"); } #else /* TIOCMSET */ #warning setting modem lines not supported on this platform #endif /* TIOCMSET */ return 0; }
static int serialReadLines (SerialDevice *serial, SerialLines *lines) { int result = serialGetLines(serial); if (result) *lines = serial->linesState; return result; }