From e42bb719b9692027addb0912c38508d0f1960d4e Mon Sep 17 00:00:00 2001 From: George Baltz N3GB Date: Mon, 22 Jan 2024 15:00:56 -0500 Subject: [PATCH] Fix off by one error in tones for TS-590/890/990 Fix some rigs I found docs for - more needed --- rigs/kenwood/kenwood.c | 18 +++++++++--------- rigs/kenwood/kenwood.h | 1 + rigs/kenwood/ts2000.c | 2 ++ rigs/kenwood/ts570.c | 2 ++ rigs/kenwood/ts870s.c | 2 ++ rigs/kenwood/ts950.c | 2 ++ rigs/kenwood/ts990s.c | 2 ++ 7 files changed, 20 insertions(+), 9 deletions(-) diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 09a69c2ca..fb11b043f 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -4422,7 +4422,7 @@ int kenwood_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone) } /* TODO: replace menu no 57 by a define */ - SNPRINTF(tonebuf, sizeof(tonebuf), "EX%03d%04d", 57, i + 1); + SNPRINTF(tonebuf, sizeof(tonebuf), "EX%03d%04d", 57, i + kenwood_caps(rig)->tone_table_base); RETURNFUNC(kenwood_transaction(rig, tonebuf, NULL, 0)); } @@ -4473,11 +4473,11 @@ int kenwood_set_ctcss_tone_tn(RIG *rig, vfo_t vfo, tone_t tone) RETURNFUNC(-RIG_EINVAL); } - SNPRINTF(buf, sizeof(buf), "TN%c%02d", c, i + 1); + SNPRINTF(buf, sizeof(buf), "TN%c%02d", c, i + kenwood_caps(rig)->tone_table_base); } else { - SNPRINTF(buf, sizeof(buf), "TN%02d", i + 1); + SNPRINTF(buf, sizeof(buf), "TN%02d", i + kenwood_caps(rig)->tone_table_base); } RETURNFUNC(kenwood_transaction(rig, buf, NULL, 0)); @@ -4554,7 +4554,7 @@ int kenwood_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone) tonebuf[2] = '\0'; tone_idx = atoi(tonebuf); - if (tone_idx == 0) + if (tone_idx < kenwood_caps(rig)->tone_table_base) { rig_debug(RIG_DEBUG_ERR, "%s: CTCSS tone is zero (%s)\n", __func__, tonebuf); @@ -4572,7 +4572,7 @@ int kenwood_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone) } } - *tone = caps->ctcss_list[tone_idx - 1]; + *tone = caps->ctcss_list[tone_idx] - kenwood_caps(rig)->tone_table_base; RETURNFUNC(RIG_OK); } @@ -4623,11 +4623,11 @@ int kenwood_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone) RETURNFUNC(-RIG_EINVAL); } - SNPRINTF(buf, sizeof(buf), "CN%c%02d", c, i + 1); + SNPRINTF(buf, sizeof(buf), "CN%c%02d", c, i - kenwood_caps(rig)->tone_table_base); } else { - SNPRINTF(buf, sizeof(buf), "CN%02d", i + 1); + SNPRINTF(buf, sizeof(buf), "CN%02d", i - kenwood_caps(rig)->tone_table_base); } RETURNFUNC(kenwood_transaction(rig, buf, NULL, 0)); @@ -4692,7 +4692,7 @@ int kenwood_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone) tone_idx = atoi(tonebuf + offs); - if (tone_idx == 0) + if (tone_idx < kenwood_caps(rig)->tone_table_base) { rig_debug(RIG_DEBUG_ERR, "%s: CTCSS is zero (%s)\n", __func__, tonebuf); @@ -4710,7 +4710,7 @@ int kenwood_get_ctcss_sql(RIG *rig, vfo_t vfo, tone_t *tone) } } - *tone = caps->ctcss_list[tone_idx - 1]; + *tone = caps->ctcss_list[tone_idx] - kenwood_caps(rig)->tone_table_base; RETURNFUNC(RIG_OK); } diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index b287d23fd..6fa46270c 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -137,6 +137,7 @@ struct kenwood_priv_caps struct kenwood_slope_filter *slope_filter_high; /* Last entry should have value == -1 and frequency_hz == -1 */ struct kenwood_slope_filter *slope_filter_low; /* Last entry should have value == -1 and frequency_hz == -1 */ double swr; + int tone_table_base; /* Offset of first value in rigs tone tables, default=0 */ }; struct kenwood_priv_data diff --git a/rigs/kenwood/ts2000.c b/rigs/kenwood/ts2000.c index 1ec0fabb1..817156439 100644 --- a/rigs/kenwood/ts2000.c +++ b/rigs/kenwood/ts2000.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ #include #include @@ -232,6 +233,7 @@ static struct kenwood_priv_caps ts2000_priv_caps = .filter_width = ts2000_filter_width, .slope_filter_high = ts2000_slope_filter_high, .slope_filter_low = ts2000_slope_filter_low, + .tone_table_base = 1, }; /* memory capabilities */ diff --git a/rigs/kenwood/ts570.c b/rigs/kenwood/ts570.c index ba4f6f49f..dc676250d 100644 --- a/rigs/kenwood/ts570.c +++ b/rigs/kenwood/ts570.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ #include #include @@ -43,6 +44,7 @@ static struct kenwood_priv_caps ts570_priv_caps = { .cmdtrm = EOM_KEN, + .tone_table_base = 1, }; static int ts570_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) diff --git a/rigs/kenwood/ts870s.c b/rigs/kenwood/ts870s.c index cb130b0ef..ed54c9296 100644 --- a/rigs/kenwood/ts870s.c +++ b/rigs/kenwood/ts870s.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ #include #include @@ -53,6 +54,7 @@ static struct kenwood_priv_caps ts870s_priv_caps = { .cmdtrm = EOM_KEN, + .tone_table_base = 1, }; /* only the ts870s and ts2000 support get_vfo with the 'FR;' command diff --git a/rigs/kenwood/ts950.c b/rigs/kenwood/ts950.c index 69cbfac65..8486c6f9f 100644 --- a/rigs/kenwood/ts950.c +++ b/rigs/kenwood/ts950.c @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Edited by Martin Ewing AA6E, March, 2012 @@ -52,6 +53,7 @@ static struct kenwood_priv_caps ts950_priv_caps = { .cmdtrm = EOM_KEN, + .tone_table_base = 1, }; /* diff --git a/rigs/kenwood/ts990s.c b/rigs/kenwood/ts990s.c index 17b7af314..f2de7a5df 100644 --- a/rigs/kenwood/ts990s.c +++ b/rigs/kenwood/ts990s.c @@ -19,6 +19,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * */ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ #include #include @@ -120,6 +121,7 @@ static struct kenwood_priv_caps ts990s_priv_caps = { .cmdtrm = EOM_KEN, .mode_table = ts990s_mode_table, + .tone_table_base = 0, };