From 1f3fe7b5d1d5da07674663c3acf5bf8734001c22 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Fri, 6 Dec 2013 16:23:31 +0000 Subject: [PATCH] Make Kenwood TS590s firmware defect fixup revision specific. As Kenwood have finally released TS590s firmware revision 1.08 and it fixes the split TX defects; the fixup has been made revision specific. --- kenwood/kenwood.c | 16 ++++++++++++++-- kenwood/kenwood.h | 4 +--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/kenwood/kenwood.c b/kenwood/kenwood.c index 4687e9771..52ea55bd6 100644 --- a/kenwood/kenwood.c +++ b/kenwood/kenwood.c @@ -474,7 +474,18 @@ int kenwood_open(RIG *rig) /* store the data between "FV" and ";" which should be a f/w version string of the form n.n e.g. 1.07 */ priv->fw_rev = strncpy (fw_version, &buffer[2], size - 3); - + char * dot_pos = strchr (buffer, '.'); + if (dot_pos) + { + *dot_pos = '\0'; + buffer[size - 1] = '\0'; + priv->fw_rev_uint = atoi (&buffer[2]) * 100 + atoi (dot_pos + 1); + } + else + { + rig_debug (RIG_DEBUG_ERR, "%s: cannot get f/w version\n", __func__); + return -RIG_EPROTO; + } rig_debug (RIG_DEBUG_TRACE, "%s: found f/w version %s\n", __func__, priv->fw_rev); } @@ -852,7 +863,8 @@ int kenwood_set_freq(RIG *rig, vfo_t vfo, freq_t freq) int err = kenwood_simple_cmd(rig, freqbuf); - if (RIG_OK == err && 'B' == vfo_letter && RIG_MODEL_TS590S == rig->caps->rig_model) + struct kenwood_priv_data * priv = rig->state.priv; + if (RIG_OK == err && 'B' == vfo_letter && RIG_MODEL_TS590S == rig->caps->rig_model && priv->fw_rev_uint <= 107) { /* TS590s f/w rev 1.07 or earlier has a defect that means frequency set on TX VFO in split mode may not be set diff --git a/kenwood/kenwood.h b/kenwood/kenwood.h index c5824abad..5bdfdad56 100644 --- a/kenwood/kenwood.h +++ b/kenwood/kenwood.h @@ -75,9 +75,7 @@ struct kenwood_priv_data { int k3_ext_lvl; /* Initial K3 extension level */ int k2_md_rtty; /* K2 RTTY mode available flag, 1 = RTTY, 0 = N/A */ char *fw_rev; /* firmware revision level */ - int ptt_state; /* some rigs don't tell PTT state so - we store an assumed value here for - them */ + unsigned fw_rev_uint; /* firmware revison as a number 1.07 -> 107 */ };