From 3fbaeaf871cc6f0cc72e018a31d392aba36270b0 Mon Sep 17 00:00:00 2001 From: Michael Black W9MDB Date: Sun, 28 Jun 2020 23:34:23 -0500 Subject: [PATCH] Change ft857 and ft897 to use ft815_read_ack and dynamic post_write_delay instead of static This will support adjusting post_write_delay to hopefully fix a problem on older/slower Mac systems https://github.com/Hamlib/Hamlib/issues/330 --- rigs/yaesu/ft817.c | 29 +++++++++++++++-------------- rigs/yaesu/ft857.c | 33 ++++----------------------------- rigs/yaesu/ft897.c | 33 ++++----------------------------- 3 files changed, 23 insertions(+), 72 deletions(-) diff --git a/rigs/yaesu/ft817.c b/rigs/yaesu/ft817.c index ce750356e..266c6715f 100644 --- a/rigs/yaesu/ft817.c +++ b/rigs/yaesu/ft817.c @@ -496,6 +496,7 @@ int ft817_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) while ((f1 == 0 || f1 != f2) && retries-- > 0) { rig_debug(RIG_DEBUG_TRACE, "%s: retries=%d\n", __func__, retries); + if ((n = ft817_get_status(rig, FT817_NATIVE_CAT_GET_FREQ_MODE_STATUS)) < 0) { return n; @@ -794,27 +795,27 @@ int ft817_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) /* ---------------------------------------------------------------------- */ -static int ft817_read_ack(RIG *rig) +int ft817_read_ack(RIG *rig) { -#if (FT817_POST_WRITE_DELAY == 0) char dummy; int n; - if ((n = read_block(&rig->state.rigport, &dummy, 1)) < 0) + if (rig->state.rigport.post_write_delay == 0) { - rig_debug(RIG_DEBUG_ERR, "%s: error reading ack\n", __func__); - return n; + if ((n = read_block(&rig->state.rigport, &dummy, 1)) < 0) + { + rig_debug(RIG_DEBUG_ERR, "%s: error reading ack\n", __func__); + return n; + } + + rig_debug(RIG_DEBUG_TRACE, "%s: ack received (%d)\n", __func__, dummy); + + if (dummy != 0) + { + return -RIG_ERJCTED; + } } - rig_debug(RIG_DEBUG_TRACE, "%s: ack received (%d)\n", __func__, dummy); - - if (dummy != 0) - { - return -RIG_ERJCTED; - } - -#endif - return RIG_OK; } diff --git a/rigs/yaesu/ft857.c b/rigs/yaesu/ft857.c index dc062083a..de7c2480b 100644 --- a/rigs/yaesu/ft857.c +++ b/rigs/yaesu/ft857.c @@ -146,6 +146,7 @@ enum ft857_digi #define FT857_VFO_ALL (RIG_VFO_A|RIG_VFO_B) #define FT857_ANTS 0 +extern int ft817_read_ack(RIG *rig); static int ft857_send_icmd(RIG *rig, int index, unsigned char *data); const struct rig_caps ft857_caps = @@ -153,7 +154,7 @@ const struct rig_caps ft857_caps = RIG_MODEL(RIG_MODEL_FT857), .model_name = "FT-857", .mfg_name = "Yaesu", - .version = "20200323.0", + .version = "20200628.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -468,32 +469,6 @@ static int ft857_get_status(RIG *rig, int status) return RIG_OK; } -/* ---------------------------------------------------------------------- */ - -static int ft857_read_ack(RIG *rig) -{ -#if (FT857_POST_WRITE_DELAY == 0) - char dummy; - int n; - - if ((n = read_block(&rig->state.rigport, &dummy, 1)) < 0) - { - rig_debug(RIG_DEBUG_ERR, "%s: error reading ack\n", __func__); - return n; - } - - rig_debug(RIG_DEBUG_TRACE, "%s: ack received (%d)\n", __func__, dummy); - - if (dummy != 0) - { - return -RIG_ERJCTED; - } - -#endif - - return RIG_OK; -} - /* * private helper function to send a private command sequence. * Must only be complete sequences. @@ -509,7 +484,7 @@ static int ft857_send_cmd(RIG *rig, int index) } write_block(&rig->state.rigport, (char *) p->pcs[index].nseq, YAESU_CMD_LENGTH); - return ft857_read_ack(rig); + return ft817_read_ack(rig); } /* @@ -530,7 +505,7 @@ static int ft857_send_icmd(RIG *rig, int index, unsigned char *data) memcpy(cmd, data, YAESU_CMD_LENGTH - 1); write_block(&rig->state.rigport, (char *) cmd, YAESU_CMD_LENGTH); - return ft857_read_ack(rig); + return ft817_read_ack(rig); } /* ---------------------------------------------------------------------- */ diff --git a/rigs/yaesu/ft897.c b/rigs/yaesu/ft897.c index de84830e1..5c2b8ef5f 100644 --- a/rigs/yaesu/ft897.c +++ b/rigs/yaesu/ft897.c @@ -111,6 +111,7 @@ static int ft897_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift); static int ft897_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t offs); static int ft897_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit); static int ft897_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd); +extern int ft817_read_ack(RIG *rig); // static int ft897_set_powerstat(RIG *rig, powerstat_t status); /* Native ft897 cmd set prototypes. These are READ ONLY as each */ @@ -190,7 +191,7 @@ const struct rig_caps ft897_caps = RIG_MODEL(RIG_MODEL_FT897), .model_name = "FT-897", .mfg_name = "Yaesu", - .version = "20200607.0", + .version = "20200628.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -791,32 +792,6 @@ int ft897_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) return RIG_OK; } -/* ---------------------------------------------------------------------- */ - -static int ft897_read_ack(RIG *rig) -{ -#if (FT897_POST_WRITE_DELAY == 0) - char dummy; - int n; - - if ((n = read_block(&rig->state.rigport, &dummy, 1)) < 0) - { - rig_debug(RIG_DEBUG_ERR, "%s: error reading ack\n", __func__); - return n; - } - - rig_debug(RIG_DEBUG_TRACE, "%s: ack received (%d)\n", __func__, dummy); - - if (dummy != 0) - { - return -RIG_ERJCTED; - } - -#endif - - return RIG_OK; -} - /* * private helper function to send a private command sequence. * Must only be complete sequences. @@ -832,7 +807,7 @@ static int ft897_send_cmd(RIG *rig, int index) } write_block(&rig->state.rigport, (char *) p->pcs[index].nseq, YAESU_CMD_LENGTH); - return ft897_read_ack(rig); + return ft817_read_ack(rig); } /* @@ -853,7 +828,7 @@ static int ft897_send_icmd(RIG *rig, int index, unsigned char *data) memcpy(cmd, data, YAESU_CMD_LENGTH - 1); write_block(&rig->state.rigport, (char *) cmd, YAESU_CMD_LENGTH); - return ft897_read_ack(rig); + return ft817_read_ack(rig); } /* ---------------------------------------------------------------------- */