From fc6d87addfafcdfe357afc56751d71a6e222b445 Mon Sep 17 00:00:00 2001 From: c vw Date: Mon, 29 May 2017 09:37:32 +0200 Subject: [PATCH] Do not set DTR/RTS on dedicated PTT port if it is already closed. --- src/rig.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/rig.c b/src/rig.c index 28ab7486c..39bb8919f 100644 --- a/src/rig.c +++ b/src/rig.c @@ -743,18 +743,22 @@ int HAMLIB_API rig_close(RIG *rig) case RIG_PTT_RIG_MICDATA: break; case RIG_PTT_SERIAL_RTS: - ser_set_rts(&rs->pttport, 0); - if (rs->pttport.fd != rs->rigport.fd) - { - port_close(&rs->pttport, RIG_PORT_SERIAL); - } + // If port is already closed, do nothing + if (rs->pttport.fd > -1) { + ser_set_rts(&rs->pttport, 0); + if (rs->pttport.fd != rs->rigport.fd) { + port_close(&rs->pttport, RIG_PORT_SERIAL); + } + } break; case RIG_PTT_SERIAL_DTR: - ser_set_dtr(&rs->pttport, 0); - if (rs->pttport.fd != rs->rigport.fd) - { - port_close(&rs->pttport, RIG_PORT_SERIAL); - } + // If port is already closed, do nothing + if (rs->pttport.fd > -1) { + ser_set_dtr(&rs->pttport, 0); + if (rs->pttport.fd != rs->rigport.fd) { + port_close(&rs->pttport, RIG_PORT_SERIAL); + } + } break; case RIG_PTT_PARALLEL: par_ptt_set(&rs->pttport, RIG_PTT_OFF);