Exemplo n.º 1
0
Arquivo: comm.cpp Projeto: gabn/fslurp
void
Comm::serialDeviceInit(Args& args)
{
	struct termios	termio;
	const char*	deviceName = args.getSerialPortName();
	const char*	baudRate = args.getBaudRate();

	if ((fd_ = open(deviceName, O_RDWR|O_NOCTTY)) == -1)
	{
		Args::dieMessage(
			Args::ExitCommFailure,
			"open of %s failed: %s\n",
			deviceName,
			strerror(errno));
	}

	if (tcflush(fd_, TCIFLUSH) == -1)
	{
		Args::dieMessage(
			Args::ExitCommFailure,
			"tcflush failed: %s\n",
			strerror(errno));
	}

	memset(&termio, 0, sizeof (termio));

	termio.c_cflag = getBaudRateFlag(baudRate) | CS8 | CLOCAL | CREAD;
	termio.c_iflag = IGNPAR;
	termio.c_oflag = 0;
	termio.c_lflag = 0;
	termio.c_cc[VMIN] = 0;
	termio.c_cc[VTIME] = 1;

	if (tcsetattr(fd_, TCSANOW, &termio) == -1)
	{
		Args::dieMessage(
			Args::ExitCommFailure,
			"tcsetattr failed: %s\n",
			strerror(errno));
	}
}