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

@ -1273,21 +1273,23 @@ static int dummy_set_ext_func(RIG *rig, vfo_t vfo, token_t token, int status)
switch (token)
{
case TOK_EL_MAGICEXTFUNC:
break;
case TOK_EL_MAGICEXTFUNC:
break;
default:
return -RIG_EINVAL;
default:
return -RIG_EINVAL;
}
switch (cfp->type)
{
case RIG_CONF_CHECKBUTTON:
break;
case RIG_CONF_BUTTON:
break;
default:
return -RIG_EINTERNAL;
case RIG_CONF_CHECKBUTTON:
break;
case RIG_CONF_BUTTON:
break;
default:
return -RIG_EINTERNAL;
}
elp = find_ext(priv->ext_funcs, token);
@ -1301,7 +1303,7 @@ static int dummy_set_ext_func(RIG *rig, vfo_t vfo, token_t token, int status)
elp->val.i = status;
rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s %d\n", __func__,
cfp->name, status);
cfp->name, status);
return RIG_OK;
}
@ -1322,10 +1324,11 @@ static int dummy_get_ext_func(RIG *rig, vfo_t vfo, token_t token, int *status)
switch (token)
{
case TOK_EL_MAGICEXTFUNC:
break;
default:
return -RIG_EINVAL;
case TOK_EL_MAGICEXTFUNC:
break;
default:
return -RIG_EINVAL;
}
elp = find_ext(priv->ext_funcs, token);
@ -1339,7 +1342,7 @@ static int dummy_get_ext_func(RIG *rig, vfo_t vfo, token_t token, int *status)
*status = elp->val.i;
rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__,
cfp->name);
cfp->name);
return RIG_OK;
}

Wyświetl plik

@ -901,7 +901,7 @@ int ic7300_set_parm(RIG *rig, setting_t parm, value_t val)
switch (parm)
{
unsigned char prmbuf[MAXFRAMELEN];
unsigned char prmbuf[MAXFRAMELEN];
case RIG_PARM_ANN:
{

Wyświetl plik

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

Wyświetl plik

@ -127,7 +127,8 @@ struct cmdparams ic7610_extcmds[] =
{ { 0 } }
};
int ic7610_ext_tokens[] = {
int ic7610_ext_tokens[] =
{
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 } }
};
int ic7700_ext_tokens[] = {
int ic7700_ext_tokens[] =
{
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 } }
};
int ic7800_ext_tokens[] = {
int ic7800_ext_tokens[] =
{
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);
default:
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];
}
break;
default:
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
};
@ -331,5 +332,5 @@ int ic785x_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
int ic785x_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{
return ic7800_get_level(rig, vfo, level, val);
return ic7800_get_level(rig, vfo, level, val);
}

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;
int result = icom_get_ext_cmd(rig, vfo, token, &value);
if (result == RIG_OK) {
if (result == RIG_OK)
{
*status = value.i;
}
return result;
}
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__);
value_t value;
for (i = 0; extcmds && extcmds[i].id.s != 0; 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)
{
int result = icom_get_cmd(rig, vfo, (struct cmdparams *)&extcmds[i], &value);
if (result == RIG_OK) {
if (result == RIG_OK)
{
*status = value.i;
}
return result;
}
}

Wyświetl plik

@ -183,31 +183,44 @@ int elecraft_open(RIG *rig)
case RIG_MODEL_K3S:
case RIG_MODEL_KX2:
case RIG_MODEL_KX3:
// 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);
if (err != RIG_OK) { return err; }
rig_debug(RIG_DEBUG_TRACE, "%s: OM=%s\n", __func__, buf);
priv->has_kpa3 = 0;
if (strstr(buf,"P")) priv->has_kpa3 = 1;
if (buf[13] == '0') // then we have a KX3 or KX2
{
char modelnum;
modelnum = buf[14];
switch (modelnum)
{
case '1': model = "KX2";break;
case '2': model = "KX3";break;
default:
rig_debug(RIG_DEBUG_ERR, "%s: Unknown Elecraft modelnum=%c, expected 1 or 2\n", __func__, modelnum);
break;
}
if (strstr(buf,"P")) priv->has_kpa100 = 1;
}
else {
model = "K3";
if (strstr(buf,"R")) model = "K3S";
}
rig_debug(RIG_DEBUG_TRACE, "%s: model=%s, kpa3%d\n", __func__, model, priv->has_kpa3);
// 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);
if (err != RIG_OK) { return err; }
rig_debug(RIG_DEBUG_TRACE, "%s: OM=%s\n", __func__, buf);
priv->has_kpa3 = 0;
if (strstr(buf, "P")) { priv->has_kpa3 = 1; }
if (buf[13] == '0') // then we have a KX3 or KX2
{
char modelnum;
modelnum = buf[14];
switch (modelnum)
{
case '1': model = "KX2"; break;
case '2': model = "KX3"; break;
default:
rig_debug(RIG_DEBUG_ERR, "%s: Unknown Elecraft modelnum=%c, expected 1 or 2\n",
__func__, modelnum);
break;
}
if (strstr(buf, "P")) { priv->has_kpa100 = 1; }
}
else
{
model = "K3";
if (strstr(buf, "R")) { model = "K3S"; }
}
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);

Wyświetl plik

@ -1581,44 +1581,54 @@ int k3_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode,
static int k3_get_maxpower(RIG *rig)
{
int retval;
int maxpower = 12; // K3 default power level
char levelbuf[16];
struct kenwood_priv_data *priv = rig->state.priv;
// default range is 0-12 if there is no KPA3 installed
if (priv->has_kpa3 || priv->has_kpa100) maxpower = 110;
if (RIG_IS_KX2 || RIG_IS_KX3) {
int retval;
int maxpower = 12; // K3 default power level
char levelbuf[16];
struct kenwood_priv_data *priv = rig->state.priv;
int bandnum = -1;
retval = kenwood_safe_transaction(rig, "BN", levelbuf, KENWOOD_MAX_BUF_LEN, 4);
if (retval != RIG_OK) { return retval; }
sscanf(levelbuf,"BN%d", &bandnum);
switch(bandnum)
{
case 1:
case 2:
case 3:
case 4:
case 5:
maxpower = 15;
break;
case 0: // 160M
case 6: // 17M
case 7: // 15M
case 8: // 12M
case 9: // 10M
maxpower = 12;
break;
case 10: // 6M
maxpower = 10;
break;
default: // are transverters all limited to 3W??
maxpower = 3;
break;
}
}
rig_debug(RIG_DEBUG_TRACE, "%s: maxpower=%d\n", __func__, maxpower);
return maxpower;
// default range is 0-12 if there is no KPA3 installed
if (priv->has_kpa3 || priv->has_kpa100) { maxpower = 110; }
if (RIG_IS_KX2 || RIG_IS_KX3)
{
int bandnum = -1;
retval = kenwood_safe_transaction(rig, "BN", levelbuf, KENWOOD_MAX_BUF_LEN, 4);
if (retval != RIG_OK) { return retval; }
sscanf(levelbuf, "BN%d", &bandnum);
switch (bandnum)
{
case 1:
case 2:
case 3:
case 4:
case 5:
maxpower = 15;
break;
case 0: // 160M
case 6: // 17M
case 7: // 15M
case 8: // 12M
case 9: // 10M
maxpower = 12;
break;
case 10: // 6M
maxpower = 10;
break;
default: // are transverters all limited to 3W??
maxpower = 3;
break;
}
}
rig_debug(RIG_DEBUG_TRACE, "%s: maxpower=%d\n", __func__, maxpower);
return maxpower;
}
int k3_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
@ -1724,8 +1734,9 @@ int k3_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
break;
case RIG_LEVEL_RFPOWER:
snprintf(levelbuf, sizeof(levelbuf), "PC%03d", (int)(val.f * k3_get_maxpower(rig)));
break;
snprintf(levelbuf, sizeof(levelbuf), "PC%03d",
(int)(val.f * k3_get_maxpower(rig)));
break;
default:
return kenwood_set_level(rig, vfo, level, val);
@ -1970,7 +1981,7 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / 250.0f;
break;
break;
case RIG_LEVEL_AF:
retval = kenwood_safe_transaction(rig, "AG", levelbuf, sizeof(levelbuf), 5);
@ -1998,6 +2009,7 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / 60.0f;
break;
case RIG_LEVEL_RFPOWER:
retval = kenwood_safe_transaction(rig, "PC", levelbuf, sizeof(levelbuf), 5);
@ -2008,7 +2020,7 @@ int k3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
sscanf(levelbuf + 2, "%d", &lvl);
val->f = (float) lvl / k3_get_maxpower(rig);
break;
break;
default:
return kenwood_get_level(rig, vfo, level, val);
@ -2030,16 +2042,18 @@ int kx3_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
case RIG_LEVEL_RF:
ival = val.f * (250.0 - 190.0) + 190.0;
snprintf(cmdbuf,sizeof(cmdbuf)-1,"RG%03d", ival);
return kenwood_transaction(rig, cmdbuf, NULL, 0);
snprintf(cmdbuf, sizeof(cmdbuf) - 1, "RG%03d", ival);
return kenwood_transaction(rig, cmdbuf, NULL, 0);
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));
return kenwood_transaction(rig, cmdbuf, NULL, 0);
return kenwood_transaction(rig, cmdbuf, NULL, 0);
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));
return kenwood_transaction(rig, cmdbuf, NULL, 0);
return kenwood_transaction(rig, cmdbuf, NULL, 0);
}
return k3_set_level(rig, vfo, level, val);
@ -2055,20 +2069,26 @@ int kx3_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
{
case RIG_LEVEL_AF:
retval = get_kenwood_level(rig, "AG", NULL, &val->i);
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;
return retval;
case RIG_LEVEL_RF:
retval = get_kenwood_level(rig, "RG", NULL, &val->i);
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;
case RIG_LEVEL_MICGAIN:
retval = get_kenwood_level(rig, "MG", NULL, &val->i);
if (retval != RIG_OK) { return retval; }
val->f = val->i / 80.0;
return retval;

Wyświetl plik

@ -2203,7 +2203,7 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
/*
* Best estimate: 1.0 corresponds to 100W
*/
kenwood_val = val.f * 100;
kenwood_val = val.f * 100;
snprintf(levelbuf, sizeof(levelbuf), "PC%03d", kenwood_val);
break;
@ -2240,6 +2240,7 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
case RIG_LEVEL_MICGAIN:
if (val.f > 1.0 || val.f < 0) { return -RIG_EINVAL; }
kenwood_val = val.f * 100;
snprintf(levelbuf, sizeof(levelbuf), "MG%03d", kenwood_val);
break;
@ -2249,6 +2250,7 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
/* XXX check level range */
// KX2 and KX3 have range -190 to 250
if (val.f > 1.0 || val.f < 0) { return -RIG_EINVAL; }
kenwood_val = val.f * 255.0;
snprintf(levelbuf, sizeof(levelbuf), "RG%03d", kenwood_val);
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__);
return ret;
}
val->f = val->i / 255.0;
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;
}
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;";
if (vfo == RIG_VFO_SUB)
{
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,
cat_term);
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE){
priv->cmd_str[2] = main_sub_vfo;
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
{
priv->cmd_str[2] = main_sub_vfo;
}
break;
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,
cat_term);
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE){
priv->cmd_str[2] = main_sub_vfo;
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
{
priv->cmd_str[2] = main_sub_vfo;
}
break;
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++)
{
if (ext_tokens[i] == token) {
if (ext_tokens[i] == token)
{
return 1;
}
}
@ -83,10 +84,10 @@ static int rig_has_ext_token(RIG *rig, token_t token)
* rig_ext_func_foreach.
*/
int HAMLIB_API rig_ext_func_foreach(RIG *rig,
int (*cfunc)(RIG *,
const struct confparams *,
rig_ptr_t),
rig_ptr_t data)
int (*cfunc)(RIG *,
const struct confparams *,
rig_ptr_t),
rig_ptr_t data)
{
const struct confparams *cfp;
@ -99,7 +100,8 @@ int HAMLIB_API rig_ext_func_foreach(RIG *rig,
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;
}
@ -148,7 +150,8 @@ int HAMLIB_API rig_ext_level_foreach(RIG *rig,
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;
}
@ -197,7 +200,8 @@ int HAMLIB_API rig_ext_parm_foreach(RIG *rig,
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;
}

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);
}
else {
else
{
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)