Remove hard-coded constants.

Use more data already in rig->caps instead of hard coding values.
pull/1297/head
George Baltz N3GB 2023-04-17 18:26:46 -04:00
rodzic 05f04730d7
commit ea37ad1b21
1 zmienionych plików z 23 dodań i 59 usunięć

Wyświetl plik

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