diff --git a/rigs/icom/ic7300.c b/rigs/icom/ic7300.c index 63e924770..26bbd1f3a 100644 --- a/rigs/icom/ic7300.c +++ b/rigs/icom/ic7300.c @@ -474,7 +474,7 @@ const struct rig_caps ic9700_caps = // Hopefully any future changes in bandplans can be fixed with firmware updates // So we use the global REGION2 macros in here - .rx_range_list1 = { // USA Version + .rx_range_list1 = { // USA Version -- United States {MHz(144), MHz(148), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "USA"}, {MHz(430), MHz(450), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "USA"}, {MHz(1240), MHz(1300), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "USA"}, @@ -490,7 +490,7 @@ const struct rig_caps ic9700_caps = RIG_FRNG_END, }, - .rx_range_list2 = { // EUR Version + .rx_range_list2 = { // EUR Version -- Europe {MHz(144), MHz(146), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "EUR"}, {MHz(430), MHz(440), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "EUR"}, {MHz(1240), MHz(1300), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "EUR"}, @@ -506,7 +506,7 @@ const struct rig_caps ic9700_caps = RIG_FRNG_END, }, - .rx_range_list3 = { // ITR Version + .rx_range_list3 = { // ITR Version -- Italy {MHz(144), MHz(146), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "ITR"}, {MHz(430), MHz(434), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "ITR"}, {MHz(435), MHz(438), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "ITR"}, @@ -528,7 +528,7 @@ const struct rig_caps ic9700_caps = RIG_FRNG_END, }, - .rx_range_list4 = { // TPE Version + .rx_range_list4 = { // TPE Version -- Taiwan ?? {MHz(144), MHz(146), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "TPE"}, {MHz(430), MHz(432), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "TPE"}, {MHz(1260), MHz(1265), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "TPE"}, @@ -544,7 +544,7 @@ const struct rig_caps ic9700_caps = RIG_FRNG_END, }, - .rx_range_list5 = { // KOR Version + .rx_range_list5 = { // KOR Version -- Republic of Korea {MHz(144), MHz(146), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "KOR"}, {MHz(430), MHz(440), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "KOR"}, {MHz(1260), MHz(1300), IC9700_ALL_RX_MODES, -1, -1, IC9700_VFOS, RIG_ANT_CURR, "KOR"}, diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 4ad5879b3..044706998 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -3976,6 +3976,7 @@ int icom_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) if (rig->caps->rig_model == RIG_MODEL_IC910) { +<<<<<<< HEAD ptt_t ptt; rig_debug(RIG_DEBUG_VERBOSE, "%s: ic910#2\n", __func__); retval = rig_get_ptt(rig, RIG_VFO_CURR, &ptt); @@ -3992,7 +3993,18 @@ int icom_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) *tx_freq = priv->vfob_freq; return RIG_OK; } - } +======= + ptt_t ptt; + rig_debug(RIG_DEBUG_VERBOSE, "%s: ic910#2\n", __func__); + retval = rig_get_ptt(rig,RIG_VFO_CURR,&ptt); + if (retval != RIG_OK) { + return retval; + } + if (ptt) { + rig_debug(RIG_DEBUG_TRACE, "%s: ptt is on so returning last known freq\n", __func__); + *tx_freq = priv->vfob_freq; + return RIG_OK; + } rig_debug(RIG_DEBUG_VERBOSE, "%s curr_vfo=%s\n", __func__, rig_strvfo(priv->curr_vfo)); diff --git a/src/rig.c b/src/rig.c index 0076f4ff5..aa14d5a2e 100644 --- a/src/rig.c +++ b/src/rig.c @@ -2162,9 +2162,15 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { + retcode = caps->get_ptt(rig, vfo, ptt); - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - return caps->get_ptt(rig, vfo, ptt); + if (retcode == RIG_OK) + { + rig->state.cache.ptt = *ptt; + elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); + } + + return retcode; } if (!caps->set_vfo) @@ -2188,6 +2194,7 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) { /* return the first error code */ retcode = rc2; + rig->state.cache.ptt = *ptt; elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); } @@ -2196,8 +2203,15 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) case RIG_PTT_SERIAL_RTS: if (caps->get_ptt) { - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - return caps->get_ptt(rig, vfo, ptt); + retcode = caps->get_ptt(rig, vfo, ptt); + + if (retcode == RIG_OK) + { + elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); + rig->state.cache.ptt = *ptt; + } + + return retcode; } if (strcmp(rs->pttport.pathname, rs->rigport.pathname) @@ -2206,25 +2220,29 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) /* port is closed so assume PTT off */ *ptt = RIG_PTT_OFF; - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - rig->state.cache.ptt = *ptt; } else { retcode = ser_get_rts(&rig->state.pttport, &status); *ptt = status ? RIG_PTT_ON : RIG_PTT_OFF; - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - rig->state.cache.ptt = *ptt; } + rig->state.cache.ptt = *ptt; elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); return retcode; case RIG_PTT_SERIAL_DTR: if (caps->get_ptt) { - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - return caps->get_ptt(rig, vfo, ptt); + retcode = caps->get_ptt(rig, vfo, ptt); + + if (retcode == RIG_OK) + { + elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); + rig->state.cache.ptt = *ptt; + } + + return retcode; } if (strcmp(rs->pttport.pathname, rs->rigport.pathname) @@ -2233,46 +2251,78 @@ int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) /* port is closed so assume PTT off */ *ptt = RIG_PTT_OFF; - rig->state.cache.ptt = *ptt; - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); } else { retcode = ser_get_dtr(&rig->state.pttport, &status); *ptt = status ? RIG_PTT_ON : RIG_PTT_OFF; - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - rig->state.cache.ptt = *ptt; } + rig->state.cache.ptt = *ptt; elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); return retcode; case RIG_PTT_PARALLEL: if (caps->get_ptt) { - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - return caps->get_ptt(rig, vfo, ptt); + retcode = caps->get_ptt(rig, vfo, ptt); + + if (retcode == RIG_OK) + { + elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); + rig->state.cache.ptt = *ptt; + } + + return retcode; } - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - return par_ptt_get(&rig->state.pttport, ptt); + retcode = par_ptt_get(&rig->state.pttport, ptt); + + if (retcode == RIG_OK) + { + elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); + rig->state.cache.ptt = *ptt; + } + + return retcode; case RIG_PTT_CM108: if (caps->get_ptt) { - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - return caps->get_ptt(rig, vfo, ptt); + retcode = caps->get_ptt(rig, vfo, ptt); + + if (retcode == RIG_OK) + { + elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); + rig->state.cache.ptt = *ptt; + } + + return retcode; } - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - return cm108_ptt_get(&rig->state.pttport, ptt); + retcode = cm108_ptt_get(&rig->state.pttport, ptt); + + if (retcode == RIG_OK) + { + elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); + rig->state.cache.ptt = *ptt; + } + + return retcode; case RIG_PTT_GPIO: case RIG_PTT_GPION: if (caps->get_ptt) { - elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); - return caps->get_ptt(rig, vfo, ptt); + retcode = caps->get_ptt(rig, vfo, ptt); + + if (retcode == RIG_OK) + { + elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET); + rig->state.cache.ptt = *ptt; + } + + return retcode; } elapsed_ms(&rig->state.cache.time_ptt, ELAPSED_SET);