Add RIG_TARGETABLE_FUNC and RIG_TARGETABLE_TONE to ftdx101d

Ensure VFO is only set on FUNC calls when TARGETABLE_FUNC is on for newcat.c
https://github.com/Hamlib/Hamlib/issues/385
pull/412/head
Michael Black W9MDB 2020-09-27 16:01:48 -05:00
rodzic 37cff7ffc1
commit f0dc0f71d4
3 zmienionych plików z 73 dodań i 59 usunięć

Wyświetl plik

@ -87,7 +87,7 @@ const struct rig_caps ftdx5000_caps =
.max_xit = Hz(9999), .max_xit = Hz(9999),
.max_ifshift = Hz(1000), .max_ifshift = Hz(1000),
.vfo_ops = FTDX5000_VFO_OPS, .vfo_ops = FTDX5000_VFO_OPS,
.targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE, .targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE | RIG_TARGETABLE_TONE,
.transceive = RIG_TRN_OFF, /* May enable later as the 5000 has an Auto Info command */ .transceive = RIG_TRN_OFF, /* May enable later as the 5000 has an Auto Info command */
.bank_qty = 0, .bank_qty = 0,
.chan_desc_sz = 0, .chan_desc_sz = 0,
@ -387,7 +387,7 @@ const struct rig_caps ftdx101d_caps =
RIG_MODEL(RIG_MODEL_FTDX101D), RIG_MODEL(RIG_MODEL_FTDX101D),
.model_name = "FT-DX101D", .model_name = "FT-DX101D",
.mfg_name = "Yaesu", .mfg_name = "Yaesu",
.version = NEWCAT_VER ".0", .version = NEWCAT_VER ".1",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_STABLE, .status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
@ -422,7 +422,7 @@ const struct rig_caps ftdx101d_caps =
.max_xit = Hz(9999), .max_xit = Hz(9999),
.max_ifshift = Hz(1000), .max_ifshift = Hz(1000),
.vfo_ops = FTDX5000_VFO_OPS, .vfo_ops = FTDX5000_VFO_OPS,
.targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE, .targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE | RIG_TARGETABLE_FUNC,
.transceive = RIG_TRN_OFF, /* May enable later as the 5000 has an Auto Info command */ .transceive = RIG_TRN_OFF, /* May enable later as the 5000 has an Auto Info command */
.bank_qty = 0, .bank_qty = 0,
.chan_desc_sz = 0, .chan_desc_sz = 0,

Wyświetl plik

@ -3550,7 +3550,7 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
return err; return err;
} }
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) 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) ? '1' : '0';
} }
@ -3607,7 +3607,12 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "CT0%d%c", status ? 2 : 0, snprintf(priv->cmd_str, sizeof(priv->cmd_str), "CT0%d%c", status ? 2 : 0,
cat_term); cat_term);
priv->cmd_str[2] = main_sub_vfo;
if (rig->caps->targetable_vfo & RIG_TARGETABLE_TONE)
{
priv->cmd_str[2] = main_sub_vfo;
}
break; break;
case RIG_FUNC_TSQL: case RIG_FUNC_TSQL:
@ -3618,7 +3623,12 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "CT0%d%c", status ? 1 : 0, snprintf(priv->cmd_str, sizeof(priv->cmd_str), "CT0%d%c", status ? 1 : 0,
cat_term); cat_term);
priv->cmd_str[2] = main_sub_vfo;
if (rig->caps->targetable_vfo & RIG_TARGETABLE_TONE)
{
priv->cmd_str[2] = main_sub_vfo;
}
break; break;
case RIG_FUNC_LOCK: case RIG_FUNC_LOCK:
@ -3649,7 +3659,9 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "NB0%d%c", status ? 1 : 0, snprintf(priv->cmd_str, sizeof(priv->cmd_str), "NB0%d%c", status ? 1 : 0,
cat_term); cat_term);
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE){
priv->cmd_str[2] = main_sub_vfo; priv->cmd_str[2] = main_sub_vfo;
}
break; break;
case RIG_FUNC_NR: case RIG_FUNC_NR:
@ -3660,7 +3672,9 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "NR0%d%c", status ? 1 : 0, snprintf(priv->cmd_str, sizeof(priv->cmd_str), "NR0%d%c", status ? 1 : 0,
cat_term); cat_term);
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE){
priv->cmd_str[2] = main_sub_vfo; priv->cmd_str[2] = main_sub_vfo;
}
break; break;
case RIG_FUNC_COMP: case RIG_FUNC_COMP:
@ -3780,7 +3794,7 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "CT0%c", cat_term); snprintf(priv->cmd_str, sizeof(priv->cmd_str), "CT0%c", cat_term);
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) if (rig->caps->targetable_vfo & RIG_TARGETABLE_TONE)
{ {
priv->cmd_str[2] = main_sub_vfo; priv->cmd_str[2] = main_sub_vfo;
} }
@ -3795,7 +3809,7 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "CT0%c", cat_term); snprintf(priv->cmd_str, sizeof(priv->cmd_str), "CT0%c", cat_term);
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE) if (rig->caps->targetable_vfo & RIG_TARGETABLE_TONE)
{ {
priv->cmd_str[2] = main_sub_vfo; priv->cmd_str[2] = main_sub_vfo;
} }
@ -6485,56 +6499,56 @@ int newcat_get_cmd(RIG *rig)
} }
// any command that is read only should not expire cache // any command that is read only should not expire cache
is_read_cmd = is_read_cmd =
strcmp(priv->cmd_str,"AG0;")==0 strcmp(priv->cmd_str, "AG0;") == 0
|| strcmp(priv->cmd_str,"AG1;")==0 || strcmp(priv->cmd_str, "AG1;") == 0
|| strcmp(priv->cmd_str,"AN0;")==0 || strcmp(priv->cmd_str, "AN0;") == 0
|| strcmp(priv->cmd_str,"AN1;")==0 || strcmp(priv->cmd_str, "AN1;") == 0
|| strcmp(priv->cmd_str,"BP00;")==0 || strcmp(priv->cmd_str, "BP00;") == 0
|| strcmp(priv->cmd_str,"BP01;")==0 || strcmp(priv->cmd_str, "BP01;") == 0
|| strcmp(priv->cmd_str,"BP10;")==0 || strcmp(priv->cmd_str, "BP10;") == 0
|| strcmp(priv->cmd_str,"BP11;")==0 || strcmp(priv->cmd_str, "BP11;") == 0
|| strcmp(priv->cmd_str,"CN00;")==0 || strcmp(priv->cmd_str, "CN00;") == 0
|| strcmp(priv->cmd_str,"CN10;")==0 || strcmp(priv->cmd_str, "CN10;") == 0
|| strcmp(priv->cmd_str,"CO00;")==0 || strcmp(priv->cmd_str, "CO00;") == 0
|| strcmp(priv->cmd_str,"CO01;")==0 || strcmp(priv->cmd_str, "CO01;") == 0
|| strcmp(priv->cmd_str,"CO02;")==0 || strcmp(priv->cmd_str, "CO02;") == 0
|| strcmp(priv->cmd_str,"CO03;")==0 || strcmp(priv->cmd_str, "CO03;") == 0
|| strcmp(priv->cmd_str,"CO10;")==0 || strcmp(priv->cmd_str, "CO10;") == 0
|| strcmp(priv->cmd_str,"CO11;")==0 || strcmp(priv->cmd_str, "CO11;") == 0
|| strcmp(priv->cmd_str,"CO12;")==0 || strcmp(priv->cmd_str, "CO12;") == 0
|| strcmp(priv->cmd_str,"CO13;")==0 || strcmp(priv->cmd_str, "CO13;") == 0
|| strcmp(priv->cmd_str,"IS1;")==0 || strcmp(priv->cmd_str, "IS1;") == 0
|| strcmp(priv->cmd_str,"IS0;")==0 || strcmp(priv->cmd_str, "IS0;") == 0
|| strcmp(priv->cmd_str,"IS1;")==0 || strcmp(priv->cmd_str, "IS1;") == 0
|| strcmp(priv->cmd_str,"MD0;")==0 || strcmp(priv->cmd_str, "MD0;") == 0
|| strcmp(priv->cmd_str,"MD1;")==0 || strcmp(priv->cmd_str, "MD1;") == 0
|| strcmp(priv->cmd_str,"NA0;")==0 || strcmp(priv->cmd_str, "NA0;") == 0
|| strcmp(priv->cmd_str,"NA1;")==0 || strcmp(priv->cmd_str, "NA1;") == 0
|| strcmp(priv->cmd_str,"NB0;")==0 || strcmp(priv->cmd_str, "NB0;") == 0
|| strcmp(priv->cmd_str,"NB1;")==0 || strcmp(priv->cmd_str, "NB1;") == 0
|| strcmp(priv->cmd_str,"NL0;")==0 || strcmp(priv->cmd_str, "NL0;") == 0
|| strcmp(priv->cmd_str,"NL1;")==0 || strcmp(priv->cmd_str, "NL1;") == 0
|| strcmp(priv->cmd_str,"NR0;")==0 || strcmp(priv->cmd_str, "NR0;") == 0
|| strcmp(priv->cmd_str,"NR1;")==0 || strcmp(priv->cmd_str, "NR1;") == 0
|| strcmp(priv->cmd_str,"OS0;")==0 || strcmp(priv->cmd_str, "OS0;") == 0
|| strcmp(priv->cmd_str,"OS1;")==0 || strcmp(priv->cmd_str, "OS1;") == 0
|| strcmp(priv->cmd_str,"PA0;")==0 || strcmp(priv->cmd_str, "PA0;") == 0
|| strcmp(priv->cmd_str,"PA1;")==0 || strcmp(priv->cmd_str, "PA1;") == 0
|| strcmp(priv->cmd_str,"RA0;")==0 || strcmp(priv->cmd_str, "RA0;") == 0
|| strcmp(priv->cmd_str,"RA1;")==0 || strcmp(priv->cmd_str, "RA1;") == 0
|| strcmp(priv->cmd_str,"RF0;")==0 || strcmp(priv->cmd_str, "RF0;") == 0
|| strcmp(priv->cmd_str,"RF1;")==0 || strcmp(priv->cmd_str, "RF1;") == 0
|| strcmp(priv->cmd_str,"RL0;")==0 || strcmp(priv->cmd_str, "RL0;") == 0
|| strcmp(priv->cmd_str,"RL1;")==0 || strcmp(priv->cmd_str, "RL1;") == 0
|| strcmp(priv->cmd_str,"RM0;")==0 || strcmp(priv->cmd_str, "RM0;") == 0
|| strcmp(priv->cmd_str,"RM1;")==0 || strcmp(priv->cmd_str, "RM1;") == 0
|| strcmp(priv->cmd_str,"SM0;")==0 || strcmp(priv->cmd_str, "SM0;") == 0
|| strcmp(priv->cmd_str,"SM1;")==0 || strcmp(priv->cmd_str, "SM1;") == 0
|| strcmp(priv->cmd_str,"SQ0;")==0 || strcmp(priv->cmd_str, "SQ0;") == 0
|| strcmp(priv->cmd_str,"SQ1;")==0 || strcmp(priv->cmd_str, "SQ1;") == 0
|| strcmp(priv->cmd_str,"VT0;")==0 || strcmp(priv->cmd_str, "VT0;") == 0
|| strcmp(priv->cmd_str,"VT1;")==0; || strcmp(priv->cmd_str, "VT1;") == 0;
if (priv->cmd_str[2] != if (priv->cmd_str[2] !=
';' && !is_read_cmd) // then we must be setting something so we'll invalidate the cache ';' && !is_read_cmd) // then we must be setting something so we'll invalidate the cache

Wyświetl plik

@ -50,7 +50,7 @@
typedef char ncboolean; typedef char ncboolean;
/* shared function version */ /* shared function version */
#define NEWCAT_VER "20200926" #define NEWCAT_VER "20200927"
/* Hopefully large enough for future use, 128 chars plus '\0' */ /* Hopefully large enough for future use, 128 chars plus '\0' */
#define NEWCAT_DATA_LEN 129 #define NEWCAT_DATA_LEN 129