From 803a8d9e5e3f153cee47cb713ee411cee2d032bb Mon Sep 17 00:00:00 2001 From: Michael Black W9MDB Date: Wed, 10 Mar 2021 11:49:47 -0600 Subject: [PATCH] Fix icom.c logic to not reject good answers https://github.com/Hamlib/Hamlib/issues/596 --- rigs/icom/frame.c | 2 ++ rigs/icom/icom.c | 11 +++-------- rigs/icom/icom.h | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 97e3ae6ee..9968e2a33 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -279,6 +279,8 @@ int icom_one_transaction(RIG *rig, int cmd, int subcmd, if (NAK == buf[frm_len - 2]) { RETURNFUNC(-RIG_ERJCTED); } + if (ACK != buf[frm_len - 2]) { RETURNFUNC(-RIG_BUSBUSY); } + *data_len = frm_len - (ACKFRMLEN - 1); rig_debug(RIG_DEBUG_TRACE, "%s: data_len=%d, frm_len=%d\n", __func__, *data_len, frm_len); diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index ddaa92946..6cecd81b0 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -3081,14 +3081,7 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) lvl_len--; } - if (lvl_len >= 1 && lvlbuf[0] != ACK && lvlbuf[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 (lvlbuf[0] != ACK && lvlbuf[0] != lvl_cn) + if (lvlbuf[0] != lvl_cn) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, lvlbuf[0], lvl_len); @@ -3211,11 +3204,13 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) { val->f = rig_raw2val_float(icom_val, &icom_default_rfpower_meter_cal); + rig_debug(RIG_DEBUG_TRACE, "%s: using rig table to convert %d to %.01f\n", __func__, icom_val, val->f); } else { val->f = rig_raw2val_float(icom_val, &rig->caps->rfpower_meter_cal); + rig_debug(RIG_DEBUG_TRACE, "%s: using default icom table to convert %d to %.01f\n", __func__, icom_val, val->f); } break; diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 258519e17..b9eb6eaa1 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include #endif -#define BACKEND_VER "20210306" +#define BACKEND_VER "20210310" /* * defines used by comp_cal_str in rig.c