kopia lustrzana https://github.com/Hamlib/Hamlib
Add SPECTRUM_ATT level (also supported by Kenwood rigs). Get VFO frequency for Icom spectrum edge ranges (if not cached). Fix preamp levels based on docs. Add supported AGC levels to recent Icom rigs.
rodzic
26ea916ca7
commit
12527581b0
|
@ -941,7 +941,7 @@ typedef uint64_t rig_level_e;
|
|||
#define RIG_LEVEL_SPECTRUM_SPEED CONSTANT_64BIT_FLAG(44) /*!< \c SPECTRUM_SPEED -- Spectrum scope update speed, arg int (highest is fastest, define rig-specific granularity) */
|
||||
#define RIG_LEVEL_SPECTRUM_REF CONSTANT_64BIT_FLAG(45) /*!< \c SPECTRUM_REF -- Spectrum scope reference display level, arg float (dB, define rig-specific granularity) */
|
||||
#define RIG_LEVEL_SPECTRUM_AVG CONSTANT_64BIT_FLAG(46) /*!< \c SPECTRUM_AVG -- Spectrum scope averaging mode, arg int (see struct rig_spectrum_avg_mode). Supported averaging modes defined in rig caps. */
|
||||
#define RIG_LEVEL_47 CONSTANT_64BIT_FLAG(47) /*!< \c Future use */
|
||||
#define RIG_LEVEL_SPECTRUM_ATT CONSTANT_64BIT_FLAG(47) /*!< \c SPECTRUM_ATT -- Spectrum scope attenuator, arg int (dB). Supported attenuator values defined in rig caps. */
|
||||
#define RIG_LEVEL_48 CONSTANT_64BIT_FLAG(48) /*!< \c Future use */
|
||||
#define RIG_LEVEL_49 CONSTANT_64BIT_FLAG(49) /*!< \c Future use */
|
||||
#define RIG_LEVEL_50 CONSTANT_64BIT_FLAG(50) /*!< \c Future use */
|
||||
|
@ -1744,7 +1744,7 @@ struct rig_caps {
|
|||
tone_t *dcs_list; /*!< DCS code list, zero ended */
|
||||
|
||||
int preamp[HAMLIB_MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */
|
||||
int attenuator[HAMLIB_MAXDBLSTSIZ]; /*!< Preamp list in dB, 0 terminated */
|
||||
int attenuator[HAMLIB_MAXDBLSTSIZ]; /*!< Attenuator list in dB, 0 terminated */
|
||||
shortfreq_t max_rit; /*!< max absolute RIT */
|
||||
shortfreq_t max_xit; /*!< max absolute XIT */
|
||||
shortfreq_t max_ifshift; /*!< max absolute IF-SHIFT */
|
||||
|
@ -1794,6 +1794,7 @@ struct rig_caps {
|
|||
enum rig_spectrum_mode_e spectrum_modes[HAMLIB_MAX_SPECTRUM_MODES]; /*!< Supported spectrum scope modes. Last entry must be RIG_SPECTRUM_MODE_NONE. */
|
||||
freq_t spectrum_spans[HAMLIB_MAX_SPECTRUM_SPANS]; /*!< Supported spectrum scope frequency spans in Hz in center mode. Last entry must be 0. */
|
||||
struct rig_spectrum_avg_mode spectrum_avg_modes[HAMLIB_MAX_SPECTRUM_AVG_MODES]; /*!< Supported spectrum scope averaging modes. Last entry must have NULL name. */
|
||||
int spectrum_attenuator[HAMLIB_MAXDBLSTSIZ]; /*!< Spectrum attenuator list in dB, 0 terminated */
|
||||
|
||||
const struct confparams *cfgparams; /*!< Configuration parameters. */
|
||||
const rig_ptr_t priv; /*!< Private data. */
|
||||
|
|
|
@ -24,17 +24,14 @@
|
|||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h> /* String function definitions */
|
||||
|
||||
#include <hamlib/rig.h>
|
||||
#include "token.h"
|
||||
#include "idx_builtin.h"
|
||||
|
||||
#include "icom.h"
|
||||
#include "icom_defs.h"
|
||||
#include "frame.h"
|
||||
#include "misc.h"
|
||||
#include "bandplan.h"
|
||||
|
||||
#define IC7000_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_WFM)
|
||||
|
@ -233,11 +230,13 @@ const struct rig_caps ic7000_caps =
|
|||
.parm_gran = {},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = common_dcs_list,
|
||||
.preamp = { 10, RIG_DBLST_END, }, /* FIXME: TBC it's a guess*/
|
||||
.preamp = { 10, RIG_DBLST_END, }, /* FIXME: TBC it's a guess */
|
||||
.attenuator = { 12, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0), /* TODO */
|
||||
.agc_level_count = 3,
|
||||
.agc_levels = { RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC7000_VFO_OPS,
|
||||
.scan_ops = IC7000_SCAN_OPS,
|
||||
|
|
|
@ -244,11 +244,13 @@ const struct rig_caps ic7100_caps =
|
|||
.parm_gran = {},
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = common_dcs_list,
|
||||
.preamp = {20, RIG_DBLST_END, },
|
||||
.preamp = { 1, 2, RIG_DBLST_END, },
|
||||
.attenuator = {20, RIG_DBLST_END, },
|
||||
.max_rit = kHz(9.999),
|
||||
.max_xit = kHz(9.999),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 3,
|
||||
.agc_levels = { RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC7100_VFO_OPS,
|
||||
.scan_ops = IC7100_SCAN_OPS,
|
||||
|
|
|
@ -163,11 +163,13 @@ const struct rig_caps ic7200_caps =
|
|||
.parm_gran = {},
|
||||
.ctcss_list = NULL,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, RIG_DBLST_END, }, /* FIXME: TBC it's a guess*/
|
||||
.preamp = { 10, RIG_DBLST_END, }, /* FIXME: TBC it's a guess */
|
||||
.attenuator = { 20, RIG_DBLST_END, }, /* value taken from p.45 of manual*/
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 3,
|
||||
.agc_levels = { RIG_AGC_OFF, RIG_AGC_FAST, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC7200_VFO_OPS,
|
||||
.scan_ops = IC7200_SCAN_OPS,
|
||||
|
|
|
@ -798,7 +798,7 @@ const struct rig_caps ic9700_caps =
|
|||
.extlevels = icom_ext_levels,
|
||||
.ctcss_list = full_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 1, 2, 3, RIG_DBLST_END, },
|
||||
.preamp = { 1, 2, RIG_DBLST_END, },
|
||||
.attenuator = { 10, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
|
|
|
@ -167,6 +167,8 @@ const struct rig_caps ic7410_caps =
|
|||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 4,
|
||||
.agc_levels = { RIG_AGC_OFF, RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC7410_VFO_OPS,
|
||||
.scan_ops = IC7410_SCAN_OPS,
|
||||
|
|
|
@ -23,11 +23,9 @@
|
|||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h> /* String function definitions */
|
||||
|
||||
#include <hamlib/rig.h>
|
||||
#include "token.h"
|
||||
#include "idx_builtin.h"
|
||||
|
||||
#include "icom.h"
|
||||
|
@ -36,7 +34,6 @@
|
|||
#include "misc.h"
|
||||
#include "bandplan.h"
|
||||
|
||||
|
||||
#define IC756_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM)
|
||||
#define IC756_1HZ_TS_MODES IC756_ALL_RX_MODES
|
||||
|
||||
|
@ -182,6 +179,8 @@ const struct rig_caps ic756_caps =
|
|||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(0),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 3,
|
||||
.agc_levels = { RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC756_VFO_OPS,
|
||||
.scan_ops = IC756_SCAN_OPS,
|
||||
|
@ -344,6 +343,8 @@ const struct rig_caps ic756pro_caps =
|
|||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(0),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 3,
|
||||
.agc_levels = { RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC756_VFO_OPS,
|
||||
.scan_ops = IC756_SCAN_OPS,
|
||||
|
@ -581,6 +582,8 @@ const struct rig_caps ic756pro2_caps =
|
|||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 3,
|
||||
.agc_levels = { RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC756_VFO_OPS,
|
||||
.scan_ops = IC756_SCAN_OPS,
|
||||
|
@ -1011,6 +1014,8 @@ const struct rig_caps ic756pro3_caps =
|
|||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 3,
|
||||
.agc_levels = { RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC756_VFO_OPS | RIG_OP_TUNE,
|
||||
.scan_ops = IC756_SCAN_OPS,
|
||||
|
|
|
@ -205,11 +205,13 @@ const struct rig_caps ic7600_caps =
|
|||
.extparms = icom_ext_parms,
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* FIXME: TBC */
|
||||
.preamp = { 10, 16, RIG_DBLST_END, },
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 3,
|
||||
.agc_levels = { RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC7600_VFO_OPS,
|
||||
.scan_ops = IC7600_SCAN_OPS,
|
||||
|
|
|
@ -286,7 +286,7 @@ const struct rig_caps ic7610_caps =
|
|||
.extlevels = icom_ext_levels,
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* FIXME: TBC */
|
||||
.preamp = { 12, 20, RIG_DBLST_END, },
|
||||
.attenuator = { 6, 12, 18, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h> /* String function definitions */
|
||||
|
||||
#include <hamlib/rig.h>
|
||||
|
@ -32,8 +31,6 @@
|
|||
|
||||
#include "icom.h"
|
||||
#include "icom_defs.h"
|
||||
#include "frame.h"
|
||||
#include "misc.h"
|
||||
#include "bandplan.h"
|
||||
|
||||
#define IC7700_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_PSK|RIG_MODE_PSKR)
|
||||
|
@ -193,6 +190,8 @@ const struct rig_caps ic7700_caps =
|
|||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 4,
|
||||
.agc_levels = { RIG_AGC_OFF, RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = 0,
|
||||
.vfo_ops = IC7700_VFO_OPS,
|
||||
.scan_ops = IC7700_SCAN_OPS,
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h> /* String function definitions */
|
||||
|
||||
#include <hamlib/rig.h>
|
||||
|
@ -32,8 +31,6 @@
|
|||
|
||||
#include "icom.h"
|
||||
#include "icom_defs.h"
|
||||
#include "frame.h"
|
||||
#include "misc.h"
|
||||
#include "bandplan.h"
|
||||
|
||||
#define IC7800_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_FM|RIG_MODE_PSK|RIG_MODE_PSKR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTAM|RIG_MODE_PKTFM)
|
||||
|
@ -191,11 +188,13 @@ const struct rig_caps ic7800_caps =
|
|||
.ext_tokens = ic7800_ext_tokens,
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* FIXME: TBC */
|
||||
.preamp = { 10, 16, RIG_DBLST_END, },
|
||||
.attenuator = { 3, 6, 9, 12, 15, 18, 21, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 4,
|
||||
.agc_levels = { RIG_AGC_OFF, RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE,
|
||||
.vfo_ops = IC7800_VFO_OPS,
|
||||
.scan_ops = IC7800_SCAN_OPS,
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
#define IC785x_FUNCS (RIG_FUNC_NB|RIG_FUNC_COMP|RIG_FUNC_VOX|RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_SBKIN|RIG_FUNC_FBKIN|RIG_FUNC_NR|RIG_FUNC_MON|RIG_FUNC_MN|RIG_FUNC_ANF|RIG_FUNC_VSC|RIG_FUNC_LOCK|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_TUNER|RIG_FUNC_APF|RIG_FUNC_DUAL_WATCH|RIG_FUNC_TRANSCEIVE|RIG_FUNC_SPECTRUM|RIG_FUNC_SPECTRUM_HOLD)
|
||||
|
||||
#define IC785x_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_APF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_SPECTRUM_MODE|RIG_LEVEL_SPECTRUM_SPAN|RIG_LEVEL_SPECTRUM_SPEED|RIG_LEVEL_SPECTRUM_REF|RIG_LEVEL_SPECTRUM_AVG|RIG_LEVEL_SPECTRUM_EDGE_LOW|RIG_LEVEL_SPECTRUM_EDGE_HIGH)
|
||||
#define IC785x_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|RIG_LEVEL_BALANCE|RIG_LEVEL_NR|RIG_LEVEL_PBT_IN|RIG_LEVEL_PBT_OUT|RIG_LEVEL_CWPITCH|RIG_LEVEL_RFPOWER|RIG_LEVEL_MICGAIN|RIG_LEVEL_KEYSPD|RIG_LEVEL_NOTCHF_RAW|RIG_LEVEL_SQL|RIG_LEVEL_RAWSTR|RIG_LEVEL_STRENGTH|RIG_LEVEL_AF|RIG_LEVEL_RF|RIG_LEVEL_APF|RIG_LEVEL_VOXGAIN|RIG_LEVEL_ANTIVOX|RIG_LEVEL_VOXDELAY|RIG_LEVEL_SWR|RIG_LEVEL_ALC|RIG_LEVEL_RFPOWER_METER|RIG_LEVEL_RFPOWER_METER_WATTS|RIG_LEVEL_COMP_METER|RIG_LEVEL_VD_METER|RIG_LEVEL_ID_METER|RIG_LEVEL_MONITOR_GAIN|RIG_LEVEL_NB|RIG_LEVEL_SPECTRUM_MODE|RIG_LEVEL_SPECTRUM_SPAN|RIG_LEVEL_SPECTRUM_SPEED|RIG_LEVEL_SPECTRUM_REF|RIG_LEVEL_SPECTRUM_AVG|RIG_LEVEL_SPECTRUM_EDGE_LOW|RIG_LEVEL_SPECTRUM_EDGE_HIGH|RIG_LEVEL_SPECTRUM_ATT)
|
||||
|
||||
#define IC785x_VFOS (RIG_VFO_MAIN|RIG_VFO_SUB|RIG_VFO_MEM)
|
||||
#define IC785x_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|RIG_PARM_TIME|RIG_PARM_BEEP)
|
||||
|
@ -280,11 +280,13 @@ const struct rig_caps ic785x_caps =
|
|||
.extlevels = icom_ext_levels,
|
||||
.ctcss_list = common_ctcss_list,
|
||||
.dcs_list = NULL,
|
||||
.preamp = { 10, 20, RIG_DBLST_END, }, /* FIXME: TBC */
|
||||
.preamp = { 12, 20, RIG_DBLST_END, },
|
||||
.attenuator = { 3, 6, 9, 12, 15, 18, 21, RIG_DBLST_END, },
|
||||
.max_rit = Hz(9999),
|
||||
.max_xit = Hz(9999),
|
||||
.max_ifshift = Hz(0),
|
||||
.agc_level_count = 4,
|
||||
.agc_levels = { RIG_AGC_OFF, RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.agc_level_count = 3,
|
||||
.agc_levels = { RIG_AGC_FAST, RIG_AGC_MEDIUM, RIG_AGC_SLOW },
|
||||
.targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE | RIG_TARGETABLE_SPECTRUM,
|
||||
|
@ -415,6 +417,7 @@ const struct rig_caps ic785x_caps =
|
|||
.name = "4",
|
||||
},
|
||||
},
|
||||
.spectrum_attenuator = { 10, 20, 30, RIG_DBLST_END, },
|
||||
|
||||
.cfgparams = icom_cfg_params,
|
||||
.set_conf = icom_set_conf,
|
||||
|
|
|
@ -2789,7 +2789,7 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
|
||||
if (i == HAMLIB_MAXDBLSTSIZ || rs->preamp[i] == 0)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported preamp set_level %ddB",
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported preamp set_level %ddB\n",
|
||||
__func__, val.i);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
@ -2937,7 +2937,7 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
break;
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported LEVEL_AGC %d",
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported LEVEL_AGC %d\n",
|
||||
__func__, val.i);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
@ -3010,7 +3010,7 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
icom_val = SCOPE_MODE_SCROLL_F;
|
||||
break;
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported spectrum mode %d", __func__, val.i);
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported spectrum mode %d\n", __func__, val.i);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
||||
|
@ -3127,8 +3127,32 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|
|||
break;
|
||||
}
|
||||
|
||||
case RIG_LEVEL_SPECTRUM_ATT:
|
||||
lvl_cn = C_CTL_SCP;
|
||||
lvl_sc = S_SCP_ATT;
|
||||
cmd_len = 2;
|
||||
|
||||
for (i = 0; i < HAMLIB_MAXDBLSTSIZ; i++)
|
||||
{
|
||||
if (rig->caps->spectrum_attenuator[i] == val.i)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (val.i != 0 && (i == HAMLIB_MAXDBLSTSIZ || rig->caps->spectrum_attenuator[i] == 0))
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported spectrum attenuator level %ddB\n",
|
||||
__func__, val.i);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
||||
cmdbuf[0] = icom_get_spectrum_vfo(rig, vfo);
|
||||
to_bcd(cmdbuf + 1, val.i, 5 * 2);
|
||||
break;
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_level %s", __func__,
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_level %s\n", __func__,
|
||||
rig_strlevel(level));
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
@ -3440,8 +3464,16 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
break;
|
||||
}
|
||||
|
||||
case RIG_LEVEL_SPECTRUM_ATT:
|
||||
lvl_cn = C_CTL_SCP;
|
||||
lvl_sc = S_SCP_ATT;
|
||||
cmd_len = 1;
|
||||
|
||||
cmdbuf[0] = icom_get_spectrum_vfo(rig, vfo);
|
||||
break;
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_level %s", __func__,
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_level %s\n", __func__,
|
||||
rig_strlevel(level));
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
@ -3502,7 +3534,7 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
|
||||
if (!found)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unexpected AGC 0x%02x", __func__,
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unexpected AGC 0x%02x\n", __func__,
|
||||
icom_val);
|
||||
RETURNFUNC(-RIG_EPROTO);
|
||||
}
|
||||
|
@ -3528,7 +3560,7 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
break;
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unexpected AGC 0x%02x", __func__,
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unexpected AGC 0x%02x\n", __func__,
|
||||
icom_val);
|
||||
RETURNFUNC(-RIG_EPROTO);
|
||||
}
|
||||
|
@ -3650,7 +3682,7 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
|
||||
if (icom_val > HAMLIB_MAXDBLSTSIZ || rs->preamp[icom_val - 1] == 0)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported preamp get_level %ddB",
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported preamp get_level %ddB\n",
|
||||
__func__, icom_val);
|
||||
RETURNFUNC(-RIG_EPROTO);
|
||||
}
|
||||
|
@ -3674,7 +3706,7 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
val->i = RIG_SPECTRUM_MODE_FIXED_SCROLL;
|
||||
break;
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported spectrum mode %d", __func__, icom_val);
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported spectrum mode %d\n", __func__, icom_val);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
break;
|
||||
|
@ -3698,7 +3730,7 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
val->i = 2;
|
||||
break;
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported spectrum speed %d", __func__, icom_val);
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported spectrum speed %d\n", __func__, icom_val);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
break;
|
||||
|
@ -3727,7 +3759,7 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
|
|||
val->i = (int) from_bcd(respbuf + cmdhead + 5, 5 * 2);
|
||||
break;
|
||||
|
||||
/* RIG_LEVEL_ATT: returned value is already an integer in dB (coded in BCD) */
|
||||
/* RIG_LEVEL_ATT/RIG_LEVEL_SPECTRUM_ATT: returned value is already an integer in dB (coded in BCD) */
|
||||
default:
|
||||
if (RIG_LEVEL_IS_FLOAT(level))
|
||||
{
|
||||
|
@ -3889,7 +3921,7 @@ int icom_set_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t val)
|
|||
else { i++; }
|
||||
}
|
||||
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_ext_level token: %ld", __func__, token);
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_ext_level token: %ld\n", __func__, token);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
||||
|
@ -3995,7 +4027,7 @@ int icom_get_ext_level(RIG *rig, vfo_t vfo, token_t token, value_t *val)
|
|||
else { i++; }
|
||||
}
|
||||
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_ext_level token: %ld", __func__, token);
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_ext_level token: %ld\n", __func__, token);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
||||
|
@ -4427,7 +4459,7 @@ int icom_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift)
|
|||
break;
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported shift %d", __func__,
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported shift %d\n", __func__,
|
||||
rptr_shift);
|
||||
RETURNFUNC(-RIG_EINVAL);
|
||||
}
|
||||
|
@ -4512,7 +4544,7 @@ int icom_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift)
|
|||
break;
|
||||
|
||||
default:
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported shift %d", __func__,
|
||||
rig_debug(RIG_DEBUG_ERR, "%s: unsupported shift %d\n", __func__,
|
||||
rptrbuf[1]);
|
||||
RETURNFUNC(-RIG_EPROTO);
|
||||
}
|
||||
|
@ -8527,6 +8559,16 @@ static int icom_get_spectrum_edge_frequency_range(RIG *rig, vfo_t vfo, int *rang
|
|||
RETURNFUNC(retval);
|
||||
}
|
||||
|
||||
// Get frequency if it is not cached or value is old
|
||||
if (freq == 0 || cache_ms_freq >= 1000)
|
||||
{
|
||||
retval = rig_get_freq(rig, vfo, &freq);
|
||||
if (retval != RIG_OK)
|
||||
{
|
||||
RETURNFUNC(retval);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < ICOM_MAX_SPECTRUM_FREQ_RANGES; i++)
|
||||
{
|
||||
int id = priv_caps->spectrum_edge_frequency_ranges[i].range_id;
|
||||
|
|
|
@ -229,8 +229,7 @@ struct icom_priv_caps
|
|||
int offs_len; /*!< Number of bytes in offset frequency field. 0 defaults to 3 */
|
||||
int serial_USB_echo_check; /*!< Flag to test USB echo state */
|
||||
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 icom_spectrum_scope_caps spectrum_scope_caps; /*!< Icom spectrum scope capabilities, if supported by the rig. Main/Sub scopes in Icom rigs have the same caps. */
|
||||
struct icom_spectrum_edge_frequency_range spectrum_edge_frequency_ranges[ICOM_MAX_SPECTRUM_FREQ_RANGES]; /*!< Icom spectrum scope edge frequencies, if supported by the rig. Last entry should have zeros in all fields. */
|
||||
struct cmdparams *extcmds; /*!< Pointer to extended operations array */
|
||||
|
|
|
@ -161,8 +161,8 @@
|
|||
#define LVL_SPECTRUM_SPEED setting2idx_builtin(RIG_LEVEL_SPECTRUM_SPEED)
|
||||
#define LVL_SPECTRUM_REF setting2idx_builtin(RIG_LEVEL_SPECTRUM_REF)
|
||||
#define LVL_SPECTRUM_AVG setting2idx_builtin(RIG_LEVEL_SPECTRUM_AVG)
|
||||
#define LVL_SPECTRUM_ATT setting2idx_builtin(RIG_LEVEL_SPECTRUM_ATT)
|
||||
|
||||
#define LVL_47 setting2idx_builtin(RIG_LEVEL_47)
|
||||
#define LVL_48 setting2idx_builtin(RIG_LEVEL_48)
|
||||
#define LVL_49 setting2idx_builtin(RIG_LEVEL_49)
|
||||
#define LVL_50 setting2idx_builtin(RIG_LEVEL_50)
|
||||
|
|
|
@ -868,6 +868,7 @@ static struct
|
|||
{ RIG_LEVEL_SPECTRUM_SPEED, "SPECTRUM_SPEED" },
|
||||
{ RIG_LEVEL_SPECTRUM_REF, "SPECTRUM_REF" },
|
||||
{ RIG_LEVEL_SPECTRUM_AVG, "SPECTRUM_AVG" },
|
||||
{ RIG_LEVEL_SPECTRUM_ATT, "SPECTRUM_ATT" },
|
||||
{ RIG_LEVEL_NONE, "" },
|
||||
};
|
||||
|
||||
|
|
|
@ -721,6 +721,20 @@ int dumpcaps(RIG *rig, FILE *fout)
|
|||
rig_sprintf_spectrum_avg_modes(prntbuf, sizeof(prntbuf), caps->spectrum_avg_modes);
|
||||
fprintf(fout, "Spectrum averaging modes: %s\n", prntbuf);
|
||||
|
||||
fprintf(fout, "Spectrum attenuator:");
|
||||
|
||||
for (i = 0; i < HAMLIB_MAXDBLSTSIZ && caps->spectrum_attenuator[i] != 0; i++)
|
||||
{
|
||||
fprintf(fout, " %ddB", caps->spectrum_attenuator[i]);
|
||||
}
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
fprintf(fout, " None");
|
||||
}
|
||||
|
||||
fprintf(fout, "\n");
|
||||
|
||||
fprintf(fout, "Has priv data:\t%c\n", caps->priv != NULL ? 'Y' : 'N');
|
||||
/*
|
||||
* Status is either 'Y'es, 'E'mulated, 'N'o
|
||||
|
|
Ładowanie…
Reference in New Issue