kopia lustrzana https://github.com/Hamlib/Hamlib
Fix errors in Icom extcmd definitions and handling. Migrate more commands on Icom rigs to use extcmds. Add extfuncs to dummy rig for testing.
(cherry picked from commit 499d17cd20
)
Hamlib-4.0
rodzic
b2598a386a
commit
ad1d5f0b77
111
dummy/dummy.c
111
dummy/dummy.c
|
@ -73,6 +73,7 @@ struct dummy_priv_data
|
|||
channel_t vfo_b;
|
||||
channel_t mem[NB_CHAN];
|
||||
|
||||
struct ext_list *ext_funcs;
|
||||
struct ext_list *ext_parms;
|
||||
|
||||
char *magic_conf;
|
||||
|
@ -104,6 +105,15 @@ static const struct confparams dummy_ext_levels[] =
|
|||
{ RIG_CONF_END, NULL, }
|
||||
};
|
||||
|
||||
static const struct confparams dummy_ext_funcs[] =
|
||||
{
|
||||
{
|
||||
TOK_EL_MAGICEXTFUNC, "MGEF", "Magic ext func", "Magic ext function, as an example",
|
||||
NULL, RIG_CONF_CHECKBUTTON
|
||||
},
|
||||
{ RIG_CONF_END, NULL, }
|
||||
};
|
||||
|
||||
/* parms pertain to the whole rig */
|
||||
static const struct confparams dummy_ext_parms[] =
|
||||
{
|
||||
|
@ -270,6 +280,13 @@ static int dummy_init(RIG *rig)
|
|||
return -RIG_ENOMEM;
|
||||
}
|
||||
|
||||
priv->ext_funcs = alloc_init_ext(dummy_ext_funcs);
|
||||
|
||||
if (!priv->ext_funcs)
|
||||
{
|
||||
return -RIG_ENOMEM;
|
||||
}
|
||||
|
||||
priv->ext_parms = alloc_init_ext(dummy_ext_parms);
|
||||
|
||||
if (!priv->ext_parms)
|
||||
|
@ -309,6 +326,7 @@ static int dummy_cleanup(RIG *rig)
|
|||
|
||||
free(priv->vfo_a.ext_levels);
|
||||
free(priv->vfo_b.ext_levels);
|
||||
free(priv->ext_funcs);
|
||||
free(priv->ext_parms);
|
||||
free(priv->magic_conf);
|
||||
|
||||
|
@ -1240,6 +1258,93 @@ static int dummy_get_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t *val)
|
|||
}
|
||||
|
||||
|
||||
static int dummy_set_ext_func(RIG *rig, vfo_t vfo, token_t token, int status)
|
||||
{
|
||||
struct dummy_priv_data *priv = (struct dummy_priv_data *)rig->state.priv;
|
||||
const struct confparams *cfp;
|
||||
struct ext_list *elp;
|
||||
|
||||
cfp = rig_ext_lookup_tok(rig, token);
|
||||
|
||||
if (!cfp)
|
||||
{
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
switch (token)
|
||||
{
|
||||
case TOK_EL_MAGICEXTFUNC:
|
||||
break;
|
||||
|
||||
default:
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
switch (cfp->type)
|
||||
{
|
||||
case RIG_CONF_CHECKBUTTON:
|
||||
break;
|
||||
case RIG_CONF_BUTTON:
|
||||
break;
|
||||
default:
|
||||
return -RIG_EINTERNAL;
|
||||
}
|
||||
|
||||
elp = find_ext(priv->ext_funcs, token);
|
||||
|
||||
if (!elp)
|
||||
{
|
||||
return -RIG_EINTERNAL;
|
||||
}
|
||||
|
||||
/* store value */
|
||||
elp->val.i = status;
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s %d\n", __func__,
|
||||
cfp->name, status);
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
||||
|
||||
static int dummy_get_ext_func(RIG *rig, vfo_t vfo, token_t token, int *status)
|
||||
{
|
||||
struct dummy_priv_data *priv = (struct dummy_priv_data *)rig->state.priv;
|
||||
const struct confparams *cfp;
|
||||
struct ext_list *elp;
|
||||
|
||||
cfp = rig_ext_lookup_tok(rig, token);
|
||||
|
||||
if (!cfp)
|
||||
{
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
switch (token)
|
||||
{
|
||||
case TOK_EL_MAGICEXTFUNC:
|
||||
break;
|
||||
default:
|
||||
return -RIG_EINVAL;
|
||||
}
|
||||
|
||||
elp = find_ext(priv->ext_funcs, token);
|
||||
|
||||
if (!elp)
|
||||
{
|
||||
return -RIG_EINTERNAL;
|
||||
}
|
||||
|
||||
/* load value */
|
||||
*status = elp->val.i;
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__,
|
||||
cfp->name);
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
||||
|
||||
static int dummy_set_powerstat(RIG *rig, powerstat_t status)
|
||||
{
|
||||
struct dummy_priv_data *priv = (struct dummy_priv_data *)rig->state.priv;
|
||||
|
@ -2034,6 +2139,7 @@ struct rig_caps dummy_caps =
|
|||
.priv = NULL, /* priv */
|
||||
|
||||
.extlevels = dummy_ext_levels,
|
||||
.extfuncs = dummy_ext_funcs,
|
||||
.extparms = dummy_ext_parms,
|
||||
.cfgparams = dummy_cfg_params,
|
||||
|
||||
|
@ -2062,6 +2168,8 @@ struct rig_caps dummy_caps =
|
|||
.get_parm = dummy_get_parm,
|
||||
.set_ext_level = dummy_set_ext_level,
|
||||
.get_ext_level = dummy_get_ext_level,
|
||||
.set_ext_func = dummy_set_ext_func,
|
||||
.get_ext_func = dummy_get_ext_func,
|
||||
.set_ext_parm = dummy_set_ext_parm,
|
||||
.get_ext_parm = dummy_get_ext_parm,
|
||||
|
||||
|
@ -2196,6 +2304,7 @@ struct rig_caps dummy_no_vfo_caps =
|
|||
.priv = NULL, /* priv */
|
||||
|
||||
.extlevels = dummy_ext_levels,
|
||||
.extfuncs = dummy_ext_funcs,
|
||||
.extparms = dummy_ext_parms,
|
||||
.cfgparams = dummy_cfg_params,
|
||||
|
||||
|
@ -2224,6 +2333,8 @@ struct rig_caps dummy_no_vfo_caps =
|
|||
.get_parm = dummy_get_parm,
|
||||
.set_ext_level = dummy_set_ext_level,
|
||||
.get_ext_level = dummy_get_ext_level,
|
||||
.set_ext_func = dummy_set_ext_func,
|
||||
.get_ext_func = dummy_get_ext_func,
|
||||
.set_ext_parm = dummy_set_ext_parm,
|
||||
.get_ext_parm = dummy_get_ext_parm,
|
||||
|
||||
|
|
|
@ -31,11 +31,12 @@
|
|||
|
||||
|
||||
/* ext_level's and ext_parm's tokens */
|
||||
#define TOK_EL_MAGICLEVEL TOKEN_BACKEND(1)
|
||||
#define TOK_EL_MAGICFUNC TOKEN_BACKEND(2)
|
||||
#define TOK_EL_MAGICOP TOKEN_BACKEND(3)
|
||||
#define TOK_EP_MAGICPARM TOKEN_BACKEND(4)
|
||||
#define TOK_EL_MAGICCOMBO TOKEN_BACKEND(5)
|
||||
#define TOK_EL_MAGICLEVEL TOKEN_BACKEND(1)
|
||||
#define TOK_EL_MAGICFUNC TOKEN_BACKEND(2)
|
||||
#define TOK_EL_MAGICOP TOKEN_BACKEND(3)
|
||||
#define TOK_EP_MAGICPARM TOKEN_BACKEND(4)
|
||||
#define TOK_EL_MAGICCOMBO TOKEN_BACKEND(5)
|
||||
#define TOK_EL_MAGICEXTFUNC TOKEN_BACKEND(6)
|
||||
|
||||
|
||||
extern struct rig_caps dummy_caps;
|
||||
|
|
|
@ -129,8 +129,11 @@
|
|||
.levels = RIG_LEVEL_SET(IC7000_LEVELS), \
|
||||
}
|
||||
|
||||
int ic7000_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val);
|
||||
int ic7000_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
|
||||
struct cmdparams ic7000_extcmds[] =
|
||||
{
|
||||
{ {.s = RIG_LEVEL_VOXDELAY}, CMD_PARAM_TYPE_LEVEL, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x17}, CMD_DAT_INT, 1 },
|
||||
{ {.s = RIG_PARM_NONE} }
|
||||
};
|
||||
|
||||
/*
|
||||
* IC-7000 rig capabilities.
|
||||
|
@ -148,6 +151,7 @@ static const struct icom_priv_caps IC7000_priv_caps =
|
|||
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
|
||||
{ .level = -1, .icom_level = 0 },
|
||||
},
|
||||
.extcmds = ic7000_extcmds,
|
||||
};
|
||||
|
||||
const struct rig_caps ic7000_caps =
|
||||
|
@ -296,8 +300,8 @@ const struct rig_caps ic7000_caps =
|
|||
.get_ant = NULL,
|
||||
|
||||
.decode_event = icom_decode_event,
|
||||
.set_level = ic7000_set_level,
|
||||
.get_level = ic7000_get_level,
|
||||
.set_level = icom_set_level,
|
||||
.get_level = icom_get_level,
|
||||
.set_func = icom_set_func,
|
||||
.get_func = icom_get_func,
|
||||
.set_parm = NULL,
|
||||
|
@ -329,39 +333,3 @@ const struct rig_caps ic7000_caps =
|
|||
.get_split_vfo = NULL,
|
||||
|
||||
};
|
||||
|
||||
int ic7000_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||
{
|
||||
unsigned char cmdbuf[MAXFRAMELEN];
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case RIG_LEVEL_VOXDELAY:
|
||||
cmdbuf[0] = 0x01;
|
||||
cmdbuf[1] = 0x17;
|
||||
return icom_set_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, 1, val);
|
||||
|
||||
default:
|
||||
return icom_set_level(rig, vfo, level, val);
|
||||
}
|
||||
}
|
||||
|
||||
int ic7000_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||
{
|
||||
unsigned char cmdbuf[MAXFRAMELEN];
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case RIG_LEVEL_VOXDELAY:
|
||||
cmdbuf[0] = 0x01;
|
||||
cmdbuf[1] = 0x17;
|
||||
return icom_get_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, val);
|
||||
|
||||
default:
|
||||
return icom_get_level(rig, vfo, level, val);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -897,7 +897,6 @@ const struct rig_caps ic705_caps =
|
|||
int ic7300_set_parm(RIG *rig, setting_t parm, value_t val)
|
||||
{
|
||||
unsigned char prmbuf[MAXFRAMELEN];
|
||||
int min, hr;
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||
|
||||
|
@ -971,8 +970,7 @@ int ic7300_set_parm(RIG *rig, setting_t parm, value_t val)
|
|||
}
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "Unsupported set_parm %s\n", rig_strparm(parm));
|
||||
return -RIG_EINVAL;
|
||||
return icom_set_parm(rig, parm, val);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -121,13 +121,18 @@
|
|||
{ 241, 30.0f } \
|
||||
} }
|
||||
|
||||
int ic7610_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val);
|
||||
int ic7610_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val);
|
||||
struct cmdparams ic7610_extcmds[] =
|
||||
{
|
||||
{ {.s = RIG_LEVEL_VOXDELAY}, CMD_PARAM_TYPE_LEVEL, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x02, 0x92}, CMD_DAT_INT, 1 },
|
||||
{ { 0 } }
|
||||
};
|
||||
|
||||
int ic7610_ext_tokens[] = {
|
||||
TOK_DRIVE_GAIN, TOK_DIGI_SEL_FUNC, TOK_DIGI_SEL_LEVEL, TOK_BACKEND_NONE
|
||||
};
|
||||
|
||||
/*
|
||||
* IC-7610 rig capabilities.
|
||||
*
|
||||
* TODO: complete command set (esp. the $1A bunch!) and testing..
|
||||
*/
|
||||
static const struct icom_priv_caps ic7610_priv_caps =
|
||||
{
|
||||
|
@ -144,23 +149,7 @@ static const struct icom_priv_caps ic7610_priv_caps =
|
|||
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
|
||||
{ .level = -1, .icom_level = 0 },
|
||||
},
|
||||
};
|
||||
|
||||
const struct confparams ic7610_ext_levels[] =
|
||||
{
|
||||
{
|
||||
TOK_DRIVE_GAIN, "drive_gain", "Drive gain", "Drive gain",
|
||||
NULL, RIG_CONF_NUMERIC, { .n = { 0, 255, 1 } },
|
||||
},
|
||||
{
|
||||
TOK_DIGI_SEL_FUNC, "digi_sel", "DIGI-SEL enable", "DIGI-SEL enable",
|
||||
NULL, RIG_CONF_CHECKBUTTON, { },
|
||||
},
|
||||
{
|
||||
TOK_DIGI_SEL_LEVEL, "digi_sel_level", "DIGI-SEL level", "DIGI-SEL level",
|
||||
NULL, RIG_CONF_NUMERIC, { .n = { 0, 255, 1 } },
|
||||
},
|
||||
{ RIG_CONF_END, NULL, }
|
||||
.extcmds = ic7610_extcmds,
|
||||
};
|
||||
|
||||
const struct rig_caps ic7610_caps =
|
||||
|
@ -198,7 +187,7 @@ const struct rig_caps ic7610_caps =
|
|||
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 900 }, .step = { .i = 1 } },
|
||||
},
|
||||
.parm_gran = {},
|
||||
.extlevels = ic7610_ext_levels,
|
||||
.ext_tokens = ic7610_ext_tokens,
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* FIXME: TBC */
|
||||
|
@ -308,8 +297,8 @@ const struct rig_caps ic7610_caps =
|
|||
.set_xit = icom_set_xit_new,
|
||||
|
||||
.decode_event = icom_decode_event,
|
||||
.set_level = ic7610_set_level,
|
||||
.get_level = ic7610_get_level,
|
||||
.set_level = icom_set_level,
|
||||
.get_level = icom_get_level,
|
||||
.set_ext_level = icom_set_ext_level,
|
||||
.get_ext_level = icom_get_ext_level,
|
||||
.set_func = icom_set_func,
|
||||
|
@ -338,39 +327,3 @@ const struct rig_caps ic7610_caps =
|
|||
.get_powerstat = icom_get_powerstat,
|
||||
.send_morse = icom_send_morse
|
||||
};
|
||||
|
||||
int ic7610_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||
{
|
||||
unsigned char cmdbuf[MAXFRAMELEN];
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case RIG_LEVEL_VOXDELAY:
|
||||
cmdbuf[0] = 0x02;
|
||||
cmdbuf[1] = 0x92;
|
||||
return icom_set_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, 1, val);
|
||||
|
||||
default:
|
||||
return icom_set_level(rig, vfo, level, val);
|
||||
}
|
||||
}
|
||||
|
||||
int ic7610_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||
{
|
||||
unsigned char cmdbuf[MAXFRAMELEN];
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case RIG_LEVEL_VOXDELAY:
|
||||
cmdbuf[0] = 0x02;
|
||||
cmdbuf[1] = 0x92;
|
||||
return icom_get_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, val);
|
||||
|
||||
default:
|
||||
return icom_get_level(rig, vfo, level, val);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -92,8 +92,12 @@
|
|||
|
||||
#define IC9100_HF_ANTS (RIG_ANT_1|RIG_ANT_2)
|
||||
|
||||
/*
|
||||
*/
|
||||
struct cmdparams ic9100_extcmds[] =
|
||||
{
|
||||
{ {.s = RIG_LEVEL_VOXDELAY}, CMD_PARAM_TYPE_LEVEL, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x27}, CMD_DAT_INT, 1 },
|
||||
{ {.s = RIG_PARM_NONE} }
|
||||
};
|
||||
|
||||
static const struct icom_priv_caps ic9100_priv_caps =
|
||||
{
|
||||
0x7c, /* default address */
|
||||
|
@ -102,6 +106,7 @@ static const struct icom_priv_caps ic9100_priv_caps =
|
|||
ic910_ts_sc_list, /* FIXME */
|
||||
.antack_len = 2,
|
||||
.ant_count = 2,
|
||||
.extcmds = ic9100_extcmds,
|
||||
};
|
||||
|
||||
const struct rig_caps ic9100_caps =
|
||||
|
@ -279,45 +284,3 @@ const struct rig_caps ic9100_caps =
|
|||
.get_split_mode = icom_get_split_mode,
|
||||
|
||||
};
|
||||
|
||||
#ifdef XXREMOVEDXX
|
||||
// Not referenced anywhere
|
||||
int ic9100_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||
{
|
||||
unsigned char cmdbuf[MAXFRAMELEN];
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case RIG_LEVEL_VOXDELAY:
|
||||
cmdbuf[0] = 0x01;
|
||||
cmdbuf[1] = 0x27;
|
||||
return icom_set_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, 1, val);
|
||||
|
||||
default:
|
||||
return icom_set_level(rig, vfo, level, val);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef XXREMOVEDXX
|
||||
// Not referenced anywhere
|
||||
int ic9100_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||
{
|
||||
unsigned char cmdbuf[MAXFRAMELEN];
|
||||
|
||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||
|
||||
switch (level)
|
||||
{
|
||||
case RIG_LEVEL_VOXDELAY:
|
||||
cmdbuf[0] = 0x01;
|
||||
cmdbuf[1] = 0x27;
|
||||
return icom_get_level_raw(rig, level, C_CTL_MEM, 0x05, 2, cmdbuf, val);
|
||||
|
||||
default:
|
||||
return icom_get_level(rig, vfo, level, val);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -486,9 +486,9 @@ const struct cmdparams icom_ext_cmd[] =
|
|||
{ {.t = TOK_DSTAR_MY_CS}, CMD_PARAM_TYPE_TOKEN, C_CTL_DVT, S_DVT_DSMYCS, SC_MOD_RW, 1, {0}, CMD_DAT_STR, 12 },
|
||||
{ {.t = TOK_DSTAR_TX_CS}, CMD_PARAM_TYPE_TOKEN, C_CTL_DVT, S_DVT_DSTXCS, SC_MOD_RW, 1, {0}, CMD_DAT_STR, 24 },
|
||||
{ {.t = TOK_DSTAR_TX_MESS}, CMD_PARAM_TYPE_TOKEN, C_CTL_DVT, S_DVT_DSTXMS, SC_MOD_RW, 1, {0}, CMD_DAT_STR, 20 },
|
||||
{ {.t = TOK_DRIVE_GAIN}, CMD_PARAM_TYPE_TOKEN, C_CTL_LVL, S_LVL_DRIVE, SC_MOD_RW, 1, {0}, CMD_DAT_FLT, 2 },
|
||||
{ {.t = TOK_DIGI_SEL_FUNC}, CMD_PARAM_TYPE_TOKEN, C_CTL_FUNC, S_FUNC_DIGISEL, SC_MOD_RW, 1, {0}, CMD_DAT_BOL, 1 },
|
||||
{ {.t = TOK_DIGI_SEL_LEVEL}, CMD_PARAM_TYPE_TOKEN, C_CTL_LVL, S_LVL_DIGI, SC_MOD_RW, 1, {0}, CMD_DAT_FLT, 2 },
|
||||
{ {.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_SCOPE_DAT}, CMD_PARAM_TYPE_TOKEN, C_CTL_SCP, S_SCP_DAT, SC_MOD_RD, 0, {0}, CMD_DAT_BUF, 481 },
|
||||
{ {.t = TOK_SCOPE_STS}, CMD_PARAM_TYPE_TOKEN, C_CTL_SCP, S_SCP_STS, SC_MOD_RW, 0, {0}, CMD_DAT_BOL, 1 },
|
||||
{ {.t = TOK_SCOPE_DOP}, CMD_PARAM_TYPE_TOKEN, C_CTL_SCP, S_SCP_DOP, SC_MOD_RW, 0, {0}, CMD_DAT_BOL, 1 },
|
||||
|
@ -2209,11 +2209,11 @@ int icom_set_cmd(RIG *rig, vfo_t vfo, struct cmdparams *par, value_t val)
|
|||
break;
|
||||
|
||||
case CMD_DAT_FLT:
|
||||
to_bcd_be(&cmdbuf[cmdlen], (int) val.f, (cmdlen * 2));
|
||||
to_bcd_be(&cmdbuf[cmdlen], (int) val.f, (par->datlen * 2));
|
||||
break;
|
||||
|
||||
case CMD_DAT_LVL:
|
||||
to_bcd_be(&cmdbuf[cmdlen], (int)(val.f * 255.0), (cmdlen * 2));
|
||||
to_bcd_be(&cmdbuf[cmdlen], (int)(val.f * 255.0), (par->datlen * 2));
|
||||
break;
|
||||
|
||||
case CMD_DAT_TIM: // returned as seconds since midnight
|
||||
|
@ -5598,13 +5598,13 @@ int icom_set_parm(RIG *rig, setting_t parm, value_t val)
|
|||
|
||||
int i;
|
||||
const struct icom_priv_caps *priv = rig->caps->priv;
|
||||
const struct cmdparams *cmd = priv->extcmds;
|
||||
const struct cmdparams *extcmds = priv->extcmds;
|
||||
|
||||
for (i = 0; cmd && cmd[i].id.s != 0; i++)
|
||||
for (i = 0; extcmds && extcmds[i].id.s != 0; i++)
|
||||
{
|
||||
if (cmd[i].cmdparamtype == CMD_PARAM_TYPE_PARM && cmd[i].id.s == parm)
|
||||
if (extcmds[i].cmdparamtype == CMD_PARAM_TYPE_PARM && extcmds[i].id.s == parm)
|
||||
{
|
||||
return icom_set_cmd(rig, RIG_VFO_NONE, (struct cmdparams *)&cmd[i], val);
|
||||
return icom_set_cmd(rig, RIG_VFO_NONE, (struct cmdparams *)&extcmds[i], val);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -787,7 +787,7 @@ int HAMLIB_API rig_set_ext_func(RIG *rig,
|
|||
|
||||
caps = rig->caps;
|
||||
|
||||
if (caps->set_ext_level == NULL)
|
||||
if (caps->set_ext_func == NULL)
|
||||
{
|
||||
return -RIG_ENAVAIL;
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue