kopia lustrzana https://github.com/Hamlib/Hamlib
IC-9700 VFO selection now works for VFOA, VFOB, MainA, MainB, SubA, and SubB
WSJT-X does not set VFOB mode when VFOA mode is already selected...must change VFOA mode and back again to set VFOBpull/1347/head
rodzic
56ad3ac1ef
commit
b58c0a0fa4
|
@ -1584,7 +1584,7 @@ const struct rig_caps ic905_caps =
|
|||
{ MHz(2300), MHz(2309.999999), IC705_ALL_TX_MODES, W(0.1), W(2), IC7300_VFOS, RIG_ANT_1, "EUR" },
|
||||
{ MHz(2390), MHz(2450), IC705_ALL_TX_MODES, W(0.1), W(2), IC7300_VFOS, RIG_ANT_1, "EUR" },
|
||||
{ MHz(5650), MHz(5925), IC705_ALL_TX_MODES, W(0.1), W(2), IC7300_VFOS, RIG_ANT_1, "EUR" },
|
||||
{ MHz(10000), MHz(10500), IC705_ALL_TX_MODES, W(0.1), W(2), IC7300_VFOS, RIG_ANT_1, "USA" },
|
||||
{ MHz(10000), MHz(10500), IC705_ALL_TX_MODES, W(0.1), W(2), IC7300_VFOS, RIG_ANT_1, "EUR" },
|
||||
RIG_FRNG_END,
|
||||
},
|
||||
|
||||
|
@ -2093,11 +2093,30 @@ int ic9700_set_vfo(RIG *rig, vfo_t vfo)
|
|||
unsigned char ackbuf[MAXFRAMELEN];
|
||||
int ack_len = sizeof(ackbuf), retval;
|
||||
|
||||
if (vfo == RIG_VFO_A || vfo == RIG_VFO_MAIN)
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s: vfo=%s\n", __func__, rig_strvfo(vfo));
|
||||
if (vfo == RIG_VFO_A)
|
||||
{
|
||||
retval = icom_transaction(rig, 0x07, 0x00, NULL, 0, ackbuf, &ack_len);
|
||||
}
|
||||
else if (vfo == RIG_VFO_B)
|
||||
{
|
||||
retval = icom_transaction(rig, 0x07, 0x01, NULL, 0, ackbuf, &ack_len);
|
||||
}
|
||||
else if (vfo == RIG_VFO_MAIN || vfo == RIG_VFO_MAIN_A || vfo == RIG_VFO_MAIN_B)
|
||||
{
|
||||
retval = icom_transaction(rig, 0x07, 0xd0, NULL, 0, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: %s\n", __func__, rigerror(retval));
|
||||
return -retval;
|
||||
}
|
||||
else
|
||||
if (vfo == RIG_VFO_MAIN_A || vfo == RIG_VFO_MAIN_B)
|
||||
{
|
||||
int subcmd = vfo == RIG_VFO_MAIN_A ? 0x00: 0x01;
|
||||
retval = icom_transaction(rig, 0x07, subcmd, NULL, 0, ackbuf, &ack_len);
|
||||
}
|
||||
}
|
||||
else if (vfo == RIG_VFO_SUB || vfo == RIG_VFO_SUB_A || vfo == RIG_VFO_SUB_B)
|
||||
{
|
||||
if (rig->state.cache.satmode)
|
||||
{
|
||||
|
@ -2105,7 +2124,19 @@ int ic9700_set_vfo(RIG *rig, vfo_t vfo)
|
|||
// we return RIG_OK anyways as this should just be a bad request
|
||||
return RIG_OK;
|
||||
}
|
||||
// first switch to sub
|
||||
retval = icom_transaction(rig, 0x07, 0xd1, NULL, 0, ackbuf, &ack_len);
|
||||
if (retval != RIG_OK)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: %s\n", __func__, rigerror(retval));
|
||||
return -retval;
|
||||
}
|
||||
if (vfo == RIG_VFO_SUB_A || vfo == RIG_VFO_SUB_B)
|
||||
{
|
||||
HAMLIB_TRACE;
|
||||
int subcmd = vfo == RIG_VFO_SUB_A ? 0x00: 0x01;
|
||||
retval = icom_transaction(rig, 0x07, subcmd, NULL, 0, ackbuf, &ack_len);
|
||||
}
|
||||
}
|
||||
|
||||
if (retval != RIG_OK)
|
||||
|
|
|
@ -1373,7 +1373,7 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
|||
HAMLIB_TRACE;
|
||||
subcmd = 0x01; // get unselected VFO
|
||||
}
|
||||
if (RIG_IS_IC7600)
|
||||
if (RIG_IS_IC7600 || RIG_IS_IC9700)
|
||||
{ // the 7600/7610 do it different 0=Main, 1=Sub -- maybe other Icoms will start doing this too
|
||||
subcmd = 0;
|
||||
if (vfo & RIG_VFO_B || vfo & RIG_VFO_SUB) subcmd = 1;
|
||||
|
@ -1677,6 +1677,11 @@ int icom_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
rig->caps->targetable_vfo = rig->state.targetable_vfo |= RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE;
|
||||
}
|
||||
}
|
||||
if (RIG_IS_IC9700)
|
||||
{
|
||||
subcmd2 = 0;
|
||||
if (vfo & RIG_VFO_B || vfo & RIG_VFO_SUB) subcmd2 = 1;
|
||||
}
|
||||
|
||||
retval = icom_transaction(rig, cmd2, subcmd2, NULL, 0, freqbuf, &freq_len);
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#define BACKEND_VER "20230716"
|
||||
#define BACKEND_VER "20230718"
|
||||
|
||||
#define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31)
|
||||
#define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51)
|
||||
|
|
|
@ -1940,7 +1940,8 @@ vfo_t HAMLIB_API vfo_fixup(RIG *rig, vfo_t vfo, split_t split)
|
|||
__func__, funcname, linenum,
|
||||
rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo), split);
|
||||
|
||||
if (rig->caps->rig_model == RIG_MODEL_ID5100)
|
||||
if (rig->caps->rig_model == RIG_MODEL_ID5100
|
||||
|| rig->caps->rig_model == RIG_MODEL_IC9700)
|
||||
{
|
||||
return vfo; // no change to requested vfo
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue