kopia lustrzana https://github.com/Hamlib/Hamlib
Hopefully fixed ELAD FDM Duo split setting
https://github.com/Hamlib/Hamlib/issues/1062pull/1068/head
rodzic
25a2a00c12
commit
eb453db056
|
@ -855,10 +855,12 @@ int elad_set_vfo_main_sub(RIG *rig, vfo_t vfo)
|
||||||
|
|
||||||
switch (vfo)
|
switch (vfo)
|
||||||
{
|
{
|
||||||
|
case RIG_VFO_A:
|
||||||
case RIG_VFO_MAIN:
|
case RIG_VFO_MAIN:
|
||||||
vfo_function = '0';
|
vfo_function = '0';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RIG_VFO_B:
|
||||||
case RIG_VFO_SUB:
|
case RIG_VFO_SUB:
|
||||||
vfo_function = '1';
|
vfo_function = '1';
|
||||||
break;
|
break;
|
||||||
|
@ -906,11 +908,19 @@ int elad_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t txvfo)
|
||||||
char cmdbuf[6];
|
char cmdbuf[6];
|
||||||
int retval;
|
int retval;
|
||||||
unsigned char vfo_function;
|
unsigned char vfo_function;
|
||||||
|
split_t tsplit;
|
||||||
|
vfo_t tvfo;
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
if (RIG_MODEL_TS990S == rig->caps->rig_model)
|
retval = elad_get_split_vfo_if(rig, vfo, &tsplit, &tvfo);
|
||||||
|
|
||||||
|
if (split == tsplit)
|
||||||
{
|
{
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: No change detected...ignoring request\n", __func__);
|
||||||
|
}
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: Change detected requested split %d!=%d\n", __func__, split, tsplit);
|
||||||
|
|
||||||
if (split)
|
if (split)
|
||||||
{
|
{
|
||||||
// Rx MAIN/Tx SUB is the only split method
|
// Rx MAIN/Tx SUB is the only split method
|
||||||
|
@ -921,37 +931,11 @@ int elad_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t txvfo)
|
||||||
|
|
||||||
SNPRINTF(cmdbuf, sizeof(cmdbuf), "SP%c", RIG_SPLIT_ON == split ? '1' : '0');
|
SNPRINTF(cmdbuf, sizeof(cmdbuf), "SP%c", RIG_SPLIT_ON == split ? '1' : '0');
|
||||||
return elad_transaction(rig, cmdbuf, NULL, 0);
|
return elad_transaction(rig, cmdbuf, NULL, 0);
|
||||||
}
|
|
||||||
|
|
||||||
if (vfo != RIG_VFO_CURR)
|
|
||||||
{
|
|
||||||
switch (vfo)
|
|
||||||
{
|
|
||||||
case RIG_VFO_A: vfo_function = '0'; break;
|
|
||||||
|
|
||||||
case RIG_VFO_B: vfo_function = '1'; break;
|
|
||||||
|
|
||||||
case RIG_VFO_MEM: vfo_function = '2'; break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported VFO %s\n", __func__, rig_strvfo(vfo));
|
|
||||||
return -RIG_EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set RX VFO */
|
|
||||||
SNPRINTF(cmdbuf, sizeof(cmdbuf), "FR%c", vfo_function);
|
|
||||||
retval = elad_transaction(rig, cmdbuf, NULL, 0);
|
|
||||||
|
|
||||||
if (retval != RIG_OK)
|
|
||||||
{
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Split off means Rx and Tx are the same */
|
/* Split off means Rx and Tx are the same */
|
||||||
if (split == RIG_SPLIT_OFF)
|
if (split == RIG_SPLIT_OFF)
|
||||||
{
|
{
|
||||||
txvfo = vfo;
|
txvfo = RIG_VFO_MAIN;
|
||||||
|
|
||||||
if (txvfo == RIG_VFO_CURR)
|
if (txvfo == RIG_VFO_CURR)
|
||||||
{
|
{
|
||||||
|
@ -967,9 +951,11 @@ int elad_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t txvfo)
|
||||||
switch (txvfo)
|
switch (txvfo)
|
||||||
{
|
{
|
||||||
case RIG_VFO_VFO:
|
case RIG_VFO_VFO:
|
||||||
case RIG_VFO_A: vfo_function = '0'; break;
|
case RIG_VFO_MAIN:
|
||||||
|
case RIG_VFO_A: vfo_function = '0'; txvfo = RIG_VFO_MAIN; break;
|
||||||
|
|
||||||
case RIG_VFO_B: vfo_function = '1'; break;
|
case RIG_VFO_SUB:
|
||||||
|
case RIG_VFO_B: vfo_function = '1'; txvfo = RIG_VFO_SUB; break;
|
||||||
|
|
||||||
case RIG_VFO_MEM: vfo_function = '2'; break;
|
case RIG_VFO_MEM: vfo_function = '2'; break;
|
||||||
|
|
||||||
|
@ -979,18 +965,6 @@ int elad_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t txvfo)
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RIG_MODEL_K2 == rig->caps->rig_model
|
|
||||||
|| RIG_MODEL_K3 == rig->caps->rig_model)
|
|
||||||
{
|
|
||||||
/* do not attempt redundant split change commands on Elecraft as
|
|
||||||
they impact output power when transmitting */
|
|
||||||
if (RIG_OK == (retval = elad_safe_transaction(rig, "FT", cmdbuf, sizeof(cmdbuf),
|
|
||||||
3)))
|
|
||||||
{
|
|
||||||
if (cmdbuf[2] == vfo_function) { return RIG_OK; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* set TX VFO */
|
/* set TX VFO */
|
||||||
SNPRINTF(cmdbuf, sizeof(cmdbuf), "FT%c", vfo_function);
|
SNPRINTF(cmdbuf, sizeof(cmdbuf), "FT%c", vfo_function);
|
||||||
retval = elad_transaction(rig, cmdbuf, NULL, 0);
|
retval = elad_transaction(rig, cmdbuf, NULL, 0);
|
||||||
|
@ -1000,6 +974,7 @@ int elad_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t txvfo)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
retval = elad_set_split(rig, vfo, split, txvfo);
|
||||||
/* Remember whether split is on, for elad_set_vfo */
|
/* Remember whether split is on, for elad_set_vfo */
|
||||||
priv->split = split;
|
priv->split = split;
|
||||||
|
|
||||||
|
@ -1019,7 +994,8 @@ int elad_set_split(RIG *rig, vfo_t vfo, split_t split, vfo_t txvfo)
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
SNPRINTF(cmdbuf, sizeof(cmdbuf), "SP%c", RIG_SPLIT_ON == split ? '1' : '0');
|
// we want stand-alone split so we can control it
|
||||||
|
SNPRINTF(cmdbuf, sizeof(cmdbuf), "SP%c", RIG_SPLIT_ON == split ? '2' : '0');
|
||||||
|
|
||||||
retval = elad_transaction(rig, cmdbuf, NULL, 0);
|
retval = elad_transaction(rig, cmdbuf, NULL, 0);
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue