diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 649a7fee8..018847604 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -3503,6 +3503,7 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) int i, ret, agclevel, len, value; struct kenwood_priv_data *priv = rig->state.priv; struct kenwood_priv_caps *caps = kenwood_caps(rig); + gran_t *level_info; ENTERFUNC; @@ -3511,6 +3512,8 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) RETURNFUNC(-RIG_EINVAL); } + level_info = &rig->caps->level_gran[rig_setting2idx(level)]; + switch (level) { int power_now, power_min, power_max; @@ -3946,8 +3949,7 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) } sscanf(lvlbuf + 2, "%d", &val->i); - val->i = (val->i * rig->caps->level_gran[LVL_CWPITCH].step.i) - + rig->caps->level_gran[LVL_CWPITCH].min.i; + val->i = (val->i * level_info->step.i) + level_info->min.i; break; case RIG_LEVEL_KEYSPD: @@ -3973,14 +3975,7 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) sscanf(lvlbuf + 2, "%3d", &raw_value); - if (RIG_IS_TS990S) - { - val->f = (float) raw_value / 255.0f; - } - else - { - val->f = (float) raw_value / 100.0f; - } + val->f = (float) raw_value * level_info->step.f; break; } diff --git a/rigs/kenwood/ts990s.c b/rigs/kenwood/ts990s.c index ef5594e48..39fb2ffda 100644 --- a/rigs/kenwood/ts990s.c +++ b/rigs/kenwood/ts990s.c @@ -150,6 +150,7 @@ const struct rig_caps ts990s_caps = #include "level_gran_kenwood.h" [LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 18 }, .step = { .i = 6 } }, [LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1100 }, .step = { .i = 10 } }, + [LVL_COMP] = { .min = { .f = 0.0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/255.0f } }, }, .parm_gran = {}, .vfo_ops = TS990S_VFO_OP,