From 3cbdd3c387c5bab1a7810b5b9748d2bfb8868cf3 Mon Sep 17 00:00:00 2001 From: Michael Black W9MDB Date: Wed, 30 Sep 2020 14:47:25 -0500 Subject: [PATCH] Update kenwood rigs for new get_kenwood_level --- rigs/kenwood/flex6xxx.c | 26 +++++++++++++++++++++++++- rigs/kenwood/ts2000.c | 2 +- rigs/kenwood/ts870s.c | 10 +++++----- rigs/kenwood/ts990s.c | 6 +++--- 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/rigs/kenwood/flex6xxx.c b/rigs/kenwood/flex6xxx.c index 63a42451c..ad1572f4c 100644 --- a/rigs/kenwood/flex6xxx.c +++ b/rigs/kenwood/flex6xxx.c @@ -51,7 +51,7 @@ /* PowerSDR differences */ #define POWERSDR_FUNC_ALL (RIG_FUNC_VOX|RIG_FUNC_SQL|RIG_FUNC_NB|RIG_FUNC_ANF|RIG_FUNC_MUTE|RIG_FUNC_RIT|RIG_FUNC_XIT) -#define POWERSDR_LEVEL_ALL (RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_KEYSPD|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_MICGAIN|RIG_LEVEL_VOXGAIN|RIG_LEVEL_SQL|RIG_LEVEL_AF|RIG_LEVEL_AGC) +#define POWERSDR_LEVEL_ALL (RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_KEYSPD|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_MICGAIN|RIG_LEVEL_VOXGAIN|RIG_LEVEL_SQL|RIG_LEVEL_AF|RIG_LEVEL_AGC|RIG_LEVEL_RF) static rmode_t flex_mode_table[KENWOOD_MODE_TABLE_MAX] = @@ -739,6 +739,12 @@ int powersdr_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) ans = 3; break; + case RIG_LEVEL_RF: + cmd = "ZZAR"; + len = 4; + ans = 4; + break; + case RIG_LEVEL_RFPOWER_METER: cmd = "ZZRM5"; len = 5; @@ -778,6 +784,7 @@ int powersdr_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) switch (level) { + int i; case RIG_LEVEL_AGC: n = sscanf(lvlbuf + len, "%d", &val->i); @@ -804,6 +811,23 @@ int powersdr_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) val->f /= 100; break; + case RIG_LEVEL_RF: + n = sscanf(lvlbuf + len, "%d", &i); + val->i = i; + rig_debug(RIG_DEBUG_TRACE, "%s: lvlbuf+len=%s, len=%d, i=%d, val->i=%d\n", __func__, lvlbuf+len, len, i, val->i); + + + if (n != 1) + { + rig_debug(RIG_DEBUG_ERR, "%s: Error parsing value from lvlbuf='%s'\n", + __func__, lvlbuf); + return -RIG_EPROTO; + } + val->f = (val->i + 20) / (120 - -20); + rig_debug(RIG_DEBUG_TRACE, "%s: lvlbuf=%s, val->i=%d, val->f=%g\n", __func__, lvlbuf, i, val->f); + + break; + case RIG_LEVEL_MICGAIN: n = sscanf(lvlbuf + len, "%f", &val->f); diff --git a/rigs/kenwood/ts2000.c b/rigs/kenwood/ts2000.c index 7095b81a7..cdd02c407 100644 --- a/rigs/kenwood/ts2000.c +++ b/rigs/kenwood/ts2000.c @@ -1066,7 +1066,7 @@ int ts2000_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) case RIG_LEVEL_AGC: /* FIX ME: ts2000 returns 0 -20 for AGC */ - ret = get_kenwood_level(rig, "GT", val); + ret = get_kenwood_level(rig, "GT", val, NULL); agclevel = 255.0 * val->f; if (agclevel == 0) { val->i = 0; } diff --git a/rigs/kenwood/ts870s.c b/rigs/kenwood/ts870s.c index 16d4be682..f21ca38d1 100644 --- a/rigs/kenwood/ts870s.c +++ b/rigs/kenwood/ts870s.c @@ -481,19 +481,19 @@ static int ts870s_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) case RIG_LEVEL_AF: - return get_kenwood_level(rig, "AG", val); + return get_kenwood_level(rig, "AG", val, NULL); case RIG_LEVEL_RF: - return get_kenwood_level(rig, "RG", val); + return get_kenwood_level(rig, "RG", val, NULL); case RIG_LEVEL_SQL: - return get_kenwood_level(rig, "SQ", val); + return get_kenwood_level(rig, "SQ", val, NULL); case RIG_LEVEL_MICGAIN: - return get_kenwood_level(rig, "MG", val); + return get_kenwood_level(rig, "MG", val, NULL); case RIG_LEVEL_AGC: - ret = get_kenwood_level(rig, "GT", val); + ret = get_kenwood_level(rig, "GT", val, NULL); agclevel = 255 * val->f; if (agclevel == 0) { val->i = 0; } diff --git a/rigs/kenwood/ts990s.c b/rigs/kenwood/ts990s.c index c3eb269ca..5b3428563 100644 --- a/rigs/kenwood/ts990s.c +++ b/rigs/kenwood/ts990s.c @@ -561,7 +561,7 @@ int ts990s_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; case RIG_LEVEL_MICGAIN: - retval = get_kenwood_level(rig, "MG", val); + retval = get_kenwood_level(rig, "MG", val, NULL); if (retval != RIG_OK) { @@ -670,7 +670,7 @@ int ts990s_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; case RIG_LEVEL_VOXGAIN: - retval = get_kenwood_level(rig, "VG00", val); + retval = get_kenwood_level(rig, "VG00", &val->f, NULL); if (retval != RIG_OK) { @@ -680,7 +680,7 @@ int ts990s_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; case RIG_LEVEL_ANTIVOX: - retval = get_kenwood_level(rig, "VG00", val); + retval = get_kenwood_level(rig, "VG00", &val->f, NULL); if (retval != RIG_OK) {