int32_t set_signal(int fd, MonoSerialSignal signal, boolean value) { #ifdef TOMIC_DEVICE_V1 if (signal == Dtr) { if (!value) return serial_command("pullup"); else return serial_command("pulldown"); } #endif int signals, expected, activated; expected = get_signal_code(signal); if (ioctl(fd, TIOCMGET, &signals) == -1) return -1; activated = (signals & expected) != 0; if (activated == value) /* Already set */ return 1; if (value) signals |= expected; else signals &= ~expected; if (ioctl(fd, TIOCMSET, &signals) == -1) return -1; return 1; }
gint32 set_signal (int fd, MonoSerialSignal signal, gboolean value) { int signals, expected, activated; expected = get_signal_code (signal); if (ioctl (fd, TIOCMGET, &signals) == -1) return -1; activated = (signals & expected) != 0; if (activated == value) /* Already set */ return 1; if (value) signals |= expected; else signals &= ~expected; if (ioctl (fd, TIOCMSET, &signals) == -1) return -1; return 1; }