diff --git a/rigs/dummy/netrigctl.c b/rigs/dummy/netrigctl.c index 3507e3644..857967413 100644 --- a/rigs/dummy/netrigctl.c +++ b/rigs/dummy/netrigctl.c @@ -40,7 +40,7 @@ #include "dummy.h" -#define CMD_MAX 32 +#define CMD_MAX 64 #define BUF_MAX 96 #define CHKSCN1ARG(a) if ((a) != 1) return -RIG_EPROTO; else do {} while(0) @@ -100,6 +100,7 @@ static int netrigctl_vfostr(RIG *rig, char *vfostr, int len, vfo_t vfo) { struct netrigctl_priv_data *priv; + rig_debug(RIG_DEBUG_TRACE, "%s: called vfo=%s\n", __func__, rig_strvfo(vfo)); if (len < 5) { rig_debug(RIG_DEBUG_ERR, "%s: len must be >=5, len=%d\n", __func__, len); @@ -112,6 +113,7 @@ static int netrigctl_vfostr(RIG *rig, char *vfostr, int len, vfo_t vfo) if (vfo == RIG_VFO_CURR) { + rig_debug(RIG_DEBUG_TRACE, "%s: vfo==RIG_VFO_CURR, curr=%s\n", __func__, rig_strvfo(priv->vfo_curr)); vfo = priv->vfo_curr; if (vfo == RIG_VFO_NONE) { vfo = RIG_VFO_A; } @@ -121,7 +123,22 @@ static int netrigctl_vfostr(RIG *rig, char *vfostr, int len, vfo_t vfo) if (rig->state.vfo_opt) { - snprintf(vfostr, len, " %s", vfo == RIG_VFO_A ? "VFOA" : "VFOB"); + rig_debug(RIG_DEBUG_TRACE, "%s: vfo_opt vfo=%d\n", __func__, vfo); + char *myvfo; + switch(vfo) + { + case RIG_VFO_B: myvfo = "VFOB";break; + case RIG_VFO_C: myvfo = "VFOC";break; + case RIG_VFO_MAIN: myvfo = "Main";break; + case RIG_VFO_MAIN_A: myvfo = "MainA";break; + case RIG_VFO_MAIN_B: myvfo = "MainB";break; + case RIG_VFO_SUB: myvfo = "Sub";break; + case RIG_VFO_SUB_A: myvfo = "SubA";break; + case RIG_VFO_SUB_B: myvfo = "SubB";break; + case RIG_VFO_MEM: myvfo = "MEM";break; + default: myvfo = "VFOA"; + } + snprintf(vfostr, len, " %s", myvfo); } return RIG_OK; @@ -546,6 +563,10 @@ static int netrigctl_open(RIG *rig) rig->state.pttport.type.ptt); } } + else if (strcmp(setting,"targetable_vfo") == 0) + { + rig->caps->targetable_vfo = strtol(value, NULL, 0); + } else { // not an error -- just a warning for backward compatibility @@ -592,7 +613,7 @@ static int netrigctl_set_freq(RIG *rig, vfo_t vfo, freq_t freq) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -624,7 +645,7 @@ static int netrigctl_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; #if 0 // disable until we figure out if we can do this without breaking backwards compatibility char vfotmp[16]; #endif @@ -671,9 +692,9 @@ static int netrigctl_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; - rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); + rig_debug(RIG_DEBUG_VERBOSE, "%s called, vfo=%s\n", __func__, rig_strvfo(vfo)); ret = netrigctl_vfostr(rig, vfostr, sizeof(vfostr), vfo); @@ -701,9 +722,9 @@ static int netrigctl_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; - rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); + rig_debug(RIG_DEBUG_VERBOSE, "%s called, vfo=%s\n", __func__, rig_strvfo(vfo)); ret = netrigctl_vfostr(rig, vfostr, sizeof(vfostr), vfo); @@ -768,7 +789,7 @@ static int netrigctl_get_vfo(RIG *rig, vfo_t *vfo) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; struct netrigctl_priv_data *priv; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -805,7 +826,7 @@ static int netrigctl_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -833,7 +854,7 @@ static int netrigctl_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -860,7 +881,7 @@ static int netrigctl_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -889,7 +910,7 @@ static int netrigctl_set_rptr_shift(RIG *rig, vfo_t vfo, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -918,7 +939,7 @@ static int netrigctl_get_rptr_shift(RIG *rig, vfo_t vfo, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -948,7 +969,7 @@ static int netrigctl_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -976,7 +997,7 @@ static int netrigctl_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1004,7 +1025,7 @@ static int netrigctl_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1032,7 +1053,7 @@ static int netrigctl_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1060,7 +1081,7 @@ static int netrigctl_set_dcs_code(RIG *rig, vfo_t vfo, tone_t code) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1088,7 +1109,7 @@ static int netrigctl_get_dcs_code(RIG *rig, vfo_t vfo, tone_t *code) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1116,7 +1137,7 @@ static int netrigctl_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1144,7 +1165,7 @@ static int netrigctl_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1172,7 +1193,7 @@ static int netrigctl_set_dcs_sql(RIG *rig, vfo_t vfo, unsigned int code) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1199,7 +1220,7 @@ static int netrigctl_get_dcs_sql(RIG *rig, vfo_t vfo, unsigned int *code) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1227,7 +1248,7 @@ static int netrigctl_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1255,7 +1276,7 @@ static int netrigctl_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1283,7 +1304,7 @@ static int netrigctl_set_split_mode(RIG *rig, vfo_t vfo, rmode_t tx_mode, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1312,7 +1333,7 @@ static int netrigctl_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1351,7 +1372,7 @@ static int netrigctl_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1380,7 +1401,7 @@ static int netrigctl_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1419,7 +1440,7 @@ static int netrigctl_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1447,7 +1468,7 @@ static int netrigctl_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1475,7 +1496,7 @@ static int netrigctl_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1503,7 +1524,7 @@ static int netrigctl_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1531,7 +1552,7 @@ static int netrigctl_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1559,7 +1580,7 @@ static int netrigctl_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1587,7 +1608,7 @@ static int netrigctl_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1615,7 +1636,7 @@ static int netrigctl_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1645,7 +1666,7 @@ static int netrigctl_set_level(RIG *rig, vfo_t vfo, setting_t level, char cmd[CMD_MAX]; char buf[BUF_MAX]; char lstr[32]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1685,7 +1706,7 @@ static int netrigctl_get_level(RIG *rig, vfo_t vfo, setting_t level, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1829,7 +1850,7 @@ static int netrigctl_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; int i_ant = 0; rig_debug(RIG_DEBUG_VERBOSE, "%s called, ant=0x%02x, option=%d\n", __func__, @@ -1875,7 +1896,7 @@ static int netrigctl_get_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t *option, int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -1972,7 +1993,7 @@ static int netrigctl_set_mem(RIG *rig, vfo_t vfo, int ch) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -2000,7 +2021,7 @@ static int netrigctl_get_mem(RIG *rig, vfo_t vfo, int *ch) int ret, len; char cmd[CMD_MAX]; char buf[BUF_MAX]; - char vfostr[6] = ""; + char vfostr[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index e85a1a4a5..b55c74146 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -589,10 +589,12 @@ int newcat_set_freq(RIG *rig, vfo_t vfo, freq_t freq) switch (vfo) { case RIG_VFO_A: + case RIG_VFO_MAIN: c = 'A'; break; case RIG_VFO_B: + case RIG_VFO_SUB: c = 'B'; break; @@ -720,10 +722,12 @@ int newcat_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) switch (vfo) { case RIG_VFO_A: + case RIG_VFO_MAIN: // what about MAIN_A/MAIN_B? c = 'A'; break; case RIG_VFO_B: + case RIG_VFO_SUB: // what about SUB_A/SUB_B? c = 'B'; break; @@ -792,7 +796,7 @@ int newcat_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) /* FT2000 mode only */ if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - priv->cmd_str[2] = (RIG_VFO_B == vfo) ? '1' : '0'; + priv->cmd_str[2] = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } rig_debug(RIG_DEBUG_VERBOSE, "%s: generic mode = %s \n", @@ -866,7 +870,7 @@ int newcat_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = RIG_VFO_B == vfo ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } /* Build the command string */ @@ -902,6 +906,7 @@ int newcat_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) *width = rig_passband_normal(rig, *mode); } + rig_debug(RIG_DEBUG_TRACE, "%s: returning newcat_get_rx_bandwidth\n", __func__); return newcat_get_rx_bandwidth(rig, vfo, *mode, width); } @@ -947,7 +952,7 @@ int newcat_set_vfo(RIG *rig, vfo_t vfo) { case RIG_VFO_A: case RIG_VFO_B: - if (vfo == RIG_VFO_B) + if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) { c = '1'; } @@ -1077,10 +1082,12 @@ int newcat_get_vfo(RIG *rig, vfo_t *vfo) switch (priv->ret_data[2]) { case '0': - *vfo = RIG_VFO_A; + if (rig->state.vfo_list & RIG_VFO_MAIN) *vfo = RIG_VFO_MAIN; + else *vfo = RIG_VFO_A; break; case '1': + if (rig->state.vfo_list & RIG_VFO_SUB) *vfo = RIG_VFO_SUB; *vfo = RIG_VFO_B; break; @@ -1221,7 +1228,7 @@ int newcat_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = RIG_VFO_B == vfo ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } switch (rptr_shift) @@ -1274,7 +1281,7 @@ int newcat_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c%c", command, main_sub_vfo, @@ -1472,11 +1479,16 @@ int newcat_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo) return err; } - if (newcat_is_rig(rig, RIG_MODEL_FT991)) + if (is_ft991) { vfo = RIG_VFO_A; tx_vfo = RIG_SPLIT_ON == split ? RIG_VFO_B : RIG_VFO_A; } + else if (is_ft101) + { + vfo = RIG_VFO_MAIN; + tx_vfo = RIG_SPLIT_ON == split ? RIG_VFO_SUB : RIG_VFO_MAIN; + } else { err = newcat_get_vfo(rig, &rx_vfo); /* sync to rig current vfo */ @@ -1558,7 +1570,7 @@ int newcat_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo) } // we assume split is always on VFO_B - if (*tx_vfo == RIG_VFO_B) + if (*tx_vfo == RIG_VFO_B || *tx_vfo == RIG_VFO_SUB) { *split = RIG_SPLIT_ON; } @@ -1944,7 +1956,7 @@ int newcat_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB== vfo) ? '1' : '0'; } for (i = 0, tone_match = FALSE; rig->caps->ctcss_list[i] != 0; i++) @@ -2003,7 +2015,7 @@ int newcat_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c%c", cmd, main_sub_vfo, @@ -2398,7 +2410,7 @@ int newcat_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = RIG_VFO_B == vfo ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } switch (ant) @@ -2490,7 +2502,7 @@ int newcat_get_ant(RIG *rig, vfo_t vfo, ant_t dummy, value_t *option, if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c%c", command, main_sub_vfo, @@ -2558,7 +2570,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) if (rig->caps->targetable_vfo & RIG_TARGETABLE_PURE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } switch (level) @@ -2917,7 +2929,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) return -RIG_ENAVAIL; } - val.i *= 10; // tenths to ms conversion + val.i *= 100; // tenths to ms conversion if (is_ft101) { @@ -3138,7 +3150,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) if (rig->caps->targetable_vfo & RIG_TARGETABLE_PURE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } switch (level) @@ -3456,21 +3468,21 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) { switch (val->i) { - case 0: val->i = 3; break; + case 0: val->i = 1; break; - case 1: val->i = 5; break; + case 1: val->i = 1; break; - case 2: val->i = 10; break; + case 2: val->i = 1; break; - case 3: val->i = 15; break; + case 3: val->i = 2; break; - case 4: val->i = 20; break; + case 4: val->i = 2; break; - case 5: val->i = 25; break; + case 5: val->i = 3; break; - case 6: val->i = 30; break; + case 6: val->i = 3; break; - default: val->i = (val->i - 6) * 10 + 30; + default: val->i = (val->i - 6) + 3; } return RIG_OK; @@ -3676,7 +3688,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) if (rig->caps->targetable_vfo & (RIG_TARGETABLE_MODE | RIG_TARGETABLE_TONE)) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } switch (func) @@ -4244,6 +4256,7 @@ int newcat_set_mem(RIG *rig, vfo_t vfo, int ch) switch (vfo) { case RIG_VFO_A: + case RIG_VFO_MAIN: /* Jump back from memory channel */ restore_vfo = TRUE; break; @@ -4254,6 +4267,7 @@ int newcat_set_mem(RIG *rig, vfo_t vfo, int ch) break; case RIG_VFO_B: + case RIG_VFO_SUB: default: /* Only works with VFO A */ return -RIG_ENTARGET; @@ -4333,7 +4347,7 @@ int newcat_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } switch (op) @@ -4536,6 +4550,7 @@ int newcat_set_channel(RIG *rig, const channel_t *chan) switch (state->current_vfo) { case RIG_VFO_A: + case RIG_VFO_B: /* Jump back from memory channel */ restore_vfo = TRUE; break; @@ -4545,7 +4560,7 @@ int newcat_set_channel(RIG *rig, const channel_t *chan) restore_vfo = FALSE; break; - case RIG_VFO_B: + case RIG_VFO_SUB: default: /* Only works with VFO A */ return -RIG_ENTARGET; @@ -5006,10 +5021,12 @@ int newcat_set_tx_vfo(RIG *rig, vfo_t tx_vfo) switch (tx_vfo) { case RIG_VFO_A: + case RIG_VFO_MAIN: p1 = '0'; break; case RIG_VFO_B: + case RIG_VFO_SUB: p1 = '1'; break; @@ -5099,12 +5116,14 @@ int newcat_get_tx_vfo(RIG *rig, vfo_t *tx_vfo) switch (c) { case '0': - *tx_vfo = RIG_VFO_A; + if (rig->state.vfo_list && RIG_VFO_MAIN) *tx_vfo = RIG_VFO_MAIN; + else *tx_vfo = RIG_VFO_A; rig->state.cache.split = 0; break; case '1' : - *tx_vfo = RIG_VFO_B; + if (rig->state.vfo_list && RIG_VFO_SUB) *tx_vfo = RIG_VFO_SUB; + else *tx_vfo = RIG_VFO_B; rig->state.cache.split = 1; break; @@ -5153,15 +5172,18 @@ int newcat_set_vfo_from_alias(RIG *rig, vfo_t *vfo) case RIG_VFO_TX: /* set to another vfo for split or uplink */ + if (rig->state.vfo_list & RIG_VFO_MAIN) + *vfo = (rig->state.current_vfo == RIG_VFO_SUB) ? RIG_VFO_MAIN : RIG_VFO_SUB; + else *vfo = (rig->state.current_vfo == RIG_VFO_B) ? RIG_VFO_A : RIG_VFO_B; break; case RIG_VFO_MAIN: - *vfo = RIG_VFO_A; + *vfo = RIG_VFO_MAIN; break; case RIG_VFO_SUB: - *vfo = RIG_VFO_B; + *vfo = RIG_VFO_SUB; break; default: @@ -5224,7 +5246,7 @@ int newcat_set_narrow(RIG *rig, vfo_t vfo, ncboolean narrow) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } if (narrow == TRUE) @@ -5269,7 +5291,7 @@ int newcat_get_narrow(RIG *rig, vfo_t vfo, ncboolean *narrow) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c%c", command, main_sub_vfo, @@ -5822,7 +5844,7 @@ static char get_roofing_filter(RIG *rig, vfo_t vfo) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } snprintf(priv->cmd_str, sizeof(priv->cmd_str), "RF%c%c", main_sub_vfo, @@ -5871,7 +5893,7 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) { - main_sub_vfo = (RIG_VFO_B == vfo) ? '1' : '0'; + main_sub_vfo = (RIG_VFO_B == vfo || RIG_VFO_SUB == vfo) ? '1' : '0'; } snprintf(priv->cmd_str, sizeof(priv->cmd_str), "%s%c%c", cmd, main_sub_vfo, @@ -5889,6 +5911,7 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) priv->ret_data); return -RIG_EPROTO; } + rig_debug(RIG_DEBUG_TRACE, "%s: w=%d\n", __func__, w); // ft950 and ft1200 overlap so we'll combine them if (is_ft950 || is_ft1200) @@ -6161,6 +6184,7 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) else if (newcat_is_rig(rig, RIG_MODEL_FTDX101D)) { + rig_debug(RIG_DEBUG_TRACE, "%s: is_ft101 w=%d, mode=%s\n", __func__, w, rig_strrmode(mode)); if (w == 0) // then we need to know the roofing filter { char roofing_filter = get_roofing_filter(rig, vfo); @@ -6290,7 +6314,9 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) case 23: *width = 4000; break; - default: return -RIG_EINVAL; + default: + rig_debug(RIG_DEBUG_ERR, "%s: unknown width=%d\n", __func__, w); + return -RIG_EINVAL; } break; @@ -6308,8 +6334,10 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) *width = 16000; break; default: + rig_debug(RIG_DEBUG_TRACE, "%s: bad mode\n", __func__); return -RIG_EINVAL; } /* end switch(mode) */ + rig_debug(RIG_DEBUG_TRACE, "%s: end if FTDX101D\n", __func__); } /* end if FTDX101D */ else /* end if FT991 */ @@ -6349,7 +6377,7 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width) return -RIG_EINVAL; } /* end switch (mode) */ } /* end else */ - + rig_debug(RIG_DEBUG_TRACE,"%s: return RIG_OK\n", __func__); return RIG_OK; } diff --git a/src/rig.c b/src/rig.c index cbac48214..bd1aa6123 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1636,6 +1636,7 @@ int HAMLIB_API rig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) || vfo == rig->state.current_vfo) { retcode = caps->set_mode(rig, vfo, mode, width); + rig_debug(RIG_DEBUG_TRACE, "%s: retcode after set_mode=%d\n", __func__, retcode); } else { @@ -1743,11 +1744,13 @@ int HAMLIB_API rig_get_mode(RIG *rig, || vfo == rig->state.current_vfo) { retcode = caps->get_mode(rig, vfo, mode, width); + rig_debug(RIG_DEBUG_TRACE, "%s: retcode after get_mode=%d\n", __func__, retcode); } else { int rc2; vfo_t curr_vfo; + rig_debug(RIG_DEBUG_TRACE, "%s(%d): debug", __func__,__LINE__); if (!caps->set_vfo) { @@ -1776,12 +1779,14 @@ int HAMLIB_API rig_get_mode(RIG *rig, if (retcode == RIG_OK && (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo)) { + rig_debug(RIG_DEBUG_TRACE, "%s(%d): debug", __func__,__LINE__); rig->state.current_mode = *mode; rig->state.current_width = *width; } if (*width == RIG_PASSBAND_NORMAL && *mode != RIG_MODE_NONE) { + rig_debug(RIG_DEBUG_TRACE, "%s(%d): debug", __func__,__LINE__); *width = rig_passband_normal(rig, *mode); } diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 3d1e8da3e..41e4802cc 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -4100,6 +4100,7 @@ declare_proto_rig(dump_state) { fprintf(fout, "vfo_ops=0x%x\n", rig->caps->vfo_ops); fprintf(fout, "ptt_type=0x%x\n", rig->state.pttport.type.ptt); + fprintf(fout, "targetable_vfo=0x%x\n", rig->caps->targetable_vfo); fprintf(fout, "done\n"); }