static int rs485_init_port(rs485_port_t * p)
{
struct termios oldtio, newtio;
if (!(p->fd)) {
/* port needs initialized of fd is NULL */
svs_debug(cl_d_rs485, "Initializing port %s", p->name);
p->fd = open(p->name, O_RDWR);
if (p->fd < 0) {
g_error("Error opening serial port %s\n", p->name);
return -1;
}
//tcgetattr(fd,&oldtio); /* save current serial port settings */
bzero(&newtio, sizeof(newtio)); /* clear struct for new port settings */
/* man termios get more info on below settings */
newtio.c_cflag = B115200 | CS8 | CLOCAL | CREAD;
newtio.c_iflag = 0;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
newtio.c_cc[VMIN] = 128;
/* now clean the modem line and activate the settings for the port */
tcflush(p->fd, TCIFLUSH);
tcsetattr(p->fd,TCSANOW,&newtio);
/* disable read blocking */
fcntl(p->fd, F_SETFL, FNDELAY);
}
return 0;
}