Lots of changes to get Main/Sub recognized across rigctl/rigctld boundary

Needs lots of testing
https://github.com/Hamlib/Hamlib/issues/395
This commit is contained in:
Michael Black W9MDB 2020-10-06 21:50:37 +01:00
parent 2e1a4e5d5c
commit fca4cc7903
4 changed files with 135 additions and 80 deletions

View File

@ -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__);

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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");
}