Change set_icom_set_mode_with_data to not change mode unless necessary

Should allow filters to stay where they are set if USB-D is the starting mode
https://github.com/Hamlib/Hamlib/issues/791

(cherry picked from commit e900b4f9dc)
pull/796/head
Mike Black W9MDB 2021-09-07 17:44:57 -05:00 zatwierdzone przez Nate Bargmann
rodzic 4f760debc3
commit 53f7c1ed3b
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: FB2C5130D55A8819
2 zmienionych plików z 20 dodań i 1 usunięć

Wyświetl plik

@ -1790,6 +1790,8 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode,
unsigned char ackbuf[MAXFRAMELEN];
int ack_len = sizeof(ackbuf);
rmode_t icom_mode;
rmode_t tmode;
pbwidth_t twidth;
//struct icom_priv_data *priv = (struct icom_priv_data *) rig->state.priv;
unsigned char dm_sub_cmd =
rig->caps->rig_model == RIG_MODEL_IC7200 ? 0x04 : S_MEM_DATA_MODE;
@ -1807,6 +1809,23 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode,
ENTERFUNC;
// if our current mode and width is not changing do nothing
retval = rig_get_mode(rig, vfo, &tmode, &twidth);
if (retval != RIG_OK)
{
rig_debug(RIG_DEBUG_ERR, "%s: get_mode failed: %s\n", __func__,
rigerror(retval));
RETURNFUNC(retval);
}
if (tmode == mode && width == RIG_PASSBAND_NOCHANGE)
{
rig_debug(RIG_DEBUG_TRACE, "%s: mode/width not changing\n", __func__);
RETURNFUNC(RIG_OK);
}
// looks like we need to change it
switch (mode)
{

Wyświetl plik

@ -30,7 +30,7 @@
#include <sys/time.h>
#endif
#define BACKEND_VER "20210828"
#define BACKEND_VER "20210907"
#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)