custom ops using ext ops scheme

pull/179/head
Malcolm Herring 2020-01-08 12:15:31 +00:00
rodzic 6b43b0fd69
commit f34734d64f
6 zmienionych plików z 210 dodań i 174 usunięć

Wyświetl plik

@ -99,21 +99,26 @@
RIG_LEVEL_MONITOR_GAIN| \ RIG_LEVEL_MONITOR_GAIN| \
RIG_LEVEL_NB) RIG_LEVEL_NB)
#define IC7100_PARM_ALL (RIG_PARM_ANN|RIG_PARM_BACKLIGHT) #define IC7100_PARM_ALL (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|RIG_PARM_KEYLIGHT|RIG_PARM_BEEP|RIG_PARM_TIME)
int ic7100_tokens[] = { TOK_KEY_BEEP, TOK_BACKLIGHT, TOK_KEYLIGHT, TOK_TIME, struct cmdparams ic7100_rigcmds[] = {
TOK_DSTAR_CODE, TOK_DSTAR_DSQL, TOK_DSTAR_CALL_SIGN, TOK_DSTAR_MESSAGE, TOK_DSTAR_STATUS, { {.s=RIG_PARM_BEEP}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x03}, CMD_DAT_BOL, 1 },
TOK_DSTAR_MY_CS, TOK_DSTAR_TX_CS, TOK_DSTAR_TX_MESS, { {.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_TIME}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x21}, CMD_DAT_TIM, 2 },
{ {.s=RIG_PARM_NONE} }
};
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_BACKEND_NONE }; TOK_BACKEND_NONE };
struct confparams ic7100_ext[] = { struct confparams ic7100_ext[] = {
{ TOK_TIME, "time", "Time (seconds)", "", "", RIG_CONF_NUMERIC, { .n = { 0, 2359, 1 } } },
{ 0 } { 0 }
}; };
struct cmdparams ic7100_cmd[] = { struct cmdparams ic7100_extcmds[] = {
{ TOK_TIME, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x21}, CMD_DAT_TIM, 2 }, { {.t=TOK_LINK} }
{ TOK_LINK }
}; };
// IC-7100 S-meter calibration data based on manual // IC-7100 S-meter calibration data based on manual
@ -189,7 +194,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 },
}, },
.cmdparams = ic7100_cmd .rigcmds = ic7100_rigcmds,
.extcmds = ic7100_extcmds
}; };
const struct rig_caps ic7100_caps = const struct rig_caps ic7100_caps =

Wyświetl plik

@ -430,21 +430,21 @@ const struct confparams icom_ext_parms[] =
const struct cmdparams icom_ext_cmd[] = const struct cmdparams icom_ext_cmd[] =
{ {
{ TOK_DSTAR_CALL_SIGN, C_CTL_DIG, S_DIG_DSCALS, SC_MOD_RW12, 2, {0}, CMD_DAT_BUF, 38 }, { {.t=TOK_DSTAR_CALL_SIGN}, C_CTL_DIG, S_DIG_DSCALS, SC_MOD_RW12, 2, {0}, CMD_DAT_BUF, 38 },
{ TOK_DSTAR_MESSAGE, C_CTL_DIG, S_DIG_DSMESS, SC_MOD_RW12, 2, {0}, CMD_DAT_STR, 32 }, { {.t=TOK_DSTAR_MESSAGE}, C_CTL_DIG, S_DIG_DSMESS, SC_MOD_RW12, 2, {0}, CMD_DAT_STR, 32 },
{ TOK_DSTAR_STATUS, C_CTL_DIG, S_DIG_DSRSTS, SC_MOD_RW12, 2, {0}, CMD_DAT_BUF, 1 }, { {.t=TOK_DSTAR_STATUS}, C_CTL_DIG, S_DIG_DSRSTS, SC_MOD_RW12, 2, {0}, CMD_DAT_BUF, 1 },
{ TOK_DSTAR_GPS_DATA, C_CTL_DIG, S_DIG_DSGPSD, SC_MOD_RW12, 2, {0}, CMD_DAT_BUF, 52 }, { {.t=TOK_DSTAR_GPS_DATA}, C_CTL_DIG, S_DIG_DSGPSD, SC_MOD_RW12, 2, {0}, CMD_DAT_BUF, 52 },
{ TOK_DSTAR_GPS_MESS, C_CTL_DIG, S_DIG_DSGPSM, SC_MOD_RW12, 2, {0}, CMD_DAT_STR, 52 }, { {.t=TOK_DSTAR_GPS_MESS}, C_CTL_DIG, S_DIG_DSGPSM, SC_MOD_RW12, 2, {0}, CMD_DAT_STR, 52 },
{ TOK_DSTAR_DSQL, C_CTL_DIG, S_DIG_DSCSQL, SC_MOD_RW, 1, {0}, CMD_DAT_BOL, 1 }, { {.t=TOK_DSTAR_DSQL}, C_CTL_DIG, S_DIG_DSCSQL, SC_MOD_RW, 1, {0}, CMD_DAT_BOL, 1 },
{ TOK_DSTAR_CODE, C_CTL_DIG, S_DIG_DSCSQL, SC_MOD_RW12, 2, {0}, CMD_DAT_FLT, 1 }, { {.t=TOK_DSTAR_CODE}, C_CTL_DIG, S_DIG_DSCSQL, SC_MOD_RW12, 2, {0}, CMD_DAT_FLT, 1 },
{ TOK_DSTAR_TX_DATA, C_CTL_DSD, S_DSD_DSTXDT, SC_MOD_RW, 1, {0}, CMD_DAT_BUF, 30 }, { {.t=TOK_DSTAR_TX_DATA}, C_CTL_DSD, S_DSD_DSTXDT, SC_MOD_RW, 1, {0}, CMD_DAT_BUF, 30 },
{ TOK_DSTAR_MY_CS, C_CTL_DVT, S_DVT_DSMYCS, SC_MOD_RW, 1, {0}, CMD_DAT_STR, 12 }, { {.t=TOK_DSTAR_MY_CS}, C_CTL_DVT, S_DVT_DSMYCS, SC_MOD_RW, 1, {0}, CMD_DAT_STR, 12 },
{ TOK_DSTAR_TX_CS, C_CTL_DVT, S_DVT_DSTXCS, SC_MOD_RW, 1, {0}, CMD_DAT_STR, 24 }, { {.t=TOK_DSTAR_TX_CS}, C_CTL_DVT, S_DVT_DSTXCS, SC_MOD_RW, 1, {0}, CMD_DAT_STR, 24 },
{ TOK_DSTAR_TX_MESS, C_CTL_DVT, S_DVT_DSTXMS, SC_MOD_RW, 1, {0}, CMD_DAT_STR, 20 }, { {.t=TOK_DSTAR_TX_MESS}, C_CTL_DVT, S_DVT_DSTXMS, SC_MOD_RW, 1, {0}, CMD_DAT_STR, 20 },
{ TOK_DRIVE_GAIN, C_CTL_LVL, S_LVL_DRIVE, SC_MOD_RW, 1, {0}, CMD_DAT_FLT, 2 }, { {.t=TOK_DRIVE_GAIN}, C_CTL_LVL, S_LVL_DRIVE, SC_MOD_RW, 1, {0}, CMD_DAT_FLT, 2 },
{ TOK_DIGI_SEL_FUNC, C_CTL_FUNC, S_FUNC_DIGISEL, SC_MOD_RW, 1, {0}, CMD_DAT_BOL, 1 }, { {.t=TOK_DIGI_SEL_FUNC}, C_CTL_FUNC, S_FUNC_DIGISEL, SC_MOD_RW, 1, {0}, CMD_DAT_BOL, 1 },
{ TOK_DIGI_SEL_LEVEL, C_CTL_LVL, S_LVL_DIGI, SC_MOD_RW, 1, {0}, CMD_DAT_FLT, 2 }, { {.t=TOK_DIGI_SEL_LEVEL}, C_CTL_LVL, S_LVL_DIGI, SC_MOD_RW, 1, {0}, CMD_DAT_FLT, 2 },
{ 0 } { {0} }
}; };
/* /*
@ -2542,45 +2542,32 @@ 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_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t *val) int icom_get_cmd(RIG *rig, vfo_t vfo, struct cmdparams *par, value_t *val)
{ {
int i;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
unsigned char ssc = 0x02; unsigned char ssc = 0x02;
unsigned char resbuf[MAXFRAMELEN]; unsigned char resbuf[MAXFRAMELEN];
int reslen = sizeof(resbuf); int reslen = sizeof(resbuf);
int retval; int retval;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); if (!(par->submod & SC_MOD_RD)) return -RIG_EINVAL;
if ((par->submod & SC_MOD_RW12) == SC_MOD_RW12) {
for (i = 0; rig->caps->ext_tokens && rig->caps->ext_tokens[i] != TOK_BACKEND_NONE; i++) { retval = icom_get_raw_buf(rig, par->command, par->subcmd, 1, &ssc, &reslen, resbuf);
if (rig->caps->ext_tokens[i] == token) {
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->cmdparams ? priv->cmdparams : icom_ext_cmd;
for (i = 0; cmd && cmd[i].token != 0; i++) {
if (cmd[i].token == TOK_LINK) {
cmd = icom_ext_cmd;
i = -1;
continue;
}
if (cmd[i].token == token) {
if (!(cmd[i].submod & SC_MOD_RD)) break;
if ((cmd[i].submod & SC_MOD_RW12) == SC_MOD_RW12) {
retval = icom_get_raw_buf(rig, cmd[i].command, cmd[i].subcmd,
1, &ssc, &reslen, resbuf);
} else { } else {
retval = icom_get_raw_buf(rig, cmd[i].command, cmd[i].subcmd, retval = icom_get_raw_buf(rig, par->command, par->subcmd,
cmd[i].sublen, (unsigned char *)cmd[i].subext, &reslen, resbuf); par->sublen, (unsigned char *)par->subext, &reslen, resbuf);
} }
if (retval != RIG_OK) { if (retval != RIG_OK) {
return retval; return retval;
} }
switch (cmd[i].dattyp) { switch (par->dattyp) {
case CMD_DAT_WRD: { case CMD_DAT_WRD: {
int wrd = 0; int wrd = 0;
int j; int i;
for (j = 0; j < cmd[i].datlen; j++) { for (i = 0; i < par->datlen; i++) {
wrd = (wrd << 8) + resbuf[j]; wrd = (wrd << 8) + resbuf[i];
} }
val->i = wrd; val->i = wrd;
} }
@ -2612,13 +2599,34 @@ int icom_get_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t *val)
val->i = (from_bcd_be(resbuf, (reslen * 2)) == 0) ? 0 : 1; val->i = (from_bcd_be(resbuf, (reslen * 2)) == 0) ? 0 : 1;
break; break;
case CMD_DAT_TIM: case CMD_DAT_TIM:
val->f = (float)((from_bcd_be(resbuf, 2) * 3600) + (from_bcd_be(&resbuf[1], 2) * 60)); val->i = (from_bcd_be(resbuf, 2) * 3600) + (from_bcd_be(&resbuf[1], 2) * 60);
break; break;
default: default:
val->i = 0; val->i = 0;
break; break;
} }
return RIG_OK; return RIG_OK;
}
int icom_get_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t *val)
{
int i;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
for (i = 0; rig->caps->ext_tokens && rig->caps->ext_tokens[i] != TOK_BACKEND_NONE; i++) {
if (rig->caps->ext_tokens[i] == token) {
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) {
cmd = icom_ext_cmd;
i = -1;
continue;
}
if (cmd[i].id.t == token) {
return icom_get_cmd(rig, vfo, (struct cmdparams *)&cmd[i], val);
} }
} }
return -RIG_EINVAL; return -RIG_EINVAL;
@ -2627,55 +2635,38 @@ 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)
* icom_set_ext_cmd
* Assumes rig!=NULL, rig->state.priv!=NULL
*/
int icom_set_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t val)
{ {
int i; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
unsigned char cmdbuf[MAXFRAMELEN]; unsigned char cmdbuf[MAXFRAMELEN];
int cmdlen = 0; int cmdlen = 0;
unsigned char ackbuf[MAXFRAMELEN]; unsigned char ackbuf[MAXFRAMELEN];
int acklen = 0; int acklen = 0;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); if (!(par->submod & SC_MOD_WR)) return -RIG_EINVAL;
if ((par->submod & SC_MOD_RW12) == SC_MOD_RW12) {
for (i = 0; rig->caps->ext_tokens && rig->caps->ext_tokens[i] != TOK_BACKEND_NONE; i++) {
if (rig->caps->ext_tokens[i] == token) {
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->cmdparams ? priv->cmdparams : icom_ext_cmd;
for (i = 0; cmd && cmd[i].token != 0; i++) {
if (cmd[i].token == TOK_LINK) {
cmd = icom_ext_cmd;
i = -1;
continue;
}
if (cmd[i].token == token) {
if (!(cmd[i].submod & SC_MOD_WR)) break;
if ((cmd[i].submod & SC_MOD_RW12) == SC_MOD_RW12) {
cmdbuf[0] = 0x01; cmdbuf[0] = 0x01;
cmdlen = 1; cmdlen = 1;
} else { } else {
cmdlen = cmd[i].sublen; cmdlen = par->sublen;
memcpy(cmdbuf, cmd[i].subext, cmdlen); memcpy(cmdbuf, par->subext, cmdlen);
} }
int wrd = val.i; int wrd = val.i;
int j; int i;
switch (cmd[i].dattyp) { switch (par->dattyp) {
case CMD_DAT_WRD: case CMD_DAT_WRD:
for (j = 1; j <= cmd[i].datlen; j++) { for (i = 1; i <= par->datlen; i++) {
cmdbuf[cmdlen + cmd[i].datlen - j] = wrd & 0xff; cmdbuf[cmdlen + par->datlen - i] = wrd & 0xff;
wrd >>= 8; wrd >>= 8;
} }
break; break;
case CMD_DAT_BUF: case CMD_DAT_BUF:
memcpy(&cmdbuf[cmdlen], val.b.d, cmd[i].datlen); memcpy(&cmdbuf[cmdlen], val.b.d, par->datlen);
break; break;
case CMD_DAT_INT: case CMD_DAT_INT:
case CMD_DAT_BOL: case CMD_DAT_BOL:
to_bcd_be(&cmdbuf[cmdlen], val.i, (cmd[i].datlen * 2)); to_bcd_be(&cmdbuf[cmdlen], val.i, (par->datlen * 2));
break; break;
case CMD_DAT_FLT: case CMD_DAT_FLT:
to_bcd_be(&cmdbuf[cmdlen], (int) val.f, (cmdlen * 2)); to_bcd_be(&cmdbuf[cmdlen], (int) val.f, (cmdlen * 2));
@ -2684,14 +2675,34 @@ int icom_set_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t val)
to_bcd_be(&cmdbuf[cmdlen], (int)(val.f * 255.0), (cmdlen * 2)); to_bcd_be(&cmdbuf[cmdlen], (int)(val.f * 255.0), (cmdlen * 2));
break; break;
case CMD_DAT_TIM: case CMD_DAT_TIM:
to_bcd_be(&cmdbuf[cmdlen], ((((int)val.f / 3600) * 100) + (((int)val.f / 60) % 60)), (cmd[i].datlen * 2)); to_bcd_be(&cmdbuf[cmdlen], ((((int)val.f / 3600) * 100) + (((int)val.f / 60) % 60)), (par->datlen * 2));
break; break;
default: default:
break; break;
} }
cmdlen += cmd[i].datlen; cmdlen += par->datlen;
return icom_transaction(rig, cmd[i].command, cmd[i].subcmd, return icom_transaction(rig, par->command, par->subcmd, cmdbuf, cmdlen, ackbuf, &acklen);
cmdbuf, cmdlen, ackbuf, &acklen); }
int icom_set_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t val)
{
int i;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
for (i = 0; rig->caps->ext_tokens && rig->caps->ext_tokens[i] != TOK_BACKEND_NONE; i++) {
if (rig->caps->ext_tokens[i] == token) {
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) {
cmd = icom_ext_cmd;
i = -1;
continue;
}
if (cmd[i].id.t == token) {
return icom_set_cmd(rig, vfo, (struct cmdparams *)&cmd[i], val);
} }
} }
return -RIG_EINVAL; return -RIG_EINVAL;
@ -4448,11 +4459,20 @@ 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); return icom_set_raw(rig, C_CTL_ANN, ann_mode, 0, NULL, 0, 0);
} }
default: default:{
int i;
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->rigcmds;
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);
}
}
rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_parm %s\n", __func__, rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_parm %s\n", __func__,
rig_strparm(parm)); rig_strparm(parm));
return -RIG_EINVAL; return -RIG_EINVAL;
} }
}
} }
/* /*
@ -4472,11 +4492,20 @@ int icom_get_parm(RIG *rig, setting_t parm, value_t *val)
switch (parm) switch (parm)
{ {
default: default: {
const struct icom_priv_caps *priv = rig->caps->priv;
const struct cmdparams *cmd = priv->rigcmds;
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);
}
}
rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_parm %s", __func__, rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_parm %s", __func__,
rig_strparm(parm)); rig_strparm(parm));
return -RIG_EINVAL; return -RIG_EINVAL;
} }
}
return RIG_OK; return RIG_OK;
} }

Wyświetl plik

@ -105,8 +105,11 @@ struct icom_agc_level
icom_level; /* Icom AGC level for C_CTL_FUNC (0x16), S_FUNC_AGC (0x12) command */ icom_level; /* Icom AGC level for C_CTL_FUNC (0x16), S_FUNC_AGC (0x12) command */
}; };
struct cmdparams { /* Lookup table items for icom_ext_parm */ struct cmdparams { /* Lookup table item for levels & parms */
token_t token; /* TOKEN_BACKEND */ union {
setting_t s; /* Level or parm */
token_t t; /* TOKEN_BACKEND */
} id;
int command; /* CI-V command */ int command; /* CI-V command */
int subcmd; /* CI-V Subcommand */ int subcmd; /* CI-V Subcommand */
int submod; /* Subcommand modifier */ int submod; /* Subcommand modifier */
@ -137,7 +140,8 @@ 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 *cmdparams; /* Pointer to ext_cmd paramater array */ struct cmdparams *rigcmds; /* Pointer to rig paramater array */
struct cmdparams *extcmds; /* Pointer to ext_cmd paramater array */
}; };
@ -277,6 +281,7 @@ int icom_get_custom_parm_time(RIG *rig, int parmbuflen, unsigned char *parmbuf,
extern const struct confparams icom_cfg_params[]; extern const struct confparams icom_cfg_params[];
extern const struct confparams icom_ext_parms[]; extern const struct confparams icom_ext_parms[];
extern const struct cmdparams icom_rig_cmds[];
extern const struct cmdparams icom_ext_cmds[]; extern const struct cmdparams icom_ext_cmds[];
extern const struct rig_caps ic703_caps; extern const struct rig_caps ic703_caps;

Wyświetl plik

@ -509,10 +509,6 @@
#define TOK_DRIVE_GAIN TOKEN_BACKEND(103) #define TOK_DRIVE_GAIN TOKEN_BACKEND(103)
#define TOK_DIGI_SEL_FUNC TOKEN_BACKEND(104) #define TOK_DIGI_SEL_FUNC TOKEN_BACKEND(104)
#define TOK_DIGI_SEL_LEVEL TOKEN_BACKEND(105) #define TOK_DIGI_SEL_LEVEL TOKEN_BACKEND(105)
#define TOK_KEY_BEEP TOKEN_BACKEND(106)
#define TOK_BACKLIGHT TOKEN_BACKEND(107)
#define TOK_KEYLIGHT TOKEN_BACKEND(108)
#define TOK_TIME TOKEN_BACKEND(109)
#define TOK_DSTAR_CALL_SIGN TOKEN_BACKEND(120) #define TOK_DSTAR_CALL_SIGN TOKEN_BACKEND(120)
#define TOK_DSTAR_MESSAGE TOKEN_BACKEND(121) #define TOK_DSTAR_MESSAGE TOKEN_BACKEND(121)
#define TOK_DSTAR_STATUS TOKEN_BACKEND(122) #define TOK_DSTAR_STATUS TOKEN_BACKEND(122)

Wyświetl plik

@ -65,10 +65,10 @@ struct confparams icr30_ext[] = {
}; };
struct cmdparams icr30_cmd[] = { struct cmdparams icr30_cmd[] = {
{ TOK_ANL, C_CTL_MEM, S_MEM_ANL, SC_MOD_RW, 0, {}, CMD_DAT_BOL, 1 }, { {.t=TOK_ANL}, C_CTL_MEM, S_MEM_ANL, SC_MOD_RW, 0, {}, CMD_DAT_BOL, 1 },
{ TOK_EAR, C_CTL_MEM, S_MEM_EAR, 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 },
{ TOK_REC, C_CTL_MEM, S_MEM_REC, SC_MOD_WR, 0, {}, CMD_DAT_BOL, 1 }, { {.t=TOK_REC}, C_CTL_MEM, S_MEM_REC, SC_MOD_WR, 0, {}, CMD_DAT_BOL, 1 },
{ TOK_LINK } { {.t=TOK_LINK} }
}; };
#define ICR30_STR_CAL { 2, \ #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 */ r8500_ts_sc_list, /* wrong, but don't have set_ts anyway */
.r2i_mode = icr30_r2i_mode, .r2i_mode = icr30_r2i_mode,
.offs_len = 4, .offs_len = 4,
.cmdparams = icr30_cmd .extcmds = icr30_cmd
}; };
const struct rig_caps icr30_caps = const struct rig_caps icr30_caps =

Wyświetl plik

@ -50,7 +50,7 @@
RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_PREAMP|\ RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_PREAMP|\
RIG_LEVEL_AGC|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH) RIG_LEVEL_AGC|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH)
#define ICR8600_PARM_ALL (RIG_PARM_NONE) #define ICR8600_PARM_ALL (RIG_PARM_BACKLIGHT|RIG_PARM_BEEP|RIG_PARM_TIME|RIG_PARM_KEYLIGHT)
#define ICR8600_VFO_ALL (RIG_VFO_VFO|RIG_VFO_MEM) #define ICR8600_VFO_ALL (RIG_VFO_VFO|RIG_VFO_MEM)
@ -67,25 +67,24 @@
{ 255, 60 }, \ { 255, 60 }, \
} } } }
int icr8600_tokens[] = { TOK_KEY_BEEP, TOK_BACKLIGHT, TOK_KEYLIGHT, TOK_TIME, struct cmdparams icr8600_rigcmds[] = {
TOK_DSTAR_DSQL, TOK_DSTAR_CALL_SIGN, TOK_DSTAR_MESSAGE, TOK_DSTAR_STATUS, TOK_DSTAR_GPS_DATA, { {.s=RIG_PARM_BEEP}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x38}, CMD_DAT_BOL, 1 },
TOK_DSTAR_GPS_MESS, TOK_DSTAR_CODE, TOK_DSTAR_TX_DATA, { {.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_TIME}, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x32}, CMD_DAT_TIM, 2 },
{ {.s=RIG_PARM_NONE} }
};
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_BACKEND_NONE }; TOK_BACKEND_NONE };
struct confparams icr8600_ext[] = { struct confparams icr8600_ext[] = {
{ TOK_KEY_BEEP, "beep", "Key beep enable", "", "", RIG_CONF_CHECKBUTTON, {} },
{ TOK_BACKLIGHT, "backlight", "Display brightness", "", "", RIG_CONF_NUMERIC, {} },
{ TOK_KEYLIGHT, "keylight", "LED brightness", "", "", RIG_CONF_NUMERIC, {} },
{ TOK_TIME, "time", "Time (seconds)", "", "", RIG_CONF_NUMERIC, {} },
{ 0 } { 0 }
}; };
struct cmdparams icr8600_cmd[] = { struct cmdparams icr8600_extcmds[] = {
{ TOK_KEY_BEEP, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x38}, CMD_DAT_BOL, 1 }, { {.t=TOK_LINK} }
{ TOK_BACKLIGHT, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x15}, CMD_DAT_LVL, 2 },
{ TOK_KEYLIGHT, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x16}, CMD_DAT_LVL, 2 },
{ TOK_TIME, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x32}, CMD_DAT_TIM, 2 },
{ TOK_LINK }
}; };
/* /*
@ -109,7 +108,8 @@ 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 */
.cmdparams = icr8600_cmd .rigcmds = icr8600_rigcmds,
.extcmds = icr8600_extcmds
}; };
const struct rig_caps icr8600_caps = const struct rig_caps icr8600_caps =