kopia lustrzana https://github.com/Hamlib/Hamlib
custom level ops
rodzic
f34734d64f
commit
a5daf2bfa4
|
@ -101,7 +101,7 @@
|
||||||
|
|
||||||
#define IC7100_PARM_ALL (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|RIG_PARM_KEYLIGHT|RIG_PARM_BEEP|RIG_PARM_TIME)
|
#define IC7100_PARM_ALL (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|RIG_PARM_KEYLIGHT|RIG_PARM_BEEP|RIG_PARM_TIME)
|
||||||
|
|
||||||
struct cmdparams ic7100_rigcmds[] = {
|
struct cmdparams ic7100_rigparms[] = {
|
||||||
{ {.s=RIG_PARM_BEEP}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x03}, CMD_DAT_BOL, 1 },
|
{ {.s=RIG_PARM_BEEP}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x03}, CMD_DAT_BOL, 1 },
|
||||||
{ {.s=RIG_PARM_BACKLIGHT}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x04}, CMD_DAT_LVL, 2 },
|
{ {.s=RIG_PARM_BACKLIGHT}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x04}, CMD_DAT_LVL, 2 },
|
||||||
{ {.s=RIG_PARM_KEYLIGHT}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x05}, CMD_DAT_LVL, 2 },
|
{ {.s=RIG_PARM_KEYLIGHT}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x05}, CMD_DAT_LVL, 2 },
|
||||||
|
@ -109,6 +109,11 @@ struct cmdparams ic7100_rigcmds[] = {
|
||||||
{ {.s=RIG_PARM_NONE} }
|
{ {.s=RIG_PARM_NONE} }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct cmdparams ic7100_riglevels[] = {
|
||||||
|
{ {.s=RIG_LEVEL_VOXDELAY}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x65}, CMD_DAT_INT, 1 },
|
||||||
|
{ {.s=RIG_LEVEL_NONE} }
|
||||||
|
};
|
||||||
|
|
||||||
int ic7100_tokens[] = { TOK_DSTAR_CODE, TOK_DSTAR_DSQL, TOK_DSTAR_CALL_SIGN, TOK_DSTAR_MESSAGE,
|
int ic7100_tokens[] = { TOK_DSTAR_CODE, TOK_DSTAR_DSQL, TOK_DSTAR_CALL_SIGN, TOK_DSTAR_MESSAGE,
|
||||||
TOK_DSTAR_STATUS, TOK_DSTAR_MY_CS, TOK_DSTAR_TX_CS, TOK_DSTAR_TX_MESS,
|
TOK_DSTAR_STATUS, TOK_DSTAR_MY_CS, TOK_DSTAR_TX_CS, TOK_DSTAR_TX_MESS,
|
||||||
TOK_BACKEND_NONE };
|
TOK_BACKEND_NONE };
|
||||||
|
@ -194,7 +199,8 @@ static const struct icom_priv_caps ic7100_priv_caps =
|
||||||
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
|
{ .level = RIG_AGC_SLOW, .icom_level = 3 },
|
||||||
{ .level = -1, .icom_level = 0 },
|
{ .level = -1, .icom_level = 0 },
|
||||||
},
|
},
|
||||||
.rigcmds = ic7100_rigcmds,
|
.rigparms = ic7100_rigparms,
|
||||||
|
.riglevels = ic7100_riglevels,
|
||||||
.extcmds = ic7100_extcmds
|
.extcmds = ic7100_extcmds
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -205,7 +211,7 @@ const struct rig_caps ic7100_caps =
|
||||||
.mfg_name = "Icom",
|
.mfg_name = "Icom",
|
||||||
.version = BACKEND_VER ".0",
|
.version = BACKEND_VER ".0",
|
||||||
.copyright = "LGPL",
|
.copyright = "LGPL",
|
||||||
.status = RIG_STATUS_UNTESTED,
|
.status = RIG_STATUS_ALPHA,
|
||||||
.rig_type = RIG_TYPE_TRANSCEIVER,
|
.rig_type = RIG_TYPE_TRANSCEIVER,
|
||||||
.ptt_type = RIG_PTT_RIG,
|
.ptt_type = RIG_PTT_RIG,
|
||||||
.dcd_type = RIG_DCD_RIG,
|
.dcd_type = RIG_DCD_RIG,
|
||||||
|
|
256
icom/icom.c
256
icom/icom.c
|
@ -1720,6 +1720,121 @@ int icom_set_vfo(RIG *rig, vfo_t vfo)
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int icom_set_cmd(RIG *rig, vfo_t vfo, struct cmdparams *par, value_t val)
|
||||||
|
{
|
||||||
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
|
unsigned char cmdbuf[MAXFRAMELEN];
|
||||||
|
int cmdlen = 0;
|
||||||
|
unsigned char ackbuf[MAXFRAMELEN];
|
||||||
|
int acklen = 0;
|
||||||
|
|
||||||
|
if (!(par->submod & SC_MOD_WR)) return -RIG_EINVAL;
|
||||||
|
if ((par->submod & SC_MOD_RW12) == SC_MOD_RW12) {
|
||||||
|
cmdbuf[0] = 0x01;
|
||||||
|
cmdlen = 1;
|
||||||
|
} else {
|
||||||
|
cmdlen = par->sublen;
|
||||||
|
memcpy(cmdbuf, par->subext, cmdlen);
|
||||||
|
}
|
||||||
|
int wrd = val.i;
|
||||||
|
int i;
|
||||||
|
switch (par->dattyp) {
|
||||||
|
case CMD_DAT_WRD:
|
||||||
|
for (i = 1; i <= par->datlen; i++) {
|
||||||
|
cmdbuf[cmdlen + par->datlen - i] = wrd & 0xff;
|
||||||
|
wrd >>= 8;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CMD_DAT_BUF:
|
||||||
|
memcpy(&cmdbuf[cmdlen], val.b.d, par->datlen);
|
||||||
|
break;
|
||||||
|
case CMD_DAT_INT:
|
||||||
|
case CMD_DAT_BOL:
|
||||||
|
to_bcd_be(&cmdbuf[cmdlen], val.i, (par->datlen * 2));
|
||||||
|
break;
|
||||||
|
case CMD_DAT_FLT:
|
||||||
|
to_bcd_be(&cmdbuf[cmdlen], (int) val.f, (cmdlen * 2));
|
||||||
|
break;
|
||||||
|
case CMD_DAT_LVL:
|
||||||
|
to_bcd_be(&cmdbuf[cmdlen], (int)(val.f * 255.0), (cmdlen * 2));
|
||||||
|
break;
|
||||||
|
case CMD_DAT_TIM:
|
||||||
|
to_bcd_be(&cmdbuf[cmdlen], ((((int)val.f / 3600) * 100) + (((int)val.f / 60) % 60)), (par->datlen * 2));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
cmdlen += par->datlen;
|
||||||
|
return icom_transaction(rig, par->command, par->subcmd, cmdbuf, cmdlen, ackbuf, &acklen);
|
||||||
|
}
|
||||||
|
|
||||||
|
int icom_get_cmd(RIG *rig, vfo_t vfo, struct cmdparams *par, value_t *val)
|
||||||
|
{
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
||||||
|
|
||||||
|
unsigned char ssc = 0x02;
|
||||||
|
unsigned char resbuf[MAXFRAMELEN];
|
||||||
|
int reslen = sizeof(resbuf);
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
if (!(par->submod & SC_MOD_RD)) return -RIG_EINVAL;
|
||||||
|
if ((par->submod & SC_MOD_RW12) == SC_MOD_RW12) {
|
||||||
|
retval = icom_get_raw_buf(rig, par->command, par->subcmd, 1, &ssc, &reslen, resbuf);
|
||||||
|
} else {
|
||||||
|
retval = icom_get_raw_buf(rig, par->command, par->subcmd,
|
||||||
|
par->sublen, (unsigned char *)par->subext, &reslen, resbuf);
|
||||||
|
}
|
||||||
|
if (retval != RIG_OK) {
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
switch (par->dattyp) {
|
||||||
|
case CMD_DAT_WRD: {
|
||||||
|
int wrd = 0;
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < par->datlen; i++) {
|
||||||
|
wrd = (wrd << 8) + resbuf[i];
|
||||||
|
}
|
||||||
|
val->i = wrd;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CMD_DAT_STR:
|
||||||
|
if (strlen(val->s) < reslen) {
|
||||||
|
return -RIG_EINTERNAL;
|
||||||
|
}
|
||||||
|
memcpy(val->s, resbuf, reslen);
|
||||||
|
val->s[reslen] = 0;
|
||||||
|
break;
|
||||||
|
case CMD_DAT_BUF:
|
||||||
|
if (reslen > val->b.l) {
|
||||||
|
return -RIG_EINTERNAL;
|
||||||
|
}
|
||||||
|
memcpy(val->b.d, resbuf, reslen);
|
||||||
|
val->b.l = reslen;
|
||||||
|
break;
|
||||||
|
case CMD_DAT_INT:
|
||||||
|
val->i = from_bcd_be(resbuf, (reslen * 2));
|
||||||
|
break;
|
||||||
|
case CMD_DAT_FLT:
|
||||||
|
val->f = (float) from_bcd_be(resbuf, (reslen * 2));
|
||||||
|
break;
|
||||||
|
case CMD_DAT_LVL:
|
||||||
|
val->f = (float) from_bcd_be(resbuf, (reslen * 2)) / 255.0;
|
||||||
|
break;
|
||||||
|
case CMD_DAT_BOL:
|
||||||
|
val->i = (from_bcd_be(resbuf, (reslen * 2)) == 0) ? 0 : 1;
|
||||||
|
break;
|
||||||
|
case CMD_DAT_TIM:
|
||||||
|
val->i = (from_bcd_be(resbuf, 2) * 3600) + (from_bcd_be(&resbuf[1], 2) * 60);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
val->i = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* icom_set_level
|
* icom_set_level
|
||||||
* Assumes rig!=NULL, rig->state.priv!=NULL
|
* Assumes rig!=NULL, rig->state.priv!=NULL
|
||||||
|
@ -2039,11 +2154,20 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||||
lvl_sc = S_LVL_MON;
|
lvl_sc = S_LVL_MON;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_level %s", __func__,
|
rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_level %s", __func__,
|
||||||
rig_strlevel(level));
|
rig_strlevel(level));
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
retval = icom_transaction(rig, lvl_cn, lvl_sc, lvlbuf, lvl_len, ackbuf,
|
retval = icom_transaction(rig, lvl_cn, lvl_sc, lvlbuf, lvl_len, ackbuf,
|
||||||
&ack_len);
|
&ack_len);
|
||||||
|
@ -2268,11 +2392,20 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||||
lvl_sc = S_LVL_MON;
|
lvl_sc = S_LVL_MON;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_level %s", __func__,
|
rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_level %s", __func__,
|
||||||
rig_strlevel(level));
|
rig_strlevel(level));
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* use lvl2buf and lvl2_len for 'set mode' subcommand */
|
/* use lvl2buf and lvl2_len for 'set mode' subcommand */
|
||||||
retval = icom_transaction(rig, lvl_cn, lvl_sc, lvl2buf, lvl2_len, lvlbuf,
|
retval = icom_transaction(rig, lvl_cn, lvl_sc, lvl2buf, lvl2_len, lvlbuf,
|
||||||
|
@ -2542,72 +2675,6 @@ int icom_get_ext_parm(RIG *rig, token_t token, value_t *val)
|
||||||
return icom_get_ext_cmd(rig, RIG_VFO_NONE, token, val);
|
return icom_get_ext_cmd(rig, RIG_VFO_NONE, token, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
int icom_get_cmd(RIG *rig, vfo_t vfo, struct cmdparams *par, value_t *val)
|
|
||||||
{
|
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
|
||||||
|
|
||||||
unsigned char ssc = 0x02;
|
|
||||||
unsigned char resbuf[MAXFRAMELEN];
|
|
||||||
int reslen = sizeof(resbuf);
|
|
||||||
int retval;
|
|
||||||
|
|
||||||
if (!(par->submod & SC_MOD_RD)) return -RIG_EINVAL;
|
|
||||||
if ((par->submod & SC_MOD_RW12) == SC_MOD_RW12) {
|
|
||||||
retval = icom_get_raw_buf(rig, par->command, par->subcmd, 1, &ssc, &reslen, resbuf);
|
|
||||||
} else {
|
|
||||||
retval = icom_get_raw_buf(rig, par->command, par->subcmd,
|
|
||||||
par->sublen, (unsigned char *)par->subext, &reslen, resbuf);
|
|
||||||
}
|
|
||||||
if (retval != RIG_OK) {
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
switch (par->dattyp) {
|
|
||||||
case CMD_DAT_WRD: {
|
|
||||||
int wrd = 0;
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < par->datlen; i++) {
|
|
||||||
wrd = (wrd << 8) + resbuf[i];
|
|
||||||
}
|
|
||||||
val->i = wrd;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case CMD_DAT_STR:
|
|
||||||
if (strlen(val->s) < reslen) {
|
|
||||||
return -RIG_EINTERNAL;
|
|
||||||
}
|
|
||||||
memcpy(val->s, resbuf, reslen);
|
|
||||||
val->s[reslen] = 0;
|
|
||||||
break;
|
|
||||||
case CMD_DAT_BUF:
|
|
||||||
if (reslen > val->b.l) {
|
|
||||||
return -RIG_EINTERNAL;
|
|
||||||
}
|
|
||||||
memcpy(val->b.d, resbuf, reslen);
|
|
||||||
val->b.l = reslen;
|
|
||||||
break;
|
|
||||||
case CMD_DAT_INT:
|
|
||||||
val->i = from_bcd_be(resbuf, (reslen * 2));
|
|
||||||
break;
|
|
||||||
case CMD_DAT_FLT:
|
|
||||||
val->f = (float) from_bcd_be(resbuf, (reslen * 2));
|
|
||||||
break;
|
|
||||||
case CMD_DAT_LVL:
|
|
||||||
val->f = (float) from_bcd_be(resbuf, (reslen * 2)) / 255.0;
|
|
||||||
break;
|
|
||||||
case CMD_DAT_BOL:
|
|
||||||
val->i = (from_bcd_be(resbuf, (reslen * 2)) == 0) ? 0 : 1;
|
|
||||||
break;
|
|
||||||
case CMD_DAT_TIM:
|
|
||||||
val->i = (from_bcd_be(resbuf, 2) * 3600) + (from_bcd_be(&resbuf[1], 2) * 60);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
val->i = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return RIG_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int icom_get_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t *val)
|
int icom_get_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t *val)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -2635,55 +2702,6 @@ int icom_get_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t *val)
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int icom_set_cmd(RIG *rig, vfo_t vfo, struct cmdparams *par, value_t val)
|
|
||||||
{
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
|
|
||||||
|
|
||||||
unsigned char cmdbuf[MAXFRAMELEN];
|
|
||||||
int cmdlen = 0;
|
|
||||||
unsigned char ackbuf[MAXFRAMELEN];
|
|
||||||
int acklen = 0;
|
|
||||||
|
|
||||||
if (!(par->submod & SC_MOD_WR)) return -RIG_EINVAL;
|
|
||||||
if ((par->submod & SC_MOD_RW12) == SC_MOD_RW12) {
|
|
||||||
cmdbuf[0] = 0x01;
|
|
||||||
cmdlen = 1;
|
|
||||||
} else {
|
|
||||||
cmdlen = par->sublen;
|
|
||||||
memcpy(cmdbuf, par->subext, cmdlen);
|
|
||||||
}
|
|
||||||
int wrd = val.i;
|
|
||||||
int i;
|
|
||||||
switch (par->dattyp) {
|
|
||||||
case CMD_DAT_WRD:
|
|
||||||
for (i = 1; i <= par->datlen; i++) {
|
|
||||||
cmdbuf[cmdlen + par->datlen - i] = wrd & 0xff;
|
|
||||||
wrd >>= 8;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case CMD_DAT_BUF:
|
|
||||||
memcpy(&cmdbuf[cmdlen], val.b.d, par->datlen);
|
|
||||||
break;
|
|
||||||
case CMD_DAT_INT:
|
|
||||||
case CMD_DAT_BOL:
|
|
||||||
to_bcd_be(&cmdbuf[cmdlen], val.i, (par->datlen * 2));
|
|
||||||
break;
|
|
||||||
case CMD_DAT_FLT:
|
|
||||||
to_bcd_be(&cmdbuf[cmdlen], (int) val.f, (cmdlen * 2));
|
|
||||||
break;
|
|
||||||
case CMD_DAT_LVL:
|
|
||||||
to_bcd_be(&cmdbuf[cmdlen], (int)(val.f * 255.0), (cmdlen * 2));
|
|
||||||
break;
|
|
||||||
case CMD_DAT_TIM:
|
|
||||||
to_bcd_be(&cmdbuf[cmdlen], ((((int)val.f / 3600) * 100) + (((int)val.f / 60) % 60)), (par->datlen * 2));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
cmdlen += par->datlen;
|
|
||||||
return icom_transaction(rig, par->command, par->subcmd, cmdbuf, cmdlen, ackbuf, &acklen);
|
|
||||||
}
|
|
||||||
|
|
||||||
int icom_set_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t val)
|
int icom_set_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t val)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -4462,7 +4480,7 @@ int icom_set_parm(RIG *rig, setting_t parm, value_t val)
|
||||||
default:{
|
default:{
|
||||||
int i;
|
int i;
|
||||||
const struct icom_priv_caps *priv = rig->caps->priv;
|
const struct icom_priv_caps *priv = rig->caps->priv;
|
||||||
const struct cmdparams *cmd = priv->rigcmds;
|
const struct cmdparams *cmd = priv->rigparms;
|
||||||
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
|
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
|
||||||
if (cmd[i].id.s == parm) {
|
if (cmd[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 *)&cmd[i], val);
|
||||||
|
@ -4494,7 +4512,7 @@ int icom_get_parm(RIG *rig, setting_t parm, value_t *val)
|
||||||
{
|
{
|
||||||
default: {
|
default: {
|
||||||
const struct icom_priv_caps *priv = rig->caps->priv;
|
const struct icom_priv_caps *priv = rig->caps->priv;
|
||||||
const struct cmdparams *cmd = priv->rigcmds;
|
const struct cmdparams *cmd = priv->rigparms;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
|
for (i = 0; cmd && cmd[i].id.s != 0; i++) {
|
||||||
if (cmd[i].id.s == parm) {
|
if (cmd[i].id.s == parm) {
|
||||||
|
|
|
@ -140,8 +140,9 @@ struct icom_priv_caps
|
||||||
int serial_USB_echo_check; /* Flag to test USB echo state */
|
int serial_USB_echo_check; /* Flag to test USB echo state */
|
||||||
int agc_levels_present; /* Flag to indicate that agc_levels array is populated */
|
int agc_levels_present; /* Flag to indicate that agc_levels array is populated */
|
||||||
struct icom_agc_level agc_levels[RIG_AGC_LAST + 1]; /* Icom rig-specific AGC levels, the last entry should have level -1 */
|
struct icom_agc_level agc_levels[RIG_AGC_LAST + 1]; /* Icom rig-specific AGC levels, the last entry should have level -1 */
|
||||||
struct cmdparams *rigcmds; /* Pointer to rig paramater array */
|
struct cmdparams *rigparms; /* Pointer to rig custom parameters array */
|
||||||
struct cmdparams *extcmds; /* Pointer to ext_cmd paramater array */
|
struct cmdparams *riglevels;/* Pointer to rig custom levels array */
|
||||||
|
struct cmdparams *extcmds; /* Pointer to extended operations array */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
{ 255, 60 }, \
|
{ 255, 60 }, \
|
||||||
} }
|
} }
|
||||||
|
|
||||||
struct cmdparams icr8600_rigcmds[] = {
|
struct cmdparams icr8600_rigparms[] = {
|
||||||
{ {.s=RIG_PARM_BEEP}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x38}, CMD_DAT_BOL, 1 },
|
{ {.s=RIG_PARM_BEEP}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x38}, CMD_DAT_BOL, 1 },
|
||||||
{ {.s=RIG_PARM_BACKLIGHT}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x15}, CMD_DAT_LVL, 2 },
|
{ {.s=RIG_PARM_BACKLIGHT}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x15}, CMD_DAT_LVL, 2 },
|
||||||
{ {.s=RIG_PARM_KEYLIGHT}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x16}, CMD_DAT_LVL, 2 },
|
{ {.s=RIG_PARM_KEYLIGHT}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x16}, CMD_DAT_LVL, 2 },
|
||||||
|
@ -108,7 +108,7 @@ static const struct icom_priv_caps icr8600_priv_caps =
|
||||||
r8600_ts_sc_list, /* list of tuning steps */
|
r8600_ts_sc_list, /* list of tuning steps */
|
||||||
.offs_len = 4, /* Repeater offset is 4 bytes */
|
.offs_len = 4, /* Repeater offset is 4 bytes */
|
||||||
.serial_USB_echo_check = 1, /* USB CI-V may not echo */
|
.serial_USB_echo_check = 1, /* USB CI-V may not echo */
|
||||||
.rigcmds = icr8600_rigcmds,
|
.rigparms = icr8600_rigparms,
|
||||||
.extcmds = icr8600_extcmds
|
.extcmds = icr8600_extcmds
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue