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)
{
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;
}

Wyświetl plik

@ -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);
}
/* ---------------------------------------------------------------------- */

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_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);
}
/* ---------------------------------------------------------------------- */