kopia lustrzana https://github.com/Hamlib/Hamlib
Fix a number of issues in Yaesu commands, all changes based on manuals
rodzic
5ba6059d2f
commit
0ad76ba38a
|
@ -112,14 +112,16 @@ const struct rig_caps ftdx1200_caps =
|
|||
// cppcheck-suppress *
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
|
||||
.preamp = { 10, 20, RIG_DBLST_END, },
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(1000),
|
||||
.max_ifshift = Hz(1200),
|
||||
.vfo_ops = FTDX1200_VFO_OPS,
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ,
|
||||
.transceive = RIG_TRN_OFF, /* May enable later as the 1200 has an Auto Info command */
|
||||
|
|
|
@ -78,10 +78,12 @@ const struct rig_caps ft2000_caps =
|
|||
// cppcheck-suppress *
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
|
||||
.preamp = { 10, 17, RIG_DBLST_END, },
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
|
|
|
@ -116,10 +116,12 @@ const struct rig_caps ftdx3000_caps =
|
|||
.level_gran = {
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
|
||||
.preamp = { 10, 17, RIG_DBLST_END, },
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
|
@ -138,7 +140,7 @@ const struct rig_caps ftdx3000_caps =
|
|||
|
||||
.rx_range_list1 = {
|
||||
/* General coverage + ham, ANT_5 is RX only antenna */
|
||||
{kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS | RIG_ANT_5, "USA"},
|
||||
{kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS, "USA"},
|
||||
RIG_FRNG_END,
|
||||
},
|
||||
|
||||
|
@ -152,7 +154,7 @@ const struct rig_caps ftdx3000_caps =
|
|||
},
|
||||
|
||||
.rx_range_list2 = {
|
||||
{kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS | RIG_ANT_5, "EUR"},
|
||||
{kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS, "EUR"},
|
||||
RIG_FRNG_END,
|
||||
},
|
||||
|
||||
|
|
|
@ -77,11 +77,13 @@ const struct rig_caps ft450_caps =
|
|||
// cppcheck-suppress *
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 400 }, .max = { .i = 800 }, .step = { .i = 100 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, RIG_DBLST_END, }, /* TBC */
|
||||
.attenuator = { 18, RIG_DBLST_END, }, /* TBC */
|
||||
.preamp = { 10, RIG_DBLST_END, }, /* TBC: Not specified in manual */
|
||||
.attenuator = { 20, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(0),
|
||||
.max_ifshift = Hz(1000),
|
||||
|
|
|
@ -111,10 +111,12 @@ const struct rig_caps ftdx5000_caps =
|
|||
// cppcheck-suppress *
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC: Not specified in manual */
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#define FTDX5000_TX_ANTS (RIG_ANT_1|RIG_ANT_2)
|
||||
#define FTDX5000_TX_ANTS (RIG_ANT_1|RIG_ANT_2|RIG_ANT_3|RIG_ANT_4)
|
||||
|
||||
#define FTDX5000_MEM_CHNL_LENGTH 1 /* 0x10 P1 = 01 return size */
|
||||
#define FTDX5000_OP_DATA_LENGTH 19 /* 0x10 P1 = 03 return size */
|
||||
|
|
|
@ -77,14 +77,16 @@ const struct rig_caps ft891_caps =
|
|||
// cppcheck-suppress *
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3200 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.preamp = { 10, RIG_DBLST_END, }, /* TBC */
|
||||
.attenuator = { 12, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(1000),
|
||||
.max_ifshift = Hz(1200),
|
||||
.vfo_ops = FT891_VFO_OPS,
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ,
|
||||
.transceive = RIG_TRN_OFF, /* May enable later as the 950 has an Auto Info command */
|
||||
|
@ -200,8 +202,6 @@ const struct rig_caps ft891_caps =
|
|||
.get_rit = newcat_get_rit,
|
||||
.set_xit = newcat_set_xit,
|
||||
.get_xit = newcat_get_xit,
|
||||
.set_ant = newcat_set_ant,
|
||||
.get_ant = newcat_get_ant,
|
||||
.get_func = newcat_get_func,
|
||||
.set_func = newcat_set_func,
|
||||
.get_level = newcat_get_level,
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#define FT891_ANTS (RIG_ANT_1|RIG_ANT_2)
|
||||
#define FT891_ANTS (RIG_ANT_CURR)
|
||||
|
||||
#define FT891_MEM_CHNL_LENGTH 1 /* 0x10 P1 = 01 return size */
|
||||
#define FT891_OP_DATA_LENGTH 19 /* 0x10 P1 = 03 return size */
|
||||
|
|
|
@ -78,11 +78,13 @@ const struct rig_caps ft9000_caps =
|
|||
// cppcheck-suppress *
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3000 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.preamp = { 10, RIG_DBLST_END, }, /* TBC: Not specified in manual */
|
||||
.attenuator = { RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(1000),
|
||||
|
|
|
@ -68,14 +68,13 @@
|
|||
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)
|
||||
|
||||
/* TBC */
|
||||
#define FT9000_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_NB|RIG_FUNC_NR|RIG_FUNC_VOX|\
|
||||
RIG_FUNC_FBKIN|RIG_FUNC_COMP|RIG_FUNC_ANF|\
|
||||
RIG_FUNC_RIT|RIG_FUNC_XIT)
|
||||
|
||||
/* TBC */
|
||||
#define FT9000_VFO_OPS (RIG_OP_TUNE|RIG_OP_CPY|RIG_OP_XCHG|\
|
||||
|
|
|
@ -77,10 +77,12 @@ const struct rig_caps ft950_caps =
|
|||
// cppcheck-suppress *
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3000 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
|
||||
.preamp = { 10, 17, RIG_DBLST_END, },
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
|
|
|
@ -76,14 +76,16 @@ const struct rig_caps ft991_caps =
|
|||
// cppcheck-suppress *
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3200 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = common_dcs_list,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* TBC */
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.preamp = { 10, 20, RIG_DBLST_END, },
|
||||
.attenuator = { 12, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(1000),
|
||||
.max_ifshift = Hz(1200),
|
||||
.vfo_ops = FT991_VFO_OPS,
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ,
|
||||
.transceive = RIG_TRN_OFF, /* May enable later as the 950 has an Auto Info command */
|
||||
|
@ -163,7 +165,7 @@ const struct rig_caps ft991_caps =
|
|||
{RIG_MODE_SSB, Hz(200)}, /* SSB */
|
||||
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
|
||||
{RIG_MODE_AMN, Hz(6000)}, /* Narrow AM */
|
||||
{FT991_FM_RX_MODES, Hz(16000)}, /* Normal FM */
|
||||
{FT991_FM_WIDE_RX_MODES, Hz(16000)}, /* Normal FM */
|
||||
{RIG_MODE_FMN, Hz(9000)}, /* Narrow FM */
|
||||
|
||||
RIG_FLT_END,
|
||||
|
@ -192,8 +194,6 @@ const struct rig_caps ft991_caps =
|
|||
.get_rit = newcat_get_rit,
|
||||
.set_xit = newcat_set_xit,
|
||||
.get_xit = newcat_get_xit,
|
||||
.set_ant = newcat_set_ant,
|
||||
.get_ant = newcat_get_ant,
|
||||
.get_func = newcat_get_func,
|
||||
.set_func = newcat_set_func,
|
||||
.get_level = newcat_get_level,
|
||||
|
|
|
@ -38,7 +38,8 @@
|
|||
#define FT991_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 FT991_AM_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN)
|
||||
#define FT991_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_FMN|RIG_MODE_C4FM)
|
||||
#define FT991_FM_WIDE_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_C4FM)
|
||||
#define FT991_FM_RX_MODES (FT991_FM_WIDE_RX_MODES|RIG_MODE_FMN)
|
||||
#define FT991_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR)
|
||||
#define FT991_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\
|
||||
RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR)
|
||||
|
|
|
@ -104,6 +104,8 @@ const struct rig_caps ftdx101d_caps =
|
|||
.level_gran = {
|
||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
|
||||
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
|
||||
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3200 }, .step = { .i = 10 } },
|
||||
},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
|
@ -125,7 +127,7 @@ const struct rig_caps ftdx101d_caps =
|
|||
|
||||
.rx_range_list1 = {
|
||||
/* General coverage + ham, ANT_5 is RX only antenna */
|
||||
{kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS | RIG_ANT_5, "USA"},
|
||||
{kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS, "USA"},
|
||||
RIG_FRNG_END,
|
||||
},
|
||||
|
||||
|
@ -139,7 +141,7 @@ const struct rig_caps ftdx101d_caps =
|
|||
},
|
||||
|
||||
.rx_range_list2 = {
|
||||
{kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS | RIG_ANT_5, "EUR"},
|
||||
{kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS, "EUR"},
|
||||
RIG_FRNG_END,
|
||||
},
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@
|
|||
* Other features (used by rig_caps)
|
||||
*/
|
||||
|
||||
#define FTDX101_TX_ANTS (RIG_ANT_1|RIG_ANT_2)
|
||||
#define FTDX101_TX_ANTS (RIG_ANT_1|RIG_ANT_2|RIG_ANT_3)
|
||||
|
||||
#define FTDX101_MEM_CHNL_LENGTH 1 /* 0x10 P1 = 01 return size */
|
||||
#define FTDX101_OP_DATA_LENGTH 19 /* 0x10 P1 = 03 return size */
|
||||
|
|
|
@ -203,7 +203,7 @@ static ncboolean is_ft891;
|
|||
static ncboolean is_ft950;
|
||||
static ncboolean is_ft991;
|
||||
static ncboolean is_ft2000;
|
||||
static ncboolean is_ft9000;
|
||||
static ncboolean is_ftdx9000;
|
||||
static ncboolean is_ftdx5000;
|
||||
static ncboolean is_ftdx1200;
|
||||
static ncboolean is_ftdx3000;
|
||||
|
@ -2849,25 +2849,34 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
|
||||
switch (val.i)
|
||||
{
|
||||
case RIG_AGC_OFF: snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT00;");
|
||||
case RIG_AGC_OFF:
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT00;");
|
||||
break;
|
||||
|
||||
case RIG_AGC_FAST: snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT01;");
|
||||
case RIG_AGC_FAST:
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT01;");
|
||||
break;
|
||||
|
||||
case RIG_AGC_MEDIUM: snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT02;");
|
||||
case RIG_AGC_MEDIUM:
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT02;");
|
||||
break;
|
||||
|
||||
case RIG_AGC_SLOW: snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT03;");
|
||||
case RIG_AGC_SLOW:
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT03;");
|
||||
break;
|
||||
|
||||
case RIG_AGC_AUTO: snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT04;");
|
||||
case RIG_AGC_AUTO:
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "GT04;");
|
||||
break;
|
||||
|
||||
default: return -RIG_EINVAL;
|
||||
default:
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
|
||||
{
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
}
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_IF:
|
||||
|
@ -2895,6 +2904,11 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "IS%c0%+.4d%c", main_sub_vfo,
|
||||
val.i, cat_term);
|
||||
}
|
||||
else if (is_ft891)
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "IS0%d%+.4d%c", val.i == 0 ? 0 : 1,
|
||||
val.i, cat_term);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "IS%c%+.4d%c", main_sub_vfo,
|
||||
|
@ -3048,23 +3062,25 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
priv->cmd_str[0] = '\0';
|
||||
|
||||
for (i = 0; state->preamp[i] != RIG_DBLST_END; i++)
|
||||
{
|
||||
if (state->preamp[i] == val.i)
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PA0%d%c", i + 1, cat_term);
|
||||
break;
|
||||
}
|
||||
|
||||
if (strlen(priv->cmd_str) != 0)
|
||||
{
|
||||
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
|
||||
{
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return -RIG_EINVAL;
|
||||
if (strlen(priv->cmd_str) == 0)
|
||||
{
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
|
||||
{
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_ATT:
|
||||
if (!newcat_valid_command(rig, "RA"))
|
||||
|
@ -3087,23 +3103,25 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
priv->cmd_str[0] = '\0';
|
||||
|
||||
for (i = 0; state->attenuator[i] != RIG_DBLST_END; i++)
|
||||
{
|
||||
if (state->attenuator[i] == val.i)
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "RA0%d%c", i + 1, cat_term);
|
||||
break; /* for loop */
|
||||
break;
|
||||
}
|
||||
|
||||
if (strlen(priv->cmd_str) != 0)
|
||||
{
|
||||
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
|
||||
{
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return -RIG_EINVAL;
|
||||
if (strlen(priv->cmd_str) == 0)
|
||||
{
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
|
||||
{
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_RF:
|
||||
if (!newcat_valid_command(rig, "RG"))
|
||||
|
@ -3111,7 +3129,16 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
return -RIG_ENAVAIL;
|
||||
}
|
||||
|
||||
fpf = newcat_scale_float(255, val.f);
|
||||
if (is_ft891)
|
||||
{
|
||||
scale = 30;
|
||||
}
|
||||
else
|
||||
{
|
||||
scale = 255;
|
||||
}
|
||||
|
||||
fpf = newcat_scale_float(scale, val.f);
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "RG%c%03d%c", main_sub_vfo, fpf,
|
||||
cat_term);
|
||||
break;
|
||||
|
@ -3168,7 +3195,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
return -RIG_ENAVAIL;
|
||||
}
|
||||
|
||||
if (is_ft2000 || is_ft9000 || is_ftdx5000)
|
||||
if (is_ft2000 || is_ftdx9000 || is_ftdx5000)
|
||||
{
|
||||
scale = 255;
|
||||
}
|
||||
|
@ -3241,7 +3268,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "SD%04d%c", val.i, cat_term);
|
||||
}
|
||||
else if (is_ft2000 || is_ft9000)
|
||||
else if (is_ft2000 || is_ftdx9000)
|
||||
{
|
||||
if (val.i < 0)
|
||||
{
|
||||
|
@ -3278,7 +3305,16 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
return -RIG_ENAVAIL;
|
||||
}
|
||||
|
||||
fpf = newcat_scale_float(255, val.f);
|
||||
if (is_ft891 || is_ft991 || is_ftdx101)
|
||||
{
|
||||
scale = 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
scale = 255;
|
||||
}
|
||||
|
||||
fpf = newcat_scale_float(scale, val.f);
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "SQ%c%03d%c", main_sub_vfo, fpf,
|
||||
cat_term);
|
||||
break;
|
||||
|
@ -3349,7 +3385,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
return -RIG_ENAVAIL;
|
||||
}
|
||||
|
||||
if (is_ft2000 || is_ft9000 || is_ftdx5000)
|
||||
if (is_ft2000 || is_ftdx9000 || is_ftdx5000)
|
||||
{
|
||||
scale = 255;
|
||||
}
|
||||
|
@ -3413,12 +3449,29 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
|
||||
val.i = val.i / 10;
|
||||
|
||||
if (val.i < 1) /* fix lower bounds limit */
|
||||
if (is_ftdx9000)
|
||||
{
|
||||
val.i = 1;
|
||||
if (val.i < 0)
|
||||
{
|
||||
val.i = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (val.i < 1)
|
||||
{
|
||||
val.i = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (newcat_is_rig(rig, RIG_MODEL_FT950))
|
||||
if (is_ft891 || is_ft991 || is_ftdx101)
|
||||
{
|
||||
if (val.i > 320)
|
||||
{
|
||||
val.i = 320;
|
||||
}
|
||||
}
|
||||
if (is_ft950 || is_ftdx9000)
|
||||
{
|
||||
if (val.i > 300)
|
||||
{
|
||||
|
@ -3435,14 +3488,14 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "BP01%03d%c", val.i, cat_term);
|
||||
|
||||
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE && !is_ft9000)
|
||||
{
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
}
|
||||
else if (is_ft9000) // different BP command format
|
||||
if (is_ftdx9000)
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "BP%03d%c", val.i, cat_term);
|
||||
}
|
||||
else if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
|
||||
{
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
@ -3461,7 +3514,14 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
fpf = newcat_scale_float(255, val.f);
|
||||
}
|
||||
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "ML1%03d%c", fpf, cat_term);
|
||||
if (is_ftdx9000)
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "ML%03d%c", fpf, cat_term);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "ML1%03d%c", fpf, cat_term);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -3482,6 +3542,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
int retlvl_len;
|
||||
float scale;
|
||||
char main_sub_vfo = '0';
|
||||
int i;
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||
|
||||
|
@ -3557,7 +3618,6 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
{
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_CWPITCH:
|
||||
|
@ -3801,7 +3861,11 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "BP01%c", cat_term);
|
||||
|
||||
if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
|
||||
if (is_ftdx9000)
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "BP%c", cat_term);
|
||||
}
|
||||
else if (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)
|
||||
{
|
||||
priv->cmd_str[2] = main_sub_vfo;
|
||||
}
|
||||
|
@ -3814,7 +3878,14 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
return -RIG_ENAVAIL;
|
||||
}
|
||||
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "ML1%c", cat_term);
|
||||
if (is_ftdx9000)
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "ML%c", cat_term);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "ML1%c", cat_term);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -3856,7 +3927,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
|
||||
case RIG_LEVEL_VOXGAIN:
|
||||
case RIG_LEVEL_COMP:
|
||||
if (is_ft2000 || is_ft9000 || is_ftdx5000)
|
||||
if (is_ft2000 || is_ftdx9000 || is_ftdx5000)
|
||||
{
|
||||
scale = 255;
|
||||
}
|
||||
|
@ -3994,9 +4065,33 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
break;
|
||||
|
||||
case RIG_LEVEL_AF:
|
||||
val->f = (float)atoi(retlvl) / 255;
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_RF:
|
||||
if (is_ft891)
|
||||
{
|
||||
scale = 30.;
|
||||
}
|
||||
else
|
||||
{
|
||||
scale = 255.;
|
||||
}
|
||||
|
||||
val->f = (float)atoi(retlvl) / scale;
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_SQL:
|
||||
val->f = (float)atoi(retlvl) / 255.;
|
||||
if (is_ft891 || is_ft991 || is_ftdx101)
|
||||
{
|
||||
scale = 100.;
|
||||
}
|
||||
else
|
||||
{
|
||||
scale = 255.;
|
||||
}
|
||||
|
||||
val->f = (float)atoi(retlvl) / scale;
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_BKINDL:
|
||||
|
@ -4133,41 +4228,80 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
|
||||
break;
|
||||
|
||||
case RIG_LEVEL_PREAMP:
|
||||
case RIG_LEVEL_PREAMP: {
|
||||
int preamp;
|
||||
|
||||
if (retlvl[0] < '0' || retlvl[0] > '9')
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
}
|
||||
|
||||
val->i = (retlvl[0] == '0') ? 0 : state->preamp[retlvl[0] - '1'];
|
||||
break;
|
||||
preamp = retlvl[0] - '0';
|
||||
|
||||
val->i = 0;
|
||||
|
||||
if (preamp > 0)
|
||||
{
|
||||
for (i = 0; state->preamp[i] != RIG_DBLST_END; i++)
|
||||
{
|
||||
if (i == preamp - 1)
|
||||
{
|
||||
val->i = state->preamp[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case RIG_LEVEL_ATT: {
|
||||
int att;
|
||||
|
||||
case RIG_LEVEL_ATT:
|
||||
if (retlvl[0] < '0' || retlvl[0] > '9')
|
||||
{
|
||||
return -RIG_EPROTO;
|
||||
}
|
||||
|
||||
val->i = (retlvl[0] == '0') ? 0 : state->attenuator[retlvl[0] - '1'];
|
||||
att = retlvl[0] - '0';
|
||||
|
||||
val->i = 0;
|
||||
|
||||
if (att > 0)
|
||||
{
|
||||
for (i = 0; state->attenuator[i] != RIG_DBLST_END; i++)
|
||||
{
|
||||
if (i == att - 1)
|
||||
{
|
||||
val->i = state->attenuator[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case RIG_LEVEL_AGC:
|
||||
switch (retlvl[0])
|
||||
{
|
||||
case '0': val->i = RIG_AGC_OFF; break;
|
||||
|
||||
case '1': val->i = RIG_AGC_FAST; break;
|
||||
|
||||
case '2': val->i = RIG_AGC_MEDIUM; break;
|
||||
|
||||
case '3': val->i = RIG_AGC_SLOW; break;
|
||||
|
||||
case '0':
|
||||
val->i = RIG_AGC_OFF;
|
||||
break;
|
||||
case '1':
|
||||
val->i = RIG_AGC_FAST;
|
||||
break;
|
||||
case '2':
|
||||
val->i = RIG_AGC_MEDIUM;
|
||||
break;
|
||||
case '3':
|
||||
val->i = RIG_AGC_SLOW;
|
||||
break;
|
||||
case '4':
|
||||
case '5':
|
||||
case '6':
|
||||
val->i = RIG_AGC_AUTO; break;
|
||||
|
||||
default: return -RIG_EPROTO;
|
||||
default:
|
||||
return -RIG_EPROTO;
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -4394,15 +4528,17 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
|
|||
return -RIG_ENAVAIL;
|
||||
}
|
||||
|
||||
if (is_ftdx1200 || is_ftdx3000 || is_ft891 || is_ft991 || is_ftdx101)
|
||||
if (is_ft891)
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR0%d%c", status ? 1 : 0,
|
||||
cat_term);
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR0%d%c", status ? 1 : 0, cat_term);
|
||||
}
|
||||
else if (is_ft991 || is_ftdx1200 || is_ftdx3000 || is_ftdx101)
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR0%d%c", status ? 2 : 1, cat_term);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR%d%c", status ? 1 : 0,
|
||||
cat_term);
|
||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR%d%c", status ? 1 : 0, cat_term);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -4674,7 +4810,14 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
|
|||
break;
|
||||
|
||||
case RIG_FUNC_COMP:
|
||||
*status = (retfunc[0] == '0') ? 0 : 1;
|
||||
if (is_ft991 || is_ftdx1200 || is_ftdx3000 || is_ftdx101)
|
||||
{
|
||||
*status = (retfunc[0] == '2') ? 1 : 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*status = (retfunc[0] == '0') ? 0 : 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case RIG_FUNC_MON:
|
||||
|
@ -5543,14 +5686,14 @@ ncboolean newcat_valid_command(RIG *rig, char const *const command)
|
|||
is_ft950 = newcat_is_rig(rig, RIG_MODEL_FT950);
|
||||
is_ft991 = newcat_is_rig(rig, RIG_MODEL_FT991);
|
||||
is_ft2000 = newcat_is_rig(rig, RIG_MODEL_FT2000);
|
||||
is_ft9000 = newcat_is_rig(rig, RIG_MODEL_FT9000);
|
||||
is_ftdx9000 = newcat_is_rig(rig, RIG_MODEL_FT9000);
|
||||
is_ftdx5000 = newcat_is_rig(rig, RIG_MODEL_FTDX5000);
|
||||
is_ftdx1200 = newcat_is_rig(rig, RIG_MODEL_FTDX1200);
|
||||
is_ftdx3000 = newcat_is_rig(rig, RIG_MODEL_FTDX3000);
|
||||
is_ftdx101 = newcat_is_rig(rig, RIG_MODEL_FTDX101D);
|
||||
|
||||
if (!is_ft450 && !is_ft950 && !is_ft891 && !is_ft991 && !is_ft2000
|
||||
&& !is_ftdx5000 && !is_ft9000 && !is_ftdx1200 && !is_ftdx3000 && !is_ftdx101)
|
||||
&& !is_ftdx5000 && !is_ftdx9000 && !is_ftdx1200 && !is_ftdx3000 && !is_ftdx101)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: '%s' is unknown\n", __func__, caps->model_name);
|
||||
return FALSE;
|
||||
|
@ -5609,7 +5752,7 @@ ncboolean newcat_valid_command(RIG *rig, char const *const command)
|
|||
{
|
||||
return TRUE;
|
||||
}
|
||||
else if (is_ft9000 && valid_commands[search_index].ft9000)
|
||||
else if (is_ftdx9000 && valid_commands[search_index].ft9000)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue