kopia lustrzana https://github.com/Hamlib/Hamlib
Add missing levels and fix filters for Yaesu FT-2000
rodzic
1f7ad94438
commit
e2ca90841c
|
@ -25,7 +25,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
@ -185,16 +184,17 @@ const struct rig_caps ft2000_caps =
|
|||
|
||||
/* mode/filter list, .remember = order matters! */
|
||||
.filters = {
|
||||
{FT2000_CW_RTTY_PKT_RX_MODES, Hz(1800)}, /* Normal CW, RTTY, PKT/USER */
|
||||
{FT2000_CW_RTTY_PKT_RX_MODES, Hz(500)}, /* Narrow CW, RTTY, PKT/USER */
|
||||
{FT2000_CW_RTTY_PKT_RX_MODES, Hz(500)}, /* Normal CW, RTTY, PKT/USER */
|
||||
{FT2000_CW_RTTY_PKT_RX_MODES, Hz(100)}, /* Narrow CW, RTTY, PKT/USER */
|
||||
{FT2000_CW_RTTY_PKT_RX_MODES, Hz(2400)}, /* Wide CW, RTTY, PKT/USER */
|
||||
{RIG_MODE_SSB, Hz(2400)}, /* Normal SSB */
|
||||
{RIG_MODE_SSB, Hz(1800)}, /* Narrow SSB */
|
||||
{RIG_MODE_SSB, Hz(3000)}, /* Wide SSB */
|
||||
{RIG_MODE_SSB, Hz(4000)}, /* Wide SSB */
|
||||
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
|
||||
{RIG_MODE_AM, Hz(6000)}, /* Narrow AM */
|
||||
{FT2000_FM_RX_MODES, Hz(12000)}, /* Normal FM */
|
||||
{FT2000_FM_RX_MODES, Hz(8000)}, /* Narrow FM */
|
||||
{FT2000_FM_RX_MODES, Hz(16000)}, /* Normal FM */
|
||||
{FT2000_FM_RX_MODES, Hz(9000)}, /* Narrow FM */
|
||||
|
||||
RIG_FLT_END,
|
||||
},
|
||||
|
|
|
@ -28,60 +28,49 @@
|
|||
#ifndef _FT2000_H
|
||||
#define _FT2000_H 1
|
||||
|
||||
#if 0
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
#define ON TRUE
|
||||
#define OFF FALSE
|
||||
#endif
|
||||
|
||||
#define FT2000_VFO_ALL (RIG_VFO_A|RIG_VFO_B)
|
||||
#define FT2000_VFO_ALL (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM)
|
||||
|
||||
/* Receiver caps */
|
||||
|
||||
#define FT2000_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\
|
||||
RIG_MODE_RTTY|RIG_MODE_RTTYR|\
|
||||
RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM)
|
||||
#define FT2000_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\
|
||||
RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|\
|
||||
RIG_MODE_FM|RIG_MODE_FMN)
|
||||
|
||||
#define FT2000_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\
|
||||
RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB)
|
||||
#define FT2000_AM_RX_MODES (RIG_MODE_AM)
|
||||
#define FT2000_AM_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN)
|
||||
#define FT2000_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM)
|
||||
#define FT2000_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\
|
||||
RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR)
|
||||
|
||||
|
||||
|
||||
|
||||
/* TRX caps */
|
||||
|
||||
#define FT2000_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY| \
|
||||
RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) /* 100 W class */
|
||||
#define FT2000_AM_TX_MODES (RIG_MODE_AM) /* set 25W max */
|
||||
RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|\
|
||||
RIG_MODE_FM|RIG_MODE_FMN) /* 100 W class */
|
||||
#define FT2000_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_AMN) /* set 25W max */
|
||||
|
||||
/* TBC */
|
||||
#define FT2000_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|\
|
||||
RIG_LEVEL_ALC|RIG_LEVEL_RAWSTR|RIG_LEVEL_SWR|\
|
||||
RIG_LEVEL_ALC|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_SWR|\
|
||||
RIG_LEVEL_RFPOWER|RIG_LEVEL_RF|RIG_LEVEL_SQL|\
|
||||
RIG_LEVEL_MICGAIN|RIG_LEVEL_IF|RIG_LEVEL_CWPITCH|\
|
||||
RIG_LEVEL_KEYSPD|RIG_LEVEL_AF|RIG_LEVEL_AGC|\
|
||||
RIG_LEVEL_METER|RIG_LEVEL_BKINDL|RIG_LEVEL_SQL|\
|
||||
RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_COMP|\
|
||||
RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF)
|
||||
RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF|\
|
||||
RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_RFPOWER_METER|\
|
||||
RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER)
|
||||
|
||||
/* TBC */
|
||||
#define FT2000_FUNCS (RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_LOCK|\
|
||||
RIG_FUNC_MON|RIG_FUNC_NB|RIG_FUNC_NR|RIG_FUNC_VOX|\
|
||||
RIG_FUNC_FBKIN|RIG_FUNC_COMP|RIG_FUNC_ANF|RIG_FUNC_MN|\
|
||||
RIG_FUNC_RIT|RIG_FUNC_XIT|\
|
||||
RIG_FUNC_TUNER)
|
||||
|
||||
/* TBC */
|
||||
#define FT2000_VFO_OPS (RIG_OP_TUNE|RIG_OP_CPY|RIG_OP_XCHG|\
|
||||
RIG_OP_UP|RIG_OP_DOWN|RIG_OP_BAND_UP|RIG_OP_BAND_DOWN|\
|
||||
RIG_OP_TO_VFO|RIG_OP_FROM_VFO|RIG_OP_TOGGLE)
|
||||
|
||||
/* TBC */
|
||||
#define FT2000_STR_CAL { 16, \
|
||||
{ \
|
||||
{ 0, -54 }, /* S0 */ \
|
||||
|
|
|
@ -2868,6 +2868,9 @@ int newcat_set_powerstat(RIG *rig, powerstat_t status)
|
|||
return -RIG_ENAVAIL;
|
||||
}
|
||||
|
||||
// TODO: According to FTDX3000 CAT manual: "This command requires dummy data be initially sent. Then after one second and before two seconds the command is sent."
|
||||
// TODO: According to FTDX5000 CAT manual: "Send the PS1; command twice every one second."
|
||||
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PS%c%c", ps, cat_term);
|
||||
|
||||
err = write_block(&state->rigport, priv->cmd_str, strlen(priv->cmd_str));
|
||||
|
@ -5404,7 +5407,7 @@ int newcat_set_mem(RIG *rig, vfo_t vfo, int ch)
|
|||
/* Out of Range, or empty */
|
||||
if (!mem_caps)
|
||||
{
|
||||
return -RIG_ENAVAIL;
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
/* set to usable vfo if needed */
|
||||
|
@ -7212,9 +7215,89 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
return RIG_OK;
|
||||
}
|
||||
} // end is_ftdx101
|
||||
else if (is_ft2000)
|
||||
{
|
||||
// We need details on the widths here, manuals lack information.
|
||||
switch (mode)
|
||||
{
|
||||
case RIG_MODE_RTTY:
|
||||
case RIG_MODE_RTTYR:
|
||||
case RIG_MODE_CW:
|
||||
case RIG_MODE_CWR:
|
||||
// Narrow mode overrides DSP filter width on FT-2000
|
||||
newcat_set_narrow(rig, vfo, FALSE);
|
||||
|
||||
if (width == RIG_PASSBAND_NORMAL) { w = 16; }
|
||||
else if (width <= 100) { w = 4; }
|
||||
else if (width <= 500) { w = 16; }
|
||||
else { w = 31; } // 2400
|
||||
|
||||
break;
|
||||
|
||||
case RIG_MODE_PKTUSB:
|
||||
case RIG_MODE_PKTLSB:
|
||||
case RIG_MODE_LSB:
|
||||
case RIG_MODE_USB:
|
||||
// Narrow mode overrides DSP filter width on FT-2000
|
||||
newcat_set_narrow(rig, vfo, FALSE);
|
||||
|
||||
if (width == RIG_PASSBAND_NORMAL) { w = 16; }
|
||||
else if (width <= 1800) { w = 8; }
|
||||
else if (width <= 2400) { w = 16; }
|
||||
else if (width <= 3000) { w = 25; }
|
||||
else { w = 31; } // 4000
|
||||
|
||||
break;
|
||||
|
||||
case RIG_MODE_AM:
|
||||
case RIG_MODE_FM:
|
||||
case RIG_MODE_PKTFM:
|
||||
if (width < rig_passband_normal(rig, mode))
|
||||
{
|
||||
err = newcat_set_narrow(rig, vfo, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
err = newcat_set_narrow(rig, vfo, FALSE);
|
||||
}
|
||||
|
||||
return err;
|
||||
|
||||
case RIG_MODE_AMN:
|
||||
case RIG_MODE_FMN:
|
||||
return RIG_OK;
|
||||
|
||||
default:
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
if ((err = set_roofing_filter_for_width(rig, vfo, width)) != RIG_OK)
|
||||
{
|
||||
return err;
|
||||
}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case RIG_MODE_AM:
|
||||
case RIG_MODE_AMN:
|
||||
case RIG_MODE_FM:
|
||||
case RIG_MODE_PKTFM:
|
||||
case RIG_MODE_FMN:
|
||||
if (width < rig_passband_normal(rig, mode))
|
||||
{
|
||||
err = newcat_set_narrow(rig, vfo, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
err = newcat_set_narrow(rig, vfo, FALSE);
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// FT-450, FT-2000, FTDX 9000
|
||||
// FT-450, FTDX 9000
|
||||
// We need details on the widths here, manuals lack information.
|
||||
switch (mode)
|
||||
{
|
||||
|
@ -7224,7 +7307,8 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
case RIG_MODE_RTTYR:
|
||||
case RIG_MODE_CW:
|
||||
case RIG_MODE_CWR:
|
||||
if (width <= 500) { w = 6; }
|
||||
if (width == RIG_PASSBAND_NORMAL) { w = 16; }
|
||||
else if (width <= 500) { w = 6; }
|
||||
else if (width <= 1800) { w = 16; }
|
||||
else { w = 24; }
|
||||
|
||||
|
@ -7232,7 +7316,8 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
|
||||
case RIG_MODE_LSB:
|
||||
case RIG_MODE_USB:
|
||||
if (width <= 1800) { w = 8; }
|
||||
if (width == RIG_PASSBAND_NORMAL) { w = 16; }
|
||||
else if (width <= 1800) { w = 8; }
|
||||
else if (width <= 2400) { w = 16; }
|
||||
else { w = 25; } // 3000
|
||||
|
||||
|
@ -7466,6 +7551,7 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width)
|
|||
return err;
|
||||
}
|
||||
|
||||
// TODO: check if ft-2000 needs this fix too?
|
||||
if (is_ft950 || is_ftdx5000)
|
||||
{
|
||||
// Some Yaesu rigs cannot query SH in modes such as AM/FM
|
||||
|
@ -8373,9 +8459,74 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width)
|
|||
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s: end if FTDX101D\n", __func__);
|
||||
} /* end if is_ftdx101 */
|
||||
else if (is_ft2000)
|
||||
{
|
||||
switch (mode)
|
||||
{
|
||||
case RIG_MODE_RTTY:
|
||||
case RIG_MODE_RTTYR:
|
||||
case RIG_MODE_CW:
|
||||
case RIG_MODE_CWR:
|
||||
if (w <= 4)
|
||||
{
|
||||
*width = 100;
|
||||
}
|
||||
else if (w <= 16)
|
||||
{
|
||||
*width = 500;
|
||||
}
|
||||
else
|
||||
{
|
||||
*width = 2400;
|
||||
}
|
||||
break;
|
||||
|
||||
case RIG_MODE_PKTUSB:
|
||||
case RIG_MODE_PKTLSB:
|
||||
case RIG_MODE_LSB:
|
||||
case RIG_MODE_USB:
|
||||
if (w <= 8)
|
||||
{
|
||||
*width = 1800;
|
||||
}
|
||||
else if (w <= 16)
|
||||
{
|
||||
*width = 2400;
|
||||
}
|
||||
else if (w <= 25)
|
||||
{
|
||||
*width = 3000;
|
||||
}
|
||||
else
|
||||
{
|
||||
*width = 4000;
|
||||
}
|
||||
break;
|
||||
|
||||
case RIG_MODE_AM:
|
||||
*width = narrow ? 6000 : 9000;
|
||||
break;
|
||||
|
||||
case RIG_MODE_PKTFM:
|
||||
case RIG_MODE_FM:
|
||||
*width = narrow ? 9000 : 16000;
|
||||
break;
|
||||
|
||||
case RIG_MODE_FMN:
|
||||
*width = 9000;
|
||||
break;
|
||||
|
||||
case RIG_MODE_AMN:
|
||||
*width = 6000;
|
||||
break;
|
||||
|
||||
default:
|
||||
return -RIG_EINVAL;
|
||||
} /* end switch (mode) */
|
||||
} /* end if is_ft2000 */
|
||||
else
|
||||
{
|
||||
/* FT450, FT2000, FT9000 */
|
||||
/* FT450, FT9000 */
|
||||
switch (mode)
|
||||
{
|
||||
case RIG_MODE_PKTUSB:
|
||||
|
@ -8398,13 +8549,24 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width)
|
|||
{
|
||||
*width = rig_passband_normal(rig, mode);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case RIG_MODE_AM:
|
||||
*width = narrow ? 6000 : 9000;
|
||||
break;
|
||||
|
||||
case RIG_MODE_PKTFM:
|
||||
case RIG_MODE_FM:
|
||||
return RIG_OK;
|
||||
*width = narrow ? 9000 : 16000;
|
||||
break;
|
||||
|
||||
case RIG_MODE_FMN:
|
||||
*width = 9000;
|
||||
break;
|
||||
|
||||
case RIG_MODE_AMN:
|
||||
*width = 6000;
|
||||
break;
|
||||
|
||||
default:
|
||||
return -RIG_EINVAL;
|
||||
|
|
Ładowanie…
Reference in New Issue