From 5e4cb6f1c189441107dddb0bc9d1cb363e1aa277 Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Mon, 25 Sep 2023 15:15:45 -0500 Subject: [PATCH] Add voice_mem functions for TS590S/SG and TS-2000 Increase max baud for TS-2000 to 115200 Change TS-2000 to hardware handshake default --- rigs/kenwood/kenwood.c | 33 +++++++++++++++++++++++++++++++-- rigs/kenwood/kenwood.h | 2 +- rigs/kenwood/ts2000.c | 8 +++++--- rigs/kenwood/ts590.c | 4 +++- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 4b4139f31..5ec5b322d 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -5351,7 +5351,29 @@ int kenwood_send_voice_mem(RIG *rig, vfo_t vfo, int bank) SNPRINTF(cmd, sizeof(cmd), "PB01"); kenwood_transaction(rig, cmd, NULL, 0); #endif - SNPRINTF(cmd, sizeof(cmd), "PB1%d1", bank); + if (rig->caps->rig_model == RIG_MODEL_TS2000 && (bank < 1 || bank > 3)) + { + rig_debug(RIG_DEBUG_ERR, "%s: TS2000 channel is from 1 to 3\n", __func__); + return -RIG_EINVAL; + } + // some rigs have 5 channels -- newew ones have 10 channels + if ((bank < 1 || bank > 5) + && (rig->caps->rig_model == RIG_MODEL_TS590SG + || rig->caps->rig_model == RIG_MODEL_TS590S)) + { + rig_debug(RIG_DEBUG_ERR, "%s: TS590S/SG channel is from 1 to 5\n", __func__); + return -RIG_EINVAL; + } + if (rig->caps->rig_model == RIG_MODEL_TS2000 + || (rig->caps->rig_model == RIG_MODEL_TS590SG + || rig->caps->rig_model == RIG_MODEL_TS590S)) + { + SNPRINTF(cmd, sizeof(cmd), "PB%d", bank); + } + else + { + SNPRINTF(cmd, sizeof(cmd), "PB1%d1", bank); + } priv->voice_bank = bank; RETURNFUNC(kenwood_transaction(rig, cmd, NULL, 0)); } @@ -5361,7 +5383,14 @@ int kenwood_stop_voice_mem(RIG *rig, vfo_t vfo) char cmd[16]; struct kenwood_priv_data *priv = rig->state.priv; ENTERFUNC; - SNPRINTF(cmd, sizeof(cmd), "PB1%d0", priv->voice_bank); + if (rig->caps->rig_model == RIG_MODEL_TS2000) + { + SNPRINTF(cmd, sizeof(cmd), "PB0"); + } + else + { + SNPRINTF(cmd, sizeof(cmd), "PB1%d0", priv->voice_bank); + } RETURNFUNC(kenwood_transaction(rig, cmd, NULL, 0)); } diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index a8036cda9..2327cf6b7 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -28,7 +28,7 @@ #include "token.h" #include "idx_builtin.h" -#define BACKEND_VER "20230916" +#define BACKEND_VER "20230925" #define EOM_KEN ';' #define EOM_TH '\r' diff --git a/rigs/kenwood/ts2000.c b/rigs/kenwood/ts2000.c index 9d743c147..1b8356fad 100644 --- a/rigs/kenwood/ts2000.c +++ b/rigs/kenwood/ts2000.c @@ -1676,7 +1676,7 @@ const struct rig_caps ts2000_caps = RIG_MODEL(RIG_MODEL_TS2000), .model_name = "TS-2000", .mfg_name = "Kenwood", - .version = BACKEND_VER ".1", + .version = BACKEND_VER ".2", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1684,11 +1684,11 @@ const struct rig_caps ts2000_caps = .dcd_type = RIG_DCD_RIG, .port_type = RIG_PORT_SERIAL, .serial_rate_min = 1200, - .serial_rate_max = 57600, + .serial_rate_max = 115200, .serial_data_bits = 8, .serial_stop_bits = 1, .serial_parity = RIG_PARITY_NONE, - .serial_handshake = RIG_HANDSHAKE_NONE, + .serial_handshake = RIG_HANDSHAKE_HARDWARE, .write_delay = 0, .post_write_delay = 0, /* ms */ .timeout = 200, @@ -1896,6 +1896,8 @@ const struct rig_caps ts2000_caps = .get_ant = kenwood_get_ant, .send_morse = kenwood_send_morse, .wait_morse = rig_wait_morse, + .send_voice_mem = kenwood_send_voice_mem, + .stop_voice_mem = kenwood_stop_voice_mem, .vfo_op = kenwood_vfo_op, .scan = kenwood_scan, .set_mem = kenwood_set_mem, diff --git a/rigs/kenwood/ts590.c b/rigs/kenwood/ts590.c index b385da864..162535b9c 100644 --- a/rigs/kenwood/ts590.c +++ b/rigs/kenwood/ts590.c @@ -1749,7 +1749,7 @@ const struct rig_caps fx4_caps = RIG_MODEL(RIG_MODEL_FX4), .model_name = "FX4/C/CR/L", .mfg_name = "BG2FX", - .version = BACKEND_VER ".7", + .version = BACKEND_VER ".8", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1926,6 +1926,8 @@ const struct rig_caps fx4_caps = .send_morse = kenwood_send_morse, .stop_morse = kenwood_stop_morse, .wait_morse = rig_wait_morse, + .send_voice_mem = kenwood_send_voice_mem, + .stop_voice_mem = kenwood_stop_voice_mem, .set_mem = kenwood_set_mem, .get_mem = kenwood_get_mem, .vfo_ops = TS590_VFO_OPS,