Merge pull request #1297 from GeoBaltz/levels_3

Levels 3
pull/1301/head
Michael Black 2023-05-20 12:53:23 -05:00 zatwierdzone przez GitHub
commit c5f0e1e577
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
17 zmienionych plików z 117 dodań i 95 usunięć

Wyświetl plik

@ -1035,7 +1035,7 @@ typedef uint64_t rig_level_e;
//! @cond Doxygen_Suppress
#define RIG_LEVEL_FLOAT_LIST (RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_SQL|RIG_LEVEL_APF|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_COMP|RIG_LEVEL_BALANCE|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_SPECTRUM_REF|RIG_LEVEL_TEMP_METER|RIG_LEVEL_USB_AF|RIG_LEVEL_AGC_TIME)
#define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS)
#define RIG_LEVEL_READONLY_LIST (RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_STRENGTH|RIG_LEVEL_RAWSTR|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_TEMP_METER|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS)
#define RIG_LEVEL_IS_FLOAT(l) ((l)&RIG_LEVEL_FLOAT_LIST)
#define RIG_LEVEL_SET(l) ((l)&~RIG_LEVEL_READONLY_LIST)
@ -1619,7 +1619,7 @@ typedef struct chan_list chan_t;
*
* The granularity is undefined if min = 0, max = 0, and step = 0.
*
* For float settings, if min.f = 0 and max.f = 0 (and step.f! = 0), max.f is
* For float settings, if min.f = 0 and max.f = 0 (and step.f != 0), max.f is
* assumed to be actually equal to 1.0.
*
* If step = 0 (and min and/or max are not null), then this means step can

Wyświetl plik

@ -575,6 +575,7 @@ const struct rig_caps ic7300_caps =
.has_get_parm = IC7300_PARMS,
.has_set_parm = RIG_PARM_SET(IC7300_PARMS),
.level_gran = {
#include "level_gran_icom.h"
// cppcheck-suppress *
[LVL_RAWSTR] = {.min = {.i = 0}, .max = {.i = 255}},
[LVL_VOXDELAY] = {.min = {.i = 0}, .max = {.i = 20}, .step = {.i = 1}},
@ -811,6 +812,7 @@ struct rig_caps ic9700_caps =
.has_get_parm = IC9700_PARMS,
.has_set_parm = RIG_PARM_SET(IC9700_PARMS),
.level_gran = {
#include "level_gran_icom.h"
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 1 } },
[LVL_KEYSPD] = {.min = {.i = 6}, .max = {.i = 48}, .step = {.i = 1}},
@ -1123,6 +1125,7 @@ const struct rig_caps ic705_caps =
.has_get_parm = IC7300_PARMS,
.has_set_parm = RIG_PARM_SET(IC7300_PARMS),
.level_gran = {
#include "level_gran_icom.h"
[LVL_RAWSTR] = {.min = {.i = 0}, .max = {.i = 255}},
[LVL_VOXDELAY] = {.min = {.i = 0}, .max = {.i = 20}, .step = {.i = 1}},
[LVL_KEYSPD] = {.min = {.i = 6}, .max = {.i = 48}, .step = {.i = 1}},

Wyświetl plik

@ -16,8 +16,8 @@ LVL_KEYSPD
/* raw data */
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
/* levels with dB units */
[LVL_PREAMP] = { .min = { .i = 10 }, .max = { .i = 20 }, .step = { .i = 10 } },
[LVL_ATT] = { .min = { .i = 12 }, .max = { .i = 12 }, .step = { .i = 0 } },
[LVL_PREAMP] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 10 } },
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 12 }, .step = { .i = 0 } },
[LVL_STRENGTH] = { .min = { .i = 0 }, .max = { .i = 60 }, .step = { .i = 0 } },
[LVL_NB] = { .min = { .f = 0 }, .max = { .f = 10 }, .step = { .f = 1 } },
/* levels with WPM units */

Wyświetl plik

@ -9,7 +9,7 @@ IC10SRC = ts440.c ts940.c ts711.c ts811.c r5000.c
THSRC = thd7.c thf7.c thg71.c tmd700.c tmv7.c thf6a.c thd72.c tmd710.c thd74.c
KENWOODSRC = kenwood.c kenwood.h th.c th.h ic10.c ic10.h elecraft.c elecraft.h \
transfox.c flex.c flex.h level_gran_kenwood.h
transfox.c flex.c flex.h level_gran_kenwood.h level_gran_elecraft.h
noinst_LTLIBRARIES = libhamlib-kenwood.la
libhamlib_kenwood_la_SOURCES = $(TSSRC) $(THSRC) $(IC10SRC) $(KENWOODSRC)

Wyświetl plik

@ -1122,7 +1122,9 @@ const struct rig_caps f6k_caps =
.has_set_level = F6K_LEVEL_ALL,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {}, /* FIXME: granularity */
.level_gran = {
[LVL_KEYSPD] = { .min = { .i = 5 }, .max = { .i = 60 }, .step = { .i = 1 } },
}, /* FIXME: granularity */
.parm_gran = {},
//.extlevels = elecraft_ext_levels,
//.extparms = kenwood_cfg_params,
@ -1260,7 +1262,9 @@ const struct rig_caps powersdr_caps =
.has_set_level = POWERSDR_LEVEL_SET,
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {}, /* FIXME: granularity */
.level_gran = {
[LVL_KEYSPD] = { .min = { .i = 5 }, .max = { .i = 60 }, .step = { .i = 1 } },
}, /* FIXME: granularity */
.parm_gran = {},
//.extlevels = elecraft_ext_levels,
//.extparms = kenwood_cfg_params,

Wyświetl plik

@ -143,7 +143,9 @@ const struct rig_caps k2_caps =
.has_set_level = RIG_LEVEL_SET(K2_LEVEL_ALL),
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {}, /* FIXME: granularity */
.level_gran = {
#include "level_gran_elecraft.h"
}, /* FIXME: granularity */
.parm_gran = {},
.extlevels = elecraft_ext_levels,
.extparms = kenwood_cfg_params,

Wyświetl plik

@ -216,8 +216,7 @@ const struct rig_caps k3_caps =
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
// cppcheck-suppress *
[LVL_KEYSPD] = { .min = { .i = 8 }, .max = { .i = 50 }, .step = { .i = 1 } },
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 10 }, .step = { .i = 10 } },
#include "level_gran_elecraft.h"
},
.parm_gran = {},
.extlevels = k3_ext_levels,
@ -369,7 +368,7 @@ const struct rig_caps k3s_caps =
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
[LVL_KEYSPD] = { .min = { .i = 8 }, .max = { .i = 50 }, .step = { .i = 1 } },
#include "level_gran_elecraft.h"
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 15 }, .step = { .i = 5 } },
},
.parm_gran = {},
@ -522,13 +521,16 @@ const struct rig_caps k4_caps =
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
[LVL_KEYSPD] = { .min = { .i = 8 }, .max = { .i = 50 }, .step = { .i = 1 } },
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 15 }, .step = { .i = 5 } },
#include "level_gran_elecraft.h"
[LVL_CWPITCH] = { .min = { .i = 250 }, .max = { .i = 950 }, .step = { .i = 10 } },
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 15 }, .step = { .i = 5 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 255 }, .step = { .i = 10 } },
[LVL_PREAMP] = { .min = { .i = 0 }, .max = { .i = 30}, .step = { .i = 10 } },
},
.parm_gran = {},
.extlevels = k3_ext_levels,
.extparms = kenwood_cfg_params,
.preamp = { 1, RIG_DBLST_END, },
.preamp = { 10, 20, 30, RIG_DBLST_END, },
.attenuator = { 5, 10, 15, RIG_DBLST_END, },
.max_rit = Hz(9990),
.max_xit = Hz(9990),
@ -536,6 +538,8 @@ const struct rig_caps k4_caps =
.vfo_ops = K3_VFO_OP,
.targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE,
.transceive = RIG_TRN_RIG,
.agc_level_count = 3,
.agc_levels = { RIG_AGC_OFF, RIG_AGC_SLOW, RIG_AGC_FAST },
.bank_qty = 0,
.chan_desc_sz = 0,
@ -674,8 +678,7 @@ const struct rig_caps kx3_caps =
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
[LVL_KEYSPD] = { .min = { .i = 8 }, .max = { .i = 50 }, .step = { .i = 1 } },
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 10 }, .step = { .i = 10 } },
#include "level_gran_elecraft.h"
},
.parm_gran = {},
.extlevels = kx3_ext_levels,
@ -826,8 +829,7 @@ const struct rig_caps kx2_caps =
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE, /* FIXME: parms */
.level_gran = {
[LVL_KEYSPD] = { .min = { .i = 8 }, .max = { .i = 50 }, .step = { .i = 1 } },
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 10 }, .step = { .i = 10 } },
#include "level_gran_elecraft.h"
},
.parm_gran = {},
.extlevels = kx3_ext_levels,

Wyświetl plik

@ -0,0 +1,30 @@
// Once included these values can be overidden in the back-end
// Known variants are PREAMP, ATT, NB, CWPITCH, IF, NOTCHF, VOXDELAY, BKINDL, BKIN_DLYMS, RFPOWER_METER(255 or 100), RFPOWER_METER_WATTS(255 or 100)
// cppcheck-suppress *
/* raw data */
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
/* levels with dB units */
[LVL_PREAMP] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 10 } },
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 10 }, .step = { .i = 10 } },
[LVL_STRENGTH] = { .min = { .i = 0 }, .max = { .i = 60 }, .step = { .i = 0 } },
[LVL_NB] = { .min = { .f = 0 }, .max = { .f = 10 }, .step = { .f = 1 } },
/* levels with WPM units */
[LVL_KEYSPD] = { .min = { .i = 8 }, .max = { .i = 50 }, .step = { .i = 1 } },
/* levels with Hz units */
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 800 }, .step = { .i = 10 } },
/* levels with time units */
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 255 }, .step = { .i = 50 } },
/* levels with 0-1 values -- increment based on rig's range */
[LVL_NR] = { .min = { .f = 0 }, .max = { .f = 1 }, .step = { .f = 1.0f/10.0f } },
[LVL_AF] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/255.0f } },
[LVL_RF] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/255.0f } },
[LVL_RFPOWER] = { .min = { .f = .05 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } },
[LVL_RFPOWER_METER] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/255.0f } },
[LVL_RFPOWER_METER_WATTS] = { .min = { .f = .0 }, .max = { .f = 100 }, .step = { .f = 1.0f/255.0f } },
[LVL_SQL] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/100.0f } },
[LVL_MICGAIN] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } },
[LVL_MONITOR_GAIN] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } },
[LVL_COMP] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } },
[LVL_VOXGAIN] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } },
[LVL_ALC] = { .min = { .f = .0 }, .max = { .f = 1 }, .step = { .f = 1.0f/100.0f } },

Wyświetl plik

@ -4,7 +4,7 @@
/* raw data */
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
/* levels with dB units */
[LVL_PREAMP] = { .min = { .i = 10 }, .max = { .i = 20 }, .step = { .i = 10 } },
[LVL_PREAMP] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 10 } },
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 12 }, .step = { .i = 0 } },
[LVL_STRENGTH] = { .min = { .i = 0 }, .max = { .i = 60 }, .step = { .i = 0 } },
/* levels with WPM units */
@ -18,10 +18,10 @@
/* levels with time units */
[LVL_VOXDELAY] = { .min = { .i = 3 }, .max = { .i = 300 }, .step = { .i = 1 } },
[LVL_BKINDL] = { .min = { .i = 30 }, .max = { .i = 3000 }, .step = { .i = 1 } },
[LVL_BKIN_DLYMS] = { .min = { .i = 30 }, .max = { .i = 3000 }, .step = { .i = 1 } },
[LVL_BKIN_DLYMS] = { .min = { .i = 30 }, .max = { .i = 3000 }, .step = { .i = 1 } },
/* level with misc units */
[LVL_SWR] = { .min = { .f = 0 }, .max = { .f = 5.0 }, .step = { .f = 1.0f/255.0f } },
[LVL_BAND_SELECT] = { .min = { .i = 0 }, .max = { .i = 16 }, .step = { .i = 1 } },
[LVL_BAND_SELECT] = { .min = { .i = 0 }, .max = { .i = 16 }, .step = { .i = 1 } },
/* levels with 0-1 values -- increment based on rig's range */
[LVL_NR] = { .min = { .f = 0 }, .max = { .f = 1 }, .step = { .f = 1.0f/10.0f } },
[LVL_NB] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f/10.0f } },

Wyświetl plik

@ -1665,10 +1665,8 @@ const struct rig_caps ts590_caps =
#include "level_gran_kenwood.h"
[LVL_RF] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f / 100.0f } },
[LVL_AF] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f / 100.0f } },
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 30 }, .step = { .i = 1 } },
[LVL_KEYSPD] = {.min = {.i = 4}, .max = {.i = 60}, .step = {.i = 1}},
[LVL_CWPITCH] = {.min = {.i = 400}, .max = {.i = 1000}, .step = {.i = 50}},
[LVL_CWPITCH] = {.min = {.i = 300}, .max = {.i = 1000}, .step = {.i = 50}},
[LVL_BKIN_DLYMS] = {.min = {.i = 0}, .max = {.i = 1000}, .step = {.i = 50}},
[LVL_SLOPE_LOW] = {.min = {.i = 0}, .max = {.i = 2400}, .step = {.i = 10}},
[LVL_SLOPE_HIGH] = {.min = {.i = 0}, .max = {.i = 5000}, .step = {.i = 10}},
@ -1862,10 +1860,8 @@ const struct rig_caps ts590sg_caps =
#include "level_gran_kenwood.h"
[LVL_RF] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f / 100.0f } },
[LVL_AF] = { .min = { .f = 0 }, .max = { .f = 1.0 }, .step = { .f = 1.0f / 100.0f } },
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_VOXDELAY] = { .min = { .i = 0 }, .max = { .i = 30 }, .step = { .i = 1 } },
[LVL_KEYSPD] = {.min = {.i = 4}, .max = {.i = 60}, .step = {.i = 1}},
[LVL_CWPITCH] = {.min = {.i = 400}, .max = {.i = 1000}, .step = {.i = 50}},
[LVL_CWPITCH] = {.min = {.i = 300}, .max = {.i = 1000}, .step = {.i = 50}},
[LVL_BKIN_DLYMS] = {.min = {.i = 0}, .max = {.i = 1000}, .step = {.i = 50}},
[LVL_SLOPE_LOW] = {.min = {.i = 0}, .max = {.i = 2400}, .step = {.i = 10}},
[LVL_SLOPE_HIGH] = {.min = {.i = 0}, .max = {.i = 5000}, .step = {.i = 10}},

Wyświetl plik

@ -565,6 +565,7 @@ const struct rig_caps ts870s_caps =
.level_gran =
{
#include "level_gran_kenwood.h"
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 18 }, .step = { .i = 6 } },
},
.parm_gran = {},
.ctcss_list = kenwood38_ctcss_list,

Wyświetl plik

@ -26,6 +26,7 @@
#include <hamlib/rig.h>
#include "kenwood.h"
#include "cal.h"
#include "misc.h"
// TODO: Copied from TS-480, to be verified
#define TS890_VFO (RIG_VFO_A|RIG_VFO_B)
@ -47,10 +48,16 @@
int kenwood_ts890_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
{
char levelbuf[16];
int kenwood_val;
int kenwood_val, retval;
rig_debug(RIG_DEBUG_TRACE, "%s called\n", __func__);
retval = check_level_param(rig, level, val, NULL);
if (retval != RIG_OK)
{
return retval;
}
switch (level)
{
case RIG_LEVEL_RF:
@ -68,32 +75,20 @@ int kenwood_ts890_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
/* possible values for TS890 0(=off), 1(=slow), 2(=mid), 3(=fast), 4(=off/Last) */
rig_debug(RIG_DEBUG_VERBOSE, "%s TS890S RIG_LEVEL_AGC\n", __func__);
switch (val.i)
{
case RIG_AGC_OFF:
kenwood_val = 0;
break;
case RIG_AGC_SLOW:
kenwood_val = 1;
break;
case RIG_AGC_MEDIUM:
kenwood_val = 2;
break;
case RIG_AGC_FAST:
kenwood_val = 3;
break;
case RIG_AGC_AUTO:
kenwood_val = 4;
break;
default:
rig_debug(RIG_DEBUG_ERR, "%s: unsupported agc value", __func__);
kenwood_val = -1; /* Flag invalid value */
for (int j = 0; j < rig->caps->agc_level_count; j++)
{
if (val.i == rig->caps->agc_levels[j])
{
kenwood_val = j;
break;
}
}
if ( kenwood_val < 0)
{
rig_debug(RIG_DEBUG_ERR, "%s: unsupported agc value:%d\n", __func__, val.i);
return -RIG_EINVAL;
}
}
SNPRINTF(levelbuf, sizeof(levelbuf), "GC%d", kenwood_val);
break;
@ -228,47 +223,23 @@ int kenwood_ts890_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
return RIG_OK;
case RIG_LEVEL_AGC:
retval = kenwood_transaction(rig, "GC", ackbuf, sizeof(ackbuf));
ack_len_expected = 3;
retval = kenwood_safe_transaction(rig, "GC", ackbuf, sizeof(ackbuf), 3);
if (RIG_OK != retval)
{
return retval;
}
ack_len = strlen(ackbuf);
if (ack_len != ack_len_expected)
{
levelint = ackbuf[2] - '0'; /* atoi */
if (levelint >= 0 && levelint < rig->caps->agc_level_count)
{
val->i = rig->caps->agc_levels[levelint];
}
else
{
rig_debug(RIG_DEBUG_ERR, "%s: unknown agc value: %s\n", __func__, ackbuf);
return -RIG_EPROTO;
}
switch (ackbuf[ack_len_expected - 1])
{
case '0':
val->i = RIG_AGC_OFF;
break;
case '1':
val->i = RIG_AGC_SLOW;
break;
case '2':
val->i = RIG_AGC_MEDIUM;
break;
case '3':
val->i = RIG_AGC_FAST;
break;
case '4':
val->i = RIG_AGC_AUTO;
break;
default:
return -RIG_EPROTO;
}
}
return RIG_OK;

Wyświetl plik

@ -80,6 +80,7 @@ const struct rig_caps ts930_caps =
.level_gran =
{
#include "level_gran_kenwood.h"
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 18 }, .step = { .i = 6 } },
},
.parm_gran = {},
.preamp = { RIG_DBLST_END, }, /* FIXME: preamp list */

Wyświetl plik

@ -127,7 +127,9 @@ const struct rig_caps xg3_caps =
.has_set_level = RIG_LEVEL_SET(XG3_LEVEL_ALL),
.has_get_parm = XG3_PARM_ALL,
.has_set_parm = XG3_PARM_ALL,
.level_gran = {}, /* FIXME: granularity */
.level_gran = {
#include "level_gran_elecraft.h"
}, /* FIXME: granularity */
.parm_gran = {},
.extparms = kenwood_cfg_params,
.max_ifshift = Hz(0),

Wyświetl plik

@ -97,6 +97,7 @@ const struct rig_caps ftdx101mp_caps =
.has_get_parm = RIG_PARM_NONE,
.has_set_parm = RIG_PARM_NONE,
.level_gran = {
#include "level_gran_yaesu.h"
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },

Wyświetl plik

@ -4,14 +4,14 @@
/* raw data */
[LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } },
/* levels with dB units */
[LVL_PREAMP] = { .min = { .i = 10 }, .max = { .i = 20 }, .step = { .i = 10 } },
[LVL_ATT] = { .min = { .i = 12 }, .max = { .i = 12 }, .step = { .i = 0 } },
[LVL_PREAMP] = { .min = { .i = 0 }, .max = { .i = 20 }, .step = { .i = 10 } },
[LVL_ATT] = { .min = { .i = 0 }, .max = { .i = 12 }, .step = { .i = 0 } },
[LVL_STRENGTH] = { .min = { .i = 0 }, .max = { .i = 60 }, .step = { .i = 0 } },
[LVL_NB] = { .min = { .f = 0 }, .max = { .f = 10 }, .step = { .f = 1 } },
/* levels with WPM units */
[LVL_KEYSPD] = { .min = { .i = 4 }, .max = { .i = 60 }, .step = { .i = 1 } },
/* levels with Hz units */
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 50 } },
[LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } },
[LVL_IF] = { .min = { .i = -1200 }, .max = { .i = 1200 }, .step = { .i = 20 } },
[LVL_NOTCHF] = { .min = { .i = 1 }, .max = { .i = 3200 }, .step = { .i = 10 } },
/* levels with time units */

Wyświetl plik

@ -972,6 +972,7 @@ static const struct
int check_level_param(RIG *rig, setting_t level, value_t val, gran_t **gran)
{
gran_t *this_gran;
float maxval;
this_gran = &rig->caps->level_gran[rig_setting2idx(level)];
@ -982,13 +983,21 @@ int check_level_param(RIG *rig, setting_t level, value_t val, gran_t **gran)
if (RIG_LEVEL_IS_FLOAT(level))
{
/* If min==max==0, all values are OK here but may be checked later */
if (this_gran->min.f == 0.0f && this_gran->max.f == 0.0f)
/* If min==max==step==0, all values are OK here */
maxval = this_gran->max.f;
if (this_gran->min.f == 0.0f && maxval == 0.0f)
{
return RIG_OK;
/* if step==0 also, we're good */
if (this_gran->step.f == 0.0f)
{
return RIG_OK;
}
/* non-zero step, check for max of 1.0 */
maxval = 1.0f;
}
if (val.f < this_gran->min.f || val.f > this_gran->max.f)
if (val.f < this_gran->min.f || val.f > maxval)
{
return -RIG_EINVAL;
}