Convert NR to use level_gran

Also gets rid of now unused newcat_scale_float() - all its former callers
  round to nearest.

Note: the quirk handling was mostly left intact - should be checked out
  with the individual rigs.
pull/1392/head
George Baltz N3GB 2023-10-02 11:47:37 -04:00
rodzic 1a4a189dbc
commit 6877d03579
2 zmienionych plików z 3 dodań i 53 usunięć

Wyświetl plik

@ -69,6 +69,7 @@ const struct rig_caps ft450_caps =
[LVL_CWPITCH] = { .min = { .i = 400 }, .max = { .i = 800 }, .step = { .i = 100 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 4000 }, .step = { .i = 10 } },
[LVL_VOXGAIN] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/255.0f } },
[LVL_NR] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/11.0f } },
},
.parm_gran = {
[PARM_BANDSELECT] = {.min = {.f = 0.0f}, .max = {.f = 1.0f}, .step = {.s = "BAND160M,BAND80M,BANDUNUSED,BAND40M,BAND30M,BAND20M,BAND17M,BAND15M,BAND12M,BAND10M,BAND6M,BANDGEN"}}

Wyświetl plik

@ -386,7 +386,6 @@ const struct confparams newcat_cfg_params[] =
static ncboolean newcat_is_rig(RIG *rig, rig_model_t model);
static int newcat_set_vfo_from_alias(RIG *rig, vfo_t *vfo);
static int newcat_scale_float(int scale, float fval);
static int newcat_get_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode,
pbwidth_t *width);
static int newcat_set_rx_bandwidth(RIG *rig, vfo_t vfo, rmode_t mode,
@ -4446,10 +4445,9 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
RETURNFUNC(-RIG_ENAVAIL);
}
fpf = (int)((val.f / level_info->step.f) + 0.5);
if (newcat_is_rig(rig, RIG_MODEL_FT450))
{
fpf = newcat_scale_float(11, val.f);
if (fpf < 1)
{
fpf = 1;
@ -4466,24 +4464,15 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
if (is_ft991)
{
fpf = newcat_scale_float(15, val.f);
if (fpf > 15) { fpf = 15; }
if (fpf < 1) { fpf = 1; }
}
else
{
fpf = newcat_scale_float(15, val.f);
if (fpf > 15) { fpf = 10; }
}
if (fpf < 0)
{
fpf = 0;
}
SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "RL0%02d%c", fpf, cat_term);
if (rig->caps->targetable_vfo & RIG_TARGETABLE_LEVEL && !is_ft2000
@ -5566,6 +5555,7 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
case RIG_LEVEL_AF:
case RIG_LEVEL_RF:
case RIG_LEVEL_NR:
case RIG_LEVEL_SQL:
case RIG_LEVEL_COMP:
case RIG_LEVEL_ANTIVOX:
@ -5688,18 +5678,6 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break;
case RIG_LEVEL_NR:
if (is_ft450)
{
val->f = (float)(atoi(retlvl) / 11.);
}
else
{
val->f = (float)(atoi(retlvl) / 15.);
}
break;
case RIG_LEVEL_VOXDELAY:
val->i = atoi(retlvl);
@ -8117,35 +8095,6 @@ int newcat_set_vfo_from_alias(RIG *rig, vfo_t *vfo)
RETURNFUNC(RIG_OK);
}
/*
* Found newcat_set_level() floating point math problem
* Using rigctl on FT950 I was trying to set RIG_LEVEL_COMP to 12
* I kept setting it to 11. I wrote some test software and
* found out that 0.12 * 100 = 11 with my setup.
* Compiler is gcc 4.2.4, CPU is AMD X2
* This works somewhat but Find a better way.
* The newcat_get_level() seems to work correctly.
* Terry KJ4EED
*
*/
int newcat_scale_float(int scale, float fval)
{
float f;
float fudge = 0.003;
if ((fval + fudge) > 1.0)
{
f = scale * fval;
}
else
{
f = scale * (fval + fudge);
}
return (int) f; // RETURN is too verbose here
}
int newcat_set_narrow(RIG *rig, vfo_t vfo, ncboolean narrow)
{
struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv;