[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. 92ed52b5f75dfaaa31d09
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: Nate B. <n0...@us...> - 2021-05-27 16:02:52
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Hamlib -- Ham radio control libraries". The branch, master has been updated via 92ed52b5f75dfaaa31d092e10737cf8ae8eaac41 (commit) via 673a038de6e70ad0783970e8bf345ff82e9279e7 (commit) via 903df5cb9509ce836f26a9a0dc2e680b962ecf20 (commit) via 3c50d532739eedc0dddfca1d8b18da765b1ab964 (commit) via ae2d79f52317f4892c566a2e27338d8a51f44b31 (commit) via 7913de79e163e65cc473337ba5ca6c85f24d90d2 (commit) via e52b4e7f2ab1379078ae0f1cd98164c23933245e (commit) via de4bbd6a24a0ab5445965a29c152e686ad68d030 (commit) via 12527581b01e1494e5713d53979f882584b3dabb (commit) via 26ea916ca708d3f180072b74d0d509134b44cc2f (commit) via a7de662937b1a286a5d801325bacaf075b0eeeb0 (commit) via b4ba22d3697bccf155960e36e35f1e151cbcea8b (commit) via a419ad0c4beb7fe5228905c56e983d1911bb205c (commit) via 0f5995aaf5ca020be0bbdfb1350228983f860315 (commit) via 8ded4461c27211de3a44a4929360164d93597b00 (commit) via d2f7957e8b289b9259933c8a446b4112941ca31d (commit) via ca6692c022f426c2642379f1d196fbafb8646666 (commit) via a46d5b01bead153e8acd93b11c0f068db0f742c3 (commit) via 36ac8cbd7c72ec70c9d177a25e0e034f4bb86754 (commit) via f08881613e1bd87f01d97f2fd8d8a6666a67af95 (commit) via 552fd6159bcd7a8325ec2d4878c3858ebb7d6e2d (commit) via 8e63ce7a36236be4473b7373cab4ca0f97c326dc (commit) via cbec6cd4bac237affd028173bb2b29119300c1c1 (commit) via 556304d455af2ac6b7c796a2ee630855786528f3 (commit) via ffeb98a0dae8795c685c546a1c9f84082ebd4378 (commit) via 70482d0afa0bf1187bb83e4489999582126b8f62 (commit) via 39951dc28802448c89511ebfb09fb35d3384bf0b (commit) via 2acbd2217384f81ceaec2b6a9d9f92cf7448b0cb (commit) via 238265f2ac8fcc9c3f68cb881f10df388a342b1b (commit) via 3e4ff69b96b853f9aa86799e7c8b3d2435c78b2a (commit) via 505698237521877fc1d03ae28b88235ad6f32b0c (commit) via d6b54f491e13b2797e9c222003f892453e154f87 (commit) via 4da43abdd0e23bea0057ea2481bd8b25ede6f006 (commit) via 54e3efb4660795fc95bf4667a1dfa09b73fe05c7 (commit) via 82c27e55ee78d7665645864dacf406f81bae9181 (commit) via 3d780676b58ffba269803a1b25fbcdfaa8033be7 (commit) via 35c5964f814d5939860e2c05b43ec83975010626 (commit) via bcfd59f3affd60870d8388e222951471c159eca3 (commit) via 86d2b4ee6c07bb7dd2af70a51567f2bc86adf4e6 (commit) via c3441551e6fcf70d54c6cb315df5745f00e32652 (commit) via 8b22a5a9a8bb384da2d759ec8f43e8e1cd295e16 (commit) via 3a2531ad6875585cedcea15cfed57a2dcfa61b14 (commit) via e27a6467d9d89de649d361d3463ee55cb122df50 (commit) via b9f5bdb1a61c6710d024a40d5decc6b76a54e2fe (commit) via ed180e26103fa450c8e201c4a1af3bf4f196723b (commit) from 8d423e9cd133704b35712ce5359689dfe85d1464 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 92ed52b5f75dfaaa31d092e10737cf8ae8eaac41 Author: Mike Black W9MDB <mdb...@ya...> Date: Thu May 27 10:19:49 2021 -0500 Zero out response in flex6xxx.c -- was generating funky error messages diff --git a/rigs/kenwood/flex6xxx.c b/rigs/kenwood/flex6xxx.c index 387ada4b..4fca044b 100644 --- a/rigs/kenwood/flex6xxx.c +++ b/rigs/kenwood/flex6xxx.c @@ -580,10 +580,11 @@ int flex6k_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) { const char *ptt_cmd; int err; - char response[16]; + char response[16] = ""; rig_debug(RIG_DEBUG_VERBOSE, "%s called\n", __func__); + if (!ptt) { return -RIG_EINVAL; @@ -606,7 +607,7 @@ int flex6k_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) int flex6k_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) { const char *ptt_cmd; - char response[16]; + char response[16] = ""; int err; int retry = 3; @@ -1081,7 +1082,7 @@ const struct rig_caps f6k_caps = RIG_MODEL(RIG_MODEL_F6K), .model_name = "6xxx", .mfg_name = "FlexRadio", - .version = "20201227.0", + .version = "20210527.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -1205,7 +1206,7 @@ const struct rig_caps powersdr_caps = RIG_MODEL(RIG_MODEL_POWERSDR), .model_name = "PowerSDR/Thetis", .mfg_name = "FlexRadio/ANAN", - .version = "20201231.0", + .version = "20210527.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, commit 673a038de6e70ad0783970e8bf345ff82e9279e7 Merge: 903df5cb ae2d79f5 Author: Mike Black W9MDB <mdb...@ya...> Date: Thu May 27 09:02:28 2021 -0500 Merge branch 'master' of https://github.com/Hamlib/Hamlib commit 903df5cb9509ce836f26a9a0dc2e680b962ecf20 Author: Mike Black W9MDB <mdb...@ya...> Date: Thu May 27 09:01:48 2021 -0500 Fix RIG_FLUSH_REMOVE #ifdef -- duh.... https://github.com/Hamlib/Hamlib/pull/712 diff --git a/src/misc.c b/src/misc.c index 2b0c31fe..1cc7d65f 100644 --- a/src/misc.c +++ b/src/misc.c @@ -1907,7 +1907,7 @@ int HAMLIB_API parse_hoststr(char *hoststr, char host[256], char port[6]) #undef RIG_FLUSH_REMOVE int HAMLIB_API rig_flush(hamlib_port_t *port) { -#ifdef RIG_FLUSH_REMOVE +#ifndef RIG_FLUSH_REMOVE rig_debug(RIG_DEBUG_TRACE, "%s: called for %s device\n", __func__, port->type.rig == RIG_PORT_SERIAL ? "serial" : "network"); commit 3c50d532739eedc0dddfca1d8b18da765b1ab964 Merge: 7913de79 e52b4e7f Author: Mike Black W9MDB <mdb...@ya...> Date: Thu May 27 07:37:14 2021 -0500 Merge branch 'master' of https://github.com/Hamlib/Hamlib commit ae2d79f52317f4892c566a2e27338d8a51f44b31 Merge: 7913de79 e52b4e7f Author: Mike Black W9MDB <mdb...@ya...> Date: Thu May 27 07:37:14 2021 -0500 Merge branch 'master' of https://github.com/Hamlib/Hamlib commit 7913de79e163e65cc473337ba5ca6c85f24d90d2 Author: Mike Black W9MDB <mdb...@ya...> Date: Thu May 27 07:35:46 2021 -0500 Allow testing removal of rig_flush() https://github.com/Hamlib/Hamlib/pull/712 diff --git a/src/misc.c b/src/misc.c index 7be0c169..a21550bf 100644 --- a/src/misc.c +++ b/src/misc.c @@ -1815,8 +1815,10 @@ int HAMLIB_API parse_hoststr(char *hoststr, char host[256], char port[6]) return -1; } +#undef RIG_FLUSH_REMOVE int HAMLIB_API rig_flush(hamlib_port_t *port) { +#ifdef RIG_FLUSH_REMOVE rig_debug(RIG_DEBUG_TRACE, "%s: called for %s device\n", __func__, port->type.rig == RIG_PORT_SERIAL ? "serial" : "network"); @@ -1834,6 +1836,9 @@ int HAMLIB_API rig_flush(hamlib_port_t *port) } return serial_flush(port); // we must be on serial port +#else + return RIG_OK; +#endif } commit e52b4e7f2ab1379078ae0f1cd98164c23933245e Merge: a419ad0c de4bbd6a Author: Michael Black <mdb...@ya...> Date: Thu May 27 07:31:27 2021 -0500 Merge pull request #712 from mikaelnousiainen/initial-spectrum-scope-support Initial spectrum scope support commit de4bbd6a24a0ab5445965a29c152e686ad68d030 Author: Mikael Nousiainen <mik...@ik...> Date: Thu May 27 10:14:23 2021 +0300 Add comment about implementing spectrum data multicast diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index bc88078d..1972aa56 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -4128,6 +4128,8 @@ static int myspectrum_event(RIG *rig, struct rig_spectrum_line *line, rig_ptr_t rig_debug(RIG_DEBUG_TRACE, "%s: ASCII Spectrum Scope: %s\n", __func__, spectrum_debug); } + // TODO: Push out spectrum data via multicast server once it is implemented + RETURNFUNC(0); } commit 12527581b01e1494e5713d53979f882584b3dabb Author: Mikael Nousiainen <mik...@ik...> Date: Thu May 27 10:12:01 2021 +0300 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. diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 7e6c97db..badebe03 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -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. */ diff --git a/rigs/icom/ic7000.c b/rigs/icom/ic7000.c index a14eaf74..25b8cbfa 100644 --- a/rigs/icom/ic7000.c +++ b/rigs/icom/ic7000.c @@ -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, diff --git a/rigs/icom/ic7100.c b/rigs/icom/ic7100.c index c4f09c1b..d29550ce 100644 --- a/rigs/icom/ic7100.c +++ b/rigs/icom/ic7100.c @@ -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, diff --git a/rigs/icom/ic7200.c b/rigs/icom/ic7200.c index f54430a6..ee48205e 100644 --- a/rigs/icom/ic7200.c +++ b/rigs/icom/ic7200.c @@ -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, diff --git a/rigs/icom/ic7300.c b/rigs/icom/ic7300.c index 2c5413bd..6ef28f27 100644 --- a/rigs/icom/ic7300.c +++ b/rigs/icom/ic7300.c @@ -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), diff --git a/rigs/icom/ic7410.c b/rigs/icom/ic7410.c index d4ffdfd2..fa94fdb6 100644 --- a/rigs/icom/ic7410.c +++ b/rigs/icom/ic7410.c @@ -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, diff --git a/rigs/icom/ic756.c b/rigs/icom/ic756.c index a434f144..bcdb0baa 100644 --- a/rigs/icom/ic756.c +++ b/rigs/icom/ic756.c @@ -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, diff --git a/rigs/icom/ic7600.c b/rigs/icom/ic7600.c index c8340caa..f1686661 100644 --- a/rigs/icom/ic7600.c +++ b/rigs/icom/ic7600.c @@ -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, diff --git a/rigs/icom/ic7610.c b/rigs/icom/ic7610.c index d25eed8e..50b80ca4 100644 --- a/rigs/icom/ic7610.c +++ b/rigs/icom/ic7610.c @@ -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), diff --git a/rigs/icom/ic7700.c b/rigs/icom/ic7700.c index 0a148453..16860597 100644 --- a/rigs/icom/ic7700.c +++ b/rigs/icom/ic7700.c @@ -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, diff --git a/rigs/icom/ic7800.c b/rigs/icom/ic7800.c index 32d0dfec..9409da3d 100644 --- a/rigs/icom/ic7800.c +++ b/rigs/icom/ic7800.c @@ -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, diff --git a/rigs/icom/ic785x.c b/rigs/icom/ic785x.c index 1f9e7f2a..813460d0 100644 --- a/rigs/icom/ic785x.c +++ b/rigs/icom/ic785x.c @@ -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, diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 25c26c49..b81609d3 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -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; diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 7ab80a92..d9a2974b 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -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 */ diff --git a/src/idx_builtin.h b/src/idx_builtin.h index 73263dbf..955cd921 100644 --- a/src/idx_builtin.h +++ b/src/idx_builtin.h @@ -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) diff --git a/src/misc.c b/src/misc.c index 4f8f9990..ee772a95 100644 --- a/src/misc.c +++ b/src/misc.c @@ -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, "" }, }; diff --git a/tests/dumpcaps.c b/tests/dumpcaps.c index 22301ab5..80d1ff2c 100644 --- a/tests/dumpcaps.c +++ b/tests/dumpcaps.c @@ -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 commit 26ea916ca708d3f180072b74d0d509134b44cc2f Author: Mikael Nousiainen <mik...@ik...> Date: Thu May 27 01:09:01 2021 +0300 Implement Icom rig levels: SPECTRUM_EDGE_LOW and SPECTRUM_EDGE_HIGH diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index c4d5e426..25c26c49 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -47,6 +47,7 @@ static int set_vfo_curr(RIG *rig, vfo_t vfo, vfo_t curr_vfo); static int icom_set_default_vfo(RIG *rig); static int icom_get_spectrum_vfo(RIG *rig, vfo_t vfo); +static int icom_get_spectrum_edge_frequency_range(RIG *rig, vfo_t vfo, int *range_id); const cal_table_float_t icom_default_swr_cal = { @@ -3075,6 +3076,57 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) break; } + case RIG_LEVEL_SPECTRUM_EDGE_LOW: + case RIG_LEVEL_SPECTRUM_EDGE_HIGH: { + int range_id; + value_t edge_number_value; + value_t opposite_edge_value; + setting_t level_opposite_edge = + (level == RIG_LEVEL_SPECTRUM_EDGE_LOW) ? + RIG_LEVEL_SPECTRUM_EDGE_HIGH : RIG_LEVEL_SPECTRUM_EDGE_LOW; + + lvl_cn = C_CTL_SCP; + lvl_sc = S_SCP_FEF; + cmd_len = 12; + + // Modify the frequency range currently active + retval = icom_get_spectrum_edge_frequency_range(rig, vfo, &range_id); + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: error getting spectrum edge frequency range\n", __func__); + RETURNFUNC(retval); + } + + // Modify the edge number currently active + retval = icom_get_ext_level(rig, vfo, TOK_SCOPE_EDG, &edge_number_value); + if (retval != RIG_OK) + { + RETURNFUNC(retval); + } + + // Get the current opposite edge frequency + retval = icom_get_level(rig, vfo, level_opposite_edge, &opposite_edge_value); + if (retval != RIG_OK) + { + RETURNFUNC(retval); + } + + to_bcd(cmdbuf, range_id, 1 * 2); + to_bcd(cmdbuf + 1, edge_number_value.i + 1, 1 * 2); + + if (level == RIG_LEVEL_SPECTRUM_EDGE_LOW) + { + to_bcd(cmdbuf + 2, val.i, 5 * 2); + to_bcd(cmdbuf + 7, opposite_edge_value.i, 5 * 2); + } + else + { + to_bcd(cmdbuf + 2, opposite_edge_value.i, 5 * 2); + to_bcd(cmdbuf + 7, val.i, 5 * 2); + } + break; + } + default: rig_debug(RIG_DEBUG_ERR, "%s: unsupported set_level %s", __func__, rig_strlevel(level)); @@ -3346,7 +3398,6 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) case RIG_LEVEL_SPECTRUM_SPEED: lvl_cn = C_CTL_SCP; lvl_sc = S_SCP_SWP; - resp_len = 2; cmd_len = 1; cmdbuf[0] = icom_get_spectrum_vfo(rig, vfo); @@ -3360,6 +3411,35 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) cmdbuf[0] = icom_get_spectrum_vfo(rig, vfo); break; + case RIG_LEVEL_SPECTRUM_EDGE_LOW: + case RIG_LEVEL_SPECTRUM_EDGE_HIGH: { + int range_id; + value_t edge_number_value; + + lvl_cn = C_CTL_SCP; + lvl_sc = S_SCP_FEF; + cmd_len = 2; + + // Get the frequency range currently active + retval = icom_get_spectrum_edge_frequency_range(rig, vfo, &range_id); + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: error getting spectrum edge frequency range\n", __func__); + RETURNFUNC(retval); + } + + // Get the edge number currently active + retval = icom_get_ext_level(rig, vfo, TOK_SCOPE_EDG, &edge_number_value); + if (retval != RIG_OK) + { + RETURNFUNC(retval); + } + + to_bcd(cmdbuf, range_id, 1 * 2); + to_bcd(cmdbuf + 1, edge_number_value.i + 1, 1 * 2); + break; + } + default: rig_debug(RIG_DEBUG_ERR, "%s: unsupported get_level %s", __func__, rig_strlevel(level)); @@ -3639,6 +3719,14 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) break; } + case RIG_LEVEL_SPECTRUM_EDGE_LOW: + val->i = (int) from_bcd(respbuf + cmdhead, 5 * 2); + break; + + case RIG_LEVEL_SPECTRUM_EDGE_HIGH: + 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) */ default: if (RIG_LEVEL_IS_FLOAT(level)) @@ -8418,10 +8506,42 @@ static int icom_get_spectrum_vfo(RIG *rig, vfo_t vfo) { if (rig->caps->targetable_vfo & RIG_TARGETABLE_SPECTRUM) { - return ICOM_GET_VFO_NUMBER(vfo); + RETURNFUNC(ICOM_GET_VFO_NUMBER(vfo)); + } + + RETURNFUNC(0); +} + +static int icom_get_spectrum_edge_frequency_range(RIG *rig, vfo_t vfo, int *range_id) +{ + freq_t freq; + rmode_t mode; + pbwidth_t width; + int cache_ms_freq, cache_ms_mode, cache_ms_width; + int i, retval; + struct icom_priv_caps *priv_caps = (struct icom_priv_caps *) rig->caps->priv; + + retval = rig_get_cache(rig, vfo, &freq, &cache_ms_freq, &mode, &cache_ms_mode, &width, &cache_ms_width); + 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; + if (id < 1) + { + break; + } + if (freq >= priv_caps->spectrum_edge_frequency_ranges[i].low_freq && freq < priv_caps->spectrum_edge_frequency_ranges[i].high_freq) + { + *range_id = id; + RETURNFUNC(RIG_OK); + } } - return 0; + RETURNFUNC(-RIG_EINVAL); } /* commit a7de662937b1a286a5d801325bacaf075b0eeeb0 Merge: b4ba22d3 a419ad0c Author: Mikael Nousiainen <mik...@ik...> Date: Wed May 26 23:41:38 2021 +0300 Merge branch 'master' into initial-spectrum-scope-support commit b4ba22d3697bccf155960e36e35f1e151cbcea8b Author: Mikael Nousiainen <mik...@ik...> Date: Wed May 26 23:40:53 2021 +0300 Implemented initial abstraction for spectrum scope data and support for Icom spectrum data output. The abstraction is based on common features of both Icom and Kenwood rigs. Added TRANSCEIVE func and enumeration of supported AGC levels. Work in progress. diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index fbba054a..c4e5ae12 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -195,6 +195,11 @@ typedef struct s_rig RIG; #define HAMLIB_FLTLSTSIZ 60 /* max mode/filter list size, zero ended */ #define HAMLIB_MAXDBLSTSIZ 8 /* max preamp/att levels supported, zero ended */ #define HAMLIB_CHANLSTSIZ 16 /* max mem_list size, zero ended */ +#define HAMLIB_MAX_AGC_LEVELS 8 /* max AGC levels supported */ +#define HAMLIB_MAX_SPECTRUM_SCOPES 4 /* max number of spectrum scopes supported */ +#define HAMLIB_MAX_SPECTRUM_MODES 5 /* max number of spectrum modes supported */ +#define HAMLIB_MAX_SPECTRUM_AVG_MODES 12 /* max number of spectrum averaging modes supported */ +#define HAMLIB_MAX_SPECTRUM_SPANS 20 /* max number of spectrum modes supported */ #define HAMLIB_MAX_CAL_LENGTH 32 /* max calibration plots in cal_table_t */ #define HAMLIB_MAX_MODES 63 #define HAMLIB_MAX_VFOS 31 @@ -504,6 +509,7 @@ typedef unsigned int vfo_t; #define RIG_TARGETABLE_BANK (1<<9) #define RIG_TARGETABLE_ANT (1<<10) #define RIG_TARGETABLE_ROOFING (1<<11) // roofing filter targetable by VFO +#define RIG_TARGETABLE_SPECTRUM (1<<12) // spectrum scope targetable by VFO #define RIG_TARGETABLE_COMMON (RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_PTT | RIG_TARGETABLE_MEM | RIG_TARGETABLE_BANK) #define RIG_TARGETABLE_ALL 0x7fffffff //! @endcond @@ -920,13 +926,13 @@ typedef uint64_t rig_level_e; #define RIG_LEVEL_MONITOR_GAIN CONSTANT_64BIT_FLAG(37) /*!< \c MONITOR_GAIN -- Monitor gain (level for monitoring of transmitted audio) arg float [0.0 ... 1.0] */ #define RIG_LEVEL_NB CONSTANT_64BIT_FLAG(38) /*!< \c NB -- Noise Blanker level, arg float [0.0 ... 1.0] */ #define RIG_LEVEL_RFPOWER_METER_WATTS CONSTANT_64BIT_FLAG(39) /*!< \c RFPOWER_METER_WATTS -- RF power output meter, arg float [0.0 ... MAX] (output power in watts) */ -#define RIG_LEVEL_40 CONSTANT_64BIT_FLAG(40) /*!< \c Future use */ -#define RIG_LEVEL_41 CONSTANT_64BIT_FLAG(41) /*!< \c Future use */ -#define RIG_LEVEL_42 CONSTANT_64BIT_FLAG(42) /*!< \c Future use */ -#define RIG_LEVEL_43 CONSTANT_64BIT_FLAG(43) /*!< \c Future use */ -#define RIG_LEVEL_44 CONSTANT_64BIT_FLAG(44) /*!< \c Future use */ -#define RIG_LEVEL_45 CONSTANT_64BIT_FLAG(45) /*!< \c Future use */ -#define RIG_LEVEL_46 CONSTANT_64BIT_FLAG(46) /*!< \c Future use */ +#define RIG_LEVEL_SPECTRUM_MODE CONSTANT_64BIT_FLAG(40) /*!< \c SPECTRUM_MODE -- Spectrum scope mode, arg int (see enum rig_spectrum_mode_e). Supported modes defined in rig caps. */ +#define RIG_LEVEL_SPECTRUM_SPAN CONSTANT_64BIT_FLAG(41) /*!< \c SPECTRUM_SPAN -- Spectrum scope span in center mode, arg int (Hz). Supported spans defined in rig caps. */ +#define RIG_LEVEL_SPECTRUM_EDGE_LOW CONSTANT_64BIT_FLAG(42) /*!< \c SPECTRUM_EDGE_LOW -- Spectrum scope low edge in fixed mode, arg int (Hz) */ +#define RIG_LEVEL_SPECTRUM_EDGE_HIGH CONSTANT_64BIT_FLAG(43) /*!< \c SPECTRUM_EDGE_HIGH -- Spectrum scope high edge in fixed mode, arg int (Hz) */ +#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_48 CONSTANT_64BIT_FLAG(48) /*!< \c Future use */ #define RIG_LEVEL_49 CONSTANT_64BIT_FLAG(49) /*!< \c Future use */ @@ -946,7 +952,7 @@ typedef uint64_t rig_level_e; #define RIG_LEVEL_63 CONSTANT_64BIT_FLAG(63) /*!< \c Future use */ //! @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) +#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) #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) @@ -1012,14 +1018,14 @@ typedef uint64_t setting_t; #define RIG_SETTING_MAX 64 /** - * \brief Tranceive mode + * \brief Transceive mode * The rig notifies the host of any event, like freq changed, mode changed, etc. * \def RIG_TRN_OFF * Turn it off - * \brief Tranceive mode + * \brief Transceive mode * \def RIG_TRN_RIG - * RIG_TRN_RIG means the rig acts asynchrousnly - * \brief Tranceive mode + * RIG_TRN_RIG means the rig acts asynchronously + * \brief Transceive mode * \def RIG_TRN_POLL * RIG_TRN_POLL means we have to poll the rig * @@ -1091,9 +1097,9 @@ typedef uint64_t setting_t; #define RIG_FUNC_DSQL CONSTANT_64BIT_FLAG (39) /*!< \c DSQL -- Digital modes squelch */ #define RIG_FUNC_SCEN CONSTANT_64BIT_FLAG (40) /*!< \c SCEN -- scrambler/encryption */ #define RIG_FUNC_SLICE CONSTANT_64BIT_FLAG (41) /*!< \c Rig slice selection -- Flex */ -#define RIG_FUNC_BIT42 CONSTANT_64BIT_FLAG (42) /*!< \c available for future RIG_FUNC items */ -#define RIG_FUNC_BIT43 CONSTANT_64BIT_FLAG (43) /*!< \c available for future RIG_FUNC items */ -#define RIG_FUNC_BIT44 CONSTANT_64BIT_FLAG (44) /*!< \c available for future RIG_FUNC items */ +#define RIG_FUNC_TRANSCEIVE CONSTANT_64BIT_FLAG (42) /*!< \c TRANSCEIVE -- Send radio state changes automatically ON/OFF */ +#define RIG_FUNC_SPECTRUM CONSTANT_64BIT_FLAG (43) /*!< \c SPECTRUM -- Spectrum scope data output ON/OFF */ +#define RIG_FUNC_SPECTRUM_HOLD CONSTANT_64BIT_FLAG (44) /*!< \c SPECTRUM_HOLD -- Pause spectrum scope updates ON/OFF */ #define RIG_FUNC_BIT45 CONSTANT_64BIT_FLAG (45) /*!< \c available for future RIG_FUNC items */ #define RIG_FUNC_BIT46 CONSTANT_64BIT_FLAG (46) /*!< \c available for future RIG_FUNC items */ #define RIG_FUNC_BIT47 CONSTANT_64BIT_FLAG (47) /*!< \c available for future RIG_FUNC items */ @@ -1594,6 +1600,66 @@ typedef int (* confval_cb_t)(RIG *, rig_ptr_t); //! @endcond +/** + * \brief Spectrum scope + */ +struct rig_spectrum_scope +{ + int id; + char *name; +}; + +/** + * \brief Spectrum scope modes + */ +enum rig_spectrum_mode_e { + RIG_SPECTRUM_MODE_NONE = 0, + RIG_SPECTRUM_MODE_CENTER, /*!< Spectrum scope centered around the VFO frequency */ + RIG_SPECTRUM_MODE_FIXED, /*!< Spectrum scope edge frequencies are fixed */ + RIG_SPECTRUM_MODE_CENTER_SCROLL, /*!< Spectrum scope edge frequencies are fixed, but identical to what the center mode would use. Scrolling is enabled. */ + RIG_SPECTRUM_MODE_FIXED_SCROLL, /*!< Spectrum scope edge frequencies are fixed with scrolling enabled */ +}; + +/** + * \brief Spectrum scope averaging modes + */ +struct rig_spectrum_avg_mode +{ + int id; + char *name; +}; + +/** + * \brief Represents a single line of rig spectrum scope FFT data. + * + * The data levels specify the range of the spectrum scope FFT data. + * The minimum level should represent the lowest numeric value and the lowest signal level in dB. + * The maximum level should represent the highest numeric value and the highest signal level in dB. + * The data level values are assumed to represent the dB strength scale in a linear way. + * + * Note that the data level and signal strength ranges may change depending on the settings of the rig. + * At least on Kenwood the sub-scope provides different kind of data compared to the main scope. + */ +struct rig_spectrum_line +{ + int id; /*!< Numeric ID of the spectrum scope data stream identifying the VFO/receiver. First ID is zero. Rigs with multiple scopes usually have identifiers, such as 0 = Main, 1 = Sub. */ + + int data_level_min; /*!< The numeric value that represents the minimum signal level. */ + int data_level_max; /*!< The numeric value that represents the maximum signal level. */ + double signal_strength_min; /*!< The strength of the minimum signal level in dB. */ + double signal_strength_max; /*!< The strength of the maximum signal level in dB. */ + + enum rig_spectrum_mode_e spectrum_mode; /*!< Spectrum mode. */ + + freq_t center_freq; /*!< Center frequency of the spectrum scope in Hz in RIG_SPECTRUM_CENTER mode. */ + freq_t span_freq; /*!< Span of the spectrum scope in Hz in RIG_SPECTRUM_CENTER mode. */ + + freq_t low_edge_freq; /*!< Low edge frequency of the spectrum scope in Hz in RIG_SPECTRUM_FIXED mode. */ + freq_t high_edge_freq; /*!< High edge frequency of the spectrum scope in Hz in RIG_SPECTRUM_FIXED mode. */ + + int spectrum_data_length; /*!< Number of bytes of 8-bit spectrum data in the data buffer. The amount of data may vary if the rig has multiple spectrum scopes, depending on the scope. */ + unsigned char *spectrum_data; /*!< 8-bit spectrum data covering bandwidth of either the span_freq in center mode or from low edge to high edge in fixed mode. A higher value represents higher signal strength. */ +}; /** * \brief Rig data structure. @@ -1665,6 +1731,9 @@ struct rig_caps { shortfreq_t max_xit; /*!< max absolute XIT */ shortfreq_t max_ifshift; /*!< max absolute IF-SHIFT */ + int agc_level_count; /*!< Number of supported AGC levels. Zero indicates all modes should be available (for backwards-compatibility). */ + enum agc_level_e agc_levels[HAMLIB_MAX_AGC_LEVELS]; /*!< Supported AGC levels */ + ann_t announces; /*!< Announces bit field list */ vfo_op_t vfo_ops; /*!< VFO op bit field list */ @@ -1703,7 +1772,12 @@ struct rig_caps { cal_table_float_t vd_meter_cal; /*!< Voltage meter calibration table */ cal_table_float_t id_meter_cal; /*!< Current draw meter calibration table */ - const struct confparams *cfgparams; /*!< Configuration parametres. */ + struct rig_spectrum_scope spectrum_scopes[HAMLIB_MAX_SPECTRUM_SCOPES]; /*!< Supported spectrum scopes. The array index must match the scope ID. Last entry must have NULL name. */ + 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. */ + + const struct confparams *cfgparams; /*!< Configuration parameters. */ const rig_ptr_t priv; /*!< Private data. */ /* @@ -2295,6 +2369,9 @@ typedef int (*pltune_cb_t)(RIG *, rmode_t *, pbwidth_t *, rig_ptr_t); +typedef int (*spectrum_cb_t)(RIG *, + struct rig_spectrum_line *, + rig_ptr_t); //! @endcond @@ -2328,6 +2405,8 @@ struct rig_callbacks { rig_ptr_t dcd_arg; /*!< DCD change argument */ pltune_cb_t pltune; /*!< Pipeline tuning module freq/mode/width callback */ rig_ptr_t pltune_arg; /*!< Pipeline tuning argument */ + spectrum_cb_t spectrum_event; /*!< Spectrum line reception event */ + rig_ptr_t spectrum_arg; /*!< Spectrum line reception argument */ /* etc.. */ }; @@ -2893,6 +2972,11 @@ rig_set_pltune_callback HAMLIB_PARAMS((RIG *, pltune_cb_t, rig_ptr_t)); +extern HAMLIB_EXPORT(int) +rig_set_spectrum_callback HAMLIB_PARAMS((RIG *, + spectrum_cb_t, + rig_ptr_t)); + extern HAMLIB_EXPORT(int) rig_set_twiddle HAMLIB_PARAMS((RIG *rig, int seconds)); @@ -3013,11 +3097,13 @@ extern HAMLIB_EXPORT(const char *) rig_strvfo(vfo_t vfo); extern HAMLIB_EXPORT(const char *) rig_strfunc(setting_t); extern HAMLIB_EXPORT(const char *) rig_strlevel(setting_t); extern HAMLIB_EXPORT(const char *) rig_strparm(setting_t); +extern HAMLIB_EXPORT(const char *) rig_stragclevel(enum agc_level_e level); extern HAMLIB_EXPORT(const char *) rig_strptrshift(rptr_shift_t); extern HAMLIB_EXPORT(const char *) rig_strvfop(vfo_op_t op); extern HAMLIB_EXPORT(const char *) rig_strscan(scan_t scan); extern HAMLIB_EXPORT(const char *) rig_strstatus(enum rig_status_e status); extern HAMLIB_EXPORT(const char *) rig_strmtype(chan_type_t mtype); +extern HAMLIB_EXPORT(const char *) rig_strspectrummode(enum rig_spectrum_mode_e mode); extern HAMLIB_EXPORT(rmode_t) rig_parse_mode(const char *s); extern HAMLIB_EXPORT(vfo_t) rig_parse_vfo(const char *s); diff --git a/rigs/icom/ic7300.c b/rigs/icom/ic7300.c index 5a82e021..2c5413bd 100644 --- a/rigs/icom/ic7300.c +++ b/rigs/icom/ic7300.c @@ -24,17 +24,15 @@ #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 "token.h" #include "icom.h" #include "icom_defs.h" #include "frame.h" -#include "misc.h" #include "bandplan.h" #include "tones.h" @@ -49,9 +47,9 @@ static int ic7300_get_parm(RIG *rig, setting_t parm, value_t *val); #define IC7300_OTHER_TX_MODES (RIG_MODE_FM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR) #define IC7300_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_PKTAM) -#define IC7300_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_LOCK|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_SCOPE|RIG_FUNC_TUNER) +#define IC7300_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_LOCK|RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_SCOPE|RIG_FUNC_TUNER|RIG_FUNC_TRANSCEIVE|RIG_FUNC_SPECTRUM|RIG_FUNC_SPECTRUM_HOLD) -#define IC7300_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|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_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) +#define IC7300_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|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_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 IC7300_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM) #define IC7300_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|RIG_PARM_TIME|RIG_PARM_BEEP) @@ -136,15 +134,15 @@ static int ic7300_get_parm(RIG *rig, setting_t parm, value_t *val); #define IC705_ALL_TX_MODES (RIG_MODE_FM|RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_DSTAR) #define IC705_ALL_RX_MODES (RIG_MODE_FM|RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_PKTAM|RIG_MODE_DSTAR) #define IC705_OTHER_TX_MODES (RIG_MODE_FM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_DSTAR) -#define IC705_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|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_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) +#define IC705_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|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_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) /* * IC9700 items that differ from IC7300 */ #define IC9700_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MAIN|RIG_VFO_SUB|RIG_VFO_MEM|RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B) #define IC9700_PARMS (RIG_PARM_ANN|RIG_PARM_BACKLIGHT|RIG_PARM_TIME|RIG_PARM_BEEP|RIG_PARM_SCREENSAVER) -#define IC9700_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_LOCK|RIG_FUNC_RIT|RIG_FUNC_SCOPE|RIG_FUNC_SATMODE|RIG_FUNC_AFC) -#define IC9700_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|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_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) +#define IC9700_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_LOCK|RIG_FUNC_RIT|RIG_FUNC_SCOPE|RIG_FUNC_SATMODE|RIG_FUNC_AFC|RIG_FUNC_TRANSCEIVE|RIG_FUNC_SPECTRUM|RIG_FUNC_SPECTRUM_HOLD) +#define IC9700_LEVELS (RIG_LEVEL_PREAMP|RIG_LEVEL_ATT|RIG_LEVEL_AGC|RIG_LEVEL_COMP|RIG_LEVEL_BKINDL|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_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_SP... [truncated message content] |