Remove hard-coded constants.

Use more data already in rig->caps instead of hard coding values.
This commit is contained in:
George Baltz N3GB 2023-04-17 18:26:46 -04:00
parent 05f04730d7
commit ea37ad1b21

View File

@ -68,32 +68,20 @@ int kenwood_ts890_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
/* possible values for TS890 0(=off), 1(=slow), 2(=mid), 3(=fast), 4(=off/Last) */
rig_debug(RIG_DEBUG_VERBOSE, "%s TS890S RIG_LEVEL_AGC\n", __func__);
switch (val.i)
{
case RIG_AGC_OFF:
kenwood_val = 0;
break;
case RIG_AGC_SLOW:
kenwood_val = 1;
break;
case RIG_AGC_MEDIUM:
kenwood_val = 2;
break;
case RIG_AGC_FAST:
kenwood_val = 3;
break;
case RIG_AGC_AUTO:
kenwood_val = 4;
break;
default:
rig_debug(RIG_DEBUG_ERR, "%s: unsupported agc value", __func__);
kenwood_val = -1; /* Flag invalid value */
for (int j = 0; j < rig->caps->agc_level_count; j++)
{
if (val.i == rig->caps->agc_levels[j])
{
kenwood_val = j;
break;
}
}
if ( kenwood_val < 0)
{
rig_debug(RIG_DEBUG_ERR, "%s: unsupported agc value:%d\n", __func__, val.i);
return -RIG_EINVAL;
}
}
SNPRINTF(levelbuf, sizeof(levelbuf), "GC%d", kenwood_val);
break;
@ -228,47 +216,23 @@ int kenwood_ts890_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
return RIG_OK;
case RIG_LEVEL_AGC:
retval = kenwood_transaction(rig, "GC", ackbuf, sizeof(ackbuf));
ack_len_expected = 3;
retval = kenwood_safe_transaction(rig, "GC", ackbuf, sizeof(ackbuf), 3);
if (RIG_OK != retval)
{
return retval;
}
ack_len = strlen(ackbuf);
if (ack_len != ack_len_expected)
{
levelint = ackbuf[2] - '0'; /* atoi */
if (levelint >= 0 && levelint < rig->caps->agc_level_count)
{
val->i = rig->caps->agc_levels[levelint];
}
else
{
rig_debug(RIG_DEBUG_ERR, "%s: unknown agc value: %s\n", __func__, ackbuf);
return -RIG_EPROTO;
}
switch (ackbuf[ack_len_expected - 1])
{
case '0':
val->i = RIG_AGC_OFF;
break;
case '1':
val->i = RIG_AGC_SLOW;
break;
case '2':
val->i = RIG_AGC_MEDIUM;
break;
case '3':
val->i = RIG_AGC_FAST;
break;
case '4':
val->i = RIG_AGC_AUTO;
break;
default:
return -RIG_EPROTO;
}
}
return RIG_OK;