pull/412/head
Michael Black W9MDB 2020-10-01 22:51:31 -05:00
rodzic 3f94e66c9f
commit 0576a01ec2
14 zmienionych plików z 184 dodań i 115 usunięć

Wyświetl plik

@ -1284,8 +1284,10 @@ static int dummy_set_ext_func(RIG *rig, vfo_t vfo, token_t token, int status)
{ {
case RIG_CONF_CHECKBUTTON: case RIG_CONF_CHECKBUTTON:
break; break;
case RIG_CONF_BUTTON: case RIG_CONF_BUTTON:
break; break;
default: default:
return -RIG_EINTERNAL; return -RIG_EINTERNAL;
} }
@ -1324,6 +1326,7 @@ static int dummy_get_ext_func(RIG *rig, vfo_t vfo, token_t token, int *status)
{ {
case TOK_EL_MAGICEXTFUNC: case TOK_EL_MAGICEXTFUNC:
break; break;
default: default:
return -RIG_EINVAL; return -RIG_EINVAL;
} }

Wyświetl plik

@ -129,7 +129,8 @@ struct cmdparams ic7600_extcmds[] =
{ { 0 } } { { 0 } }
}; };
int ic7600_ext_tokens[] = { int ic7600_ext_tokens[] =
{
TOK_DRIVE_GAIN, TOK_BACKEND_NONE TOK_DRIVE_GAIN, TOK_BACKEND_NONE
}; };

Wyświetl plik

@ -127,7 +127,8 @@ struct cmdparams ic7610_extcmds[] =
{ { 0 } } { { 0 } }
}; };
int ic7610_ext_tokens[] = { int ic7610_ext_tokens[] =
{
TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL, TOK_BACKEND_NONE TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL, TOK_BACKEND_NONE
}; };

Wyświetl plik

@ -111,7 +111,8 @@ struct cmdparams ic7700_extcmds[] =
{ { 0 } } { { 0 } }
}; };
int ic7700_ext_tokens[] = { int ic7700_ext_tokens[] =
{
TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL, TOK_BACKEND_NONE TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL, TOK_BACKEND_NONE
}; };

Wyświetl plik

@ -114,7 +114,8 @@ struct cmdparams ic7800_extcmds[] =
{ { 0 } } { { 0 } }
}; };
int ic7800_ext_tokens[] = { int ic7800_ext_tokens[] =
{
TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL, TOK_BACKEND_NONE TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL, TOK_BACKEND_NONE
}; };
@ -347,6 +348,7 @@ int ic7800_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
} }
return icom_set_level(rig, vfo, level, val); return icom_set_level(rig, vfo, level, val);
default: default:
return icom_set_level(rig, vfo, level, val); return icom_set_level(rig, vfo, level, val);
} }
@ -378,7 +380,9 @@ int ic7800_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{ {
val->i = rig->state.attenuator[val->i - 1]; val->i = rig->state.attenuator[val->i - 1];
} }
break; break;
default: default:
return icom_get_level(rig, vfo, level, val); return icom_get_level(rig, vfo, level, val);
} }

Wyświetl plik

@ -120,7 +120,8 @@ struct cmdparams ic785x_extcmds[] =
}; };
int ic785x_ext_tokens[] = { int ic785x_ext_tokens[] =
{
TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL, TOK_BACKEND_NONE TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL, TOK_BACKEND_NONE
}; };

Wyświetl plik

@ -3241,9 +3241,12 @@ int icom_get_ext_func(RIG *rig, vfo_t vfo, token_t token, int *status)
{ {
value_t value; value_t value;
int result = icom_get_ext_cmd(rig, vfo, token, &value); int result = icom_get_ext_cmd(rig, vfo, token, &value);
if (result == RIG_OK) {
if (result == RIG_OK)
{
*status = value.i; *status = value.i;
} }
return result; return result;
} }
else { i++; } else { i++; }
@ -5411,6 +5414,7 @@ int icom_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
value_t value; value_t value;
for (i = 0; extcmds && extcmds[i].id.s != 0; i++) for (i = 0; extcmds && extcmds[i].id.s != 0; i++)
{ {
rig_debug(RIG_DEBUG_TRACE, "%s: i=%d\n", __func__, i); rig_debug(RIG_DEBUG_TRACE, "%s: i=%d\n", __func__, i);
@ -5418,9 +5422,12 @@ int icom_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
if (extcmds[i].cmdparamtype == CMD_PARAM_TYPE_FUNC && extcmds[i].id.s == func) if (extcmds[i].cmdparamtype == CMD_PARAM_TYPE_FUNC && extcmds[i].id.s == func)
{ {
int result = icom_get_cmd(rig, vfo, (struct cmdparams *)&extcmds[i], &value); int result = icom_get_cmd(rig, vfo, (struct cmdparams *)&extcmds[i], &value);
if (result == RIG_OK) {
if (result == RIG_OK)
{
*status = value.i; *status = value.i;
} }
return result; return result;
} }
} }

Wyświetl plik

@ -185,29 +185,42 @@ int elecraft_open(RIG *rig)
case RIG_MODEL_KX3: case RIG_MODEL_KX3:
// we need to know what's hooked up for PC command max levels // we need to know what's hooked up for PC command max levels
err = kenwood_safe_transaction(rig, "OM", buf, KENWOOD_MAX_BUF_LEN, 15); err = kenwood_safe_transaction(rig, "OM", buf, KENWOOD_MAX_BUF_LEN, 15);
if (err != RIG_OK) { return err; } if (err != RIG_OK) { return err; }
rig_debug(RIG_DEBUG_TRACE, "%s: OM=%s\n", __func__, buf); rig_debug(RIG_DEBUG_TRACE, "%s: OM=%s\n", __func__, buf);
priv->has_kpa3 = 0; priv->has_kpa3 = 0;
if (strstr(buf,"P")) priv->has_kpa3 = 1;
if (strstr(buf, "P")) { priv->has_kpa3 = 1; }
if (buf[13] == '0') // then we have a KX3 or KX2 if (buf[13] == '0') // then we have a KX3 or KX2
{ {
char modelnum; char modelnum;
modelnum = buf[14]; modelnum = buf[14];
switch (modelnum) switch (modelnum)
{ {
case '1': model = "KX2"; break; case '1': model = "KX2"; break;
case '2': model = "KX3"; break; case '2': model = "KX3"; break;
default: default:
rig_debug(RIG_DEBUG_ERR, "%s: Unknown Elecraft modelnum=%c, expected 1 or 2\n", __func__, modelnum); rig_debug(RIG_DEBUG_ERR, "%s: Unknown Elecraft modelnum=%c, expected 1 or 2\n",
__func__, modelnum);
break; break;
} }
if (strstr(buf,"P")) priv->has_kpa100 = 1;
if (strstr(buf, "P")) { priv->has_kpa100 = 1; }
} }
else { else
{
model = "K3"; model = "K3";
if (strstr(buf,"R")) model = "K3S";
if (strstr(buf, "R")) { model = "K3S"; }
} }
rig_debug(RIG_DEBUG_TRACE, "%s: model=%s, kpa3%d\n", __func__, model, priv->has_kpa3);
rig_debug(RIG_DEBUG_TRACE, "%s: model=%s, kpa3%d\n", __func__, model,
priv->has_kpa3);
err = elecraft_get_extension_level(rig, "K2", &priv->k2_ext_lvl); err = elecraft_get_extension_level(rig, "K2", &priv->k2_ext_lvl);

Wyświetl plik

@ -1585,14 +1585,20 @@ static int k3_get_maxpower(RIG *rig)
int maxpower = 12; // K3 default power level int maxpower = 12; // K3 default power level
char levelbuf[16]; char levelbuf[16];
struct kenwood_priv_data *priv = rig->state.priv; struct kenwood_priv_data *priv = rig->state.priv;
// default range is 0-12 if there is no KPA3 installed // default range is 0-12 if there is no KPA3 installed
if (priv->has_kpa3 || priv->has_kpa100) maxpower = 110; if (priv->has_kpa3 || priv->has_kpa100) { maxpower = 110; }
if (RIG_IS_KX2 || RIG_IS_KX3) {
if (RIG_IS_KX2 || RIG_IS_KX3)
{
int bandnum = -1; int bandnum = -1;
retval = kenwood_safe_transaction(rig, "BN", levelbuf, KENWOOD_MAX_BUF_LEN, 4); retval = kenwood_safe_transaction(rig, "BN", levelbuf, KENWOOD_MAX_BUF_LEN, 4);
if (retval != RIG_OK) { return retval; } if (retval != RIG_OK) { return retval; }
sscanf(levelbuf, "BN%d", &bandnum); sscanf(levelbuf, "BN%d", &bandnum);
switch (bandnum) switch (bandnum)
{ {
case 1: case 1:
@ -1602,6 +1608,7 @@ static int k3_get_maxpower(RIG *rig)
case 5: case 5:
maxpower = 15; maxpower = 15;
break; break;
case 0: // 160M case 0: // 160M
case 6: // 17M case 6: // 17M
case 7: // 15M case 7: // 15M
@ -1609,14 +1616,17 @@ static int k3_get_maxpower(RIG *rig)
case 9: // 10M case 9: // 10M
maxpower = 12; maxpower = 12;
break; break;
case 10: // 6M case 10: // 6M
maxpower = 10; maxpower = 10;
break; break;
default: // are transverters all limited to 3W?? default: // are transverters all limited to 3W??
maxpower = 3; maxpower = 3;
break; break;
} }
} }
rig_debug(RIG_DEBUG_TRACE, "%s: maxpower=%d\n", __func__, maxpower); rig_debug(RIG_DEBUG_TRACE, "%s: maxpower=%d\n", __func__, maxpower);
return maxpower; return maxpower;
} }
@ -1724,7 +1734,8 @@ int k3_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
break; break;
case RIG_LEVEL_RFPOWER: case RIG_LEVEL_RFPOWER:
snprintf(levelbuf, sizeof(levelbuf), "PC%03d", (int)(val.f * k3_get_maxpower(rig))); snprintf(levelbuf, sizeof(levelbuf), "PC%03d",
(int)(val.f * k3_get_maxpower(rig)));
break; break;
default: default:
@ -1998,6 +2009,7 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
sscanf(levelbuf + 2, "%d", &lvl); sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / 60.0f; val->f = (float) lvl / 60.0f;
break; break;
case RIG_LEVEL_RFPOWER: case RIG_LEVEL_RFPOWER:
retval = kenwood_safe_transaction(rig, "PC", levelbuf, sizeof(levelbuf), 5); retval = kenwood_safe_transaction(rig, "PC", levelbuf, sizeof(levelbuf), 5);
@ -2032,10 +2044,12 @@ int kx3_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
ival = val.f * (250.0 - 190.0) + 190.0; ival = val.f * (250.0 - 190.0) + 190.0;
snprintf(cmdbuf, sizeof(cmdbuf) - 1, "RG%03d", ival); snprintf(cmdbuf, sizeof(cmdbuf) - 1, "RG%03d", ival);
return kenwood_transaction(rig, cmdbuf, NULL, 0); return kenwood_transaction(rig, cmdbuf, NULL, 0);
case RIG_LEVEL_AF: case RIG_LEVEL_AF:
// manual says 0-255 as of Rev G5 but experiment says 0-60 // manual says 0-255 as of Rev G5 but experiment says 0-60
snprintf(cmdbuf, sizeof(cmdbuf), "AG%03d", (int)(val.f * 60.0f)); snprintf(cmdbuf, sizeof(cmdbuf), "AG%03d", (int)(val.f * 60.0f));
return kenwood_transaction(rig, cmdbuf, NULL, 0); return kenwood_transaction(rig, cmdbuf, NULL, 0);
case RIG_LEVEL_MICGAIN: case RIG_LEVEL_MICGAIN:
// manual says 0-255 as of Rev G5 but experiment says 0-80 // manual says 0-255 as of Rev G5 but experiment says 0-80
snprintf(cmdbuf, sizeof(cmdbuf), "MG%03d", (int)(val.f * 80.0f)); snprintf(cmdbuf, sizeof(cmdbuf), "MG%03d", (int)(val.f * 80.0f));
@ -2055,20 +2069,26 @@ int kx3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{ {
case RIG_LEVEL_AF: case RIG_LEVEL_AF:
retval = get_kenwood_level(rig, "AG", NULL, &val->i); retval = get_kenwood_level(rig, "AG", NULL, &val->i);
if (retval != RIG_OK) { return retval; } if (retval != RIG_OK) { return retval; }
// manual says 0-255 as of Rev G5 but experiment says 0-60 // manual says 0-255 as of Rev G5 but experiment says 0-60
val->f = val->i / 60.0; val->f = val->i / 60.0;
return retval; return retval;
case RIG_LEVEL_RF: case RIG_LEVEL_RF:
retval = get_kenwood_level(rig, "RG", NULL, &val->i); retval = get_kenwood_level(rig, "RG", NULL, &val->i);
if (retval != RIG_OK) { return retval; } if (retval != RIG_OK) { return retval; }
val->f = (val->i - 190.0) / (250.0 - 190.0); val->f = (val->i - 190.0) / (250.0 - 190.0);
return retval; return retval;
case RIG_LEVEL_MICGAIN: case RIG_LEVEL_MICGAIN:
retval = get_kenwood_level(rig, "MG", NULL, &val->i); retval = get_kenwood_level(rig, "MG", NULL, &val->i);
if (retval != RIG_OK) { return retval; } if (retval != RIG_OK) { return retval; }
val->f = val->i / 80.0; val->f = val->i / 80.0;
return retval; return retval;

Wyświetl plik

@ -2240,6 +2240,7 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
case RIG_LEVEL_MICGAIN: case RIG_LEVEL_MICGAIN:
if (val.f > 1.0 || val.f < 0) { return -RIG_EINVAL; } if (val.f > 1.0 || val.f < 0) { return -RIG_EINVAL; }
kenwood_val = val.f * 100; kenwood_val = val.f * 100;
snprintf(levelbuf, sizeof(levelbuf), "MG%03d", kenwood_val); snprintf(levelbuf, sizeof(levelbuf), "MG%03d", kenwood_val);
break; break;
@ -2249,6 +2250,7 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
/* XXX check level range */ /* XXX check level range */
// KX2 and KX3 have range -190 to 250 // KX2 and KX3 have range -190 to 250
if (val.f > 1.0 || val.f < 0) { return -RIG_EINVAL; } if (val.f > 1.0 || val.f < 0) { return -RIG_EINVAL; }
kenwood_val = val.f * 255.0; kenwood_val = val.f * 255.0;
snprintf(levelbuf, sizeof(levelbuf), "RG%03d", kenwood_val); snprintf(levelbuf, sizeof(levelbuf), "RG%03d", kenwood_val);
break; break;
@ -2661,6 +2663,7 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
rig_debug(RIG_DEBUG_ERR, "%s: Error getting MICGAIN\n", __func__); rig_debug(RIG_DEBUG_ERR, "%s: Error getting MICGAIN\n", __func__);
return ret; return ret;
} }
val->f = val->i / 255.0; val->f = val->i / 255.0;
return RIG_OK; return RIG_OK;

Wyświetl plik

@ -2685,9 +2685,12 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{ {
return -RIG_ENAVAIL; return -RIG_ENAVAIL;
} }
if (newcat_is_rig(rig, RIG_MODEL_TS890S)) // new format for the command with VFO selection
if (newcat_is_rig(rig,
RIG_MODEL_TS890S)) // new format for the command with VFO selection
{ {
format = "MS0%d;"; format = "MS0%d;";
if (vfo == RIG_VFO_SUB) if (vfo == RIG_VFO_SUB)
{ {
format = "MS1%d"; format = "MS1%d";
@ -3672,9 +3675,12 @@ 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){
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:
@ -3685,9 +3691,12 @@ 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){
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:

Wyświetl plik

@ -62,7 +62,8 @@ static int rig_has_ext_token(RIG *rig, token_t token)
for (i = 0; ext_tokens[i] != TOK_BACKEND_NONE; i++) for (i = 0; ext_tokens[i] != TOK_BACKEND_NONE; i++)
{ {
if (ext_tokens[i] == token) { if (ext_tokens[i] == token)
{
return 1; return 1;
} }
} }
@ -99,7 +100,8 @@ int HAMLIB_API rig_ext_func_foreach(RIG *rig,
for (cfp = rig->caps->extfuncs; cfp && cfp->name; cfp++) for (cfp = rig->caps->extfuncs; cfp && cfp->name; cfp++)
{ {
if (!rig_has_ext_token(rig, cfp->token)) { if (!rig_has_ext_token(rig, cfp->token))
{
continue; continue;
} }
@ -148,7 +150,8 @@ int HAMLIB_API rig_ext_level_foreach(RIG *rig,
for (cfp = rig->caps->extlevels; cfp && cfp->name; cfp++) for (cfp = rig->caps->extlevels; cfp && cfp->name; cfp++)
{ {
if (!rig_has_ext_token(rig, cfp->token)) { if (!rig_has_ext_token(rig, cfp->token))
{
continue; continue;
} }
@ -197,7 +200,8 @@ int HAMLIB_API rig_ext_parm_foreach(RIG *rig,
for (cfp = rig->caps->extparms; cfp && cfp->name; cfp++) for (cfp = rig->caps->extparms; cfp && cfp->name; cfp++)
{ {
if (!rig_has_ext_token(rig, cfp->token)) { if (!rig_has_ext_token(rig, cfp->token))
{
continue; continue;
} }

Wyświetl plik

@ -534,9 +534,11 @@ int HAMLIB_API rig_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
return caps->set_func(rig, vfo, func, status); return caps->set_func(rig, vfo, func, status);
} }
else { else
{
int targetable = caps->targetable_vfo & RIG_TARGETABLE_FUNC; int targetable = caps->targetable_vfo & RIG_TARGETABLE_FUNC;
rig_debug(RIG_DEBUG_TRACE, "%s: targetable=%d, vfo=%s, currvfo=%s\n", __func__, targetable, rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo)); rig_debug(RIG_DEBUG_TRACE, "%s: targetable=%d, vfo=%s, currvfo=%s\n", __func__,
targetable, rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo));
} }
if (!caps->set_vfo) if (!caps->set_vfo)