Fix k3.c "IC" command since it returns binary data and not ascii

https://github.com/Hamlib/Hamlib/issues/563
pull/573/head
Michael Black W9MDB 2021-02-26 12:28:37 -06:00
rodzic bb00c35980
commit db776b2d79
1 zmienionych plików z 14 dodań i 12 usunięć

Wyświetl plik

@ -35,6 +35,7 @@
#include "elecraft.h" #include "elecraft.h"
#include "token.h" #include "token.h"
#include "cal.h" #include "cal.h"
#include "iofunc.h"
#define K3_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ #define K3_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\
RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_AM|RIG_MODE_PKTUSB|\ RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_AM|RIG_MODE_PKTUSB|\
@ -182,7 +183,7 @@ const struct rig_caps k3_caps =
RIG_MODEL(RIG_MODEL_K3), RIG_MODEL(RIG_MODEL_K3),
.model_name = "K3", .model_name = "K3",
.mfg_name = "Elecraft", .mfg_name = "Elecraft",
.version = BACKEND_VER ".4", .version = BACKEND_VER ".5",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_STABLE, .status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
@ -333,7 +334,7 @@ const struct rig_caps k3s_caps =
RIG_MODEL(RIG_MODEL_K3S), RIG_MODEL(RIG_MODEL_K3S),
.model_name = "K3S", .model_name = "K3S",
.mfg_name = "Elecraft", .mfg_name = "Elecraft",
.version = BACKEND_VER ".3", .version = BACKEND_VER ".4",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_STABLE, .status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
@ -483,7 +484,7 @@ const struct rig_caps k4_caps =
RIG_MODEL(RIG_MODEL_K4), RIG_MODEL(RIG_MODEL_K4),
.model_name = "K4", .model_name = "K4",
.mfg_name = "Elecraft", .mfg_name = "Elecraft",
.version = BACKEND_VER ".3", .version = BACKEND_VER ".4",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_ALPHA, .status = RIG_STATUS_ALPHA,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
@ -632,7 +633,7 @@ const struct rig_caps kx3_caps =
RIG_MODEL(RIG_MODEL_KX3), RIG_MODEL(RIG_MODEL_KX3),
.model_name = "KX3", .model_name = "KX3",
.mfg_name = "Elecraft", .mfg_name = "Elecraft",
.version = BACKEND_VER ".3", .version = BACKEND_VER ".4",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_BETA, .status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
@ -781,7 +782,7 @@ const struct rig_caps kx2_caps =
RIG_MODEL(RIG_MODEL_KX2), RIG_MODEL(RIG_MODEL_KX2),
.model_name = "KX2", .model_name = "KX2",
.mfg_name = "Elecraft", .mfg_name = "Elecraft",
.version = BACKEND_VER ".3", .version = BACKEND_VER ".4",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_BETA, .status = RIG_STATUS_BETA,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
@ -1193,19 +1194,20 @@ int k3_set_vfo(RIG *rig, vfo_t vfo)
int k3_get_vfo(RIG *rig, vfo_t *vfo) int k3_get_vfo(RIG *rig, vfo_t *vfo)
{ {
char buf[KENWOOD_MAX_BUF_LEN]; char buf[KENWOOD_MAX_BUF_LEN];
int err; int ret;
err = kenwood_safe_transaction(rig, "IC", buf, KENWOOD_MAX_BUF_LEN, 3); ret = write_block(&rig->state.rigport, "IC;", 3);
if (err != RIG_OK) if (ret != RIG_OK)
{ {
rig_debug(RIG_DEBUG_VERBOSE, "%s: Cannot read K3 IC value\n", __func__); rig_debug(RIG_DEBUG_VERBOSE, "%s: Cannot write K3 IC value\n", __func__);
RETURNFUNC(err); RETURNFUNC(ret);
} }
if (strlen(buf) != 8) ret = read_block(&rig->state.rigport, buf, 8);
if (ret != 8)
{ {
rig_debug(RIG_DEBUG_ERR, "%s: expected 8 bytes from '%s', got %ld bytes\n", __func__, buf, strlen(buf)); rig_debug(RIG_DEBUG_ERR, "%s: expected 8 bytes from '%s', got %d bytes\n", __func__, buf, ret);
RETURNFUNC(-RIG_EPROTO); RETURNFUNC(-RIG_EPROTO);
} }
if (buf[6] == '0') *vfo = RIG_VFO_B; if (buf[6] == '0') *vfo = RIG_VFO_B;