From c471884122de94fa69fd76671eb8cb6ce9b932a8 Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Wed, 14 Feb 2024 16:35:34 -0600 Subject: [PATCH] Fix TS590 and TS890 RIG_LEVEL_RFPOWER_METER_WATTS --- rigs/kenwood/ts590.c | 26 ++++++++++++++++++-------- rigs/kenwood/ts890s.c | 9 +-------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/rigs/kenwood/ts590.c b/rigs/kenwood/ts590.c index 7523b81a8..a995182e3 100644 --- a/rigs/kenwood/ts590.c +++ b/rigs/kenwood/ts590.c @@ -41,11 +41,11 @@ #define TS590_LEVEL_GET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_MICGAIN|RIG_LEVEL_STRENGTH|RIG_LEVEL_KEYSPD|RIG_LEVEL_CWPITCH| \ RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_NR|RIG_LEVEL_PREAMP|RIG_LEVEL_COMP|RIG_LEVEL_ATT|RIG_LEVEL_VOXDELAY|RIG_LEVEL_VOXGAIN|RIG_LEVEL_BKIN_DLYMS| \ - RIG_LEVEL_SWR|RIG_LEVEL_COMP_METER|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_USB_AF|RIG_LEVEL_USB_AF_INPUT) + RIG_LEVEL_SWR|RIG_LEVEL_COMP_METER|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_USB_AF|RIG_LEVEL_USB_AF_INPUT) #define TS590_LEVEL_SET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_CWPITCH| \ RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_NR|RIG_LEVEL_PREAMP|RIG_LEVEL_COMP|RIG_LEVEL_ATT|RIG_LEVEL_VOXDELAY|RIG_LEVEL_VOXGAIN|RIG_LEVEL_BKIN_DLYMS| \ - RIG_LEVEL_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_USB_AF|RIG_LEVEL_USB_AF_INPUT) + RIG_LEVEL_METER|RIG_LEVEL_SLOPE_HIGH|RIG_LEVEL_SLOPE_LOW|RIG_LEVEL_USB_AF|RIG_LEVEL_USB_AF_INPUT) #define TS590_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2|RIG_FUNC_RIT|RIG_FUNC_XIT| \ RIG_FUNC_TUNER|RIG_FUNC_MON|RIG_FUNC_FBKIN|RIG_FUNC_LOCK) @@ -1013,6 +1013,13 @@ static int ts590_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) case RIG_LEVEL_RFPOWER_METER: case RIG_LEVEL_RFPOWER_METER_WATTS: { + static cal_table_t power_meter = + { + 7, { { 0, 0}, { 3, 5}, { 6, 10}, { 8, 15}, {12, 25}, + { 17, 50}, { 30, 100} + } + }; + int raw_value; if (rig->state.cache.ptt == RIG_PTT_OFF) @@ -1030,13 +1037,16 @@ static int ts590_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) sscanf(ackbuf, "SM0%d", &raw_value); - val->f = (float) raw_value / 30.0f; +// val->f = (float) raw_value / 30.0f; if (level == RIG_LEVEL_RFPOWER_METER_WATTS) { - val->f *= 100; - if (val->f >= 10) val->f = roundf(val->f); - else val->f = roundf(val->f*10.0)/10.0; + val->f = roundf(rig_raw2val(raw_value, &power_meter)); + if (val->f < 10) + { + val->f = roundf(rig_raw2val(raw_value, &power_meter) * 10.0) / 10.0; + } + } break; @@ -1703,7 +1713,7 @@ struct rig_caps ts590_caps = RIG_MODEL(RIG_MODEL_TS590S), .model_name = "TS-590S", .mfg_name = "Kenwood", - .version = BACKEND_VER ".15", + .version = BACKEND_VER ".16", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -2097,7 +2107,7 @@ struct rig_caps ts590sg_caps = RIG_MODEL(RIG_MODEL_TS590SG), .model_name = "TS-590SG", .mfg_name = "Kenwood", - .version = BACKEND_VER ".9", + .version = BACKEND_VER ".10", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, diff --git a/rigs/kenwood/ts890s.c b/rigs/kenwood/ts890s.c index d9c28d829..2b8ca60c7 100644 --- a/rigs/kenwood/ts890s.c +++ b/rigs/kenwood/ts890s.c @@ -359,14 +359,7 @@ int kenwood_ts890_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) if (level == RIG_LEVEL_RFPOWER_METER_WATTS) { - if (val->f >= 10) - { - val->f = roundf(rig_raw2val(val->i, &power_meter)); - } - else - { - val->f = roundf(rig_raw2val(val->i, &power_meter) * 10.0) / 10.0; - } + val->f = roundf(rig_raw2val(val->i, &power_meter)); } else {