kopia lustrzana https://github.com/Hamlib/Hamlib
Add logic for ic9700 reversing Main/Sub bands
rodzic
d4d3c2bdf7
commit
e4c21c491a
|
@ -796,6 +796,7 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
||||||
unsigned char freqbuf[MAXFRAMELEN], ackbuf[MAXFRAMELEN];
|
unsigned char freqbuf[MAXFRAMELEN], ackbuf[MAXFRAMELEN];
|
||||||
int freq_len, ack_len = sizeof(ackbuf), retval;
|
int freq_len, ack_len = sizeof(ackbuf), retval;
|
||||||
int cmd, subcmd;
|
int cmd, subcmd;
|
||||||
|
int vfos_collide;
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called %s=%" PRIfreq "\n", __func__,
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called %s=%" PRIfreq "\n", __func__,
|
||||||
rig_strvfo(vfo), freq);
|
rig_strvfo(vfo), freq);
|
||||||
|
@ -806,12 +807,8 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
||||||
// So we query both and ensure they won't match
|
// So we query both and ensure they won't match
|
||||||
// If a potential collision we just swap VFOs
|
// If a potential collision we just swap VFOs
|
||||||
// This covers setting VFOA, VFOB, Main or Sub
|
// This covers setting VFOA, VFOB, Main or Sub
|
||||||
#if 0
|
|
||||||
|
|
||||||
if (rig->caps->rig_model == RIG_MODEL_IC9700)
|
if (rig->caps->rig_model == RIG_MODEL_IC9700)
|
||||||
{
|
{
|
||||||
// the 0x07 0xd2 is not working as of IC-9700 firmwave 1.05
|
|
||||||
// When it does work this can be unblocked
|
|
||||||
freq_t freqMain, freqSub;
|
freq_t freqMain, freqSub;
|
||||||
retval = rig_get_freq(rig, RIG_VFO_MAIN, &freqMain);
|
retval = rig_get_freq(rig, RIG_VFO_MAIN, &freqMain);
|
||||||
|
|
||||||
|
@ -826,15 +823,24 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
||||||
{
|
{
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
rig_debug(RIG_DEBUG_TRACE,"%s: before rounding freqMain=%g, freqSub=%g\n", __func__, freqMain, freqSub);
|
||||||
|
|
||||||
// Make our 2M = 1, 70cm = 4, and 23cm=12
|
// Make our 2M = 1, 70cm = 4, and 23cm=12
|
||||||
freqMain = freqMain / 1e8;
|
freqMain = freqMain / 1e8;
|
||||||
freqSub = freqMain / 1e8;
|
freqSub = freqSub / 1e8;
|
||||||
freq_t freq2 = freq / 1e8;
|
freq_t freq2 = freq / 1e8;
|
||||||
|
rig_debug(RIG_DEBUG_TRACE,"%s: after rounding freqMain=%g, freqSub=%g, collides=%d\n", __func__, freqMain, freqSub, vfos_collide);
|
||||||
// Check if changing bands on Main and it matches Sub band
|
// Check if changing bands on Main and it matches Sub band
|
||||||
int mainCollides = freq2 != freqMain && freq2 == freqSub;
|
if (vfo == RIG_VFO_MAIN && freq2!=freqMain) {
|
||||||
|
rig_debug(RIG_DEBUG_TRACE,"%s: requested freq collides with Sub\n", __func__);
|
||||||
|
vfos_collide = 1;
|
||||||
|
}
|
||||||
|
else if (vfo == RIG_VFO_SUB && freq2!=freqSub) {
|
||||||
|
rig_debug(RIG_DEBUG_TRACE,"%s: requested freq collides with Main", __func__);
|
||||||
|
vfos_collide = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (mainCollides)
|
if (vfos_collide)
|
||||||
{
|
{
|
||||||
// we'll just swap Main/Sub
|
// we'll just swap Main/Sub
|
||||||
retval = icom_vfo_op(rig, vfo, RIG_OP_XCHG);
|
retval = icom_vfo_op(rig, vfo, RIG_OP_XCHG);
|
||||||
|
@ -846,7 +852,7 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
rig_debug(RIG_DEBUG_TRACE, "%s: set_vfo_curr=%s\n", __func__, rig_strvfo(priv->curr_vfo));
|
||||||
retval = set_vfo_curr(rig, vfo, priv->curr_vfo);
|
retval = set_vfo_curr(rig, vfo, priv->curr_vfo);
|
||||||
|
|
||||||
if (retval != RIG_OK)
|
if (retval != RIG_OK)
|
||||||
|
|
Ładowanie…
Reference in New Issue