From 8ebadb3b7d39ef2d3d314019d560232e8f63fa07 Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Thu, 7 Sep 2023 12:01:18 -0500 Subject: [PATCH] Get more firmware info for Elecraft K3 --- rigs/kenwood/elecraft.c | 49 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/rigs/kenwood/elecraft.c b/rigs/kenwood/elecraft.c index af5207c01..e435e1dda 100644 --- a/rigs/kenwood/elecraft.c +++ b/rigs/kenwood/elecraft.c @@ -319,8 +319,42 @@ int elecraft_open(RIG *rig) if (err != RIG_OK) { + rig_debug(RIG_DEBUG_ERR, "%s: Firmware RVM failed\n", __func__); return err; } + err = elecraft_get_firmware_revision_level(rig, "RVD", priv->fw_rev, + (sizeof(k3_fw_rev) / sizeof(k3_fw_rev[0]))); + + if (err != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: Firmware RVD failed\n", __func__); + } + + if (priv->is_k3) + { + err = elecraft_get_firmware_revision_level(rig, "RVA", priv->fw_rev, + (sizeof(k3_fw_rev) / sizeof(k3_fw_rev[0]))); + + if (err != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: Firmware RVA failed\n", __func__); + } + err = elecraft_get_firmware_revision_level(rig, "RVR", priv->fw_rev, + (sizeof(k3_fw_rev) / sizeof(k3_fw_rev[0]))); + + if (err != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: Firmware RVR failed\n", __func__); + } + err = elecraft_get_firmware_revision_level(rig, "RVF", priv->fw_rev, + (sizeof(k3_fw_rev) / sizeof(k3_fw_rev[0]))); + + if (err != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: Firmware RVF failed\n", __func__); + return err; + } + } break; @@ -486,6 +520,17 @@ int elecraft_get_firmware_revision_level(RIG *rig, const char *cmd, int err; char *bufptr; char buf[KENWOOD_MAX_BUF_LEN]; + char rvp = cmd[3]; + char *rv = "UNK"; + switch(rvp) + { + case 'M': rv = "MCU";break; + case 'D': rv = "DSP";break; + case 'A': rv = "AUX";break; + case 'R': rv = "DVR";break; + case 'F': rv = "FPF";break; + default: rv = "???";break; + } rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); @@ -519,8 +564,8 @@ int elecraft_get_firmware_revision_level(RIG *rig, const char *cmd, /* Copy out */ strncpy(fw_rev, bufptr, fw_rev_sz - 1); - rig_debug(RIG_DEBUG_VERBOSE, "%s: Elecraft firmware revision is %s\n", __func__, - fw_rev); + rig_debug(RIG_DEBUG_VERBOSE, "%s: Elecraft %s firmware revision is %s\n", __func__, + rv, fw_rev); return RIG_OK; }