From 9626894029686803544cae7860f34b362dd7a19b Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Sun, 22 Jan 2023 16:45:22 -0600 Subject: [PATCH] Fix K3/K3S VFOB mode/bandwidth setting https://github.com/Hamlib/Hamlib/issues/1224 --- rigs/kenwood/k3.c | 24 +++++++++++++++--------- rigs/kenwood/kenwood.c | 4 ++-- rigs/kenwood/kenwood.h | 2 +- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/rigs/kenwood/k3.c b/rigs/kenwood/k3.c index 336b30bc5..0956e5757 100644 --- a/rigs/kenwood/k3.c +++ b/rigs/kenwood/k3.c @@ -190,7 +190,7 @@ const struct rig_caps k3_caps = RIG_MODEL(RIG_MODEL_K3), .model_name = "K3", .mfg_name = "Elecraft", - .version = BACKEND_VER ".25", + .version = BACKEND_VER ".26", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -343,7 +343,7 @@ const struct rig_caps k3s_caps = RIG_MODEL(RIG_MODEL_K3S), .model_name = "K3S", .mfg_name = "Elecraft", - .version = BACKEND_VER ".20", + .version = BACKEND_VER ".21", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -960,15 +960,21 @@ int k3_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) int err; rmode_t temp_m; pbwidth_t temp_w; - char *cmd_mode = "DT"; + char *cmd_data = "DT"; char *cmd_bw = "BW"; int cmd_bw_len = 6; + struct kenwood_priv_data *priv = rig->state.priv; rig_debug(RIG_DEBUG_VERBOSE, "%s called vfo=%s\n", __func__, rig_strvfo(vfo)); - if (vfo == RIG_VFO_B && rig->caps->rig_model == RIG_MODEL_K4) + if ((priv->is_k3 || priv->is_k3s || priv->is_k4 || priv->is_k4d + || priv->is_k4hd) && vfo == RIG_VFO_B) { - cmd_mode = "DT$"; + if (!(priv->is_k3 || priv->is_k3s)) + { + cmd_data = "DT$"; + } + cmd_bw = "BW$"; cmd_bw_len = 7; @@ -993,8 +999,8 @@ int k3_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) if (temp_m == RIG_MODE_RTTY) { - err = kenwood_safe_transaction(rig, cmd_mode, buf, KENWOOD_MAX_BUF_LEN, - strlen(cmd_mode) + 1); + err = kenwood_safe_transaction(rig, cmd_data, buf, KENWOOD_MAX_BUF_LEN, + strlen(cmd_data) + 1); if (err != RIG_OK) { @@ -1021,8 +1027,8 @@ int k3_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) } else if (temp_m == RIG_MODE_RTTYR) { - err = kenwood_safe_transaction(rig, cmd_mode, buf, KENWOOD_MAX_BUF_LEN, - strlen(cmd_mode) + 1); + err = kenwood_safe_transaction(rig, cmd_data, buf, KENWOOD_MAX_BUF_LEN, + strlen(cmd_data) + 1); if (err != RIG_OK) { diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 1abad7a1d..a82fc261f 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -2640,8 +2640,8 @@ int kenwood_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) } else { - if (vfo == RIG_VFO_B - && rig->caps->rig_model == RIG_MODEL_K4) // K4 new MD$ command for VFOB + if ((priv->is_k3 || priv->is_k3s || priv->is_k4 || priv->is_k4d + || priv->is_k4hd) && vfo == RIG_VFO_B) { SNPRINTF(cmd, sizeof(cmd), "MD$"); offs = 3; diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index d0c077a07..454946373 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 "20230115" +#define BACKEND_VER "20230222" #define EOM_KEN ';' #define EOM_TH '\r'