kopia lustrzana https://github.com/Hamlib/Hamlib
Add IPP, DPP, and TX_INHIBIT for IC7610
rodzic
ea823e911c
commit
63c615a452
|
@ -144,7 +144,7 @@ struct cmdparams ic7610_extcmds[] =
|
|||
int ic7610_ext_tokens[] =
|
||||
{
|
||||
TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL,
|
||||
TOK_SCOPE_MSS, TOK_SCOPE_SDS, TOK_SCOPE_STX, TOK_SCOPE_CFQ, TOK_SCOPE_EDG, TOK_SCOPE_VBW, TOK_SCOPE_RBW, TOK_SCOPE_MKP,
|
||||
TOK_SCOPE_MSS, TOK_SCOPE_SDS, TOK_SCOPE_STX, TOK_SCOPE_CFQ, TOK_SCOPE_EDG, TOK_SCOPE_VBW, TOK_SCOPE_RBW, TOK_SCOPE_MKP,TOK_IPP_FUNC,TOK_TX_INHIBIT_FUNC,TOK_DPP_FUNC,
|
||||
TOK_BACKEND_NONE
|
||||
};
|
||||
|
||||
|
@ -402,6 +402,7 @@ struct rig_caps ic7610_caps =
|
|||
},
|
||||
|
||||
.ext_tokens = ic7610_ext_tokens,
|
||||
.extfuncs = icom_ext_funcs,
|
||||
.extlevels = icom_ext_levels,
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
|
@ -577,6 +578,8 @@ struct rig_caps ic7610_caps =
|
|||
.get_ext_level = icom_get_ext_level,
|
||||
.set_func = icom_set_func,
|
||||
.get_func = icom_get_func,
|
||||
.set_ext_func = icom_set_ext_func,
|
||||
.get_ext_func = icom_get_ext_func,
|
||||
.set_parm = icom_set_parm,
|
||||
.get_parm = icom_get_parm,
|
||||
.set_mem = icom_set_mem,
|
||||
|
|
|
@ -460,6 +460,9 @@ const struct confparams icom_cfg_params[] =
|
|||
const struct confparams icom_ext_funcs[] =
|
||||
{
|
||||
{ TOK_DIGI_SEL_FUNC, "digi_sel", "DIGI-SEL enable", "", "", RIG_CONF_CHECKBUTTON, {} },
|
||||
{ TOK_IPP_FUNC, "IPP", "IP Plus", "", "", RIG_CONF_CHECKBUTTON, {} },
|
||||
{ TOK_TX_INHIBIT_FUNC, "TX_INHIBIT", "TX Inhibit", "", "", RIG_CONF_CHECKBUTTON, {} },
|
||||
{ TOK_DPP_FUNC, "DPP", "Digital Pre Distortion-SEL enable", "", "", RIG_CONF_CHECKBUTTON, {} },
|
||||
{ RIG_CONF_END, NULL, }
|
||||
};
|
||||
|
||||
|
@ -519,6 +522,9 @@ const struct cmdparams icom_ext_cmd[] =
|
|||
{ {.t = TOK_DRIVE_GAIN}, CMD_PARAM_TYPE_TOKEN, C_CTL_LVL, S_LVL_DRIVE, SC_MOD_RW, 0, {0}, CMD_DAT_FLT, 2 },
|
||||
{ {.t = TOK_DIGI_SEL_FUNC}, CMD_PARAM_TYPE_TOKEN, C_CTL_FUNC, S_FUNC_DIGISEL, SC_MOD_RW, 0, {0}, CMD_DAT_BOL, 1 },
|
||||
{ {.t = TOK_DIGI_SEL_LEVEL}, CMD_PARAM_TYPE_TOKEN, C_CTL_LVL, S_LVL_DIGI, SC_MOD_RW, 0, {0}, CMD_DAT_FLT, 2 },
|
||||
{ {.t = TOK_IPP_FUNC}, CMD_PARAM_TYPE_TOKEN, C_CTL_FUNC, S_FUNC_IPP, SC_MOD_RW, 0, {0}, CMD_DAT_BOL, 1 },
|
||||
{ {.t = TOK_TX_INHIBIT_FUNC}, CMD_PARAM_TYPE_TOKEN, C_CTL_FUNC, S_FUNC_TX_INHIBIT, SC_MOD_RW, 0, {0}, CMD_DAT_BOL, 1 },
|
||||
{ {.t = TOK_DPP_FUNC}, CMD_PARAM_TYPE_TOKEN, C_CTL_FUNC, S_FUNC_DPP, SC_MOD_RW, 0, {0}, CMD_DAT_BOL, 1 },
|
||||
{ {0} }
|
||||
};
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#define BACKEND_VER "20231130"
|
||||
#define BACKEND_VER "20231209"
|
||||
|
||||
#define ICOM_IS_ID31 rig_is_model(rig, RIG_MODEL_ID31)
|
||||
#define ICOM_IS_ID51 rig_is_model(rig, RIG_MODEL_ID51)
|
||||
|
|
|
@ -348,6 +348,8 @@
|
|||
#define S_FUNC_NXENC 0x63 /* NXDN encryption */
|
||||
#define S_FUNC_DCENC 0x64 /* DCR encryption */
|
||||
#define S_FUNC_IPP 0x65 /* IP+ setting */
|
||||
#define S_FUNC_TX_INHIBIT 0x66 /* TX inhibit setting */
|
||||
#define S_FUNC_DPP 0x67 /* DPP setting */
|
||||
|
||||
/*
|
||||
* Set Power On/Off (C_SET_PWR) subcommands
|
||||
|
@ -567,6 +569,9 @@
|
|||
#define TOK_SCOPE_FEF TOKEN_BACKEND(146)
|
||||
#define TOK_SCOPE_RBW TOKEN_BACKEND(147)
|
||||
#define TOK_SCOPE_MKP TOKEN_BACKEND(148)
|
||||
#define TOK_IPP_FUNC TOKEN_BACKEND(149)
|
||||
#define TOK_TX_INHIBIT_FUNC TOKEN_BACKEND(150)
|
||||
#define TOK_DPP_FUNC TOKEN_BACKEND(151)
|
||||
|
||||
/*
|
||||
* icom_ext_parm table subcommand modifiers
|
||||
|
|
|
@ -133,7 +133,7 @@ int id5100_set_vfo(RIG *rig, vfo_t vfo)
|
|||
{
|
||||
myvfo = S_SUB;
|
||||
priv->dual_watch_main_sub = MAIN_ON_RIGHT;
|
||||
rig->state.current_vfo = RIG_VFO_B;
|
||||
rig->state.current_vfo = vfo;
|
||||
}
|
||||
|
||||
if (RIG_OK != (retval = icom_transaction(rig, C_SET_VFO, myvfo, NULL, 0, ackbuf,
|
||||
|
@ -215,10 +215,7 @@ int id5100_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
|
||||
vfo_t currvfo = rig->state.current_vfo;
|
||||
|
||||
// we automatically dual_watchy based on requested VFO
|
||||
if (rs->dual_watch == 0 && (vfo == RIG_VFO_MAIN || vfo == RIG_VFO_SUB)) { id5100_set_split_vfo(rig, RIG_VFO_SUB, 1, RIG_VFO_MAIN); }
|
||||
|
||||
if (rs->dual_watch == 1 && (vfo == RIG_VFO_A || vfo == RIG_VFO_B)) { id5100_set_split_vfo(rig, RIG_VFO_A, 0, RIG_VFO_A); }
|
||||
if (rs->dual_watch == 1 && rig->state.current_vfo != RIG_VFO_SUB) { id5100_set_split_vfo(rig, RIG_VFO_SUB, 0, RIG_VFO_MAIN); }
|
||||
|
||||
if (rs->dual_watch) // dual watch is different
|
||||
{
|
||||
|
@ -249,7 +246,7 @@ int id5100_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
{
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s(%d): Sub on left\n", __func__, __LINE__);
|
||||
|
||||
if (currvfo == RIG_VFO_B && (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB))
|
||||
if ((currvfo == RIG_VFO_B || currvfo == RIG_VFO_SUB) && (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB))
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: Method#3\n", __func__);
|
||||
id5100_set_vfo(rig, RIG_VFO_MAIN);
|
||||
|
@ -430,7 +427,13 @@ int id5100_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo)
|
|||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called vfo=%s\n", __func__, rig_strvfo(vfo));
|
||||
|
||||
if (rs->dual_watch == 0)
|
||||
if (tx_vfo != RIG_VFO_MAIN)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s Split VFO must be Main\n", __func__);
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
if (rs->dual_watch == 0 || split == RIG_SPLIT_OFF)
|
||||
{
|
||||
if (RIG_OK != (retval = icom_set_func(rig, RIG_VFO_CURR, RIG_FUNC_DUAL_WATCH,
|
||||
split)))
|
||||
|
@ -440,7 +443,7 @@ int id5100_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo)
|
|||
|
||||
rs->dual_watch = split;
|
||||
|
||||
if (split == 0) { rig_set_vfo(rig, RIG_VFO_A); }
|
||||
// if (split == RIG_SPLIT_OFF) { rig_set_vfo(rig, RIG_VFO_A); }
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
@ -449,20 +452,10 @@ int id5100_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo)
|
|||
|
||||
// ID5100 puts tx on Main and rx on Left side
|
||||
// So we put Main on right side to match gpredict positions
|
||||
if (tx_vfo == RIG_VFO_A || tx_vfo == RIG_VFO_MAIN)
|
||||
{
|
||||
// we must set RX vfo to SUB
|
||||
retval = id5100_set_vfo(rig, RIG_VFO_SUB);
|
||||
rs->current_vfo = RIG_VFO_SUB;
|
||||
priv->dual_watch_main_sub = MAIN_ON_RIGHT;
|
||||
}
|
||||
else
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR,
|
||||
"%s: ID5100 split must have Tx=Main=Tx, Rx=Sub, got Tx=%s, Rx=%s\n", __func__,
|
||||
rig_strvfo(tx_vfo), rig_strvfo(vfo));
|
||||
retval = -RIG_EINVAL;
|
||||
}
|
||||
// we must set RX vfo to SUB
|
||||
retval = id5100_set_vfo(rig, RIG_VFO_SUB);
|
||||
rs->current_vfo = RIG_VFO_SUB;
|
||||
priv->dual_watch_main_sub = MAIN_ON_RIGHT;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
@ -492,14 +485,14 @@ int id5100_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
|
|||
int id5100_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
|
||||
{
|
||||
int retval;
|
||||
struct rig_state *rs = &rig->state;
|
||||
struct icom_priv_data *priv = (struct icom_priv_data *) rs->priv;
|
||||
vfo_t currvfo;
|
||||
//struct rig_state *rs = &rig->state;
|
||||
//struct icom_priv_data *priv = (struct icom_priv_data *) rs->priv;
|
||||
//vfo_t currvfo;
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s(%d): vfo=%s\n", __func__, __LINE__,
|
||||
rig_strvfo(vfo));
|
||||
currvfo = rig->state.current_vfo;
|
||||
#if 0
|
||||
currvfo = rig->state.current_vfo;
|
||||
|
||||
if (priv->dual_watch_main_sub == MAIN_ON_LEFT && (currvfo == RIG_VFO_MAIN
|
||||
|| currvfo == RIG_VFO_A) && vfo == RIG_VFO_TX)
|
||||
|
@ -534,9 +527,9 @@ struct rig_caps id5100_caps =
|
|||
RIG_MODEL(RIG_MODEL_ID5100),
|
||||
.model_name = "ID-5100",
|
||||
.mfg_name = "Icom",
|
||||
.version = BACKEND_VER ".8",
|
||||
.version = BACKEND_VER ".9",
|
||||
.copyright = "LGPL",
|
||||
.status = RIG_STATUS_STABLE,
|
||||
.status = RIG_STATUS_BETA,
|
||||
.rig_type = RIG_TYPE_MOBILE,
|
||||
.ptt_type = RIG_PTT_RIG,
|
||||
.dcd_type = RIG_DCD_RIG,
|
||||
|
|
Ładowanie…
Reference in New Issue