[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. c7c5cd81bc92c8bf4af71
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Michael B. <mdb...@us...> - 2021-03-18 12:13:04
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Hamlib -- Ham radio control libraries". The branch, master has been updated via c7c5cd81bc92c8bf4af7134e89e7d259b081aad3 (commit) via ab59951e97daffbffa3487418be91eef7ca16df0 (commit) via 4201beafcdc418c2a32df702041fa384e751dfc5 (commit) via 90112b576953d6e5d647978d0654b45484edb5d7 (commit) via 27192d0c813aa79c6eb09d85077c7a0fae5489e7 (commit) via 0942553687f1763121a56247c3d5a70dbabd25f8 (commit) via 5dfb3b85671e8542a0016aae4d63f5ef76bab023 (commit) from 8817f121809998ac25700a6eff868e119fd0f892 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c7c5cd81bc92c8bf4af7134e89e7d259b081aad3 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Mar 18 07:09:58 2021 -0500 In rig.c change RETURNFUNC calls with functions into separate lines https://github.com/Hamlib/Hamlib/issues/615 diff --git a/src/rig.c b/src/rig.c index b762d9e0..b877d5b8 100644 --- a/src/rig.c +++ b/src/rig.c @@ -3099,7 +3099,8 @@ int HAMLIB_API rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_dcd(rig, vfo, dcd)); + retcode = caps->get_dcd(rig, vfo, dcd); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3146,11 +3147,13 @@ int HAMLIB_API rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) case RIG_DCD_PARALLEL: - RETURNFUNC(par_dcd_get(&rig->state.dcdport, dcd)); + retcode=par_dcd_get(&rig->state.dcdport, dcd); + RETURNFUNC(retcode); case RIG_DCD_GPIO: case RIG_DCD_GPION: - RETURNFUNC(gpio_dcd_get(&rig->state.dcdport, dcd)); + retcode = gpio_dcd_get(&rig->state.dcdport, dcd); + RETURNFUNC(retcode); case RIG_DCD_NONE: RETURNFUNC(-RIG_ENAVAIL); /* not available */ @@ -3200,7 +3203,8 @@ int HAMLIB_API rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_rptr_shift(rig, vfo, rptr_shift)); + retcode = caps->set_rptr_shift(rig, vfo, rptr_shift); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3267,7 +3271,8 @@ int HAMLIB_API rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_rptr_shift(rig, vfo, rptr_shift)); + retcode = caps->get_rptr_shift(rig, vfo, rptr_shift); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3334,7 +3339,8 @@ int HAMLIB_API rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_rptr_offs(rig, vfo, rptr_offs)); + retcode = caps->set_rptr_offs(rig, vfo, rptr_offs); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3401,7 +3407,8 @@ int HAMLIB_API rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_rptr_offs(rig, vfo, rptr_offs)); + retcode = caps->get_rptr_offs(rig, vfo, rptr_offs); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3466,7 +3473,8 @@ int HAMLIB_API rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) || vfo == RIG_VFO_TX || vfo == rig->state.current_vfo)) { - RETURNFUNC(caps->set_split_freq(rig, vfo, tx_freq)); + retcode = caps->set_split_freq(rig, vfo, tx_freq); + RETURNFUNC(retcode); } vfo = vfo_fixup(rig, vfo); @@ -3595,7 +3603,8 @@ int HAMLIB_API rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) || vfo == RIG_VFO_TX || vfo == rig->state.current_vfo)) { - RETURNFUNC(caps->get_split_freq(rig, vfo, tx_freq)); + retcode = caps->get_split_freq(rig, vfo, tx_freq); + RETURNFUNC(retcode); } /* Assisted mode */ @@ -3613,7 +3622,8 @@ int HAMLIB_API rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) if (caps->get_freq && (caps->targetable_vfo & RIG_TARGETABLE_FREQ)) { - RETURNFUNC(caps->get_freq(rig, tx_vfo, tx_freq)); + retcode = caps->get_freq(rig, tx_vfo, tx_freq); + RETURNFUNC(retcode); } @@ -3723,7 +3733,8 @@ int HAMLIB_API rig_set_split_mode(RIG *rig, || vfo == RIG_VFO_TX || vfo == rig->state.current_vfo)) { - RETURNFUNC(caps->set_split_mode(rig, vfo, tx_mode, tx_width)); + retcode = caps->set_split_mode(rig, vfo, tx_mode, tx_width); + RETURNFUNC(retcode); } /* Assisted mode */ @@ -3741,7 +3752,8 @@ int HAMLIB_API rig_set_split_mode(RIG *rig, if (caps->set_mode && (caps->targetable_vfo & RIG_TARGETABLE_MODE)) { - RETURNFUNC(caps->set_mode(rig, tx_vfo, tx_mode, tx_width)); + retcode = caps->set_mode(rig, tx_vfo, tx_mode, tx_width); + RETURNFUNC(retcode); } @@ -3832,7 +3844,8 @@ int HAMLIB_API rig_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, || vfo == RIG_VFO_TX || vfo == rig->state.current_vfo)) { - RETURNFUNC(caps->get_split_mode(rig, vfo, tx_mode, tx_width)); + retcode = caps->get_split_mode(rig, vfo, tx_mode, tx_width); + RETURNFUNC(retcode); } /* Assisted mode */ @@ -3850,7 +3863,8 @@ int HAMLIB_API rig_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, if (caps->get_mode && (caps->targetable_vfo & RIG_TARGETABLE_MODE)) { - RETURNFUNC(caps->get_mode(rig, tx_vfo, tx_mode, tx_width)); + retcode = caps->get_mode(rig, tx_vfo, tx_mode, tx_width); + RETURNFUNC(retcode); } @@ -4035,7 +4049,8 @@ int HAMLIB_API rig_get_split_freq_mode(RIG *rig, if (caps->get_split_freq_mode) { - RETURNFUNC(caps->get_split_freq_mode(rig, vfo, tx_freq, tx_mode, tx_width)); + retcode = caps->get_split_freq_mode(rig, vfo, tx_freq, tx_mode, tx_width); + return retcode; } retcode = rig_get_split_freq(rig, vfo, tx_freq); @@ -4292,7 +4307,8 @@ int HAMLIB_API rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_rit(rig, vfo, rit)); + retcode = caps->set_rit(rig, vfo, rit); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4360,7 +4376,8 @@ int HAMLIB_API rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_rit(rig, vfo, rit)); + retcode = caps->get_rit(rig, vfo, rit); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4428,7 +4445,8 @@ int HAMLIB_API rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_xit(rig, vfo, xit)); + retcode = caps->set_xit(rig, vfo, xit); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4496,7 +4514,8 @@ int HAMLIB_API rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_xit(rig, vfo, xit)); + retcode = caps->get_xit(rig, vfo, xit); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4563,7 +4582,8 @@ int HAMLIB_API rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_ts(rig, vfo, ts)); + retcode = caps->set_ts(rig, vfo, ts); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4630,7 +4650,8 @@ int HAMLIB_API rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_ts(rig, vfo, ts)); + retcode = caps->get_ts(rig, vfo, ts); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4703,7 +4724,8 @@ int HAMLIB_API rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_ant(rig, vfo, ant, option)); + retcode = caps->set_ant(rig, vfo, ant, option); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4778,7 +4800,8 @@ int HAMLIB_API rig_get_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t *option, || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_ant(rig, vfo, ant, option, ant_curr, ant_tx, ant_rx)); + retcode = caps->get_ant(rig, vfo, ant, option, ant_curr, ant_tx, ant_rx); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4983,6 +5006,8 @@ shortfreq_t HAMLIB_API rig_get_resolution(RIG *rig, rmode_t mode) */ int HAMLIB_API rig_set_powerstat(RIG *rig, powerstat_t status) { + int retcode; + ENTERFUNC; if (CHECK_RIG_ARG(rig)) @@ -4996,7 +5021,8 @@ int HAMLIB_API rig_set_powerstat(RIG *rig, powerstat_t status) RETURNFUNC(-RIG_ENAVAIL); } - RETURNFUNC(rig->caps->set_powerstat(rig, status)); + retcode = rig->caps->set_powerstat(rig, status); + RETURNFUNC(retcode); } @@ -5016,6 +5042,8 @@ int HAMLIB_API rig_set_powerstat(RIG *rig, powerstat_t status) */ int HAMLIB_API rig_get_powerstat(RIG *rig, powerstat_t *status) { + int retcode; + ENTERFUNC; if (CHECK_RIG_ARG(rig) || !status) @@ -5028,7 +5056,8 @@ int HAMLIB_API rig_get_powerstat(RIG *rig, powerstat_t *status) RETURNFUNC(-RIG_ENAVAIL); } - RETURNFUNC(rig->caps->get_powerstat(rig, status)); + retcode = rig->caps->get_powerstat(rig, status); + RETURNFUNC(retcode); } @@ -5048,6 +5077,8 @@ int HAMLIB_API rig_get_powerstat(RIG *rig, powerstat_t *status) */ int HAMLIB_API rig_reset(RIG *rig, reset_t reset) { + int retcode; + ENTERFUNC; if (CHECK_RIG_ARG(rig)) @@ -5060,7 +5091,8 @@ int HAMLIB_API rig_reset(RIG *rig, reset_t reset) RETURNFUNC(-RIG_ENAVAIL); } - RETURNFUNC(rig->caps->reset(rig, reset)); + retcode = rig->caps->reset(rig, reset); + RETURNFUNC(retcode); } @@ -5150,6 +5182,8 @@ int HAMLIB_API rig_probe_all(hamlib_port_t *port, */ vfo_op_t HAMLIB_API rig_has_vfo_op(RIG *rig, vfo_op_t op) { + int retcode; + ENTERFUNC; if (!rig || !rig->caps) @@ -5157,7 +5191,8 @@ vfo_op_t HAMLIB_API rig_has_vfo_op(RIG *rig, vfo_op_t op) RETURNFUNC(0); } - RETURNFUNC(rig->caps->vfo_ops & op); + retcode = rig->caps->vfo_ops & op; + RETURNFUNC(retcode); } @@ -5199,7 +5234,8 @@ int HAMLIB_API rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->vfo_op(rig, vfo, op)); + retcode = caps->vfo_op(rig, vfo, op); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5247,6 +5283,8 @@ int HAMLIB_API rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) */ scan_t HAMLIB_API rig_has_scan(RIG *rig, scan_t scan) { + int retcode; + ENTERFUNC; if (!rig || !rig->caps) @@ -5254,7 +5292,8 @@ scan_t HAMLIB_API rig_has_scan(RIG *rig, scan_t scan) RETURNFUNC(0); } - RETURNFUNC(rig->caps->scan_ops & scan); + retcode = rig->caps->scan_ops & scan; + RETURNFUNC(retcode); } @@ -5298,7 +5337,8 @@ int HAMLIB_API rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->scan(rig, vfo, scan, ch)); + retcode = caps->scan(rig, vfo, scan, ch); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5365,7 +5405,8 @@ int HAMLIB_API rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->send_dtmf(rig, vfo, digits)); + retcode = caps->send_dtmf(rig, vfo, digits); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5433,7 +5474,8 @@ int HAMLIB_API rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->recv_dtmf(rig, vfo, digits, length)); + retcode = caps->recv_dtmf(rig, vfo, digits, length); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5500,7 +5542,8 @@ int HAMLIB_API rig_send_morse(RIG *rig, vfo_t vfo, const char *msg) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->send_morse(rig, vfo, msg)); + retcode = caps->send_morse(rig, vfo, msg); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5715,7 +5758,8 @@ int HAMLIB_API rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->send_voice_mem(rig, vfo, ch)); + retcode = caps->send_voice_mem(rig, vfo, ch); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5791,6 +5835,8 @@ const freq_range_t *HAMLIB_API rig_get_range(const freq_range_t *range_list, */ int HAMLIB_API rig_set_vfo_opt(RIG *rig, int status) { + int retcode; + ENTERFUNC; if (rig->caps->set_vfo_opt == NULL) @@ -5798,7 +5844,8 @@ int HAMLIB_API rig_set_vfo_opt(RIG *rig, int status) RETURNFUNC(-RIG_ENAVAIL); } - RETURNFUNC(rig->caps->set_vfo_opt(rig, status)); + retcode = rig->caps->set_vfo_opt(rig, status); + RETURNFUNC(retcode); } /** commit ab59951e97daffbffa3487418be91eef7ca16df0 Author: Michael Black W9MDB <mdb...@ya...> Date: Wed Mar 17 07:56:27 2021 -0500 astyle files diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 11ead96e..481c24d2 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -6482,7 +6482,8 @@ int icom_set_powerstat(RIG *rig, powerstat_t status) RETURNFUNC(retval); } - if (status == RIG_POWER_OFF && (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK))) + if (status == RIG_POWER_OFF && (ack_len != 1 || (ack_len >= 1 + && ackbuf[0] != ACK))) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); diff --git a/src/rig.c b/src/rig.c index ca519ae7..b762d9e0 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1405,7 +1405,7 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) } // if freq == 0 then we are asking to invalidate the cache - if (freq == 0) flag = HAMLIB_ELAPSED_INVALIDATE; + if (freq == 0) { flag = HAMLIB_ELAPSED_INVALIDATE; } // pick a sane default if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) { vfo = RIG_VFO_A; } commit 4201beafcdc418c2a32df702041fa384e751dfc5 Merge: 27192d0c 90112b57 Author: Michael Black <mdb...@ya...> Date: Wed Mar 17 07:43:37 2021 -0500 Merge pull request #614 from mikaelnousiainen/fix-unnecessary-rig-reopen Fix unnecessary rig re-open cycles by refactoring rigctl_parse return values commit 90112b576953d6e5d647978d0654b45484edb5d7 Author: Mikael Nousiainen <mik...@ik...> Date: Tue Mar 16 23:39:35 2021 +0200 First attempt at fixing rigctl_parse return values and unnecessary rig re-open cycles diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index c3a5f269..5e01ee62 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -140,6 +140,15 @@ enum rig_errcode_e { RIG_EDOM /*!< 17 Argument out of domain of func */ }; +/** + * \brief Determines if the given error code indicates a "soft" error + * Soft errors are caused by invalid parameters and software/hardware features + * and cannot be fixed by retries or by re-initializing hardware. + */ +#define RIG_IS_SOFT_ERRCODE(errcode) (errcode == RIG_EINVAL || errcode == RIG_ENIMPL || errcode == RIG_ERJCTED \ + || errcode == RIG_ETRUNC || errcode == RIG_ENAVAIL || errcode == RIG_ENTARGET \ + || errcode == RIG_EVFO || errcode == RIG_EDOM) + /** * \brief Token in the netrigctl protocol for returning error code */ diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 8d4bdff6..11ead96e 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -6532,20 +6532,6 @@ int icom_get_powerstat(RIG *rig, powerstat_t *status) RETURNFUNC(retval); } - if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) - { - // if we don't get ACK/NAK some serial corruption occurred - // so we'll call it a timeout for retry purposes - RETURNFUNC(-RIG_ETIMEOUT); - } - - if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) - { - rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, - ackbuf[0], ack_len); - RETURNFUNC(-RIG_ERJCTED); - } - *status = ackbuf[1] == S_PWR_ON ? RIG_POWER_ON : RIG_POWER_OFF; } @@ -7385,13 +7371,6 @@ int icom_get_raw_buf(RIG *rig, int cmd, int subcmd, int subcmdbuflen, cmdhead += (subcmd == -1) ? 1 : 2; ack_len -= cmdhead; - if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) - { - // if we don't get ACK/NAK some serial corruption occurred - // so we'll call it a timeout for retry purposes - RETURNFUNC(-RIG_ETIMEOUT); - } - rig_debug(RIG_DEBUG_TRACE, "%s: %d\n", __func__, ack_len); if (*reslen < ack_len || res == NULL) diff --git a/tests/rigctl.c b/tests/rigctl.c index 978fc871..e982dbce 100644 --- a/tests/rigctl.c +++ b/tests/rigctl.c @@ -611,14 +611,9 @@ int main(int argc, char *argv[]) interactive, prompt, &vfo_opt, send_cmd_term, &ext_resp, &resp_sep); - if (retcode == 2) - { - exitcode = 2; - } - // if we get a hard error we try to reopen the rig again // this should cover short dropouts that can occur - if (retcode == -RIG_EIO || retcode == 2) + if (retcode < 0 && !RIG_IS_SOFT_ERRCODE(-retcode)) { int retry = 3; rig_debug(RIG_DEBUG_ERR, "%s: i/o error\n", __func__) @@ -632,10 +627,9 @@ int main(int argc, char *argv[]) rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode); } while (retry-- > 0 && retcode != RIG_OK); - } } - while (retcode == 0 || retcode == 2 || retcode == -RIG_ENAVAIL); + while (retcode == RIG_OK || RIG_IS_SOFT_ERRCODE(-retcode)); if (interactive && prompt) { diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index ebb8eb1b..729382ba 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -65,7 +65,6 @@ extern int read_history(); #include <hamlib/rig.h> #include "misc.h" #include "iofunc.h" -#include "serial.h" #include "sprintflst.h" #include "rigctl_parse.h" @@ -662,7 +661,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#1? retcode=%d\n", __func__, retcode); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } if (cmd != 0xa) @@ -681,12 +680,12 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%c", &cmd) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#2?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } } else if (cmd == '+' && prompt) { - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } if (cmd != '\\' @@ -704,7 +703,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%c", &cmd) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#3?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } } else if (cmd != '\\' @@ -717,7 +716,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, && prompt) { - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* command by name */ @@ -728,7 +727,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%c", pcmd) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#4?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } retcode = fscanf(fin, "%s", ++pcmd); @@ -755,7 +754,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, fprintf_flush(fout, "\nRig command: "); } - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } last_was_ret = 1; @@ -773,11 +772,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%c", &cmd) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#6?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } } - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } my_rig->state.vfo_opt = *vfo_opt; @@ -790,14 +789,14 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (interactive && !prompt) { fprintf(fout, "%s0\n", NETRIGCTL_RET); } fflush(fout); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } if (cmd == '?') { usage_rig(fout); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } } else @@ -807,11 +806,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (EOF == retcode) { - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } else if ('\0' == command[1]) { @@ -832,7 +831,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, fprintf(stderr, "Command '%c' not found!\n", cmd); } - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } if (!(cmd_entry->flags & ARG_NOVFO) && *vfo_opt) @@ -850,7 +849,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%s", arg1) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#7?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } vfo = rig_parse_vfo(arg1); @@ -866,7 +865,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } vfo = rig_parse_vfo(arg1); @@ -889,7 +888,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (fgets(arg1, MAXARGSZ, fin) == NULL) { - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } if (arg1[0] == 0xa) @@ -903,7 +902,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (fgets(arg1, MAXARGSZ, fin) == NULL) { - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } } @@ -931,11 +930,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(stderr, "Invalid arg for command '%s'\n", cmd_entry->name); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p1 = arg1; @@ -959,7 +958,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%s", arg1) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#8?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p1 = arg1; @@ -976,7 +975,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p1 = arg1; @@ -1005,7 +1004,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%s", arg2) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#9?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p2 = arg2; @@ -1019,11 +1018,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(stderr, "Invalid arg for command '%s'\n", cmd_entry->name); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p2 = arg2; @@ -1052,7 +1051,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%s", arg3) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#10?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p3 = arg3; @@ -1067,11 +1066,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, fprintf(stderr, "Invalid arg for command '%s'\n", cmd_entry->name); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p3 = arg3; @@ -1098,13 +1097,13 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (!input_line) { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } /* Q or q to quit */ if (!(strncasecmp(input_line, "q", 1))) { - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } /* '?' for help */ @@ -1112,13 +1111,13 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { usage_rig(fout); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* '#' for comment */ if (!(strncmp(input_line, "#", 1))) { - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* Blank line entered */ @@ -1126,7 +1125,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } rig_debug(RIG_DEBUG_TRACE, "%s: input_line: %s\n", __func__, input_line); @@ -1149,7 +1148,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { /* Oops! Invoke GDB!! */ fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } /* At this point parsed_input contains the typed text of the command @@ -1208,7 +1207,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(stderr, "Valid multiple character command names contain alphanumeric characters plus '_'\n"); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } } @@ -1217,13 +1216,13 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, /* Single '\' entered, prompt again */ else if ((*parsed_input[0] == '\\') && (strlen(parsed_input[0]) == 1)) { - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* Multiple characters but no leading '\' */ else { fprintf(stderr, "Precede multiple character command names with '\\'\n"); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } cmd_entry = find_cmd_entry(cmd); @@ -1239,7 +1238,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, fprintf(stderr, "Command '%c' not found!\n", cmd); } - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* If vfo_opt is enabled (-o|--vfo) check if already given @@ -1264,7 +1263,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (!input_line) { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } /* Blank line entered */ @@ -1272,7 +1271,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* Get the first token of input, the rest, if any, will be @@ -1287,7 +1286,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1366,7 +1365,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } if (input_line) @@ -1376,7 +1375,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1428,7 +1427,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } result = strtok(input_line, " "); @@ -1440,7 +1439,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1494,7 +1493,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } result = strtok(input_line, " "); @@ -1506,7 +1505,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1560,7 +1559,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } result = strtok(input_line, " "); @@ -1572,7 +1571,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1669,7 +1668,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, rig_debug(RIG_DEBUG_TRACE, "%s: vfo_opt=%d\n", __func__, *vfo_opt); - if (retcode == RIG_EIO) + if (retcode == -RIG_EIO) { rig_debug(RIG_DEBUG_ERR, "%s: RIG_EIO?\n", __func__); @@ -1727,12 +1726,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (sync_cb) { sync_cb(0); } /* unlock if necessary */ - if (retcode == -RIG_ENAVAIL) - { - RETURNFUNC(retcode); - } - - RETURNFUNC(retcode != RIG_OK ? 2 : 0); + RETURNFUNC(retcode); } diff --git a/tests/rigctl_parse.h b/tests/rigctl_parse.h index a741742f..e1a86697 100644 --- a/tests/rigctl_parse.h +++ b/tests/rigctl_parse.h @@ -28,6 +28,9 @@ #include <stdio.h> #include <hamlib/rig.h> +#define RIGCTL_PARSE_END 1 +#define RIGCTL_PARSE_ERROR 2 + /* * external prototype */ diff --git a/tests/rigctld.c b/tests/rigctld.c index c4edaf6d..46ba0275 100644 --- a/tests/rigctld.c +++ b/tests/rigctld.c @@ -1075,21 +1075,9 @@ void *handle_socket(void *arg) if (retcode != 0) { rig_debug(RIG_DEBUG_ERR, "%s: rigctl_parse retcode=%d\n", __func__, retcode); } - -#if 0 // disabled -- don't think we need this - - // see https://github.com/Hamlib/Hamlib/issues/516 - if (retcode == -1) - { - //sleep(1); // probably don't need this delay - //continue; - } - -#endif - // if we get a hard error we try to reopen the rig again // this should cover short dropouts that can occur - if (retcode == -RIG_EIO || retcode == 2) + if (retcode < 0 && !RIG_IS_SOFT_ERRCODE(-retcode)) { int retry = 3; rig_debug(RIG_DEBUG_ERR, "%s: i/o error\n", __func__) @@ -1103,39 +1091,9 @@ void *handle_socket(void *arg) rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode); } while (retry-- > 0 && retcode != RIG_OK); - - } - - -#if 0 - - if (ferror(fsockin) || ferror(fsockout) || retcode == 2) - { - if (ferror(fsockout)) { fsockout = get_fsockout(handle_data_arg); } - - rig_debug(RIG_DEBUG_ERR, "%s: socket error in=%d, out=%d\n", __func__, - ferror(fsockin), ferror(fsockout)); - // if we get an error from the rig we'll try to repoen - // that may fix things when COM ports drop and such - int retry = 4; - - if (retcode == 2) - { - do - { - retcode = rig_close(my_rig); - hl_usleep(1000 * 1000); - rig_debug(RIG_DEBUG_ERR, "%s: rig_close retcode=%d\n", __func__, retcode); - retcode = rig_open(my_rig); - rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode); - } - while (retry-- > 0 && retcode != RIG_OK); - } } - -#endif } - while (retcode == 0 || retcode == 2 || retcode == -RIG_ENAVAIL); + while (retcode == RIG_OK || RIG_IS_SOFT_ERRCODE(-retcode)); #ifdef HAVE_PTHREAD #if 0 commit 27192d0c813aa79c6eb09d85077c7a0fae5489e7 Author: Michael Black W9MDB <mdb...@ya...> Date: Tue Mar 16 12:45:30 2021 -0500 Fix potential seg faults in icom.c https://github.com/Hamlib/Hamlib/issues/612 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index c4d80151..8d4bdff6 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -1075,21 +1075,14 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq) } } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) - { - // if we don't get ACK/NAK some serial corruption occurred - // so we'll call it a timeout for retry purposes - RETURNFUNC(-RIG_ETIMEOUT); - } - - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -1599,7 +1592,7 @@ int icom_set_dsp_flt(RIG *rig, rmode_t mode, pbwidth_t width) RETURNFUNC(retval); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: command not supported ? (%#.2x), " "len=%d\n", __func__, ackbuf[0], ack_len); @@ -1714,7 +1707,7 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode, } else { - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: command not supported ? (%#.2x), len=%d\n", @@ -1791,14 +1784,14 @@ int icom_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2170,14 +2163,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2196,14 +2189,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2224,14 +2217,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2253,14 +2246,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2287,14 +2280,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2813,14 +2806,14 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -3647,14 +3640,14 @@ int icom_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -3778,14 +3771,14 @@ int icom_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -3886,14 +3879,14 @@ int icom_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4171,14 +4164,14 @@ int icom_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4392,14 +4385,14 @@ int icom_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4512,14 +4505,14 @@ int icom_set_split_mode(RIG *rig, vfo_t vfo, rmode_t tx_mode, RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4622,14 +4615,14 @@ int icom_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4746,14 +4739,14 @@ int icom_set_split_freq_mode(RIG *rig, vfo_t vfo, freq_t tx_freq, RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4892,14 +4885,14 @@ int icom_get_split_freq_mode(RIG *rig, vfo_t vfo, freq_t *tx_freq, RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -5140,14 +5133,14 @@ int icom_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -5333,14 +5326,14 @@ int icom_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6004,14 +5997,14 @@ int icom_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6112,14 +6105,14 @@ int icom_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6213,14 +6206,14 @@ int icom_set_dcs_code(RIG *rig, vfo_t vfo, tone_t code) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6319,14 +6312,14 @@ int icom_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6489,7 +6482,7 @@ int icom_set_powerstat(RIG *rig, powerstat_t status) RETURNFUNC(retval); } - if (status == RIG_POWER_OFF && (ack_len != 1 || ackbuf[0] != ACK)) + if (status == RIG_POWER_OFF && (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK))) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6539,14 +6532,14 @@ int icom_get_powerstat(RIG *rig, powerstat_t *status) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6583,14 +6576,14 @@ int icom_set_mem(RIG *rig, vfo_t vfo, int ch) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6620,14 +6613,14 @@ int icom_set_bank(RIG *rig, vfo_t vfo, int bank) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6756,14 +6749,14 @@ int icom_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6943,14 +6936,14 @@ int icom_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { if (op != RIG_OP_XCHG) { @@ -7056,14 +7049,14 @@ int icom_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -7101,14 +7094,14 @@ int icom_send_morse(RIG *rig, vfo_t vfo, const char *msg) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack... [truncated message content] |