kopia lustrzana https://github.com/Hamlib/Hamlib
WIP: thd72 driver. More level, func, and parm stuff works.
rodzic
e970be4350
commit
84f9bfcfcf
197
kenwood/thd72.c
197
kenwood/thd72.c
|
@ -35,8 +35,8 @@
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
|
|
||||||
#define THD72_MODES (RIG_MODE_FM|RIG_MODE_AM)
|
#define THD72_MODES (RIG_MODE_FM|RIG_MODE_FMN|RIG_MODE_AM)
|
||||||
#define THD72_MODES_TX (RIG_MODE_FM)
|
#define THD72_MODES_TX (RIG_MODE_FM|RIG_MODE_FMN)
|
||||||
|
|
||||||
#define THD72_FUNC_ALL (RIG_FUNC_TSQL| \
|
#define THD72_FUNC_ALL (RIG_FUNC_TSQL| \
|
||||||
RIG_FUNC_AIP| \
|
RIG_FUNC_AIP| \
|
||||||
|
@ -48,18 +48,21 @@
|
||||||
RIG_FUNC_ARO)
|
RIG_FUNC_ARO)
|
||||||
|
|
||||||
#define THD72_LEVEL_ALL (RIG_LEVEL_RFPOWER|\
|
#define THD72_LEVEL_ALL (RIG_LEVEL_RFPOWER|\
|
||||||
|
RIG_LEVEL_SQL|\
|
||||||
|
RIG_LEVEL_BALANCE|\
|
||||||
RIG_LEVEL_VOXGAIN|\
|
RIG_LEVEL_VOXGAIN|\
|
||||||
RIG_LEVEL_VOXDELAY)
|
RIG_LEVEL_VOXDELAY)
|
||||||
|
|
||||||
#define THD72_PARMS (RIG_PARM_BACKLIGHT)
|
#define THD72_PARMS (RIG_PARM_APO|\
|
||||||
|
RIG_PARM_TIME)
|
||||||
|
|
||||||
#define THD72_VFO_OP (RIG_OP_NONE)
|
#define THD72_VFO_OP (RIG_OP_NONE)
|
||||||
|
|
||||||
#define THD72_VFO (RIG_VFO_A|RIG_VFO_B)
|
#define THD72_VFO (RIG_VFO_A|RIG_VFO_B)
|
||||||
|
|
||||||
static rmode_t thd72_mode_table[3] = {
|
static rmode_t thd72_mode_table[3] = {
|
||||||
[0] = RIG_MODE_WFM,
|
[0] = RIG_MODE_FM, /* normal, but narrow compared to broadcast */
|
||||||
[1] = RIG_MODE_FM,
|
[1] = RIG_MODE_FMN, /* what kenwood calls narrow */
|
||||||
[2] = RIG_MODE_AM,
|
[2] = RIG_MODE_AM,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -84,6 +87,22 @@ static int thd72voxdelay[7] = {
|
||||||
[6] = 30000
|
[6] = 30000
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static float thd72sqlevel[6] = {
|
||||||
|
[0] = 0.0, /* open */
|
||||||
|
[1] = 0.2,
|
||||||
|
[2] = 0.4,
|
||||||
|
[3] = 0.6,
|
||||||
|
[4] = 0.8,
|
||||||
|
[5] = 1.0
|
||||||
|
};
|
||||||
|
|
||||||
|
static int thd72apo[4] = {
|
||||||
|
[0] = 0,
|
||||||
|
[1] = 15,
|
||||||
|
[2] = 30,
|
||||||
|
[3] = 60
|
||||||
|
};
|
||||||
|
|
||||||
static struct kenwood_priv_caps thd72_priv_caps = {
|
static struct kenwood_priv_caps thd72_priv_caps = {
|
||||||
.cmdtrm = EOM_TH, /* Command termination character */
|
.cmdtrm = EOM_TH, /* Command termination character */
|
||||||
.mode_table = thd72_mode_table,
|
.mode_table = thd72_mode_table,
|
||||||
|
@ -188,11 +207,11 @@ static int thd72_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
retval = thd72_get_freq_info(rig, vfo, buf);
|
retval = thd72_get_freq_info(rig, vfo, buf);
|
||||||
if (retval == RIG_OK) {
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
sprintf(fbuf, "%010ld", (int64_t)freq);
|
sprintf(fbuf, "%010ld", (int64_t)freq);
|
||||||
memcpy(buf+5, fbuf, 10);
|
memcpy(buf+5, fbuf, 10);
|
||||||
retval = kenwood_simple_transaction(rig, buf, 52);
|
retval = kenwood_simple_transaction(rig, buf, 52);
|
||||||
}
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,9 +223,10 @@ static int thd72_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
retval = thd72_get_freq_info(rig, vfo, buf);
|
retval = thd72_get_freq_info(rig, vfo, buf);
|
||||||
if (retval == RIG_OK)
|
if (retval != RIG_OK)
|
||||||
sscanf(buf+5, "%"SCNfreq, freq);
|
|
||||||
return retval;
|
return retval;
|
||||||
|
sscanf(buf+5, "%"SCNfreq, freq);
|
||||||
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int thd72_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
static int thd72_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
||||||
|
@ -217,17 +237,17 @@ static int thd72_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
retval = thd72_get_freq_info(rig, vfo, buf);
|
retval = thd72_get_freq_info(rig, vfo, buf);
|
||||||
if (retval == RIG_OK) {
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case RIG_MODE_WFM: modec = '0'; break;
|
case RIG_MODE_FM: modec = '0'; break;
|
||||||
case RIG_MODE_FM: modec = '1'; break;
|
case RIG_MODE_FMN: modec = '1'; break;
|
||||||
case RIG_MODE_AM: modec = '2'; break;
|
case RIG_MODE_AM: modec = '2'; break;
|
||||||
default:
|
default:
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
}
|
||||||
buf[51] = modec;
|
buf[51] = modec;
|
||||||
retval = kenwood_simple_transaction(rig, buf, 52);
|
retval = kenwood_simple_transaction(rig, buf, 52);
|
||||||
}
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,7 +259,8 @@ static int thd72_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
retval = thd72_get_freq_info(rig, vfo, buf);
|
retval = thd72_get_freq_info(rig, vfo, buf);
|
||||||
if (retval == RIG_OK) {
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
modec = buf[51];
|
modec = buf[51];
|
||||||
if (modec >= '0' && modec <= '2') {
|
if (modec >= '0' && modec <= '2') {
|
||||||
*mode = thd72_mode_table[modec - '0'];
|
*mode = thd72_mode_table[modec - '0'];
|
||||||
|
@ -247,8 +268,7 @@ static int thd72_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
return RIG_OK;
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int thd72_set_rptr_shft(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
|
static int thd72_set_rptr_shft(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
|
||||||
|
@ -259,7 +279,8 @@ static int thd72_set_rptr_shft(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
retval = thd72_get_freq_info(rig, vfo, buf);
|
retval = thd72_get_freq_info(rig, vfo, buf);
|
||||||
if (retval == RIG_OK) {
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
switch (rptr_shift) {
|
switch (rptr_shift) {
|
||||||
case RIG_RPT_SHIFT_NONE: shftc = '0'; break;
|
case RIG_RPT_SHIFT_NONE: shftc = '0'; break;
|
||||||
case RIG_RPT_SHIFT_PLUS: shftc = '1'; break;
|
case RIG_RPT_SHIFT_PLUS: shftc = '1'; break;
|
||||||
|
@ -269,7 +290,6 @@ static int thd72_set_rptr_shft(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
|
||||||
}
|
}
|
||||||
buf[18] = shftc;
|
buf[18] = shftc;
|
||||||
retval = kenwood_simple_transaction(rig, buf, 52);
|
retval = kenwood_simple_transaction(rig, buf, 52);
|
||||||
}
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -281,14 +301,13 @@ static int thd72_get_rptr_shft(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
retval = thd72_get_freq_info(rig, vfo, buf);
|
retval = thd72_get_freq_info(rig, vfo, buf);
|
||||||
if (retval == RIG_OK) {
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
shftc = buf[18];
|
shftc = buf[18];
|
||||||
if (shftc >= '0' && shftc <= '2') {
|
if (shftc >= '0' && shftc <= '2')
|
||||||
*rptr_shift = thd72_rshf_table[shftc - '0'];
|
*rptr_shift = thd72_rshf_table[shftc - '0'];
|
||||||
}
|
|
||||||
else
|
else
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,11 +320,11 @@ static int thd72_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t offs)
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
retval = thd72_get_freq_info(rig, vfo, buf);
|
retval = thd72_get_freq_info(rig, vfo, buf);
|
||||||
if (retval == RIG_OK) {
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
sprintf(boff, "%08ld", offs);
|
sprintf(boff, "%08ld", offs);
|
||||||
memcpy(buf+42, boff, 8);
|
memcpy(buf+42, boff, 8);
|
||||||
retval = kenwood_simple_transaction(rig, buf, 52);
|
retval = kenwood_simple_transaction(rig, buf, 52);
|
||||||
}
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -317,9 +336,10 @@ static int thd72_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *offs)
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
retval = thd72_get_freq_info(rig, vfo, buf);
|
retval = thd72_get_freq_info(rig, vfo, buf);
|
||||||
if (retval == RIG_OK)
|
if (retval != RIG_OK)
|
||||||
sscanf(buf+42, "%ld", offs);
|
|
||||||
return retval;
|
return retval;
|
||||||
|
sscanf(buf+42, "%ld", offs);
|
||||||
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int thd72_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone)
|
static int thd72_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone)
|
||||||
|
@ -339,7 +359,8 @@ static int thd72_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
retval = thd72_get_freq_info(rig, vfo, buf);
|
retval = thd72_get_freq_info(rig, vfo, buf);
|
||||||
if (retval == RIG_OK) {
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
if (buf[22] == '0') /* no tone */
|
if (buf[22] == '0') /* no tone */
|
||||||
*tone = 0;
|
*tone = 0;
|
||||||
else {
|
else {
|
||||||
|
@ -349,8 +370,7 @@ static int thd72_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
|
||||||
else
|
else
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
}
|
||||||
}
|
return RIG_OK;
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int thd72_get_menu_info(RIG *rig, char *buf)
|
static int thd72_get_menu_info(RIG *rig, char *buf)
|
||||||
|
@ -394,7 +414,17 @@ static int thd72_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
||||||
retval = thd72_get_menu_info(rig, buf);
|
retval = thd72_get_menu_info(rig, buf);
|
||||||
if (retval != RIG_OK)
|
if (retval != RIG_OK)
|
||||||
return retval;
|
return retval;
|
||||||
break;
|
return kenwood_simple_transaction(rig, buf, 40);
|
||||||
|
case RIG_LEVEL_SQL:
|
||||||
|
lvlc = '0' + (int)(val.f*5);
|
||||||
|
sprintf(cmd, "PC %c,%c", vfoc, lvlc;
|
||||||
|
return kenwood_simple_transaction(rig, cmd, 6);
|
||||||
|
case RIG_LEVEL_BALANCE:
|
||||||
|
retval = thd72_get_menu_info(rig, buf);
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
/* FIXME - is balance 0.0 .. 1.0 or -1.0 .. 1.0? */
|
||||||
|
return kenwood_simple_transaction(rig, buf, 40);
|
||||||
default:
|
default:
|
||||||
rig_debug(RIG_DEBUG_ERR, "%s: Unsupported Level %d\n", __func__, level);
|
rig_debug(RIG_DEBUG_ERR, "%s: Unsupported Level %d\n", __func__, level);
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
|
@ -455,6 +485,31 @@ static int thd72_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||||
return -RIG_ERJCTED;
|
return -RIG_ERJCTED;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case RIG_LEVEL_SQL:
|
||||||
|
sprintf(cmd, "SQ %c", vfoc);
|
||||||
|
retval = kenwood_transaction(rig, cmd, buf, sizeof (buf));
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
retval = sscanf(buf, "SQ %d,%d", &v, &l);
|
||||||
|
if (retval != 2 || l < 0 || l > 6) {
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "%s: Unexpected reply '%s'\n", __func__, buf);
|
||||||
|
return -RIG_ERJCTED;
|
||||||
|
}
|
||||||
|
val->f = thd72sqlevel[l];
|
||||||
|
break;
|
||||||
|
case RIG_LEVEL_BALANCE:
|
||||||
|
retval = thd72_get_menu_info(rig, buf);
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
vfoc = buf[29];
|
||||||
|
/* FIXME - is balance 0.0 .. 1.0 or -1.0 .. 1.0? */
|
||||||
|
if (vfoc >= '0' && vfoc <= '4')
|
||||||
|
val->f = (float)('2'-vfoc)/('2'-'0');
|
||||||
|
else {
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "%s: Unexpected reply '%s'\n", __func__, buf);
|
||||||
|
return -RIG_ERJCTED;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
rig_debug(RIG_DEBUG_ERR, "%s: Unsupported Level %d\n", __func__, level);
|
rig_debug(RIG_DEBUG_ERR, "%s: Unsupported Level %d\n", __func__, level);
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
|
@ -464,14 +519,35 @@ static int thd72_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
||||||
|
|
||||||
static int thd72_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
|
static int thd72_set_func(RIG *rig, vfo_t vfo, setting_t func, int status)
|
||||||
{
|
{
|
||||||
|
int retval;
|
||||||
|
char vfoc, buf[48];
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
|
switch (func) {
|
||||||
|
case RIG_FUNC_AIP:
|
||||||
|
retval = thd72_vfoc(rig, vfo, &vfoc);
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
retval = thd72_get_menu_info(rig, buf);
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
if (vfoc == '0') buf[13] = status + '0'; /* VHF AIP */
|
||||||
|
else buf[15] = status + '0';; /* UHF AIP */
|
||||||
|
return kenwood_simple_transaction(rig, buf, 40);
|
||||||
|
default:
|
||||||
return -RIG_EINVAL;
|
return -RIG_EINVAL;
|
||||||
}
|
}
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
static int thd72_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
|
static int thd72_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
char vfoc, buf[48];
|
char vfoc, buf[48];
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
switch (func) {
|
switch (func) {
|
||||||
case RIG_FUNC_AIP:
|
case RIG_FUNC_AIP:
|
||||||
retval = thd72_vfoc(rig, vfo, &vfoc);
|
retval = thd72_vfoc(rig, vfo, &vfoc);
|
||||||
|
@ -490,6 +566,64 @@ static int thd72_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status)
|
||||||
return RIG_OK;
|
return RIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int thd72_set_parm(RIG *rig, setting_t parm, value_t val)
|
||||||
|
{
|
||||||
|
int retval, hh, mm, ss;
|
||||||
|
char vfoc, buf[48];
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
|
switch (parm) {
|
||||||
|
case RIG_PARM_APO:
|
||||||
|
retval = thd72_get_menu_info(rig, buf);
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
if (val.i == 0) vfoc = '0';
|
||||||
|
else if (val.i <= 15) vfoc = '1';
|
||||||
|
else if (val.i <= 30) vfoc = '2';
|
||||||
|
else vfoc = '3';
|
||||||
|
buf[9] = vfoc;
|
||||||
|
return kenwood_simple_transaction(rig, buf, 40);
|
||||||
|
case RIG_PARM_TIME:
|
||||||
|
default:
|
||||||
|
return -RIG_EINVAL;
|
||||||
|
}
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int thd72_get_parm(RIG *rig, setting_t parm, value_t *val)
|
||||||
|
{
|
||||||
|
int retval, hh, mm, ss;
|
||||||
|
char vfoc, buf[48];
|
||||||
|
|
||||||
|
rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__);
|
||||||
|
|
||||||
|
switch (parm) {
|
||||||
|
case RIG_PARM_APO:
|
||||||
|
retval = thd72_get_menu_info(rig, buf);
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
vfoc = buf[9];
|
||||||
|
if (vfoc >= '0' && vfoc <= '3')
|
||||||
|
val->i = thd72apo[vfoc-'0'];
|
||||||
|
else {
|
||||||
|
rig_debug(RIG_DEBUG_ERR, "%s: Unexpected reply '%s'\n", __func__, buf);
|
||||||
|
return -RIG_ERJCTED;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RIG_PARM_TIME:
|
||||||
|
retval = kenwood_transaction(rig, "RT", buf, sizeof (buf));
|
||||||
|
if (retval != RIG_OK)
|
||||||
|
return retval;
|
||||||
|
sscanf(buf+11, "%2d%2d%2d", &hh, &mm, &ss);
|
||||||
|
val->i = ss + 60*(mm + 60*hh);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -RIG_EINVAL;
|
||||||
|
}
|
||||||
|
return RIG_OK;
|
||||||
|
}
|
||||||
|
|
||||||
#define CMD_SZ 5
|
#define CMD_SZ 5
|
||||||
#define BLOCK_SZ 256
|
#define BLOCK_SZ 256
|
||||||
#define BLOCK_COUNT 256
|
#define BLOCK_COUNT 256
|
||||||
|
@ -726,6 +860,7 @@ const struct rig_caps thd72a_caps = {
|
||||||
/* mode/filter list, remember: order matters! */
|
/* mode/filter list, remember: order matters! */
|
||||||
.filters = {
|
.filters = {
|
||||||
{RIG_MODE_FM, kHz(14)},
|
{RIG_MODE_FM, kHz(14)},
|
||||||
|
{RIG_MODE_FMN, kHz(7)},
|
||||||
{RIG_MODE_AM, kHz(9)},
|
{RIG_MODE_AM, kHz(9)},
|
||||||
RIG_FLT_END,
|
RIG_FLT_END,
|
||||||
},
|
},
|
||||||
|
@ -753,6 +888,8 @@ const struct rig_caps thd72a_caps = {
|
||||||
.get_level = thd72_get_level,
|
.get_level = thd72_get_level,
|
||||||
.set_func = thd72_set_func,
|
.set_func = thd72_set_func,
|
||||||
.get_func = thd72_get_func,
|
.get_func = thd72_get_func,
|
||||||
|
.set_parm = thd72_set_parm,
|
||||||
|
.get_parm = thd72_get_parm,
|
||||||
.get_chan_all_cb = thd72_get_chan_all_cb,
|
.get_chan_all_cb = thd72_get_chan_all_cb,
|
||||||
|
|
||||||
.get_info = th_get_info,
|
.get_info = th_get_info,
|
||||||
|
|
Ładowanie…
Reference in New Issue