Add get/set clock for Yaesu FT1200/891/991/DX10/DX101/DX101MP

https://github.com/Hamlib/Hamlib/issues/851
Hamlib-4.4
Mike Black W9MDB 2021-12-02 16:08:08 -06:00
rodzic 9ed36ffe54
commit cab48cecfa
8 zmienionych plików z 133 dodań i 7 usunięć

Wyświetl plik

@ -152,7 +152,7 @@ const struct rig_caps ftdx1200_caps =
RIG_MODEL(RIG_MODEL_FTDX1200),
.model_name = "FTDX-1200",
.mfg_name = "Yaesu",
.version = NEWCAT_VER ".2",
.version = NEWCAT_VER ".3",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER,
@ -320,4 +320,6 @@ const struct rig_caps ftdx1200_caps =
.set_ext_level = newcat_set_ext_level,
.get_ext_level = newcat_get_ext_level,
.send_morse = newcat_send_morse,
.set_clock = newcat_set_clock,
.get_clock = newcat_get_clock
};

Wyświetl plik

@ -135,7 +135,7 @@ const struct rig_caps ft891_caps =
RIG_MODEL(RIG_MODEL_FT891),
.model_name = "FT-891",
.mfg_name = "Yaesu",
.version = NEWCAT_VER ".4",
.version = NEWCAT_VER ".5",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER,
@ -320,6 +320,8 @@ const struct rig_caps ft891_caps =
.set_ext_level = newcat_set_ext_level,
.get_ext_level = newcat_get_ext_level,
.send_morse = newcat_send_morse,
.set_clock = newcat_set_clock,
.get_clock = newcat_get_clock
};
/*

Wyświetl plik

@ -143,7 +143,7 @@ const struct rig_caps ft991_caps =
RIG_MODEL(RIG_MODEL_FT991),
.model_name = "FT-991",
.mfg_name = "Yaesu",
.version = NEWCAT_VER ".7",
.version = NEWCAT_VER ".8",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER,
@ -329,6 +329,8 @@ const struct rig_caps ft991_caps =
.get_ext_level = newcat_get_ext_level,
.send_morse = newcat_send_morse,
.send_voice_mem = newcat_send_voice_mem,
.set_clock = newcat_set_clock,
.get_clock = newcat_get_clock
};

Wyświetl plik

@ -139,7 +139,7 @@ const struct rig_caps ftdx10_caps =
RIG_MODEL(RIG_MODEL_FTDX10),
.model_name = "FTDX-10",
.mfg_name = "Yaesu",
.version = NEWCAT_VER ".0",
.version = NEWCAT_VER ".1",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER,
@ -308,4 +308,6 @@ const struct rig_caps ftdx10_caps =
.set_ext_level = newcat_set_ext_level,
.get_ext_level = newcat_get_ext_level,
.send_morse = newcat_send_morse,
.set_clock = newcat_set_clock,
.get_clock = newcat_get_clock
};

Wyświetl plik

@ -139,7 +139,7 @@ const struct rig_caps ftdx101d_caps =
RIG_MODEL(RIG_MODEL_FTDX101D),
.model_name = "FTDX-101D",
.mfg_name = "Yaesu",
.version = NEWCAT_VER ".12",
.version = NEWCAT_VER ".13",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER,
@ -309,4 +309,6 @@ const struct rig_caps ftdx101d_caps =
.set_ext_level = newcat_set_ext_level,
.get_ext_level = newcat_get_ext_level,
.send_morse = newcat_send_morse,
.set_clock = newcat_set_clock,
.get_clock = newcat_get_clock
};

Wyświetl plik

@ -77,7 +77,7 @@ const struct rig_caps ftdx101mp_caps =
RIG_MODEL(RIG_MODEL_FTDX101MP),
.model_name = "FTDX-101MP",
.mfg_name = "Yaesu",
.version = NEWCAT_VER ".3",
.version = NEWCAT_VER ".4",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER,
@ -247,4 +247,6 @@ const struct rig_caps ftdx101mp_caps =
.set_ext_level = newcat_set_ext_level,
.get_ext_level = newcat_get_ext_level,
.send_morse = newcat_send_morse,
.set_clock = newcat_set_clock,
.get_clock = newcat_get_clock
};

Wyświetl plik

@ -11026,3 +11026,112 @@ static int newcat_get_contour_width(RIG *rig, vfo_t vfo, int *width)
RETURNFUNC(RIG_OK);
}
int newcat_set_clock(RIG *rig, int year, int month, int day, int hour, int min,
int sec, double msec, int utc_offset)
{
int retval = RIG_OK;
int err;
struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv;
if (!newcat_valid_command(rig, "DT"))
{
RETURNFUNC(-RIG_ENAVAIL);
}
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "DT0%04d%02d%02d%c", year, month,
day, cat_term);
if (RIG_OK != (err = newcat_set_cmd(rig)))
{
rig_debug(RIG_DEBUG_VERBOSE, "%s:%d command err = %d\n", __func__, __LINE__,
err);
RETURNFUNC(err);
}
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "DT1%02d%02d%02d%c", hour, min, sec, cat_term);
if (RIG_OK != (err = newcat_set_cmd(rig)))
{
rig_debug(RIG_DEBUG_VERBOSE, "%s:%d command err = %d\n", __func__, __LINE__,
err);
RETURNFUNC(err);
}
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "DT2%c%04d%c", utc_offset>=0?'+':'-', utc_offset, cat_term);
if (RIG_OK != (err = newcat_set_cmd(rig)))
{
rig_debug(RIG_DEBUG_VERBOSE, "%s:%d command err = %d\n", __func__, __LINE__,
err);
RETURNFUNC(err);
}
RETURNFUNC(retval);
}
int newcat_get_clock(RIG *rig, int *year, int *month, int *day, int *hour,
int *min, int *sec, double *msec, int *utc_offset)
{
int retval = RIG_OK;
int err;
int n;
struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv;
if (!newcat_valid_command(rig, "DT"))
{
RETURNFUNC(-RIG_ENAVAIL);
}
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "DT0%c", cat_term);
if ((err = newcat_get_cmd(rig)) != RIG_OK)
{
RETURNFUNC(err);
}
n = sscanf(priv->ret_data, "DT0%04d%02d%02d", year, month, day);
if (n != 3)
{
rig_debug(RIG_DEBUG_ERR, "%s: DT0 unable to parse '%s'\n", __func__,
priv->ret_data);
RETURNFUNC(-RIG_EPROTO);
}
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "DT1%c", cat_term);
if ((err = newcat_get_cmd(rig)) != RIG_OK)
{
RETURNFUNC(err);
}
n = sscanf(priv->ret_data, "DT1%02d%02d%02d", hour, min, sec);
if (n != 3)
{
rig_debug(RIG_DEBUG_ERR, "%s: DT1 unable to parse '%s'\n", __func__,
priv->ret_data);
RETURNFUNC(-RIG_EPROTO);
}
snprintf(priv->cmd_str, sizeof(priv->cmd_str), "DT2%c", cat_term);
if ((err = newcat_get_cmd(rig)) != RIG_OK)
{
RETURNFUNC(err);
}
// we keep utc_offset in HHMM format rather than converting
n = sscanf(priv->ret_data, "DT2%d", utc_offset);
if (n != 1)
{
rig_debug(RIG_DEBUG_ERR, "%s: DT2 unable to parse '%s'\n", __func__,
priv->ret_data);
RETURNFUNC(-RIG_EPROTO);
}
RETURNFUNC(retval);
}

Wyświetl plik

@ -50,7 +50,7 @@
typedef char ncboolean;
/* shared function version */
#define NEWCAT_VER "20211114"
#define NEWCAT_VER "20211202"
/* Hopefully large enough for future use, 128 chars plus '\0' */
#define NEWCAT_DATA_LEN 129
@ -222,6 +222,11 @@ int newcat_get_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t *val);
int newcat_send_morse(RIG *rig, vfo_t vfo, const char *msg);
int newcat_send_voice_mem(RIG *rig, vfo_t vfo, int ch);
int newcat_set_clock(RIG *rig, int year, int month, int day, int hour, int min,
int sec, double msec, int utc_offset);
int newcat_get_clock(RIG *rig, int *year, int *month, int *day, int *hour,
int *min, int *sec, double *msec, int *utc_offset);
#define TOKEN_BACKEND(t) (t)