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
pull/345/head
Michael Black W9MDB 2020-06-28 23:34:23 -05:00
rodzic c70805902a
commit 3fbaeaf871
3 zmienionych plików z 23 dodań i 72 usunięć

Wyświetl plik

@ -496,6 +496,7 @@ int ft817_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
while ((f1 == 0 || f1 != f2) && retries-- > 0) while ((f1 == 0 || f1 != f2) && retries-- > 0)
{ {
rig_debug(RIG_DEBUG_TRACE, "%s: retries=%d\n", __func__, retries); 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) if ((n = ft817_get_status(rig, FT817_NATIVE_CAT_GET_FREQ_MODE_STATUS)) < 0)
{ {
return n; 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; char dummy;
int n; 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__); if ((n = read_block(&rig->state.rigport, &dummy, 1)) < 0)
return n; {
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; return RIG_OK;
} }

Wyświetl plik

@ -146,6 +146,7 @@ enum ft857_digi
#define FT857_VFO_ALL (RIG_VFO_A|RIG_VFO_B) #define FT857_VFO_ALL (RIG_VFO_A|RIG_VFO_B)
#define FT857_ANTS 0 #define FT857_ANTS 0
extern int ft817_read_ack(RIG *rig);
static int ft857_send_icmd(RIG *rig, int index, unsigned char *data); static int ft857_send_icmd(RIG *rig, int index, unsigned char *data);
const struct rig_caps ft857_caps = const struct rig_caps ft857_caps =
@ -153,7 +154,7 @@ const struct rig_caps ft857_caps =
RIG_MODEL(RIG_MODEL_FT857), RIG_MODEL(RIG_MODEL_FT857),
.model_name = "FT-857", .model_name = "FT-857",
.mfg_name = "Yaesu", .mfg_name = "Yaesu",
.version = "20200323.0", .version = "20200628.0",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_STABLE, .status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
@ -468,32 +469,6 @@ static int ft857_get_status(RIG *rig, int status)
return RIG_OK; 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. * private helper function to send a private command sequence.
* Must only be complete sequences. * 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); 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); memcpy(cmd, data, YAESU_CMD_LENGTH - 1);
write_block(&rig->state.rigport, (char *) cmd, YAESU_CMD_LENGTH); write_block(&rig->state.rigport, (char *) cmd, YAESU_CMD_LENGTH);
return ft857_read_ack(rig); return ft817_read_ack(rig);
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */

Wyświetl plik

@ -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_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_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit);
static int ft897_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd); 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); // static int ft897_set_powerstat(RIG *rig, powerstat_t status);
/* Native ft897 cmd set prototypes. These are READ ONLY as each */ /* 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), RIG_MODEL(RIG_MODEL_FT897),
.model_name = "FT-897", .model_name = "FT-897",
.mfg_name = "Yaesu", .mfg_name = "Yaesu",
.version = "20200607.0", .version = "20200628.0",
.copyright = "LGPL", .copyright = "LGPL",
.status = RIG_STATUS_STABLE, .status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER, .rig_type = RIG_TYPE_TRANSCEIVER,
@ -791,32 +792,6 @@ int ft897_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd)
return RIG_OK; 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. * private helper function to send a private command sequence.
* Must only be complete sequences. * 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); 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); memcpy(cmd, data, YAESU_CMD_LENGTH - 1);
write_block(&rig->state.rigport, (char *) cmd, YAESU_CMD_LENGTH); write_block(&rig->state.rigport, (char *) cmd, YAESU_CMD_LENGTH);
return ft897_read_ack(rig); return ft817_read_ack(rig);
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */