Correct error messages when the baudrate cannot be set
This commit is contained in:
parent
af9cebd537
commit
02bca3b11f
14
src/gsm.c
14
src/gsm.c
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user