more ext operations

pull/179/head
Malcolm Herring 2020-01-07 15:27:24 +00:00
rodzic 4d822d5983
commit d91376ab48
5 zmienionych plików z 43 dodań i 122 usunięć

Wyświetl plik

@ -31,6 +31,7 @@
#include "frame.h"
#include "idx_builtin.h"
#include "bandplan.h"
#include "token.h"
#define IC7100_MODES (RIG_MODE_SSB|RIG_MODE_CW|RIG_MODE_CWR|\
@ -100,11 +101,16 @@
#define IC7100_PARM_ALL (RIG_PARM_ANN|RIG_PARM_BACKLIGHT)
int ic7100_tokens[] = { TOK_KEY_BEEP, TOK_BACKLIGHT, TOK_KEYLIGHT, TOK_TIME,
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 };
struct confparams ic7100_ext[] = {
{ TOK_TIME, "time", "Time (seconds)", "", "", RIG_CONF_NUMERIC, { .n = { 0, 2359, 1 } } },
{ 0 }
};
struct cmdparams ic7100_cmd[] = {
{ TOK_TIME, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x21}, CMD_DAT_TIM, 2 },
{ TOK_LINK }
@ -220,6 +226,7 @@ const struct rig_caps ic7100_caps =
[LVL_KEYSPD] = { .min = { .i = 6 }, .max = { .i = 48 }, .step = { .i = 1 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 900 }, .step = { .i = 1 } },
},
.ext_tokens = ic7100_tokens,
.extlevels = ic7100_ext,
.extparms = icom_ext_parms,
.parm_gran = {},

Wyświetl plik

@ -410,7 +410,7 @@ const struct confparams icom_ext_parms[] =
{ TOK_DSTAR_DSQL, "dsdsql", "D-STAR CSQL Status", "", "", RIG_CONF_CHECKBUTTON, {} },
{ TOK_DSTAR_CALL_SIGN, "dscals", "D-STAR Call sign", "", "", RIG_CONF_BINARY, {} },
{ TOK_DSTAR_MESSAGE, "dsrmes", "D-STAR Rx Message", "", "", RIG_CONF_STRING, {} },
{ TOK_DSTAR_STATUS, "dsstat", "D-STAR Rx Status", "", "", RIG_CONF_NUMERIC, {} },
{ TOK_DSTAR_STATUS, "dsstat", "D-STAR Rx Status", "", "", RIG_CONF_BINARY, {} },
{ TOK_DSTAR_GPS_DATA, "dsgpsd", "D-STAR GPS Data", "", "", RIG_CONF_BINARY, {} },
{ TOK_DSTAR_GPS_MESS, "dsgpsm", "D-STAR GPS Message", "", "", RIG_CONF_STRING, {} },
{ TOK_DSTAR_CODE, "dscode", "D-STAR CSQL Code", "", "", RIG_CONF_NUMERIC, {} },
@ -418,13 +418,9 @@ const struct confparams icom_ext_parms[] =
{ TOK_DSTAR_MY_CS, "dsmycs", "D-STAR MY Call Sign", "", "", RIG_CONF_STRING, {} },
{ TOK_DSTAR_TX_CS, "dstxcs", "D-STAR Tx Call Sign", "", "", RIG_CONF_BINARY, {} },
{ TOK_DSTAR_TX_MESS, "dstmes", "D-STAR Tx Message", "", "", RIG_CONF_STRING, {} },
{ TOK_DRIVE_GAIN, "drive_gain", "Drive gain", "", "", RIG_CONF_NUMERIC, { .n = { 0, 255, 1 } } },
{ TOK_DRIVE_GAIN, "drive_gain", "Drive gain", "", "", RIG_CONF_NUMERIC, {} },
{ TOK_DIGI_SEL_FUNC, "digi_sel", "DIGI-SEL enable", "", "", RIG_CONF_CHECKBUTTON, {} },
{ TOK_DIGI_SEL_LEVEL, "digi_sel_level", "DIGI-SEL level", "", "", RIG_CONF_NUMERIC, { .n = { 0, 255, 1 } } },
{ TOK_KEY_BEEP, "beep", "Key beep enable", "", "", RIG_CONF_CHECKBUTTON, {} },
{ TOK_BACKLIGHT, "backlight", "Display brightness", "", "", RIG_CONF_NUMERIC, { .n = { 0, 255, 1 } } },
{ TOK_KEYLIGHT, "keylight", "LED brightness", "", "", RIG_CONF_NUMERIC, { .n = { 0, 255, 1 } } },
{ TOK_TIME, "time", "Time (seconds)", "", "", RIG_CONF_NUMERIC, { .n = { 0, 2359, 1 } } },
{ TOK_DIGI_SEL_LEVEL, "digi_sel_level", "DIGI-SEL level", "", "", RIG_CONF_NUMERIC, {} },
{ RIG_CONF_END, NULL, }
};
@ -436,10 +432,10 @@ 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 },
{ 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_WRD, 1 },
{ 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 },
{ 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, 2, {0}, CMD_DAT_INT, 1 },
{ 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 },
{ 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 },
@ -448,10 +444,6 @@ const struct cmdparams icom_ext_cmd[] =
{ 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 },
{ TOK_DIGI_SEL_LEVEL, C_CTL_LVL, S_LVL_DIGI, SC_MOD_RW, 1, {0}, CMD_DAT_FLT, 2 },
{ TOK_KEY_BEEP, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x38}, CMD_DAT_BOL, 1 },
{ TOK_BACKLIGHT, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x15}, CMD_DAT_FLT, 2 },
{ TOK_KEYLIGHT, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x16}, CMD_DAT_FLT, 2 },
{ TOK_TIME, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x01, 0x32}, CMD_DAT_TIM, 2 },
{ 0 }
};
@ -2613,6 +2605,9 @@ int icom_get_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t *val)
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;
@ -2685,6 +2680,9 @@ int icom_set_ext_cmd(RIG *rig, vfo_t vfo, token_t token, value_t val)
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)), (cmd[i].datlen * 2));
break;

Wyświetl plik

@ -541,9 +541,10 @@
#define CMD_DAT_WRD 0x00 /* literal single word type */
#define CMD_DAT_INT 0x01 /* bcd int type */
#define CMD_DAT_FLT 0x02 /* bcd float type */
#define CMD_DAT_BOL 0x03 /* bcd boolean type */
#define CMD_DAT_STR 0x04 /* string type */
#define CMD_DAT_BUF 0x05 /* literal byte buffer type */
#define CMD_DAT_TIM 0x06 /* Time type HHMM<>seconds */
#define CMD_DAT_LVL 0x03 /* bcd level type */
#define CMD_DAT_BOL 0x04 /* bcd boolean type */
#define CMD_DAT_STR 0x05 /* string type */
#define CMD_DAT_BUF 0x06 /* literal byte buffer type */
#define CMD_DAT_TIM 0x07 /* Time type HHMM<>seconds */
#endif /* _ICOM_DEFS_H */

Wyświetl plik

@ -52,7 +52,10 @@
#define TOK_EAR TOKEN_BACKEND(111)
#define TOK_REC TOKEN_BACKEND(112)
int icr30_tokens[] = { TOK_ANL, TOK_EAR, TOK_REC, TOK_BACKEND_NONE };
int icr30_tokens[] = { TOK_ANL, TOK_EAR, TOK_REC,
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 };
struct confparams icr30_ext[] = {
{ TOK_ANL, "anl", "Auto noise limiter", "", "", RIG_CONF_CHECKBUTTON, {} },

Wyświetl plik

@ -50,8 +50,7 @@
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)
#define ICR8600_PARM_ALL (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|\
RIG_PARM_BEEP|RIG_PARM_TIME|RIG_PARM_KEYLIGHT)
#define ICR8600_PARM_ALL (RIG_PARM_NONE)
#define ICR8600_VFO_ALL (RIG_VFO_VFO|RIG_VFO_MEM)
@ -68,15 +67,24 @@
{ 255, 60 }, \
} }
int icr8600_tokens[] = { TOK_DSTAR_CALL_SIGN, TOK_BACKEND_NONE };
int icr8600_tokens[] = { TOK_KEY_BEEP, TOK_BACKLIGHT, TOK_KEYLIGHT, TOK_TIME,
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 };
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 }
};
struct cmdparams icr8600_cmd[] = {
{ TOK_KEY_BEEP, C_CTL_MEM, S_MEM_PARM, SC_MOD_RW, 2, {0x00, 0x38}, CMD_DAT_BOL, 1 },
{ 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 }
};
@ -93,9 +101,6 @@ struct cmdparams icr8600_cmd[] = {
.flags = 1, \
}
int icr8600_set_parm(RIG *rig, setting_t parm, value_t val);
int icr8600_get_parm(RIG *rig, setting_t parm, value_t *val);
static const struct icom_priv_caps icr8600_priv_caps =
{
0x96, /* default address */
@ -238,10 +243,10 @@ const struct rig_caps icr8600_caps =
.get_func = icom_get_func,
.set_level = icom_set_level,
.get_level = icom_get_level,
.set_parm = icr8600_set_parm,
.get_parm = icr8600_get_parm,
.set_ext_parm = icom_set_ext_parm,
.get_ext_parm = icom_get_ext_parm,
.set_parm = icom_set_parm,
.get_parm = icom_get_parm,
.set_ext_parm = icom_set_ext_parm,
.get_ext_parm = icom_get_ext_parm,
.get_dcd = icom_get_dcd,
.set_mem = icom_set_mem,
.vfo_op = icom_vfo_op,
@ -254,96 +259,3 @@ const struct rig_caps icr8600_caps =
.get_dcs_sql = icom_get_dcs_sql,
};
int icr8600_set_parm(RIG *rig, setting_t parm, value_t val)
{
unsigned char parmbuf[MAXFRAMELEN];
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
switch (parm)
{
case RIG_PARM_BEEP:
parmbuf[0] = 0x00;
parmbuf[1] = 0x38;
return icom_set_custom_parm(rig, 2, parmbuf, 1, val.i ? 1 : 0);
case RIG_PARM_BACKLIGHT:
parmbuf[0] = 0x01;
parmbuf[1] = 0x15;
return icom_set_custom_parm(rig, 2, parmbuf, 2, (int)(val.f * 255.0f));
case RIG_PARM_KEYLIGHT:
parmbuf[0] = 0x01;
parmbuf[1] = 0x16;
return icom_set_custom_parm(rig, 2, parmbuf, 2, val.f != 0 ? 255 : 0);
case RIG_PARM_TIME:
parmbuf[0] = 0x01;
parmbuf[1] = 0x32;
return icom_set_custom_parm_time(rig, 2, parmbuf, val.i);
default:
return icom_set_parm(rig, parm, val);
}
}
int icr8600_get_parm(RIG *rig, setting_t parm, value_t *val)
{
unsigned char parmbuf[MAXFRAMELEN];
int retval;
int icom_val;
rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__);
switch (parm)
{
case RIG_PARM_BEEP:
parmbuf[0] = 0x00;
parmbuf[1] = 0x38;
retval = icom_get_custom_parm(rig, 2, parmbuf, &icom_val);
if (retval != RIG_OK)
{
return retval;
}
val->i = icom_val ? 1 : 0;
break;
case RIG_PARM_BACKLIGHT:
parmbuf[0] = 0x01;
parmbuf[1] = 0x15;
retval = icom_get_custom_parm(rig, 2, parmbuf, &icom_val);
if (retval != RIG_OK)
{
return retval;
}
val->f = (float) icom_val / 255.0f;
break;
case RIG_PARM_KEYLIGHT:
parmbuf[0] = 0x01;
parmbuf[1] = 0x16;
retval = icom_get_custom_parm(rig, 2, parmbuf, &icom_val);
if (retval != RIG_OK)
{
return retval;
}
val->f = icom_val != 0;
break;
case RIG_PARM_TIME:
parmbuf[0] = 0x01;
parmbuf[1] = 0x32;
return icom_get_custom_parm_time(rig, 2, parmbuf, &val->i);
default:
return icom_get_parm(rig, parm, val);
}
return RIG_OK;
}