From f9adf5de0a8ab7908bf295f05a3a1ac1ae6a481d Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Wed, 8 Feb 2023 12:02:19 -0600 Subject: [PATCH] Add attenuator level control for TS890 Update SMeter/SWR tables for TS890 Thanks to N3GB George Baltz --- rigs/kenwood/kenwood.c | 10 ++++++---- rigs/kenwood/kenwood.h | 2 +- rigs/kenwood/ts890s.c | 6 +++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index c6f5d780a..63e0f7343 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -3097,7 +3097,7 @@ static int kenwood_find_slope_filter_for_value(RIG *rig, vfo_t vfo, int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) { char levelbuf[16]; - int i, kenwood_val; + int i, kenwood_val, len; struct kenwood_priv_data *priv = rig->state.priv; struct kenwood_priv_caps *caps = kenwood_caps(rig); @@ -3210,10 +3210,11 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) case RIG_LEVEL_ATT: + len = RIG_IS_TS890S ? 1 : 2; /* set the attenuator if a correct value is entered */ if (val.i == 0) { - SNPRINTF(levelbuf, sizeof(levelbuf), "RA00"); + SNPRINTF(levelbuf, sizeof(levelbuf), "RA%0*d", len, 0); } else { @@ -3223,7 +3224,7 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) { if (val.i == rig->state.attenuator[i]) { - SNPRINTF(levelbuf, sizeof(levelbuf), "RA%02d", i + 1); + SNPRINTF(levelbuf, sizeof(levelbuf), "RA%0*d", len, i + 1); foundit = 1; break; } @@ -3479,7 +3480,8 @@ int kenwood_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; case RIG_LEVEL_ATT: - retval = kenwood_safe_transaction(rig, "RA", lvlbuf, 50, 6); + len = RIG_IS_TS890S ? 3 : 6; + retval = kenwood_safe_transaction(rig, "RA", lvlbuf, 50, len); if (retval != RIG_OK) { diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index 92c600572..66e64f12b 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -29,7 +29,7 @@ #include "misc.h" #include "idx_builtin.h" -#define BACKEND_VER "20230204" +#define BACKEND_VER "20230208" #define EOM_KEN ';' #define EOM_TH '\r' diff --git a/rigs/kenwood/ts890s.c b/rigs/kenwood/ts890s.c index cae17b1c3..e62eea656 100644 --- a/rigs/kenwood/ts890s.c +++ b/rigs/kenwood/ts890s.c @@ -39,8 +39,8 @@ #define TS890_AM_TX_MODES RIG_MODE_AM // TODO: Copied from TS-480, to be verified -#define TS890_LEVEL_SET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_KEYSPD|RIG_LEVEL_CWPITCH) -#define TS890_LEVEL_GET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_KEYSPD|RIG_LEVEL_ALC|RIG_LEVEL_SWR|RIG_LEVEL_COMP_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_TEMP_METER|RIG_LEVEL_CWPITCH|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH) +#define TS890_LEVEL_SET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_KEYSPD|RIG_LEVEL_CWPITCH|RIG_LEVEL_ATT) +#define TS890_LEVEL_GET (RIG_LEVEL_RFPOWER|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_AGC|RIG_LEVEL_KEYSPD|RIG_LEVEL_ALC|RIG_LEVEL_SWR|RIG_LEVEL_COMP_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_TEMP_METER|RIG_LEVEL_CWPITCH|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_ATT) #define TS890_FUNC_ALL (RIG_FUNC_NB|RIG_FUNC_NB2|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_NR|RIG_FUNC_BC|RIG_FUNC_BC2|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_TUNER|RIG_FUNC_SEND_MORSE) #define TS890_VFO_OPS (RIG_OP_UP|RIG_OP_DOWN|RIG_OP_BAND_UP|RIG_OP_BAND_DOWN|RIG_OP_CPY|RIG_OP_TUNE) @@ -472,7 +472,7 @@ const struct rig_caps ts890s_caps = .timeout = 500, .retry = 10, .preamp = {12, RIG_DBLST_END,}, - .attenuator = {12, RIG_DBLST_END,}, + .attenuator = {6, 12, 18, RIG_DBLST_END,}, .max_rit = kHz(9.99), .max_xit = kHz(9.99), .max_ifshift = Hz(0),