From 1d1259545a7074b5b2d4419503abc5caebc67233 Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Sat, 10 Apr 2021 07:58:38 -0500 Subject: [PATCH] Change CHECK_RIG in rig.c to return RIGEIO instead of RIGEINVAL This is a hard error and allows rigctld to reopen ports and not have to restart --- src/rig.c | 192 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 142 insertions(+), 50 deletions(-) diff --git a/src/rig.c b/src/rig.c index 95c6688c6..2821d07d4 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1281,7 +1281,7 @@ int HAMLIB_API rig_set_twiddle(RIG *rig, int seconds) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } rig->state.twiddle_timeout = seconds; @@ -1306,7 +1306,7 @@ int HAMLIB_API rig_set_uplink(RIG *rig, int val) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } rig->state.uplink = val; @@ -1332,7 +1332,7 @@ int HAMLIB_API rig_get_twiddle(RIG *rig, int *seconds) if (CHECK_RIG_ARG(rig) || !seconds) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } *seconds = rig->state.twiddle_timeout; @@ -1694,7 +1694,7 @@ int HAMLIB_API rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -1883,18 +1883,20 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) rmode_t mode; pbwidth_t width; - rig_debug(RIG_DEBUG_VERBOSE, "%s called vfo=%s\n", __func__, rig_strvfo(vfo)); - cache_show(rig, __func__, __LINE__); - -#if 0 // don't think we really need this check - - if (CHECK_RIG_ARG(rig) || !freq) + if (CHECK_RIG_ARG(rig)) { - rig_debug(RIG_DEBUG_TRACE, "%s: rig or freq ptr invalid\n", __func__); + RETURNFUNC(-RIG_EIO); + } + + if (!freq) + { + rig_debug(RIG_DEBUG_TRACE, "%s: freq ptr invalid\n", __func__); RETURNFUNC(-RIG_EINVAL); } -#endif + rig_debug(RIG_DEBUG_VERBOSE, "%s called vfo=%s\n", __func__, rig_strvfo(vfo)); + cache_show(rig, __func__, __LINE__); + curr_vfo = rig->state.current_vfo; // save vfo for restore later @@ -2116,7 +2118,7 @@ int HAMLIB_API rig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -2203,7 +2205,12 @@ int HAMLIB_API rig_get_mode(RIG *rig, ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !mode || !width) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!mode || !width) { RETURNFUNC(-RIG_EINVAL); } @@ -2476,7 +2483,7 @@ int HAMLIB_API rig_set_vfo(RIG *rig, vfo_t vfo) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } if (vfo == RIG_VFO_CURR) { RETURNFUNC(RIG_OK); } @@ -2586,7 +2593,12 @@ int HAMLIB_API rig_get_vfo(RIG *rig, vfo_t *vfo) if (CHECK_RIG_ARG(rig) || !vfo) { - rig_debug(RIG_DEBUG_ERR, "%s: no rig and/or vfo? rig=%p, vfo=%p\n", __func__, + RETURNFUNC(-RIG_EIO); + } + + if (!vfo) + { + rig_debug(RIG_DEBUG_ERR, "%s: no vfo? rig=%p, vfo=%p\n", __func__, rig, vfo); RETURNFUNC(-RIG_EINVAL); } @@ -2660,7 +2672,7 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -2914,7 +2926,12 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !ptt) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!ptt) { RETURNFUNC(-RIG_EINVAL); } @@ -3148,7 +3165,12 @@ int HAMLIB_API rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !dcd) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!dcd) { RETURNFUNC(-RIG_EINVAL); } @@ -3257,7 +3279,7 @@ int HAMLIB_API rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -3323,7 +3345,12 @@ int HAMLIB_API rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !rptr_shift) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!rptr_shift) { RETURNFUNC(-RIG_EINVAL); } @@ -3393,7 +3420,7 @@ int HAMLIB_API rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -3459,7 +3486,12 @@ int HAMLIB_API rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !rptr_offs) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!rptr_offs) { RETURNFUNC(-RIG_EINVAL); } @@ -3527,7 +3559,7 @@ int HAMLIB_API rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } rig_debug(RIG_DEBUG_VERBOSE, "%s called vfo=%s, curr_vfo=%s\n", __func__, @@ -3663,7 +3695,12 @@ int HAMLIB_API rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !tx_freq) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!tx_freq) { RETURNFUNC(-RIG_EINVAL); } @@ -3797,7 +3834,7 @@ int HAMLIB_API rig_set_split_mode(RIG *rig, if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -3906,7 +3943,12 @@ int HAMLIB_API rig_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !tx_mode || !tx_width) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!tx_mode || !tx_width) { RETURNFUNC(-RIG_EINVAL); } @@ -4031,7 +4073,7 @@ int HAMLIB_API rig_set_split_freq_mode(RIG *rig, if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -4130,7 +4172,12 @@ int HAMLIB_API rig_get_split_freq_mode(RIG *rig, ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !tx_freq || !tx_mode || !tx_width) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!tx_freq || !tx_mode || !tx_width) { RETURNFUNC(-RIG_EINVAL); } @@ -4182,7 +4229,7 @@ int HAMLIB_API rig_set_split_vfo(RIG *rig, if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -4279,7 +4326,12 @@ int HAMLIB_API rig_get_split_vfo(RIG *rig, ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !split || !tx_vfo) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!split || !tx_vfo) { RETURNFUNC(-RIG_EINVAL); } @@ -4383,7 +4435,7 @@ int HAMLIB_API rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -4450,7 +4502,12 @@ int HAMLIB_API rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !rit) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!rit) { RETURNFUNC(-RIG_EINVAL); } @@ -4521,7 +4578,7 @@ int HAMLIB_API rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -4588,7 +4645,12 @@ int HAMLIB_API rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !xit) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!xit) { RETURNFUNC(-RIG_EINVAL); } @@ -4659,7 +4721,7 @@ int HAMLIB_API rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -4725,7 +4787,12 @@ int HAMLIB_API rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !ts) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!ts) { RETURNFUNC(-RIG_EINVAL); } @@ -4800,7 +4867,7 @@ int HAMLIB_API rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -4874,7 +4941,12 @@ int HAMLIB_API rig_get_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t *option, *ant_tx = *ant_rx = RIG_ANT_UNKNOWN; - if (CHECK_RIG_ARG(rig) || !ant_curr) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (ant_curr) { RETURNFUNC(-RIG_EINVAL); } @@ -5102,7 +5174,7 @@ int HAMLIB_API rig_set_powerstat(RIG *rig, powerstat_t status) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } if (rig->caps->set_powerstat == NULL) @@ -5136,7 +5208,12 @@ int HAMLIB_API rig_get_powerstat(RIG *rig, powerstat_t *status) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !status) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!status) { RETURNFUNC(-RIG_EINVAL); } @@ -5173,7 +5250,7 @@ int HAMLIB_API rig_reset(RIG *rig, reset_t reset) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } if (rig->caps->reset == NULL) @@ -5311,7 +5388,7 @@ int HAMLIB_API rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -5413,7 +5490,7 @@ int HAMLIB_API rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -5480,7 +5557,12 @@ int HAMLIB_API rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !digits) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!digits) { RETURNFUNC(-RIG_EINVAL); } @@ -5549,7 +5631,12 @@ int HAMLIB_API rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !digits || !length) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!digits || !length) { RETURNFUNC(-RIG_EINVAL); } @@ -5617,7 +5704,12 @@ int HAMLIB_API rig_send_morse(RIG *rig, vfo_t vfo, const char *msg) ENTERFUNC; - if (CHECK_RIG_ARG(rig) || !msg) + if (CHECK_RIG_ARG(rig)) + { + RETURNFUNC(-RIG_EIO); + } + + if (!msg) { RETURNFUNC(-RIG_EINVAL); } @@ -5835,7 +5927,7 @@ int HAMLIB_API rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch) if CHECK_RIG_ARG(rig) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } caps = rig->caps; @@ -5991,7 +6083,7 @@ int HAMLIB_API rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq, if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } //if (vfo == RIG_VFO_CURR) { vfo = rig->state.current_vfo; } @@ -6047,7 +6139,7 @@ int HAMLIB_API rig_get_vfo_list(RIG *rig, char *buf, int buflen) if (CHECK_RIG_ARG(rig)) { - RETURNFUNC(-RIG_EINVAL); + RETURNFUNC(-RIG_EIO); } rig_sprintf_vfo(buf, buflen - 1, rig->state.vfo_list);