kopia lustrzana https://github.com/Hamlib/Hamlib
Fix RIG_PASSBAND_NOCHANGE use with Icom data modes. Allow selecting FIL2 as normal passband when in data mode. Add new Icom rigs to list that determines whether Icom data mode command supports setting filter too.
rodzic
1d15625757
commit
9e62b2783f
|
@ -414,6 +414,8 @@ int rig2icom_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width,
|
||||||
{
|
{
|
||||||
case RIG_MODE_AM: icmode = S_AM; break;
|
case RIG_MODE_AM: icmode = S_AM; break;
|
||||||
|
|
||||||
|
case RIG_MODE_PKTAM: icmode = S_AM; break;
|
||||||
|
|
||||||
case RIG_MODE_AMN: icmode = S_AMN; break;
|
case RIG_MODE_AMN: icmode = S_AMN; break;
|
||||||
|
|
||||||
case RIG_MODE_AMS: icmode = S_AMS; break;
|
case RIG_MODE_AMS: icmode = S_AMS; break;
|
||||||
|
@ -440,8 +442,12 @@ int rig2icom_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width,
|
||||||
|
|
||||||
case RIG_MODE_FM: icmode = S_FM; break;
|
case RIG_MODE_FM: icmode = S_FM; break;
|
||||||
|
|
||||||
|
case RIG_MODE_PKTFM: icmode = S_FM; break;
|
||||||
|
|
||||||
case RIG_MODE_FMN: icmode = S_FMN; break;
|
case RIG_MODE_FMN: icmode = S_FMN; break;
|
||||||
|
|
||||||
|
case RIG_MODE_PKTFMN: icmode = S_FMN; break;
|
||||||
|
|
||||||
case RIG_MODE_WFM: icmode = S_WFM; break;
|
case RIG_MODE_WFM: icmode = S_WFM; break;
|
||||||
|
|
||||||
case RIG_MODE_P25: icmode = S_P25; break;
|
case RIG_MODE_P25: icmode = S_P25; break;
|
||||||
|
@ -468,15 +474,19 @@ int rig2icom_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width,
|
||||||
{
|
{
|
||||||
pbwidth_t medium_width = rig_passband_normal(rig, mode);
|
pbwidth_t medium_width = rig_passband_normal(rig, mode);
|
||||||
|
|
||||||
if (width == medium_width || width == RIG_PASSBAND_NORMAL)
|
if (width == RIG_PASSBAND_NORMAL)
|
||||||
{
|
{
|
||||||
icmode_ext =
|
// Use rig default for "normal" passband
|
||||||
-1; /* medium, no passband data-> rig default. Is medium always the default? */
|
icmode_ext = -1;
|
||||||
}
|
}
|
||||||
else if (width < medium_width)
|
else if (width < medium_width)
|
||||||
{
|
{
|
||||||
icmode_ext = PD_NARROW_3;
|
icmode_ext = PD_NARROW_3;
|
||||||
}
|
}
|
||||||
|
else if (width == medium_width)
|
||||||
|
{
|
||||||
|
icmode_ext = PD_MEDIUM_3;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
icmode_ext = PD_WIDE_3;
|
icmode_ext = PD_WIDE_3;
|
||||||
|
|
|
@ -1572,10 +1572,19 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode,
|
||||||
unsigned char ackbuf[MAXFRAMELEN];
|
unsigned char ackbuf[MAXFRAMELEN];
|
||||||
int ack_len = sizeof(ackbuf);
|
int ack_len = sizeof(ackbuf);
|
||||||
rmode_t icom_mode;
|
rmode_t icom_mode;
|
||||||
unsigned char dm_sub_cmd = RIG_MODEL_IC7200 == rig->caps->rig_model ? 0x04 :
|
unsigned char dm_sub_cmd =
|
||||||
S_MEM_DATA_MODE;
|
rig->caps->rig_model == RIG_MODEL_IC7200 ? 0x04 : S_MEM_DATA_MODE;
|
||||||
int filter_byte = rig->caps->rig_model == RIG_MODEL_IC7300
|
int filter_byte = rig->caps->rig_model == RIG_MODEL_IC7100
|
||||||
|| rig->caps->rig_model == RIG_MODEL_IC7610;
|
|| rig->caps->rig_model == RIG_MODEL_IC7200
|
||||||
|
|| rig->caps->rig_model == RIG_MODEL_IC7300
|
||||||
|
|| rig->caps->rig_model == RIG_MODEL_IC7600
|
||||||
|
|| rig->caps->rig_model == RIG_MODEL_IC7610
|
||||||
|
|| rig->caps->rig_model == RIG_MODEL_IC7700
|
||||||
|
|| rig->caps->rig_model == RIG_MODEL_IC7800
|
||||||
|
|| rig->caps->rig_model == RIG_MODEL_IC785x
|
||||||
|
|| rig->caps->rig_model == RIG_MODEL_IC9100
|
||||||
|
|| rig->caps->rig_model == RIG_MODEL_IC9700
|
||||||
|
|| rig->caps->rig_model == RIG_MODEL_IC705;
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
|
@ -1611,6 +1620,8 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode,
|
||||||
if (RIG_OK == retval)
|
if (RIG_OK == retval)
|
||||||
{
|
{
|
||||||
unsigned char datamode[2];
|
unsigned char datamode[2];
|
||||||
|
unsigned char mode_icom; // Not used, we only need the width
|
||||||
|
signed char width_icom;
|
||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
|
@ -1629,10 +1640,6 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (width != RIG_PASSBAND_NOCHANGE)
|
|
||||||
{
|
|
||||||
unsigned char mode_icom; // not usb as it will map to USB/LSB
|
|
||||||
signed char width_icom;
|
|
||||||
rig2icom_mode(rig, vfo, mode, width, &mode_icom, &width_icom);
|
rig2icom_mode(rig, vfo, mode, width, &mode_icom, &width_icom);
|
||||||
if (filter_byte && width_icom != -1) // then we need the width byte too
|
if (filter_byte && width_icom != -1) // then we need the width byte too
|
||||||
{
|
{
|
||||||
|
@ -1649,12 +1656,6 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode,
|
||||||
icom_transaction(rig, C_CTL_MEM, dm_sub_cmd, datamode, 1, ackbuf,
|
icom_transaction(rig, C_CTL_MEM, dm_sub_cmd, datamode, 1, ackbuf,
|
||||||
&ack_len);
|
&ack_len);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s RIG_PASSBAND_NOCHANGE\n", __func__);
|
|
||||||
return RIG_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (retval != RIG_OK)
|
if (retval != RIG_OK)
|
||||||
{
|
{
|
||||||
|
|
Ładowanie…
Reference in New Issue