mirror of
https://github.com/Hamlib/Hamlib.git
synced 2024-09-22 10:57:21 +00:00
Start fixing Yaesu CWPITCH, BKINDL, ANTIVOX and COMP issues. Fix FT-991 NFM mode.
This commit is contained in:
parent
ba5ab4ba70
commit
5ba6059d2f
@ -115,7 +115,7 @@ const struct rig_caps ftdx3000_caps =
|
|||||||
.has_set_parm = RIG_PARM_NONE,
|
.has_set_parm = RIG_PARM_NONE,
|
||||||
.level_gran = {
|
.level_gran = {
|
||||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
|
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
|
||||||
},
|
},
|
||||||
.ctcss_list = common_ctcss_list,
|
.ctcss_list = common_ctcss_list,
|
||||||
.dcs_list = NULL,
|
.dcs_list = NULL,
|
||||||
|
@ -110,7 +110,7 @@ const struct rig_caps ftdx5000_caps =
|
|||||||
.level_gran = {
|
.level_gran = {
|
||||||
// cppcheck-suppress *
|
// cppcheck-suppress *
|
||||||
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
|
||||||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
|
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
|
||||||
},
|
},
|
||||||
.ctcss_list = common_ctcss_list,
|
.ctcss_list = common_ctcss_list,
|
||||||
.dcs_list = NULL,
|
.dcs_list = NULL,
|
||||||
|
@ -162,9 +162,9 @@ const struct rig_caps ft991_caps =
|
|||||||
{RIG_MODE_SSB, Hz(400)}, /* SSB */
|
{RIG_MODE_SSB, Hz(400)}, /* SSB */
|
||||||
{RIG_MODE_SSB, Hz(200)}, /* SSB */
|
{RIG_MODE_SSB, Hz(200)}, /* SSB */
|
||||||
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
|
{RIG_MODE_AM, Hz(9000)}, /* Normal AM */
|
||||||
{RIG_MODE_AMN, Hz(6000)}, /* Narrow AM */
|
{RIG_MODE_AMN, Hz(6000)}, /* Narrow AM */
|
||||||
{FT991_FM_RX_MODES, Hz(16000)}, /* Normal FM */
|
{FT991_FM_RX_MODES, Hz(16000)}, /* Normal FM */
|
||||||
{FT991_FM_RX_MODES, Hz(9000)}, /* Narrow FM */
|
{RIG_MODE_FMN, Hz(9000)}, /* Narrow FM */
|
||||||
|
|
||||||
RIG_FLT_END,
|
RIG_FLT_END,
|
||||||
},
|
},
|
||||||
|
@ -2908,7 +2908,8 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_CWPITCH:
|
case RIG_LEVEL_CWPITCH: {
|
||||||
|
int kp;
|
||||||
if (!newcat_valid_command(rig, "KP"))
|
if (!newcat_valid_command(rig, "KP"))
|
||||||
{
|
{
|
||||||
return -RIG_ENAVAIL;
|
return -RIG_ENAVAIL;
|
||||||
@ -2927,9 +2928,19 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||||||
i = val.i;
|
i = val.i;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "KP%02d%c",
|
if (is_ft950 || is_ft2000)
|
||||||
2 * ((i + 50 - 300) / 100), cat_term);
|
{
|
||||||
|
kp = (i - 300) / 50;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Most Yaesu rigs seem to use range of 0-75 to represent pitch of 300..1050 Hz in 10 Hz steps
|
||||||
|
kp = (i - 300) / 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "KP%02d%c", kp, cat_term);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case RIG_LEVEL_KEYSPD:
|
case RIG_LEVEL_KEYSPD:
|
||||||
if (!newcat_valid_command(rig, "KS"))
|
if (!newcat_valid_command(rig, "KS"))
|
||||||
@ -3157,8 +3168,15 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||||||
return -RIG_ENAVAIL;
|
return -RIG_ENAVAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
scale = (is_ft950) ? 100 : 255;
|
if (is_ft2000 || is_ft9000 || is_ftdx5000)
|
||||||
scale = (is_ftdx1200 || is_ftdx101) ? 100 : scale ;
|
{
|
||||||
|
scale = 255;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scale = 100;
|
||||||
|
}
|
||||||
|
|
||||||
fpf = newcat_scale_float(scale, val.f);
|
fpf = newcat_scale_float(scale, val.f);
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PL%03d%c", fpf, cat_term);
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PL%03d%c", fpf, cat_term);
|
||||||
break;
|
break;
|
||||||
@ -3195,7 +3213,21 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||||||
// this covers 300-2900 06-32
|
// this covers 300-2900 06-32
|
||||||
else { snprintf(priv->cmd_str, sizeof(priv->cmd_str), "SD%02d;", 6 + ((val.i - 300) / 100)); }
|
else { snprintf(priv->cmd_str, sizeof(priv->cmd_str), "SD%02d;", 6 + ((val.i - 300) / 100)); }
|
||||||
}
|
}
|
||||||
else if (is_ft950 || is_ft450 || is_ftdx1200)
|
else if (is_ftdx5000)
|
||||||
|
{
|
||||||
|
if (val.i < 20)
|
||||||
|
{
|
||||||
|
val.i = 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.i > 5000)
|
||||||
|
{
|
||||||
|
val.i = 5000;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "SD%04d%c", val.i, cat_term);
|
||||||
|
}
|
||||||
|
else if (is_ft950 || is_ft450 || is_ft891 || is_ft991 || is_ftdx1200 || is_ftdx3000)
|
||||||
{
|
{
|
||||||
if (val.i < 30)
|
if (val.i < 30)
|
||||||
{
|
{
|
||||||
@ -3209,6 +3241,20 @@ 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);
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "SD%04d%c", val.i, cat_term);
|
||||||
}
|
}
|
||||||
|
else if (is_ft2000 || is_ft9000)
|
||||||
|
{
|
||||||
|
if (val.i < 0)
|
||||||
|
{
|
||||||
|
val.i = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.i > 5000)
|
||||||
|
{
|
||||||
|
val.i = 5000;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "SD%04d%c", val.i, cat_term);
|
||||||
|
}
|
||||||
else // default
|
else // default
|
||||||
{
|
{
|
||||||
if (val.i < 1)
|
if (val.i < 1)
|
||||||
@ -3303,28 +3349,55 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||||||
return -RIG_ENAVAIL;
|
return -RIG_ENAVAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
scale = (is_ft950 || is_ftdx101) ? 100 : 255;
|
if (is_ft2000 || is_ft9000 || is_ftdx5000)
|
||||||
scale = (is_ftdx1200) ? 100 : scale;
|
{
|
||||||
|
scale = 255;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scale = 100;
|
||||||
|
}
|
||||||
|
|
||||||
fpf = newcat_scale_float(scale, val.f);
|
fpf = newcat_scale_float(scale, val.f);
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "VG%03d%c", fpf, cat_term);
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "VG%03d%c", fpf, cat_term);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_ANTIVOX:
|
case RIG_LEVEL_ANTIVOX:
|
||||||
if (is_ft950)
|
if (is_ftdx101)
|
||||||
{
|
|
||||||
fpf = newcat_scale_float(100, val.f);
|
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX117%03d%c", fpf, cat_term);
|
|
||||||
}
|
|
||||||
else if (is_ftdx101)
|
|
||||||
{
|
{
|
||||||
fpf = newcat_scale_float(100, val.f);
|
fpf = newcat_scale_float(100, val.f);
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "AV%03d%c", fpf, cat_term);
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "AV%03d%c", fpf, cat_term);
|
||||||
}
|
}
|
||||||
else if (is_ftdx1200)
|
else if (is_ftdx5000)
|
||||||
|
{
|
||||||
|
fpf = newcat_scale_float(100, val.f);
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX176%03d%c", fpf, cat_term);
|
||||||
|
}
|
||||||
|
else if (is_ftdx3000 || is_ftdx1200)
|
||||||
{
|
{
|
||||||
fpf = newcat_scale_float(100, val.f);
|
fpf = newcat_scale_float(100, val.f);
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX183%03d%c", fpf, cat_term);
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX183%03d%c", fpf, cat_term);
|
||||||
}
|
}
|
||||||
|
else if (is_ft991)
|
||||||
|
{
|
||||||
|
fpf = newcat_scale_float(100, val.f);
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX147%03d%c", fpf, cat_term);
|
||||||
|
}
|
||||||
|
else if (is_ft891)
|
||||||
|
{
|
||||||
|
fpf = newcat_scale_float(100, val.f);
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX1619%03d%c", fpf, cat_term);
|
||||||
|
}
|
||||||
|
else if (is_ft950)
|
||||||
|
{
|
||||||
|
fpf = newcat_scale_float(100, val.f);
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX117%03d%c", fpf, cat_term);
|
||||||
|
}
|
||||||
|
else if (is_ft2000)
|
||||||
|
{
|
||||||
|
fpf = newcat_scale_float(100, val.f);
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX042%03d%c", fpf, cat_term);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
@ -3681,18 +3754,38 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_ANTIVOX:
|
case RIG_LEVEL_ANTIVOX:
|
||||||
if (is_ft950)
|
if (is_ftdx101)
|
||||||
{
|
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX117%c", cat_term);
|
|
||||||
}
|
|
||||||
else if (is_ftdx101)
|
|
||||||
{
|
{
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "AV%c", cat_term);
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "AV%c", cat_term);
|
||||||
}
|
}
|
||||||
|
else if (is_ftdx5000)
|
||||||
|
{
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX176%c", cat_term);
|
||||||
|
}
|
||||||
|
else if (is_ftdx3000 || is_ftdx1200)
|
||||||
|
{
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX183%c", cat_term);
|
||||||
|
}
|
||||||
else if (is_ftdx1200)
|
else if (is_ftdx1200)
|
||||||
{
|
{
|
||||||
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX183%c", cat_term);
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX183%c", cat_term);
|
||||||
}
|
}
|
||||||
|
else if (is_ft991)
|
||||||
|
{
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX147%c", cat_term);
|
||||||
|
}
|
||||||
|
else if (is_ft891)
|
||||||
|
{
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX1619%c", cat_term);
|
||||||
|
}
|
||||||
|
else if (is_ft950)
|
||||||
|
{
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX117%c", cat_term);
|
||||||
|
}
|
||||||
|
else if (is_ft2000)
|
||||||
|
{
|
||||||
|
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "EX042%c", cat_term);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
@ -3763,10 +3856,20 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||||||
|
|
||||||
case RIG_LEVEL_VOXGAIN:
|
case RIG_LEVEL_VOXGAIN:
|
||||||
case RIG_LEVEL_COMP:
|
case RIG_LEVEL_COMP:
|
||||||
|
if (is_ft2000 || is_ft9000 || is_ftdx5000)
|
||||||
|
{
|
||||||
|
scale = 255;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
scale = 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
val->f = (float) atoi(retlvl) / scale;
|
||||||
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_ANTIVOX:
|
case RIG_LEVEL_ANTIVOX:
|
||||||
scale = (is_ft950 || is_ftdx101) ? 100. : 255.;
|
val->f = (float) atoi(retlvl) / 100.;
|
||||||
scale = (is_ftdx1200 || is_ftdx101) ? 100. : scale ;
|
|
||||||
val->f = (float)atoi(retlvl) / scale;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_SWR:
|
case RIG_LEVEL_SWR:
|
||||||
@ -3928,6 +4031,8 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||||||
val->i = 1;
|
val->i = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The rest of Yaesu rigs indicate break-in delay directly as milliseconds
|
||||||
|
// TODO: Fix BKINDL conversion from milliseconds ???
|
||||||
val->i = 5000 / val->i; /* ms -to- tenth_dots-per-second */
|
val->i = 5000 / val->i; /* ms -to- tenth_dots-per-second */
|
||||||
|
|
||||||
if (val->i < 1)
|
if (val->i < 1)
|
||||||
@ -4068,7 +4173,15 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_CWPITCH:
|
case RIG_LEVEL_CWPITCH:
|
||||||
val->i = (atoi(retlvl) / 2) * 100 + 300;
|
if (is_ft950 || is_ft2000)
|
||||||
|
{
|
||||||
|
val->i = (atoi(retlvl) * 50) + 300;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Most Yaesu rigs seem to use range of 0-75 to represent pitch of 300..1050 Hz in 10 Hz steps
|
||||||
|
val->i = (atoi(retlvl) * 10) + 300;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RIG_LEVEL_METER:
|
case RIG_LEVEL_METER:
|
||||||
@ -6331,10 +6444,12 @@ int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
} // end is_ftdx101
|
} // end is_ftdx101
|
||||||
|
// TODO: Implement filter widths for FTDX 5000 -- add support for roofing filters
|
||||||
|
// TODO: Check if FTDX 3000 is the same as FTDX 1200 -- add support for roofing filters
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// FT450, FT2000, FT5000, FT9000
|
// FT-450, FT-2000, FTDX 9000
|
||||||
// we need details on the widths here...manuals lack information
|
// We need details on the widths here, manuals lack information.
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case RIG_MODE_PKTUSB:
|
case RIG_MODE_PKTUSB:
|
||||||
@ -6902,6 +7017,7 @@ int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t *width)
|
|||||||
|
|
||||||
case RIG_MODE_AM:
|
case RIG_MODE_AM:
|
||||||
case RIG_MODE_AMN:
|
case RIG_MODE_AMN:
|
||||||
|
case RIG_MODE_FMN:
|
||||||
*width = 9000; break;
|
*width = 9000; break;
|
||||||
|
|
||||||
case RIG_MODE_FM:
|
case RIG_MODE_FM:
|
||||||
|
Loading…
Reference in New Issue
Block a user