Move serial line control error checks to lower level routines

Moved in preference to introducing errno.h into rig.c.
Hamlib-3.0
Bill Somerville 2014-11-24 00:51:12 +00:00
rodzic 0e0779877d
commit 4e2a6adf12
2 zmienionych plików z 34 dodań i 24 usunięć

Wyświetl plik

@ -537,10 +537,6 @@ int HAMLIB_API rig_open(RIG *rig)
status = ser_set_dtr(&rs->pttport, RIG_PTT_OFF);
else if (rs->pttport.type.ptt == RIG_PTT_SERIAL_RTS)
status = ser_set_rts(&rs->pttport, RIG_PTT_OFF);
if (status != RIG_OK)
{
rig_debug(RIG_DEBUG_ERR, "%s: Cannot set serial control line - %s\n", __func__, strerror(errno));
}
}
break;
case RIG_PTT_PARALLEL:

Wyświetl plik

@ -430,22 +430,29 @@ int ser_close(hamlib_port_t *p)
int HAMLIB_API ser_set_rts(hamlib_port_t *p, int state)
{
unsigned int y = TIOCM_RTS;
int rc;
rig_debug(RIG_DEBUG_VERBOSE, "%s: RTS=%d\n", __func__, state);
#if defined(TIOCMBIS) && defined(TIOCMBIC)
return IOCTL(p->fd, state ? TIOCMBIS : TIOCMBIC, &y) < 0 ?
-RIG_EIO : RIG_OK;
rc = IOCTL(p->fd, state ? TIOCMBIS : TIOCMBIC, &y);
#else
if (IOCTL(p->fd, TIOCMGET, &y) < 0) {
return -RIG_EIO;
}
if (state)
y |= TIOCM_RTS;
else
y &= ~TIOCM_RTS;
return IOCTL(p->fd, TIOCMSET, &y) < 0 ? -RIG_EIO : RIG_OK;
rc = IOCTL(p->fd, TIOCMGET, &y);
if (rc >= 0)
{
if (state)
y |= TIOCM_RTS;
else
y &= ~TIOCM_RTS;
rc = IOCTL(p->fd, TIOCMSET, &y);
}
#endif
if (rc < 0)
{
rig_debug(RIG_DEBUG_ERR, "%s: Cannot change RTS - %s\n", __func__, strerror(errno));
return -RIG_EIO;
}
return RIG_OK;
}
/**
@ -473,22 +480,29 @@ int HAMLIB_API ser_get_rts(hamlib_port_t *p, int *state)
int HAMLIB_API ser_set_dtr(hamlib_port_t *p, int state)
{
unsigned int y = TIOCM_DTR;
int rc;
rig_debug(RIG_DEBUG_VERBOSE, "%s: DTR=%d\n", __func__, state);
#if defined(TIOCMBIS) && defined(TIOCMBIC)
return IOCTL(p->fd, state ? TIOCMBIS : TIOCMBIC, &y) < 0 ?
-RIG_EIO : RIG_OK;
rc = IOCTL(p->fd, state ? TIOCMBIS : TIOCMBIC, &y);
#else
if (IOCTL(p->fd, TIOCMGET, &y) < 0) {
return -RIG_EIO;
}
if (state)
y |= TIOCM_DTR;
else
y &= ~TIOCM_DTR;
return IOCTL(p->fd, TIOCMSET, &y) < 0 ? -RIG_EIO : RIG_OK;
rc = IOCTL(p->fd, TIOCMGET, &y);
if (rc >= 0)
{
if (state)
y |= TIOCM_DTR;
else
y &= ~TIOCM_DTR;
rc = IOCTL(p->fd, TIOCMSET, &y);
}
#endif
if (rc < 0)
{
rig_debug(RIG_DEBUG_ERR, "%s: Cannot change DTR - %s\n", __func__, strerror(errno));
return -RIG_EIO;
}
return RIG_OK;
}
/**