Пример #1
0
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;
}
Пример #2
0
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;
}