diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 6e5ccae72..1a4afa0c2 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -1759,20 +1759,17 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode, rig2icom_mode(rig, vfo, mode, width, &mode_icom, &width_icom); - if (filter_byte && width_icom != -1) // then we need the width byte too + if (filter_byte) // then we need the filter width byte too { - // since width_icom is 0-2 for rigs that need this here we have to make it 1-3 - datamode[1] = datamode[0] ? width_icom : 0; + if (width_icom == -1) datamode[1] = 1; // default to filter 1 + else datamode[1] = width_icom; retval = - icom_transaction(rig, C_CTL_MEM, dm_sub_cmd, datamode, 2, - ackbuf, - &ack_len); + icom_transaction(rig, C_CTL_MEM, dm_sub_cmd, datamode, 2, ackbuf, &ack_len); } else { retval = - icom_transaction(rig, C_CTL_MEM, dm_sub_cmd, datamode, 1, ackbuf, - &ack_len); + icom_transaction(rig, C_CTL_MEM, dm_sub_cmd, datamode, 1, ackbuf, &ack_len); } if (retval != RIG_OK) @@ -4815,6 +4812,11 @@ int icom_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) cmd = C_SEND_SEL_FREQ; subcmd = 0x01; // set the unselected vfo + // if we're already on the tx_vfo don't need the "other" vfo + if (rig->state.current_vfo == rig->state.tx_vfo) + { + subcmd = 0x00; + } retval = icom_transaction(rig, cmd, subcmd, freqbuf, freq_len, ackbuf, &ack_len); diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 4bebff0fa..34343a04f 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include #endif -#define BACKEND_VER "20210614" +#define BACKEND_VER "20210703" #define ICOM_IS_SECONDARY_VFO(vfo) ((vfo) & (RIG_VFO_B | RIG_VFO_SUB | RIG_VFO_SUB_B | RIG_VFO_MAIN_B)) #define ICOM_GET_VFO_NUMBER(vfo) (ICOM_IS_SECONDARY_VFO(vfo) ? 0x01 : 0x00)