Correct error messages when the baudrate cannot be set

This commit is contained in:
Pierre Pronchery 2010-05-09 02:04:08 +00:00
parent af9cebd537
commit 02bca3b11f

View File

@ -1236,7 +1236,7 @@ static int _gsm_trigger_csq(GSM * gsm, char const * result)
/* callbacks */ /* callbacks */
/* on_reset */ /* on_reset */
static int _reset_do(int fd, unsigned int baudrate, unsigned int hwflow); static int _reset_do(GSM * gsm, int fd);
static gboolean _reset_settle(gpointer data); static gboolean _reset_settle(gpointer data);
static gboolean _on_reset(gpointer data) static gboolean _on_reset(gpointer data)
@ -1259,7 +1259,7 @@ static gboolean _on_reset(gpointer data)
gsm->channel = NULL; gsm->channel = NULL;
} }
if((fd = open(gsm->device, O_RDWR | O_NONBLOCK)) < 0 if((fd = open(gsm->device, O_RDWR | O_NONBLOCK)) < 0
|| _reset_do(fd, gsm->baudrate, gsm->hwflow) != 0) || _reset_do(gsm, fd) != 0)
{ {
snprintf(buf, sizeof(buf), "%s%s%s", gsm->device, ": ", snprintf(buf, sizeof(buf), "%s%s%s", gsm->device, ": ",
strerror(errno)); strerror(errno));
@ -1285,7 +1285,7 @@ static gboolean _on_reset(gpointer data)
return FALSE; return FALSE;
} }
static int _reset_do(int fd, unsigned int baudrate, unsigned int hwflow) static int _reset_do(GSM * gsm, int fd)
{ {
struct stat st; struct stat st;
int fl; int fl;
@ -1306,7 +1306,7 @@ static int _reset_do(int fd, unsigned int baudrate, unsigned int hwflow)
term.c_cflag |= CS8; term.c_cflag |= CS8;
term.c_cflag |= CREAD; term.c_cflag |= CREAD;
term.c_cflag |= CLOCAL; term.c_cflag |= CLOCAL;
if(hwflow) if(gsm->hwflow)
term.c_cflag |= CRTSCTS; term.c_cflag |= CRTSCTS;
else else
term.c_cflag &= ~CRTSCTS; term.c_cflag &= ~CRTSCTS;
@ -1316,9 +1316,9 @@ static int _reset_do(int fd, unsigned int baudrate, unsigned int hwflow)
term.c_cc[VMIN] = 1; term.c_cc[VMIN] = 1;
term.c_cc[VTIME] = 0; term.c_cc[VTIME] = 0;
if(cfsetispeed(&term, 0) != 0) /* same speed as output speed */ if(cfsetispeed(&term, 0) != 0) /* same speed as output speed */
phone_error(NULL, "/dev/modem", 0); /* go on anyway */ phone_error(NULL, gsm->device, 0); /* go on anyway */
if(cfsetospeed(&term, baudrate) != 0) if(cfsetospeed(&term, gsm->baudrate) != 0)
phone_error(NULL, "/dev/modem", 0); /* go on anyway */ phone_error(NULL, gsm->device, 0); /* go on anyway */
if(tcsetattr(fd, TCSAFLUSH, &term) != 0) if(tcsetattr(fd, TCSAFLUSH, &term) != 0)
return 1; return 1;
} }