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.
rodzic
7c4f0d025d
commit
499d17cd20
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