From 501c4b62c9f40feb64d4acdd409f3940a8552949 Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Wed, 11 Oct 2023 09:01:15 -0500 Subject: [PATCH] cppcheck fixes --- rigs/yaesu/ft991.c | 37 ++++++++++++++++++++++ rigs/yaesu/ftdx101.c | 40 +++++++++++++++++++++++- rigs/yaesu/ftdx101mp.c | 5 ++- rigs/yaesu/newcat.c | 69 +++++++++++++++++++++++++++++++++++++++++- rigs/yaesu/newcat.h | 8 ++++- src/sprintflst.c | 4 +++ tests/rigctl_parse.c | 6 ++++ 7 files changed, 165 insertions(+), 4 deletions(-) diff --git a/rigs/yaesu/ft991.c b/rigs/yaesu/ft991.c index 249478e33..cd5ef0503 100644 --- a/rigs/yaesu/ft991.c +++ b/rigs/yaesu/ft991.c @@ -120,6 +120,42 @@ const struct confparams ft991_ext_levels[] = RIG_CONF_NUMERIC, { .n = { .min = 1, .max = 11, .step = 1 } }, }, + { + TOK_MAXPOWER_HF, + "MAXPOWER_HF", + "Maxpower HF", + "Maxpower HF", + NULL, + RIG_CONF_INT, + { .n = { .min = 5, .max = 100, .step = 1 } }, + }, + { + TOK_MAXPOWER_6M, + "MAXPOWER_6M", + "Maxpower 6m", + "Maxpower 6m", + NULL, + RIG_CONF_INT, + { .n = { .min = 5, .max = 100, .step = 1 } }, + }, + { + TOK_MAXPOWER_VHF, + "MAXPOWER_VHF", + "Maxpower VHF", + "Maxpower VHF", + NULL, + RIG_CONF_INT, + { .n = { .min = 5, .max = 50, .step = 1 } }, + }, + { + TOK_MAXPOWER_UHF, + "MAXPOWER_UHF", + "Maxpower UHF", + "Maxpower UHF", + NULL, + RIG_CONF_NUMERIC, + { .n = { .min = 5, .max = 50, .step = 1 } }, + }, { RIG_CONF_END, NULL, } }; @@ -127,6 +163,7 @@ int ft991_ext_tokens[] = { TOK_KEYER, TOK_APF_FREQ, TOK_APF_WIDTH, TOK_CONTOUR, TOK_CONTOUR_FREQ, TOK_CONTOUR_LEVEL, TOK_CONTOUR_WIDTH, + TOK_MAXPOWER_HF, TOK_MAXPOWER_6M, TOK_MAXPOWER_UHF, TOK_MAXPOWER_VHF, TOK_BACKEND_NONE }; diff --git a/rigs/yaesu/ftdx101.c b/rigs/yaesu/ftdx101.c index 5ae7b275c..c5e6b0659 100644 --- a/rigs/yaesu/ftdx101.c +++ b/rigs/yaesu/ftdx101.c @@ -120,6 +120,43 @@ const struct confparams ftdx101d_ext_levels[] = RIG_CONF_NUMERIC, { .n = { .min = 1, .max = 11, .step = 1 } }, }, + { + TOK_MAXPOWER_HF, + "MAXPOWER_HF", + "Maxpower HF", + "Maxpower HF", + NULL, + RIG_CONF_INT, + { .n = { .min = 5, .max = 100, .step = 1 } }, + }, + { + TOK_MAXPOWER_6M, + "MAXPOWER_6M", + "Maxpower 6m", + "Maxpower 6m", + NULL, + RIG_CONF_INT, + { .n = { .min = 5, .max = 100, .step = 1 } }, + }, + { + TOK_MAXPOWER_4M, + "MAXPOWER_4M", + "Maxpower 4m", + "Maxpower 4m", + NULL, + RIG_CONF_INT, + { .n = { .min = 5, .max = 50, .step = 1 } }, + }, + { + TOK_MAXPOWER_AM, + "MAXPOWER_AM", + "Maxpower AM", + "Maxpower AM", + NULL, + RIG_CONF_NUMERIC, + { .n = { .min = 5, .max = 25, .step = 1 } }, + }, + { RIG_CONF_END, NULL, } }; @@ -127,6 +164,7 @@ int ftdx101d_ext_tokens[] = { TOK_ROOFING_FILTER, TOK_KEYER, TOK_APF_FREQ, TOK_APF_WIDTH, TOK_CONTOUR, TOK_CONTOUR_FREQ, TOK_CONTOUR_LEVEL, TOK_CONTOUR_WIDTH, + TOK_MAXPOWER_HF, TOK_MAXPOWER_6M, TOK_MAXPOWER_4M, TOK_MAXPOWER_AM, TOK_BACKEND_NONE }; @@ -135,7 +173,7 @@ const struct rig_caps ftdx101d_caps = RIG_MODEL(RIG_MODEL_FTDX101D), .model_name = "FTDX-101D", .mfg_name = "Yaesu", - .version = NEWCAT_VER ".20", + .version = NEWCAT_VER ".21", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, diff --git a/rigs/yaesu/ftdx101mp.c b/rigs/yaesu/ftdx101mp.c index 5ff7be9e3..fe5ecb450 100644 --- a/rigs/yaesu/ftdx101mp.c +++ b/rigs/yaesu/ftdx101mp.c @@ -65,6 +65,9 @@ const struct confparams ftdx101mp_ext_levels[] = int ftdx101mp_ext_tokens[] = { + TOK_ROOFING_FILTER, TOK_KEYER, TOK_APF_FREQ, TOK_APF_WIDTH, + TOK_CONTOUR, TOK_CONTOUR_FREQ, TOK_CONTOUR_LEVEL, TOK_CONTOUR_WIDTH, + TOK_MAXPOWER_HF, TOK_MAXPOWER_6M, TOK_MAXPOWER_4M, TOK_MAXPOWER_AM, TOK_ROOFING_FILTER, TOK_BACKEND_NONE }; @@ -73,7 +76,7 @@ const struct rig_caps ftdx101mp_caps = RIG_MODEL(RIG_MODEL_FTDX101MP), .model_name = "FTDX-101MP", .mfg_name = "Yaesu", - .version = NEWCAT_VER ".11", + .version = NEWCAT_VER ".12", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index ffa1d9f1d..ee6f8522f 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -6708,6 +6708,56 @@ int newcat_get_parm(RIG *rig, setting_t parm, value_t *val) RETURNFUNC(-RIG_ENAVAIL); } +static int newcat_set_maxpower(RIG *rig, vfo_t vfo, token_t token, float val) +{ + return -RIG_ENIMPL; +} + +static int newcat_get_maxpower(RIG *rig, vfo_t vfo, token_t token, value_t *val) +{ + struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv; + int retval; + int code = 0; + int offset = 0; + + val->i = 0; + if (newcat_is_rig(rig, RIG_MODEL_FT991)) + { + offset = 5; + switch(token) + { + case TOK_MAXPOWER_HF: code = 137; break; + case TOK_MAXPOWER_6M: code = 138; break; + case TOK_MAXPOWER_VHF: code = 139; break; + case TOK_MAXPOWER_UHF: code = 140; break; + default: return -RIG_EINVAL; + } + SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "EX%03d%c", code, cat_term); + } + else if (newcat_is_rig(rig, RIG_MODEL_FTDX101MP) || newcat_is_rig(rig, RIG_MODEL_FTDX101D)) + { + offset = 6; + switch(token) + { + case TOK_MAXPOWER_HF: code = 1; break; + case TOK_MAXPOWER_6M: code = 2; break; + case TOK_MAXPOWER_4M: code = 3; break; + case TOK_MAXPOWER_AM: code = 4; break; + default: return -RIG_EINVAL; + } + SNPRINTF(priv->cmd_str, sizeof(priv->cmd_str), "EX0304%02d%c", code, cat_term); + } + retval = newcat_get_cmd(rig); + + if (retval == RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: offset=%d, scanning '%s'\n", __func__, offset, &priv->ret_data[offset]); + sscanf(&priv->ret_data[offset], "%d", &val->i); + } + + return retval; +} + int newcat_set_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t val) { @@ -6749,6 +6799,12 @@ int newcat_set_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t val) case TOK_CONTOUR_WIDTH: RETURNFUNC(newcat_set_contour_width(rig, vfo, val.f)); + case TOK_MAXPOWER_HF: + case TOK_MAXPOWER_6M: + case TOK_MAXPOWER_VHF: + case TOK_MAXPOWER_UHF: + RETURNFUNC(newcat_set_maxpower(rig, vfo, token, val.f)); + default: rig_debug(RIG_DEBUG_ERR, "%s: Unsupported ext level %s\n", __func__, rig_strlevel(token)); @@ -6870,6 +6926,12 @@ int newcat_get_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t *val) val->f = value; break; + case TOK_MAXPOWER_HF: + case TOK_MAXPOWER_6M: + case TOK_MAXPOWER_VHF: + case TOK_MAXPOWER_UHF: + RETURNFUNC(newcat_get_maxpower(rig, vfo, token, val)); + default: rig_debug(RIG_DEBUG_ERR, "%s: Unsupported ext level %s\n", __func__, rig_strlevel(token)); @@ -10979,7 +11041,7 @@ int newcat_set_cmd_validate(RIG *rig) } else if (strncmp(priv->cmd_str, "PC", 2) == 0) { - strcpy(valcmd, ""); + strcpy(valcmd, "PC;"); } else { @@ -11020,6 +11082,11 @@ int newcat_set_cmd_validate(RIG *rig) return RIG_OK; } + if (strncmp(priv->cmd_str, "PC", 2) == 0 && priv->ret_data[0] == '?') + { + rig_debug(RIG_DEBUG_ERR, "%s: Power level error, check if exceeding max power setting\n", __func__); + RETURNFUNC(RIG_OK); + } if (strncmp(priv->cmd_str, "FT", 2) == 0 && strncmp(priv->ret_data, "FT", 2) == 0) { diff --git a/rigs/yaesu/newcat.h b/rigs/yaesu/newcat.h index 44f3afc5a..c0d019216 100644 --- a/rigs/yaesu/newcat.h +++ b/rigs/yaesu/newcat.h @@ -50,7 +50,7 @@ typedef char ncboolean; /* shared function version */ -#define NEWCAT_VER "20231007" +#define NEWCAT_VER "20231008" /* Hopefully large enough for future use, 128 chars plus '\0' */ #define NEWCAT_DATA_LEN 129 @@ -254,5 +254,11 @@ int newcat_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch); #define TOK_CONTOUR_FREQ TOKEN_BACKEND(105) #define TOK_CONTOUR_LEVEL TOKEN_BACKEND(106) #define TOK_CONTOUR_WIDTH TOKEN_BACKEND(107) +#define TOK_MAXPOWER_HF TOKEN_BACKEND(108) +#define TOK_MAXPOWER_6M TOKEN_BACKEND(109) +#define TOK_MAXPOWER_4M TOKEN_BACKEND(110) +#define TOK_MAXPOWER_AM TOKEN_BACKEND(111) +#define TOK_MAXPOWER_VHF TOKEN_BACKEND(112) +#define TOK_MAXPOWER_UHF TOKEN_BACKEND(113) #endif /* _NEWCAT_H */ diff --git a/src/sprintflst.c b/src/sprintflst.c index f05ef85ef..b187e1ea5 100644 --- a/src/sprintflst.c +++ b/src/sprintflst.c @@ -329,6 +329,7 @@ int sprintf_level_ext(char *str, int nlen, const struct confparams *extlevels) switch (extlevels->type) { + case RIG_CONF_INT: case RIG_CONF_CHECKBUTTON: case RIG_CONF_COMBO: case RIG_CONF_NUMERIC: @@ -871,6 +872,9 @@ char *get_rig_conf_type(enum rig_conf_e type) case RIG_CONF_BINARY: return "BINARY"; + + case RIG_CONF_INT: + return "INT"; } return "UNKNOWN"; diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index d4791b903..f8a02362f 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -1941,6 +1941,12 @@ int print_conf_list(const struct confparams *cfp, rig_ptr_t data) switch (cfp->type) { + case RIG_CONF_INT: + printf("\tRange: %d..%d, step %d\n", + cfp->u.n.min, + cfp->u.n.max, + cfp->u.n.step); + break; case RIG_CONF_NUMERIC: printf("\tRange: %.1f..%.1f, step %.1f\n", cfp->u.n.min,