update rigs for new functions

pull/179/head
Malcolm Herring 2020-01-18 05:59:22 +00:00
rodzic 99a99ba97e
commit f6b39c1161
7 zmienionych plików z 123 dodań i 106 usunięć

Wyświetl plik

@ -22,7 +22,7 @@
#ifndef _FRAME_H
#define _FRAME_H 1
#define MAXFRAMELEN 512
#define MAXFRAMELEN 80
/*
* helper functions

Wyświetl plik

@ -123,7 +123,7 @@ struct confparams ic7100_ext[] = {
};
struct cmdparams ic7100_extcmds[] = {
{ {.t=TOK_LINK} }
{ {0} }
};
// IC-7100 S-meter calibration data based on manual

Wyświetl plik

@ -424,6 +424,17 @@ const struct confparams icom_ext_parms[] =
{ TOK_SCOPE_DAT, "scpdat", "Scope data", "", "", RIG_CONF_BINARY, {} },
{ TOK_SCOPE_STS, "scpsts", "Scope status", "", "", RIG_CONF_CHECKBUTTON, {} },
{ TOK_SCOPE_DOP, "scpdop", "Scope data output", "", "", RIG_CONF_CHECKBUTTON, {} },
{ TOK_SCOPE_MSS, "scpmss", "Scope main/sub", "", "", RIG_CONF_CHECKBUTTON, {} },
{ TOK_SCOPE_MOD, "scpmod", "Scope mode", "", "", RIG_CONF_BINARY, {} },
{ TOK_SCOPE_SPN, "scpspn", "Scope span", "", "", RIG_CONF_BINARY, {} },
{ TOK_SCOPE_EDG, "scpedg", "Scope edge", "", "", RIG_CONF_BINARY, {} },
{ TOK_SCOPE_HLD, "scphld", "Scope hold", "", "", RIG_CONF_BINARY, {} },
{ TOK_SCOPE_REF, "scpref", "Scope reference", "", "", RIG_CONF_BINARY, {} },
{ TOK_SCOPE_SWP, "scpswp", "Scope sweep", "", "", RIG_CONF_BINARY, {} },
{ TOK_SCOPE_STX, "scpstx", "Scope Tx o/p", "", "", RIG_CONF_CHECKBUTTON, {} },
{ TOK_SCOPE_TYP, "scptyp", "Scope type", "", "", RIG_CONF_NUMERIC, {} },
{ TOK_SCOPE_VBW, "scpvbw", "Scope vbw", "", "", RIG_CONF_BINARY, {} },
{ TOK_SCOPE_FEF, "scpfef", "Scope edge", "", "", RIG_CONF_BINARY, {} },
{ RIG_CONF_END, NULL, }
};
@ -1867,6 +1878,14 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
(const struct icom_priv_caps *) rig->caps->priv;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
const struct cmdparams *cmd = priv_caps->riglevels;
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
if (cmd[i].id.s == level) {
return icom_set_cmd(rig,vfo, (struct cmdparams *)&cmd[i], val);
}
}
rs = &rig->state;
/*
@ -2170,19 +2189,10 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
lvl_sc = S_LVL_MON;
break;
default: {
int i;
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->riglevels;
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
if (cmd[i].id.s == level) {
return icom_set_cmd(rig,vfo, (struct cmdparams *)&cmd[i], val);
}
}
default:
rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_level %s", __func__,
rig_strlevel(level));
return -RIG_EINVAL;
}
}
retval = icom_transaction(rig, lvl_cn, lvl_sc, lvlbuf, lvl_len, ackbuf,
@ -2221,6 +2231,16 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
(const struct icom_priv_caps *) rig->caps->priv;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->riglevels;
int i;
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
if (cmd[i].id.s == level) {
return icom_get_cmd(rig, vfo, (struct cmdparams *)&cmd[i], val);
}
}
rs = &rig->state;
lvl2_len = 0;
@ -2408,19 +2428,10 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
lvl_sc = S_LVL_MON;
break;
default: {
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->riglevels;
int i;
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
if (cmd[i].id.s == level) {
return icom_get_cmd(rig, vfo, (struct cmdparams *)&cmd[i], val);
}
}
default:
rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_level %s", __func__,
rig_strlevel(level));
return -RIG_EINVAL;
}
}
/* use lvl2buf and lvl2_len for 'set mode' subcommand */
@ -2702,15 +2713,13 @@ int icom_get_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t *val)
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->extcmds ? priv->extcmds : icom_ext_cmd;
for (i = 0; cmd && cmd[i].id.t != 0; i++) {
if (cmd[i].id.t == TOK_LINK) {
for (i = 0; (cmd[i].id.t != 0) || (cmd != icom_ext_cmd); ) {
if (cmd[i].id.t == 0) {
cmd = icom_ext_cmd;
i = -1;
continue;
}
if (cmd[i].id.t == token) {
i = 0;
} else if (cmd[i].id.t == token) {
return icom_get_cmd(rig, vfo, (struct cmdparams *)&cmd[i], val);
}
} else i++;
}
return -RIG_EINVAL;
}
@ -2729,15 +2738,13 @@ int icom_set_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t val)
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->extcmds ? priv->extcmds : icom_ext_cmd;
for (i = 0; cmd && cmd[i].id.t != 0; i++) {
if (cmd[i].id.t == TOK_LINK) {
for (i = 0; (cmd[i].id.t != 0) || (cmd != icom_ext_cmd); ) {
if (cmd[i].id.t == 0) {
cmd = icom_ext_cmd;
i = -1;
continue;
}
if (cmd[i].id.t == token) {
i = 0;
} else if (cmd[i].id.t == token) {
return icom_set_cmd(rig, vfo, (struct cmdparams *)&cmd[i], val);
}
} else i++;
}
return -RIG_EINVAL;
}
@ -4464,6 +4471,14 @@ int icom_set_parm(RIG *rig, setting_t parm, value_t val)
{
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
int i;
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->rigparms;
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
if (cmd[i].id.s == parm) {
return icom_set_cmd(rig, RIG_VFO_NONE, (struct cmdparams *)&cmd[i], val);
}
}
switch (parm)
{
case RIG_PARM_ANN:
@ -4493,19 +4508,10 @@ int icom_set_parm(RIG *rig, setting_t parm, value_t val)
return icom_set_raw(rig, C_CTL_ANN, ann_mode, 0, NULL, 0, 0);
}
default:{
int i;
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->rigparms;
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
if (cmd[i].id.s == parm) {
return icom_set_cmd(rig, RIG_VFO_NONE, (struct cmdparams *)&cmd[i], val);
}
}
default:
rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_parm %s\n", __func__,
rig_strparm(parm));
return -RIG_EINVAL;
}
}
}
@ -4524,21 +4530,21 @@ int icom_get_parm(RIG *rig, setting_t parm, value_t *val)
{
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->rigparms;
int i;
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
if (cmd[i].id.s == parm) {
return icom_get_cmd(rig, RIG_VFO_NONE, (struct cmdparams *)&cmd[i], val);
}
}
switch (parm)
{
default: {
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->rigparms;
int i;
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
if (cmd[i].id.s == parm) {
return icom_get_cmd(rig, RIG_VFO_NONE, (struct cmdparams *)&cmd[i], val);
}
}
default:
rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_parm %s", __func__,
rig_strparm(parm));
return -RIG_EINVAL;
}
}
return RIG_OK;

Wyświetl plik

@ -48,9 +48,9 @@
#define ICR30_VFO_OPS (RIG_OP_FROM_VFO|RIG_OP_TO_VFO|RIG_OP_MCL)
#define ICR30_SCAN_OPS (RIG_SCAN_NONE)
#define TOK_ANL TOKEN_BACKEND(110)
#define TOK_EAR TOKEN_BACKEND(111)
#define TOK_REC TOKEN_BACKEND(112)
#define TOK_ANL TOKEN_BACKEND(001)
#define TOK_EAR TOKEN_BACKEND(002)
#define TOK_REC TOKEN_BACKEND(003)
int icr30_tokens[] = { TOK_ANL, TOK_EAR, TOK_REC,
TOK_DSTAR_DSQL, TOK_DSTAR_CALL_SIGN, TOK_DSTAR_MESSAGE, TOK_DSTAR_STATUS,
@ -64,11 +64,11 @@ struct confparams icr30_ext[] = {
{ 0 }
};
struct cmdparams icr30_cmd[] = {
struct cmdparams icr30_extcmds[] = {
{ {.t=TOK_ANL}, C_CTL_MEM, S_MEM_ANL, SC_MOD_RW, 0, {}, CMD_DAT_BOL, 1 },
{ {.t=TOK_EAR}, C_CTL_MEM, S_MEM_EAR, SC_MOD_RW, 0, {}, CMD_DAT_BOL, 1 },
{ {.t=TOK_REC}, C_CTL_MEM, S_MEM_REC, SC_MOD_WR, 0, {}, CMD_DAT_BOL, 1 },
{ {.t=TOK_LINK} }
{ {0} }
};
#define ICR30_STR_CAL { 2, \
@ -121,7 +121,7 @@ static const struct icom_priv_caps icr30_priv_caps =
r8500_ts_sc_list, /* wrong, but don't have set_ts anyway */
.r2i_mode = icr30_r2i_mode,
.offs_len = 4,
.extcmds = icr30_cmd
.extcmds = icr30_extcmds /* Custom ext_parm parameters */
};
const struct rig_caps icr30_caps =
@ -225,46 +225,47 @@ const struct rig_caps icr30_caps =
},
.str_cal = ICR30_STR_CAL,
.cfgparams = icom_cfg_params,
.set_conf = icom_set_conf,
.get_conf = icom_get_conf,
.cfgparams = icom_cfg_params,
.set_conf = icom_set_conf,
.get_conf = icom_get_conf,
.set_powerstat = icom_set_powerstat,
.priv = (void *)& icr30_priv_caps,
.rig_init = icom_init,
.rig_cleanup = icom_cleanup,
.rig_open = NULL,
.rig_close = NULL,
.rig_init = icom_init,
.rig_cleanup = icom_cleanup,
.rig_open = NULL,
.rig_close = NULL,
.set_freq = icom_set_freq,
.get_freq = icom_get_freq,
.set_mode = icr30_set_mode,
.get_mode = icom_get_mode,
.vfo_op = icom_vfo_op,
.set_vfo = icom_set_vfo,
.set_freq = icom_set_freq,
.get_freq = icom_get_freq,
.set_mode = icr30_set_mode,
.get_mode = icom_get_mode,
.vfo_op = icom_vfo_op,
.set_vfo = icom_set_vfo,
.set_rptr_offs = icom_set_rptr_offs,
.get_rptr_offs = icom_get_rptr_offs,
.set_rptr_shift = icom_set_rptr_shift,
.get_rptr_shift = icom_get_rptr_shift,
.set_ts = icom_set_ts,
.get_ts = icom_get_ts,
.set_ant = icom_set_ant,
.get_ant = icom_get_ant,
.set_ts = icom_set_ts,
.get_ts = icom_get_ts,
.set_ant = icom_set_ant,
.get_ant = icom_get_ant,
.set_bank = icom_set_bank,
.set_mem = icom_set_mem,
.decode_event = icom_decode_event,
.set_level = icom_set_level,
.get_level = icom_get_level,
.set_func = icom_set_func,
.get_func = icom_get_func,
.set_parm = icom_set_parm,
.get_parm = icom_get_parm,
.set_ext_parm = icom_set_ext_parm,
.get_ext_parm = icom_get_ext_parm,
.set_ext_level = icom_set_ext_level,
.get_ext_level = icom_get_ext_level,
.get_dcd = icom_get_dcd,
.set_ctcss_sql = icom_set_ctcss_sql,
.get_ctcss_sql = icom_get_ctcss_sql,
.set_dcs_sql = icom_set_dcs_sql,
.get_dcs_sql = icom_get_dcs_sql,
.set_level = icom_set_level,
.get_level = icom_get_level,
.set_func = icom_set_func,
.get_func = icom_get_func,
.set_parm = icom_set_parm,
.get_parm = icom_get_parm,
.set_ext_parm = icom_set_ext_parm,
.get_ext_parm = icom_get_ext_parm,
.set_ext_level = icom_set_ext_level,
.get_ext_level = icom_get_ext_level,
.get_dcd = icom_get_dcd,
.set_ctcss_sql = icom_set_ctcss_sql,
.get_ctcss_sql = icom_get_ctcss_sql,
.set_dcs_sql = icom_set_dcs_sql,
.get_dcs_sql = icom_get_dcs_sql,
};

Wyświetl plik

@ -77,7 +77,8 @@ struct cmdparams icr8600_rigparms[] = {
int icr8600_tokens[] = { TOK_DSTAR_DSQL, TOK_DSTAR_CALL_SIGN, TOK_DSTAR_MESSAGE, TOK_DSTAR_STATUS,
TOK_DSTAR_GPS_DATA, TOK_DSTAR_GPS_MESS, TOK_DSTAR_CODE, TOK_DSTAR_TX_DATA,
TOK_SCOPE_DAT, TOK_SCOPE_STS, TOK_SCOPE_DOP,
TOK_SCOPE_DAT, TOK_SCOPE_STS, TOK_SCOPE_DOP, TOK_SCOPE_MSS, TOK_SCOPE_MOD, TOK_SCOPE_SPN,
TOK_SCOPE_HLD, TOK_SCOPE_REF, TOK_SCOPE_SWP, TOK_SCOPE_TYP, TOK_SCOPE_VBW, TOK_SCOPE_FEF,
TOK_BACKEND_NONE };
struct confparams icr8600_ext[] = {
@ -85,7 +86,7 @@ struct confparams icr8600_ext[] = {
};
struct cmdparams icr8600_extcmds[] = {
{ {.t=TOK_LINK} }
{ {0} }
};
/*
@ -103,14 +104,14 @@ struct cmdparams icr8600_extcmds[] = {
static const struct icom_priv_caps icr8600_priv_caps =
{
0x96, /* default address */
0, /* 731 mode */
0, /* no XCHG */
r8600_ts_sc_list, /* list of tuning steps */
.offs_len = 4, /* Repeater offset is 4 bytes */
.serial_USB_echo_check = 1, /* USB CI-V may not echo */
.rigparms = icr8600_rigparms,
.extcmds = icr8600_extcmds
0x96, /* default address */
0, /* 731 mode */
0, /* no XCHG */
r8600_ts_sc_list, /* list of tuning steps */
.offs_len = 4, /* Repeater offset is 4 bytes */
.serial_USB_echo_check = 1, /* USB CI-V may not echo */
.rigparms = icr8600_rigparms, /* Custom parm parameters */
.extcmds = icr8600_extcmds /* Custom ext_parm parameters */
};
const struct rig_caps icr8600_caps =
@ -219,6 +220,7 @@ const struct rig_caps icr8600_caps =
.set_conf = icom_set_conf,
.get_conf = icom_get_conf,
// .set_powerstat = icom_set_powerstat,
.priv = (void *)& icr8600_priv_caps,
.rig_init = icom_init,

Wyświetl plik

@ -27,8 +27,11 @@
#include <stdlib.h>
#include "hamlib/rig.h"
#include "idx_builtin.h"
#include "token.h"
#include "icom.h"
#include "idx_builtin.h"
#include "icom_defs.h"
#include "frame.h"
/*
* Specs and protocol details comes from the chapter 17 of ID-51A_E_PLUS2_CD_0.pdf
@ -63,6 +66,10 @@
#define ID51_PARM_ALL RIG_PARM_NONE
int id51_tokens[] = { TOK_DSTAR_DSQL, TOK_DSTAR_CALL_SIGN, TOK_DSTAR_MESSAGE, TOK_DSTAR_STATUS,
TOK_DSTAR_GPS_DATA, TOK_DSTAR_GPS_MESS, TOK_DSTAR_CODE, TOK_DSTAR_TX_DATA,
TOK_DSTAR_MY_CS, TOK_DSTAR_TX_CS, TOK_DSTAR_TX_MESS,
TOK_BACKEND_NONE };
/*
* FIXME: real measurement
@ -111,6 +118,7 @@ const struct rig_caps id51_caps =
.level_gran = {
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
},
.ext_tokens = id51_tokens,
.extparms = icom_ext_parms,
.parm_gran = {},
.ctcss_list = common_ctcss_list,
@ -170,6 +178,7 @@ const struct rig_caps id51_caps =
.cfgparams = icom_cfg_params,
.set_conf = icom_set_conf,
.get_conf = icom_get_conf,
.set_powerstat = icom_set_powerstat,
.priv = (void *)& id51_priv_caps,
.rig_init = icom_init,

Wyświetl plik

@ -613,7 +613,6 @@ enum rig_conf_e {
RIG_CONF_BINARY /*!< Binary buffer type */
};
#define TOK_LINK -1
#define RIG_COMBO_MAX 16
#define RIG_BIN_MAX 80