hamlib-cvs-digest Mailing List for Ham Radio Control Libraries (Page 15)
Library to control radio transceivers and receivers
Brought to you by:
n0nb
You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(57) |
Nov
(27) |
Dec
(25) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(41) |
Feb
(101) |
Mar
(60) |
Apr
(32) |
May
(32) |
Jun
(198) |
Jul
(95) |
Aug
(60) |
Sep
(48) |
Oct
(96) |
Nov
(27) |
Dec
(222) |
2002 |
Jan
(180) |
Feb
(46) |
Mar
(68) |
Apr
(11) |
May
(36) |
Jun
(34) |
Jul
(113) |
Aug
(42) |
Sep
(71) |
Oct
(65) |
Nov
(116) |
Dec
(40) |
2003 |
Jan
(32) |
Feb
(92) |
Mar
(29) |
Apr
(102) |
May
(21) |
Jun
(34) |
Jul
(3) |
Aug
(60) |
Sep
(30) |
Oct
(62) |
Nov
(57) |
Dec
(33) |
2004 |
Jan
(28) |
Feb
(46) |
Mar
(16) |
Apr
(14) |
May
(31) |
Jun
(21) |
Jul
(10) |
Aug
(80) |
Sep
(42) |
Oct
(11) |
Nov
(28) |
Dec
(13) |
2005 |
Jan
(35) |
Feb
(26) |
Mar
(20) |
Apr
(118) |
May
(2) |
Jun
(5) |
Jul
|
Aug
|
Sep
(5) |
Oct
(1) |
Nov
(13) |
Dec
(1) |
2006 |
Jan
(9) |
Feb
(25) |
Mar
(22) |
Apr
(6) |
May
|
Jun
|
Jul
(2) |
Aug
(1) |
Sep
(3) |
Oct
(46) |
Nov
(13) |
Dec
(7) |
2007 |
Jan
(9) |
Feb
(14) |
Mar
(3) |
Apr
|
May
(6) |
Jun
(1) |
Jul
|
Aug
(11) |
Sep
(7) |
Oct
(8) |
Nov
(41) |
Dec
(3) |
2008 |
Jan
(27) |
Feb
(16) |
Mar
(13) |
Apr
(23) |
May
(39) |
Jun
(4) |
Jul
(7) |
Aug
(1) |
Sep
(13) |
Oct
(52) |
Nov
(44) |
Dec
(55) |
2009 |
Jan
(72) |
Feb
(69) |
Mar
|
Apr
|
May
|
Jun
(13) |
Jul
(1) |
Aug
(6) |
Sep
(15) |
Oct
(11) |
Nov
(31) |
Dec
(20) |
2010 |
Jan
(24) |
Feb
(21) |
Mar
(22) |
Apr
(40) |
May
(38) |
Jun
(4) |
Jul
(2) |
Aug
(22) |
Sep
(19) |
Oct
(14) |
Nov
(5) |
Dec
(8) |
2011 |
Jan
(14) |
Feb
(36) |
Mar
(6) |
Apr
|
May
|
Jun
(23) |
Jul
(13) |
Aug
(8) |
Sep
(7) |
Oct
|
Nov
(3) |
Dec
(9) |
2012 |
Jan
(17) |
Feb
(13) |
Mar
(10) |
Apr
|
May
(1) |
Jun
(14) |
Jul
(4) |
Aug
(12) |
Sep
(2) |
Oct
(24) |
Nov
(14) |
Dec
(2) |
2013 |
Jan
(4) |
Feb
(3) |
Mar
(3) |
Apr
(3) |
May
(10) |
Jun
(4) |
Jul
(7) |
Aug
|
Sep
(15) |
Oct
(5) |
Nov
(1) |
Dec
(2) |
2014 |
Jan
|
Feb
(8) |
Mar
(1) |
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
(3) |
Oct
(7) |
Nov
(6) |
Dec
(3) |
2015 |
Jan
(4) |
Feb
(5) |
Mar
(8) |
Apr
(8) |
May
(2) |
Jun
|
Jul
(4) |
Aug
(7) |
Sep
(8) |
Oct
|
Nov
(6) |
Dec
(4) |
2016 |
Jan
(6) |
Feb
(26) |
Mar
(3) |
Apr
(10) |
May
(6) |
Jun
(5) |
Jul
(1) |
Aug
(4) |
Sep
(3) |
Oct
(4) |
Nov
(3) |
Dec
(10) |
2017 |
Jan
(11) |
Feb
(11) |
Mar
(2) |
Apr
(1) |
May
(7) |
Jun
(2) |
Jul
(11) |
Aug
(9) |
Sep
(5) |
Oct
(5) |
Nov
(1) |
Dec
(2) |
2018 |
Jan
(5) |
Feb
(2) |
Mar
(19) |
Apr
(7) |
May
(11) |
Jun
(3) |
Jul
(4) |
Aug
(10) |
Sep
(2) |
Oct
(8) |
Nov
(6) |
Dec
(9) |
2019 |
Jan
(9) |
Feb
(6) |
Mar
(2) |
Apr
(4) |
May
(6) |
Jun
(9) |
Jul
(6) |
Aug
(3) |
Sep
(5) |
Oct
(2) |
Nov
(8) |
Dec
(9) |
2020 |
Jan
(15) |
Feb
(1) |
Mar
(18) |
Apr
(33) |
May
(43) |
Jun
(87) |
Jul
(45) |
Aug
(8) |
Sep
(43) |
Oct
(3) |
Nov
(5) |
Dec
(42) |
2021 |
Jan
(116) |
Feb
(40) |
Mar
(58) |
Apr
(48) |
May
(29) |
Jun
(2) |
Jul
|
Aug
(22) |
Sep
(18) |
Oct
(1) |
Nov
|
Dec
(3) |
2022 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
(1) |
May
(2) |
Jun
(1) |
Jul
|
Aug
(1) |
Sep
|
Oct
(6) |
Nov
(2) |
Dec
(9) |
2023 |
Jan
(10) |
Feb
|
Mar
|
Apr
(10) |
May
(3) |
Jun
(1) |
Jul
(2) |
Aug
(4) |
Sep
(1) |
Oct
|
Nov
(2) |
Dec
(3) |
2024 |
Jan
(4) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
(5) |
Jun
(3) |
Jul
(1) |
Aug
(2) |
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(9) |
2025 |
Jan
(5) |
Feb
(5) |
Mar
|
Apr
(10) |
May
(20) |
Jun
(43) |
Jul
(24) |
Aug
(20) |
Sep
|
Oct
|
Nov
|
Dec
|
From: Michael B. <mdb...@us...> - 2021-03-24 12:05:47
|
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 f84b704c136ff60030968184ad75d821de7431fc (commit) from eb952ad75fb9815781f3bf5ef53765eebc4607ff (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 f84b704c136ff60030968184ad75d821de7431fc Author: Michael Black W9MDB <mdb...@ya...> Date: Wed Mar 24 07:03:37 2021 -0500 build-w32.sh with --python-binding does not work yet -- deferring to Hamlib 4.3 diff --git a/scripts/build-w32.sh b/scripts/build-w32.sh index 6bab40be..0f60eedc 100755 --- a/scripts/build-w32.sh +++ b/scripts/build-w32.sh @@ -221,7 +221,6 @@ END_OF_README --prefix=${INST_DIR} \ --without-cxx-binding \ --disable-static \ - --with-python-binding \ CPPFLAGS="-I${LIBUSB_1_0_BIN_PATH}/include" \ LDFLAGS="-L${LIBUSB_1_0_BIN_PATH}/MinGW32/dll" ----------------------------------------------------------------------- Summary of changes: scripts/build-w32.sh | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-23 17:10:38
|
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 eb952ad75fb9815781f3bf5ef53765eebc4607ff (commit) via 86ca6de85fd0cd90aa6e34464ef4c0b5b6e38be7 (commit) from cb9d2e064c8e34802ba5a661e745a4ac310be0dd (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 eb952ad75fb9815781f3bf5ef53765eebc4607ff Author: Michael Black W9MDB <mdb...@ya...> Date: Tue Mar 23 12:08:58 2021 -0500 In icom.c have set_vfo return RIG_OK immediately when VFO_CURR is requested https://github.com/Hamlib/Hamlib/issues/625 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 06d399e5..015d89c7 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -7616,6 +7616,7 @@ static int set_vfo_curr(RIG *rig, vfo_t vfo, vfo_t curr_vfo) rig_debug(RIG_DEBUG_TRACE, "%s: Asking for currVFO, currVFO=%s\n", __func__, rig_strvfo(rig->state.current_vfo)); vfo = rig->state.current_vfo; + RETURNFUNC(RIG_OK); } if (vfo == RIG_VFO_MAIN && VFO_HAS_A_B_ONLY) commit 86ca6de85fd0cd90aa6e34464ef4c0b5b6e38be7 Author: Michael Black W9MDB <mdb...@ya...> Date: Tue Mar 23 11:03:57 2021 -0500 Change rig_get_freq call to use VFO_CURR instead of vfo to avoid looping https://github.com/Hamlib/Hamlib/issues/625 diff --git a/src/rig.c b/src/rig.c index 27c95a23..9011d472 100644 --- a/src/rig.c +++ b/src/rig.c @@ -2491,7 +2491,7 @@ int HAMLIB_API rig_set_vfo(RIG *rig, vfo_t vfo) // we only get the freq if we set the vfo OK if (retcode == RIG_OK && caps->get_freq) { - retcode = caps->get_freq(rig, vfo, &curr_freq); + retcode = caps->get_freq(rig, RIG_VFO_CURR, &curr_freq); rig_debug(RIG_DEBUG_TRACE, "%s: retcode from rig_get_freq = %.10000s\n", __func__, rigerror(retcode)); ----------------------------------------------------------------------- Summary of changes: rigs/icom/icom.c | 1 + src/rig.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-23 13:59:23
|
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 cb9d2e064c8e34802ba5a661e745a4ac310be0dd (commit) from b90cd8b8c70f7a4158801443fe9789fc075fe06b (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 cb9d2e064c8e34802ba5a661e745a4ac310be0dd Author: Michael Black W9MDB <mdb...@ya...> Date: Tue Mar 23 08:57:45 2021 -0500 Comment out loop logic in rig_set_split_freq_mode -- seems to causing a permanent loop -- why? https://github.com/Hamlib/Hamlib/issues/625 diff --git a/src/rig.c b/src/rig.c index 76c4b716..27c95a23 100644 --- a/src/rig.c +++ b/src/rig.c @@ -3993,15 +3993,18 @@ int HAMLIB_API rig_set_split_freq_mode(RIG *rig, if (caps->set_split_freq_mode) { +#if 0 freq_t tfreq; int retry = 3; int retcode2; +#endif + retcode = caps->set_split_freq_mode(rig, vfo, tx_freq, tx_mode, tx_width); +#if 0 // this verification seems to be causing bad behavior on some reigs // we query freq after set to ensure it really gets done do { retcode = caps->set_split_freq_mode(rig, vfo, tx_freq, tx_mode, tx_width); -#if 0 // this verification seems to be causing bad behavior on some reigs retcode2 = rig_get_split_freq(rig, vfo, &tfreq); if (tfreq != tx_freq) @@ -4011,15 +4014,14 @@ int HAMLIB_API rig_set_split_freq_mode(RIG *rig, tfreq, retry, retcode, retcode2); hl_usleep(50 * 1000); // 50ms sleep may help here } -#else tfreq = tx_freq; retcode2 = RIG_OK; -#endif } while (tfreq != tx_freq && retry-- > 0 && retcode == RIG_OK && retcode2 == RIG_OK); if (tfreq != tx_freq) { retcode = -RIG_EPROTO; } +#endif RETURNFUNC(retcode); } ----------------------------------------------------------------------- Summary of changes: src/rig.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-23 13:09:28
|
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 b90cd8b8c70f7a4158801443fe9789fc075fe06b (commit) from 09474b17fb4b73fe1d4043a696c19ec555724dee (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 b90cd8b8c70f7a4158801443fe9789fc075fe06b Author: Michael Black W9MDB <mdb...@ya...> Date: Tue Mar 23 08:08:21 2021 -0500 Fix MainB caching Satmode ops now maps Sub vfo to Sub_A https://github.com/Hamlib/Hamlib/issues/620 diff --git a/src/rig.c b/src/rig.c index c869dc1b..76c4b716 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1340,6 +1340,8 @@ static int set_cache_mode(RIG *rig, vfo_t vfo, mode_t mode, pbwidth_t width) // pick a sane default if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) { vfo = RIG_VFO_A; } + if (vfo == RIG_VFO_SUB && rig->state.cache.satmode) { vfo = RIG_VFO_SUB_A; }; + switch (vfo) { case RIG_VFO_ALL: // we'll use NONE to reset all VFO caches @@ -1411,6 +1413,8 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) // pick a sane default if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) { vfo = RIG_VFO_A; } + if (vfo == RIG_VFO_SUB && rig->state.cache.satmode) { vfo = RIG_VFO_SUB_A; }; + rig_debug(RIG_DEBUG_TRACE, "%s: set vfo=%s to freq=%.0f\n", __func__, rig_strvfo(vfo), freq); @@ -1496,6 +1500,9 @@ int rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int *cache_ms_freq, // pick a sane default if (vfo == RIG_VFO_CURR || vfo == RIG_VFO_NONE) { vfo = RIG_VFO_A; } + // If we're in satmode we map SUB to SUB_A + if (vfo == RIG_VFO_SUB && rig->state.cache.satmode) { vfo = RIG_VFO_SUB_A; }; + // VFO_C to be implemented switch (vfo) { @@ -1515,6 +1522,7 @@ int rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int *cache_ms_freq, case RIG_VFO_B: case RIG_VFO_SUB: + case RIG_VFO_MAIN_B: *freq = rig->state.cache.freqMainB; *mode = rig->state.cache.modeMainB; *width = rig->state.cache.widthMainB; ----------------------------------------------------------------------- Summary of changes: src/rig.c | 8 ++++++++ 1 file changed, 8 insertions(+) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-22 21:05:32
|
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 09474b17fb4b73fe1d4043a696c19ec555724dee (commit) from 3b84802846701d080bc35024c11a6b931ceaed4d (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 09474b17fb4b73fe1d4043a696c19ec555724dee Author: Michael Black W9MDB <mdb...@ya...> Date: Mon Mar 22 16:04:55 2021 -0500 Reset x25cmdfails when satmode is changed diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 029a86ca..06d399e5 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -5252,6 +5252,7 @@ int icom_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, vfo_t *tx_vfo) if (rig->caps->has_get_func & RIG_FUNC_SATMODE) { rig_get_func(rig, RIG_VFO_CURR, RIG_FUNC_SATMODE, &satmode); + priv->x25cmdfails = satmode; // reset this so it tries again } rig->state.cache.satmode = satmode; @@ -5625,7 +5626,7 @@ int icom_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) fct_sc = S_MEM_SATMODE; } - priv->x25cmdfails = 0; // we reset this to try it again + priv->x25cmdfails = status; // we reset this to current status -- fails in SATMODE priv->x1cx03cmdfails = 0; // we reset this to try it again rig->state.cache.satmode = status; @@ -5835,7 +5836,6 @@ int icom_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) fct_cn = C_CTL_FUNC; fct_sc = S_MEM_SATMODE; } - break; @@ -5867,6 +5867,14 @@ int icom_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) else { *status = ackbuf[2] == 2 ? 1 : 0; + if (func == RIG_FUNC_SATMODE) + { + struct rig_state *rs = &rig->state; + //struct icom_priv_data *priv = (struct icom_priv_data *) rs->priv; + struct icom_priv_data *priv = rs->priv; + // we'll reset this based on current status + priv->x25cmdfails = *status; + } } RETURNFUNC(RIG_OK); ----------------------------------------------------------------------- Summary of changes: rigs/icom/icom.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-22 20:39:18
|
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 3b84802846701d080bc35024c11a6b931ceaed4d (commit) from f0a82fa2bf39225d03dea0bef9f05144cd55ac6a (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 3b84802846701d080bc35024c11a6b931ceaed4d Author: Michael Black W9MDB <mdb...@ya...> Date: Mon Mar 22 15:35:12 2021 -0500 Fix MainB in misc.c diff --git a/src/misc.c b/src/misc.c index 105e8d4b..fbf00320 100644 --- a/src/misc.c +++ b/src/misc.c @@ -566,7 +566,7 @@ static struct { RIG_VFO_MAIN, "Main" }, { RIG_VFO_MAIN_A, "MainA" }, { RIG_VFO_MAIN_B, "MainB" }, - { RIG_VFO_MAIN_C, "MainB" }, + { RIG_VFO_MAIN_C, "MainC" }, { RIG_VFO_SUB, "Sub" }, { RIG_VFO_SUB_A, "SubA" }, { RIG_VFO_SUB_B, "SubB" }, ----------------------------------------------------------------------- Summary of changes: src/misc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-22 12:55:48
|
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 f0a82fa2bf39225d03dea0bef9f05144cd55ac6a (commit) from 79b5142c4435cf3dbfe9dbbbd28604b618b80bec (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 f0a82fa2bf39225d03dea0bef9f05144cd55ac6a Author: Michael Black W9MDB <mdb...@ya...> Date: Mon Mar 22 07:54:46 2021 -0500 Fix icom.c vfo detection https://github.com/Hamlib/Hamlib/issues/624 diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 5e01ee62..8c878da1 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -515,7 +515,7 @@ typedef unsigned int vfo_t; #define VFO_HAS_MAIN_SUB_A_B_ONLY (VFO_HAS_A_B & VFO_HAS_MAIN_SUB) #define VFO_HAS_A_B_ONLY (VFO_HAS_A_B & (!VFO_HAS_MAIN_SUB)) #define VFO_DUAL (RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B) -#define VFO_HAS_DUAL ((rig->state.vfo_list & VFO_DUAL == VFO_DUAL) +#define VFO_HAS_DUAL ((rig->state.vfo_list & VFO_DUAL) == VFO_DUAL) //! @endcond /** diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index f3686cbe..029a86ca 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -2098,12 +2098,12 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) else if (VFO_HAS_MAIN_SUB_A_B_ONLY && rig->state.cache.satmode) { vfo = RIG_VFO_SUB; } } - else if ((vfo == RIG_VFO_A || vfo == RIG_VFO_MAIN) && VFO_HAS_MAIN_SUB_A_B_ONLY) + else if ((vfo == RIG_VFO_A || vfo == RIG_VFO_MAIN) && VFO_HAS_DUAL) { // If we're being asked for A/Main but we are a MainA/MainB rig change it vfo = RIG_VFO_MAIN_A; } - else if ((vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) && VFO_HAS_MAIN_SUB_A_B_ONLY) + else if ((vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) && VFO_HAS_DUAL) { // If we're being asked for B/Sub but we are a MainA/MainB rig change it vfo = RIG_VFO_MAIN_B; diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 6a000848..dc1cc394 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20210320" +#define BACKEND_VER "20210322" /* * defines used by comp_cal_str in rig.c ----------------------------------------------------------------------- Summary of changes: include/hamlib/rig.h | 2 +- rigs/icom/icom.c | 4 ++-- rigs/icom/icom.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-22 03:57:36
|
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 79b5142c4435cf3dbfe9dbbbd28604b618b80bec (commit) via 21426c1eeffe82a73bc9d9b8e57085cecbd7f38d (commit) from 0ba0b55b872d5b56b97458ee3ec88befd9de28b7 (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 79b5142c4435cf3dbfe9dbbbd28604b618b80bec Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 21 22:56:43 2021 -0500 Fix tests/Makefile.am to build all tests items correctly diff --git a/tests/Makefile.am b/tests/Makefile.am index 59bc9334..df6cdb60 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -10,9 +10,9 @@ bin_PROGRAMS = rigctl rigctld rigmem rigsmtr rigswr rotctl rotctld rigctlcom amp check_PROGRAMS = dumpmem testrig testrigopen testrigcaps testtrn testbcd testfreq listrigs testloc rig_bench testcache cachetest cachetest2 -RIGCOMMONSRC = rigctl_parse.c rigctl_parse.h dumpcaps.c uthash.h $(builddir)/src/hamlibdatetime.h -ROTCOMMONSRC = rotctl_parse.c rotctl_parse.h dumpcaps_rot.c uthash.h $(builddir)/src/hamlibdatetime.h -AMPCOMMONSRC = ampctl_parse.c ampctl_parse.h dumpcaps_amp.c uthash.h $(builddir)/src/hamlibdatetime.h +RIGCOMMONSRC = rigctl_parse.c rigctl_parse.h dumpcaps.c uthash.h +ROTCOMMONSRC = rotctl_parse.c rotctl_parse.h dumpcaps_rot.c uthash.h +AMPCOMMONSRC = ampctl_parse.c ampctl_parse.h dumpcaps_amp.c uthash.h rigctl_SOURCES = rigctl.c $(RIGCOMMONSRC) rigctld_SOURCES = rigctld.c $(RIGCOMMONSRC) @@ -26,15 +26,17 @@ rigsmtr_SOURCES = rigsmtr.c rigmem_SOURCES = rigmem.c memsave.c memload.c memcsv.c # include generated include files ahead of any in sources -rigctl_CPPFLAGS = -I$(builddir)/tests -I$(builddir)/src -I$(srcdir) $(AM_CPPFLAGS) +rigctl_CPPFLAGS = -I$(top_builddir)/tests -I$(top_builddir)/src -I$(srcdir) $(AM_CPPFLAGS) # all the programs need this LDADD = $(top_builddir)/src/libhamlib.la $(top_builddir)/lib/libmisc.la $(DL_LIBS) rigmem_CFLAGS = $(AM_CFLAGS) $(LIBXML2_CFLAGS) -rigctld_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -rotctld_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -ampctld_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) +rigctld_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/src +rotctl_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/src +rotctld_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/src +ampctl_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/src +ampctld_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -I$(top_builddir)/src rigctlcom_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) rigctl_LDADD = $(PTHREAD_LIBS) $(READLINE_LIBS) $(LDADD) commit 21426c1eeffe82a73bc9d9b8e57085cecbd7f38d Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 21 22:29:20 2021 -0500 Fix tests/Makefile.am to refer to correct hamlibdatetime.h diff --git a/tests/Makefile.am b/tests/Makefile.am index 21a2b88a..59bc9334 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -10,9 +10,9 @@ bin_PROGRAMS = rigctl rigctld rigmem rigsmtr rigswr rotctl rotctld rigctlcom amp check_PROGRAMS = dumpmem testrig testrigopen testrigcaps testtrn testbcd testfreq listrigs testloc rig_bench testcache cachetest cachetest2 -RIGCOMMONSRC = rigctl_parse.c rigctl_parse.h dumpcaps.c uthash.h ../src/hamlibdatetime.h -ROTCOMMONSRC = rotctl_parse.c rotctl_parse.h dumpcaps_rot.c uthash.h ../src/hamlibdatetime.h -AMPCOMMONSRC = ampctl_parse.c ampctl_parse.h dumpcaps_amp.c uthash.h ../src/hamlibdatetime.h +RIGCOMMONSRC = rigctl_parse.c rigctl_parse.h dumpcaps.c uthash.h $(builddir)/src/hamlibdatetime.h +ROTCOMMONSRC = rotctl_parse.c rotctl_parse.h dumpcaps_rot.c uthash.h $(builddir)/src/hamlibdatetime.h +AMPCOMMONSRC = ampctl_parse.c ampctl_parse.h dumpcaps_amp.c uthash.h $(builddir)/src/hamlibdatetime.h rigctl_SOURCES = rigctl.c $(RIGCOMMONSRC) rigctld_SOURCES = rigctld.c $(RIGCOMMONSRC) @@ -26,7 +26,7 @@ rigsmtr_SOURCES = rigsmtr.c rigmem_SOURCES = rigmem.c memsave.c memload.c memcsv.c # include generated include files ahead of any in sources -rigctl_CPPFLAGS = -I$(builddir)/tests -I$(srcdir) $(AM_CPPFLAGS) +rigctl_CPPFLAGS = -I$(builddir)/tests -I$(builddir)/src -I$(srcdir) $(AM_CPPFLAGS) # all the programs need this LDADD = $(top_builddir)/src/libhamlib.la $(top_builddir)/lib/libmisc.la $(DL_LIBS) ----------------------------------------------------------------------- Summary of changes: tests/Makefile.am | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-21 04:19:59
|
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 0ba0b55b872d5b56b97458ee3ec88befd9de28b7 (commit) from 8c11f888a38776877727c99e5ee388c3ee8005bc (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 0ba0b55b872d5b56b97458ee3ec88befd9de28b7 Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Mar 20 23:19:01 2021 -0500 Remove debug from rigctl_parse.c diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 4adc1b3b..45963be2 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -2231,7 +2231,6 @@ declare_proto_rig(get_vfo_info) { rig_debug(RIG_DEBUG_ERR, "%s: vfo=%s\n", __func__, rig_strvfo(vfo)); } - rig_debug(RIG_DEBUG_ERR, "%s: vfo=%s, freq=%.0f, mode=%s, width=%d\n", __func__, rig_strvfo(vfo), freq, rig_strrmode(mode), (int)width); const char * modestr = rig_strrmode(mode); if (strlen(modestr) == 0) modestr = "None"; ----------------------------------------------------------------------- Summary of changes: tests/rigctl_parse.c | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-20 21:59:23
|
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 8c11f888a38776877727c99e5ee388c3ee8005bc (commit) via ae3fef1e0cdd8234aaa3608f21ee2d02712abdb1 (commit) via 1fdbebd7b2d489f0b8aa660c40e6e1c1dbc75e7c (commit) via bb43078b25b17c9ec4c83da096882d5ea92fbfee (commit) from 80e199b302af7d5354438551a355e0fafee170bd (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 8c11f888a38776877727c99e5ee388c3ee8005bc Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Mar 20 16:58:38 2021 -0500 Fix rigctld return blank mode for rig_get_vfo_info diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index eb44fec8..4adc1b3b 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -2233,16 +2233,18 @@ declare_proto_rig(get_vfo_info) } rig_debug(RIG_DEBUG_ERR, "%s: vfo=%s, freq=%.0f, mode=%s, width=%d\n", __func__, rig_strvfo(vfo), freq, rig_strrmode(mode), (int)width); + const char * modestr = rig_strrmode(mode); + if (strlen(modestr) == 0) modestr = "None"; if ((interactive && prompt) || (interactive && !prompt && ext_resp)) { fprintf(fout, "%s: %.0f\n", cmd->arg1, freq); - fprintf(fout, "%s: %s\n", cmd->arg2, rig_strrmode(mode)); + fprintf(fout, "%s: %s\n", cmd->arg2, modestr); fprintf(fout, "%s: %d\n", cmd->arg3, (int)width); fprintf(fout, "%s: %d\n", cmd->arg4, (int)split); } else { - fprintf(fout, "%.0f\n%s\n%d\n", freq, rig_strrmode(mode), (int)width); + fprintf(fout, "%.0f\n%s\n%d\n", freq, modestr, (int)width); } RETURNFUNC(retval); commit ae3fef1e0cdd8234aaa3608f21ee2d02712abdb1 Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Mar 20 16:57:46 2021 -0500 Disable set_ptt confirmation logic. Seems many rigs can't deal with it. https://github.com/Hamlib/Hamlib/issues/623 diff --git a/src/rig.c b/src/rig.c index 163274af..c869dc1b 100644 --- a/src/rig.c +++ b/src/rig.c @@ -2641,6 +2641,7 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) if (retcode != RIG_OK) { RETURNFUNC(retcode); } +#if 0 hl_usleep(50 * 1000); // give PTT a chance to do it's thing // don't use the cached value and check to see if it worked @@ -2656,8 +2657,10 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) rigerror(retcode)); retcode = RIG_OK; // fake the retcode so we retry } - if (tptt != ptt) { rig_debug(RIG_DEBUG_WARN, "%s: failed, retry=%d\n", __func__, retry); } +#else + tptt = ptt; +#endif } while (tptt != ptt && retry-- > 0 && retcode == RIG_OK); } @@ -2685,9 +2688,13 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) if (retcode != RIG_OK) { RETURNFUNC(retcode); } +#if 0 retcode = rig_get_ptt(rig, vfo, &tptt); if (tptt != ptt) { rig_debug(RIG_DEBUG_WARN, "%s: failed, retry=%d\n", __func__, retry); } +#else + tptt = ptt; +#endif } while (tptt != ptt && retry-- > 0 && retcode == RIG_OK); commit 1fdbebd7b2d489f0b8aa660c40e6e1c1dbc75e7c Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Mar 20 11:51:41 2021 -0500 Fix rigctlcom VFOB set_freq https://github.com/Hamlib/Hamlib/issues/620 diff --git a/tests/rigctlcom.c b/tests/rigctlcom.c index a9448959..bf4eba7c 100644 --- a/tests/rigctlcom.c +++ b/tests/rigctlcom.c @@ -1507,7 +1507,7 @@ static int handle_ts2000(void *arg) freq_t freq; sscanf((char *)arg + 2, "%"SCNfreq, &freq); - return rig_set_freq(my_rig, vfo_fixup(my_rig, RIG_VFO_A), freq); + return rig_set_freq(my_rig, vfo_fixup(my_rig, RIG_VFO_B), freq); } else if (strncmp(arg, "MD", 2) == 0) { commit bb43078b25b17c9ec4c83da096882d5ea92fbfee Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Mar 20 11:21:11 2021 -0500 More work on SATMODE for rigctlcom.c https://github.com/Hamlib/Hamlib/issues/620 diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index d136de7d..eb44fec8 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -2227,7 +2227,11 @@ declare_proto_rig(get_vfo_info) split_t split; retval = rig_get_vfo_info(rig, vfo, &freq, &mode, &width, &split); - rig_debug(RIG_DEBUG_ERR, "%s: vfo=%s\n", __func__, rig_strvfo(vfo)); + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: vfo=%s\n", __func__, rig_strvfo(vfo)); + } + rig_debug(RIG_DEBUG_ERR, "%s: vfo=%s, freq=%.0f, mode=%s, width=%d\n", __func__, rig_strvfo(vfo), freq, rig_strrmode(mode), (int)width); if ((interactive && prompt) || (interactive && !prompt && ext_resp)) { diff --git a/tests/rigctlcom.c b/tests/rigctlcom.c index e78e2b4c..a9448959 100644 --- a/tests/rigctlcom.c +++ b/tests/rigctlcom.c @@ -878,9 +878,28 @@ static int handle_ts2000(void *arg) return write_block2((void *)__func__, &my_com, response, strlen(response)); } // Now some commands to set things - else if (strncmp(arg,"SA",2) == 0) + else if (strncmp(arg, "SA", 2) == 0) { - // todo -- make rigs changes based on TS-2000 bit flags + if (strcmp(arg, "SA;") == 0) + { + // should we silently fail with RIG_OK instead? TBD + RETURNFUNC(-RIG_ENIMPL); + } + + if (strlen(arg) > 3 && ((char *)arg)[2] == '1') + { + if (my_rig->caps->has_set_func) + { + int retval = rig_set_func(my_rig, RIG_VFO_CURR, RIG_FUNC_SATMODE, + ((char *)arg)[2] == '1' ? 1 : 0); + return retval; + } + else + { + RETURNFUNC(-RIG_ENAVAIL); + } + } + return RIG_OK; } else if (strcmp(arg, "TX;") == 0) ----------------------------------------------------------------------- Summary of changes: src/rig.c | 9 ++++++++- tests/rigctl_parse.c | 12 +++++++++--- tests/rigctlcom.c | 25 ++++++++++++++++++++++--- 3 files changed, 39 insertions(+), 7 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-20 13:08:20
|
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 80e199b302af7d5354438551a355e0fafee170bd (commit) via 950163f1a426d9942c1c15492b62833ff8e62555 (commit) from 1224e9f6ba7e2084a133f8a94f6013820045fbd7 (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 80e199b302af7d5354438551a355e0fafee170bd Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Mar 20 08:07:16 2021 -0500 Add satmode detection for Icom rigs like IC9700 In satmode VFOB/Sub now maps to SubA (2nd VFO) https://github.com/Hamlib/Hamlib/issues/621 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index b3c54002..f3686cbe 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -2107,6 +2107,11 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) { // If we're being asked for B/Sub but we are a MainA/MainB rig change it vfo = RIG_VFO_MAIN_B; + // If we're in satmode for rigs like IC9700 we want the 2nd VFO + if (rig->state.cache.satmode) + { + vfo = RIG_VFO_SUB_A; + } } else if ((vfo == RIG_VFO_A || vfo == RIG_VFO_B) && !VFO_HAS_A_B && VFO_HAS_MAIN_SUB) { diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 6be6e773..6a000848 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20210319" +#define BACKEND_VER "20210320" /* * defines used by comp_cal_str in rig.c commit 950163f1a426d9942c1c15492b62833ff8e62555 Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Mar 19 23:36:33 2021 -0500 Rigs like IC9700 with MainA/B will have VFOA/Main mapped to MainA and VFOB/Sub mapped to MainB No known use for SubA/SubB yet https://github.com/Hamlib/Hamlib/issues/621 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index d12721e4..b3c54002 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -2098,7 +2098,17 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) else if (VFO_HAS_MAIN_SUB_A_B_ONLY && rig->state.cache.satmode) { vfo = RIG_VFO_SUB; } } - if ((vfo == RIG_VFO_A || vfo == RIG_VFO_B) && !VFO_HAS_A_B && VFO_HAS_MAIN_SUB) + else if ((vfo == RIG_VFO_A || vfo == RIG_VFO_MAIN) && VFO_HAS_MAIN_SUB_A_B_ONLY) + { + // If we're being asked for A/Main but we are a MainA/MainB rig change it + vfo = RIG_VFO_MAIN_A; + } + else if ((vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) && VFO_HAS_MAIN_SUB_A_B_ONLY) + { + // If we're being asked for B/Sub but we are a MainA/MainB rig change it + vfo = RIG_VFO_MAIN_B; + } + else if ((vfo == RIG_VFO_A || vfo == RIG_VFO_B) && !VFO_HAS_A_B && VFO_HAS_MAIN_SUB) { // If we're being asked for A/B but we are a Main/Sub rig change it vfo_t vfo_old = vfo; @@ -2108,6 +2118,7 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) rig_strvfo(vfo)); } + if ((vfo == RIG_VFO_MAIN || vfo == RIG_VFO_SUB) && !VFO_HAS_MAIN_SUB) { rig_debug(RIG_DEBUG_ERR, "%s: Rig does not have VFO Main/Sub?\n", diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 9127cc62..6be6e773 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20210318" +#define BACKEND_VER "20210319" /* * defines used by comp_cal_str in rig.c ----------------------------------------------------------------------- Summary of changes: rigs/icom/icom.c | 18 +++++++++++++++++- rigs/icom/icom.h | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-20 04:15:03
|
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 1224e9f6ba7e2084a133f8a94f6013820045fbd7 (commit) from 5817096b00b64e30a19f000c879ec7fb913eeacf (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 1224e9f6ba7e2084a133f8a94f6013820045fbd7 Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Mar 19 23:14:13 2021 -0500 Move hamlibdatetime.h generation to src directory https://github.com/Hamlib/Hamlib/issues/617 diff --git a/src/Makefile.am b/src/Makefile.am index af836273..89fe5a06 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,6 +1,10 @@ # src/Makefile.am -RIGSRC = rig.c serial.c serial.h misc.c misc.h register.c register.h event.c \ +BUILT_SOURCES = $(builddir)/hamlibdatetime.h + +DISTCLEANFILES = hamlibdatetime.h + +RIGSRC = hamlibdatetime.h rig.c serial.c serial.h misc.c misc.h register.c register.h event.c \ event.h cal.c cal.h conf.c tones.c tones.h rotator.c locator.c rot_reg.c \ rot_conf.c rot_conf.h rot_settings.c rot_ext.c iofunc.c iofunc.h ext.c \ mem.c settings.c parallel.c parallel.h usb_port.c usb_port.h debug.c \ @@ -18,4 +22,28 @@ libhamlib_la_LIBADD = $(top_builddir)/lib/libmisc.la \ libhamlib_la_DEPENDENCIES = $(top_builddir)/lib/libmisc.la $(BACKENDEPS) $(RIG_BACKENDEPS) $(ROT_BACKENDEPS) $(AMP_BACKENDEPS) -EXTRA_DIST = Android.mk +EXTRA_DIST = Android.mk hamlibdatetime.h.in + +# If we have a .git directory then we will generate the hamlibdate.h +# file and replace it if it is different. Fall back to a copy of a +# generic hamlibdatetime.h.in in the source tree. Build looks in build +# directory before the source directory for the hamlibdatetime.h +# header. +hamlibdatetime.h: FORCE + @if test -x $(top_srcdir)/.git ; then \ + echo "/* This date time is from the last non-merge commit to Hamlib. */" > $(builddir)/$(@F).tmp ;\ + echo "#define HAMLIBDATETIME "\"$$(TZ=UTC git --git-dir=$(top_srcdir)/.git log --no-merges --date='format-local:%a %b %d %H:%M:%S %Y %z SHA=' --format='%cd' -n 1)$$(git --git-dir=$(top_srcdir)/.git log --no-merges | grep commit | head -n 1 | cut -c8-13)\" >> $(builddir)/$(@F).tmp ;\ + diff -qN $(builddir)/$(@F).tmp $(builddir)/$(@F) ; test $$? -eq 0 || { echo "Generating SCS header \"$(builddir)/$(@F)\"" ; mv -f $(builddir)/$(@F).tmp $(builddir)/$(@F) ; } ;\ + rm -f $(builddir)/$(@F).tmp ;\ + else \ + test -f $(srcdir)/$(@F) || cp $(srcdir)/$(@F).in $(srcdir)/$(@F) ;\ + fi + +FORCE: + +# If we are making a distribution out-of-source and we have generated +# a hamlibdatetime.h; then copy it to the tests directory of the +# source tarball so that downstream builds pick up the version +# information we know about. +dist-hook: + test ./ -ef $(srcdir)/ || test ! -f hamlibdatetime.h || cp -f hamlibdatetime.h $(srcdir)/ diff --git a/tests/hamlibdatetime.h.in b/src/hamlibdatetime.h.in similarity index 100% rename from tests/hamlibdatetime.h.in rename to src/hamlibdatetime.h.in diff --git a/src/rig.c b/src/rig.c index 1452d96f..163274af 100644 --- a/src/rig.c +++ b/src/rig.c @@ -72,7 +72,7 @@ #include "gpio.h" #include "misc.h" #include "sprintflst.h" -#include "../tests/hamlibdatetime.h" +#include "hamlibdatetime.h" /** * \brief Hamlib release number diff --git a/tests/Makefile.am b/tests/Makefile.am index 86381d7d..21a2b88a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -4,17 +4,15 @@ # AUTOMAKE_OPTIONS = dejagnu # DEJATOOL = testfreq testbcd testloc rigctl -BUILT_SOURCES = $(builddir)/hamlibdatetime.h - -DISTCLEANFILES = rigctl.log rigctl.sum testbcd.log testbcd.sum hamlibdatetime.h +DISTCLEANFILES = rigctl.log rigctl.sum testbcd.log testbcd.sum bin_PROGRAMS = rigctl rigctld rigmem rigsmtr rigswr rotctl rotctld rigctlcom ampctl ampctld check_PROGRAMS = dumpmem testrig testrigopen testrigcaps testtrn testbcd testfreq listrigs testloc rig_bench testcache cachetest cachetest2 -RIGCOMMONSRC = rigctl_parse.c rigctl_parse.h dumpcaps.c uthash.h hamlibdatetime.h -ROTCOMMONSRC = rotctl_parse.c rotctl_parse.h dumpcaps_rot.c uthash.h hamlibdatetime.h -AMPCOMMONSRC = ampctl_parse.c ampctl_parse.h dumpcaps_amp.c uthash.h hamlibdatetime.h +RIGCOMMONSRC = rigctl_parse.c rigctl_parse.h dumpcaps.c uthash.h ../src/hamlibdatetime.h +ROTCOMMONSRC = rotctl_parse.c rotctl_parse.h dumpcaps_rot.c uthash.h ../src/hamlibdatetime.h +AMPCOMMONSRC = ampctl_parse.c ampctl_parse.h dumpcaps_amp.c uthash.h ../src/hamlibdatetime.h rigctl_SOURCES = rigctl.c $(RIGCOMMONSRC) rigctld_SOURCES = rigctld.c $(RIGCOMMONSRC) @@ -73,8 +71,7 @@ rigmatrix.html: rigmatrix_head.html rigmatrix listrigs endif -EXTRA_DIST = rigmatrix_head.html rig_split_lst.awk testctld.pl testrotctld.pl \ - hamlibdatetime.h.in +EXTRA_DIST = rigmatrix_head.html rig_split_lst.awk testctld.pl testrotctld.pl # Support 'make check' target for simple tests check_SCRIPTS = testrig.sh testfreq.sh testbcd.sh testloc.sh testrigcaps.sh testcache.sh @@ -106,28 +103,4 @@ testcache.sh: echo './testcache 1' > testcache.sh chmod +x ./testcache.sh -# If we have a .git directory then we will generate the hamlibdate.h -# file and replace it if it is different. Fall back to a copy of a -# generic hamlibdatetime.h.in in the source tree. Build looks in build -# directory before the source directory for the hamlibdatetime.h -# header. -hamlibdatetime.h: FORCE - @if test -x $(top_srcdir)/.git ; then \ - echo "/* This date time is from the last non-merge commit to Hamlib. */" > $(builddir)/$(@F).tmp ;\ - echo "#define HAMLIBDATETIME "\"$$(TZ=UTC git --git-dir=$(top_srcdir)/.git log --no-merges --date='format-local:%a %b %d %H:%M:%S %Y %z SHA=' --format='%cd' -n 1)$$(git --git-dir=$(top_srcdir)/.git log --no-merges | grep commit | head -n 1 | cut -c8-13)\" >> $(builddir)/$(@F).tmp ;\ - diff -qN $(builddir)/$(@F).tmp $(builddir)/$(@F) ; test $$? -eq 0 || { echo "Generating SCS header \"$(builddir)/$(@F)\"" ; mv -f $(builddir)/$(@F).tmp $(builddir)/$(@F) ; } ;\ - rm -f $(builddir)/$(@F).tmp ;\ - else \ - test -f $(srcdir)/$(@F) || cp $(srcdir)/$(@F).in $(srcdir)/$(@F) ;\ - fi - -FORCE: - -# If we are making a distribution out-of-source and we have generated -# a hamlibdatetime.h; then copy it to the tests directory of the -# source tarball so that downstream builds pick up the version -# information we know about. -dist-hook: - test ./ -ef $(srcdir)/ || test ! -f hamlibdatetime.h || cp -f hamlibdatetime.h $(srcdir)/ - CLEANFILES = testrig.sh testfreq.sh testbcd.sh testloc.sh testrigcaps.sh testcache.sh ----------------------------------------------------------------------- Summary of changes: src/Makefile.am | 32 ++++++++++++++++++++++++++++++-- {tests => src}/hamlibdatetime.h.in | 0 src/rig.c | 2 +- tests/Makefile.am | 37 +++++-------------------------------- 4 files changed, 36 insertions(+), 35 deletions(-) rename {tests => src}/hamlibdatetime.h.in (100%) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-20 03:57:37
|
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 5817096b00b64e30a19f000c879ec7fb913eeacf (commit) via 6eee309b56f1815cc291051254e2de66447bf480 (commit) via 7662a6235ab2170c8a9ac4c2c1f837efa315ffea (commit) via dee6bd652463e40cbc7ae5cef6afa3a130fcd904 (commit) via 8cd4a2e3c4cf2ae8fa35418e59e89663100ab2c7 (commit) via ab0ae7d6b13aec5237ccadfeb2d075a7522449f0 (commit) via 42ebd658113adaad956c19e660498607a45a4f5e (commit) via 257ae409d2ca53089c33cd78d2f7c6d2be08344e (commit) from c1277b170e0444b1de1d55012e6024c983a5e24e (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 5817096b00b64e30a19f000c879ec7fb913eeacf Merge: 6eee309b 7662a623 Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Mar 19 22:57:08 2021 -0500 Merge branch 'master' of https://github.com/Hamlib/Hamlib commit 6eee309b56f1815cc291051254e2de66447bf480 Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Mar 19 22:56:18 2021 -0500 Improve rig_get_version and hamlib_version2 information to include commit information https://github.com/Hamlib/Hamlib/issues/617 diff --git a/src/rig.c b/src/rig.c index aa788610..1452d96f 100644 --- a/src/rig.c +++ b/src/rig.c @@ -72,6 +72,7 @@ #include "gpio.h" #include "misc.h" #include "sprintflst.h" +#include "../tests/hamlibdatetime.h" /** * \brief Hamlib release number @@ -86,7 +87,7 @@ const char *hamlib_license = "LGPL"; //! @cond Doxygen_Suppress const char hamlib_version[21] = "Hamlib " PACKAGE_VERSION; -const char *hamlib_version2 = "Hamlib " PACKAGE_VERSION; +const char *hamlib_version2 = "Hamlib " PACKAGE_VERSION " " HAMLIBDATETIME; //! @endcond struct rig_caps caps_test; diff --git a/tests/ampctl.c b/tests/ampctl.c index 787cbbde..5efeacfd 100644 --- a/tests/ampctl.c +++ b/tests/ampctl.c @@ -278,8 +278,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose); - rig_debug(RIG_DEBUG_VERBOSE, "ampctl %s\nLast commit was %s\n", hamlib_version, - HAMLIBDATETIME); + rig_debug(RIG_DEBUG_VERBOSE, "ampctl %s\n", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to <ham...@li...>\n\n"); diff --git a/tests/ampctl_parse.c b/tests/ampctl_parse.c index 4c7eee00..21f7beae 100644 --- a/tests/ampctl_parse.c +++ b/tests/ampctl_parse.c @@ -1436,7 +1436,7 @@ int ampctl_parse(AMP *my_amp, FILE *fin, FILE *fout, char *argv[], int argc) void version() { - printf("ampctl(d), %s\n\n", hamlib_version); + printf("ampctl(d), %s\n\n", hamlib_version2); printf("%s\n", hamlib_copyright); } diff --git a/tests/ampctld.c b/tests/ampctld.c index 730c086e..12b6e2a5 100644 --- a/tests/ampctld.c +++ b/tests/ampctld.c @@ -309,7 +309,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose); - rig_debug(RIG_DEBUG_VERBOSE, "ampctld, %s\n", hamlib_version); + rig_debug(RIG_DEBUG_VERBOSE, "ampctld, %s\n", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to <ham...@li...>\n\n"); diff --git a/tests/rigctl.c b/tests/rigctl.c index e982dbce..126f5275 100644 --- a/tests/rigctl.c +++ b/tests/rigctl.c @@ -177,7 +177,7 @@ int main(int argc, char *argv[]) exit(0); case 'V': - printf("rigctl %s\nLast commit was %s\n", hamlib_version, HAMLIBDATETIME); + printf("rigctl %s\n", hamlib_version2); exit(0); case 'm': @@ -433,8 +433,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose); - rig_debug(RIG_DEBUG_VERBOSE, "rigctl %s\nLast commit was %s\n", hamlib_version, - HAMLIBDATETIME); + rig_debug(RIG_DEBUG_VERBOSE, "rigctl %s\n", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to <ham...@li...>\n\n"); diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index 729382ba..d136de7d 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -1732,7 +1732,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, void version() { - printf("rigctl(d), %s\n\n", hamlib_version); + printf("rigctl(d), %s\n\n", hamlib_version2); printf("%s\n", hamlib_copyright); } diff --git a/tests/rigctld.c b/tests/rigctld.c index 46ba0275..2cc7c262 100644 --- a/tests/rigctld.c +++ b/tests/rigctld.c @@ -286,7 +286,7 @@ int main(int argc, char *argv[]) exit(0); case 'V': - printf("rigctl %s\nLast commit was %s\n", hamlib_version, HAMLIBDATETIME); + printf("rigctl %s\n", hamlib_version2); exit(0); case 'm': @@ -556,8 +556,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose); - rig_debug(RIG_DEBUG_VERBOSE, "rigctld %s\nLast commit was %s\n", hamlib_version, - HAMLIBDATETIME); + rig_debug(RIG_DEBUG_VERBOSE, "rigctld %s\n", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to <ham...@li...>\n\n"); diff --git a/tests/rigmem.c b/tests/rigmem.c index c8ab19a3..4d422747 100644 --- a/tests/rigmem.c +++ b/tests/rigmem.c @@ -233,7 +233,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose < 2 ? RIG_DEBUG_WARN : verbose); - rig_debug(RIG_DEBUG_VERBOSE, "rigmem, %s\n", hamlib_version); + rig_debug(RIG_DEBUG_VERBOSE, "rigmem, %s\n", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to " "<ham...@li...>\n\n"); @@ -406,7 +406,7 @@ int main(int argc, char *argv[]) void version() { - printf("rigmem, %s\n\n", hamlib_version); + printf("rigmem, %s\n\n", hamlib_version2); printf("%s\n", hamlib_copyright); } diff --git a/tests/rigsmtr.c b/tests/rigsmtr.c index 4a99570f..b992dd91 100644 --- a/tests/rigsmtr.c +++ b/tests/rigsmtr.c @@ -242,7 +242,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose < 2 ? RIG_DEBUG_WARN : verbose); - rig_debug(RIG_DEBUG_VERBOSE, "rigsmtr, %s\n", hamlib_version); + rig_debug(RIG_DEBUG_VERBOSE, "rigsmtr, %s\n", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to <ham...@li...>\n\n"); @@ -409,7 +409,7 @@ int main(int argc, char *argv[]) void version() { - printf("rigsmtr, %s\n\n", hamlib_version); + printf("rigsmtr, %s\n\n", hamlib_version2); printf("%s\n", hamlib_copyright); } diff --git a/tests/rigswr.c b/tests/rigswr.c index 88d89d4c..6ceec705 100644 --- a/tests/rigswr.c +++ b/tests/rigswr.c @@ -231,7 +231,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose < 2 ? RIG_DEBUG_WARN : verbose); - rig_debug(RIG_DEBUG_VERBOSE, "rigswr, %s\n", hamlib_version); + rig_debug(RIG_DEBUG_VERBOSE, "rigswr, %s\n", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to <ham...@li...>\n\n"); @@ -351,7 +351,7 @@ int main(int argc, char *argv[]) void version() { - printf("rigswr, %s\n\n", hamlib_version); + printf("rigswr, %s\n\n", hamlib_version2); printf("%s\n", hamlib_copyright); } diff --git a/tests/rotctl.c b/tests/rotctl.c index 633d052c..9a222dc0 100644 --- a/tests/rotctl.c +++ b/tests/rotctl.c @@ -305,8 +305,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose); - rig_debug(RIG_DEBUG_VERBOSE, "rotctl %s\nLast commit was %s\n", hamlib_version, - HAMLIBDATETIME); + rig_debug(RIG_DEBUG_VERBOSE, "rotctl %s\n", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to <ham...@li...>\n\n"); diff --git a/tests/rotctl_parse.c b/tests/rotctl_parse.c index 1c960280..6f14a808 100644 --- a/tests/rotctl_parse.c +++ b/tests/rotctl_parse.c @@ -1507,7 +1507,7 @@ int rotctl_parse(ROT *my_rot, FILE *fin, FILE *fout, char *argv[], int argc, void version() { - printf("rotctl(d), %s\n\n", hamlib_version); + printf("rotctl(d), %s\n\n", hamlib_version2); printf("%s\n", hamlib_copyright); } diff --git a/tests/rotctld.c b/tests/rotctld.c index 8b28c3bb..e7f81f9f 100644 --- a/tests/rotctld.c +++ b/tests/rotctld.c @@ -322,7 +322,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose); - rig_debug(RIG_DEBUG_VERBOSE, "rotctld, %s\n", hamlib_version); + rig_debug(RIG_DEBUG_VERBOSE, "rotctld, %s\n", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to <ham...@li...>\n\n"); commit 7662a6235ab2170c8a9ac4c2c1f837efa315ffea Merge: dee6bd65 8cd4a2e3 Author: Michael Black <mdb...@ya...> Date: Fri Mar 19 15:02:36 2021 -0500 Merge pull request #619 from fillods/prm80_FW_V5 Prm80 fw v5 commit dee6bd652463e40cbc7ae5cef6afa3a130fcd904 Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Mar 19 14:59:42 2021 -0500 Add SA command handling to rigctlcom.c https://github.com/Hamlib/Hamlib/issues/620 diff --git a/tests/rigctlcom.c b/tests/rigctlcom.c index f7b1d77f..e78e2b4c 100644 --- a/tests/rigctlcom.c +++ b/tests/rigctlcom.c @@ -878,6 +878,11 @@ static int handle_ts2000(void *arg) return write_block2((void *)__func__, &my_com, response, strlen(response)); } // Now some commands to set things + else if (strncmp(arg,"SA",2) == 0) + { + // todo -- make rigs changes based on TS-2000 bit flags + return RIG_OK; + } else if (strcmp(arg, "TX;") == 0) { return rig_set_ptt(my_rig, vfo_fixup(my_rig, RIG_VFO_A), 1); commit 8cd4a2e3c4cf2ae8fa35418e59e89663100ab2c7 Author: Stephane Fillod <fi...@us...> Date: Fri Mar 19 20:51:54 2021 +0100 prm80: remove the "A" command that won't make it into FW V5 diff --git a/rigs/prm80/pysimulprm80.py b/rigs/prm80/pysimulprm80.py index 0a2627a6..dbb50c50 100755 --- a/rigs/prm80/pysimulprm80.py +++ b/rigs/prm80/pysimulprm80.py @@ -51,7 +51,6 @@ class Prm80Simul: 'C' : self.tch_Chanlist, 'R' : self.tch_Rfreq, 'E' : self.tch_Estate, - 'A' : self.tch_Astatus, '#' : self.tch_diese, '*' : self.tch_autre, } @@ -187,10 +186,6 @@ class Prm80Simul: rssi ).encode()) - def tch_Astatus(self): - """ Print value of RSSI, squelch and transmit status. V5. """ - self.pty_write(b'1801') - def tch_Chanlist(self): """ Print channels list """ self.pty_write(b'Channels list :\r\n00 : 8464 84\r\n01 : 81B0 00\r\n02 : 8464 0C') commit ab0ae7d6b13aec5237ccadfeb2d075a7522449f0 Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Mar 19 11:19:15 2021 -0500 https://github.com/Hamlib/Hamlib/issues/618 diff --git a/tests/rigctlcom.c b/tests/rigctlcom.c index 370d774f..f7b1d77f 100644 --- a/tests/rigctlcom.c +++ b/tests/rigctlcom.c @@ -221,7 +221,7 @@ int main(int argc, char *argv[]) char conf_parms[MAXCONFLEN] = ""; int status; - printf("rigctlcom Version 1.1\n"); + printf("rigctlcom Version 1.2\n"); while (1) { @@ -464,7 +464,7 @@ int main(int argc, char *argv[]) rig_set_debug(verbose); - rig_debug(RIG_DEBUG_VERBOSE, "%s, %s\n", "rigctlcom", hamlib_version); + rig_debug(RIG_DEBUG_VERBOSE, "%s, %s\n", "rigctlcom", hamlib_version2); rig_debug(RIG_DEBUG_VERBOSE, "%s", "Report bugs to <ham...@li...>\n\n"); @@ -873,6 +873,7 @@ static int handle_ts2000(void *arg) { char response[32]; + rig_set_ptt(my_rig, vfo_fixup(my_rig, RIG_VFO_A), 0); snprintf(response, sizeof(response), "RX0;"); return write_block2((void *)__func__, &my_com, response, strlen(response)); } commit 42ebd658113adaad956c19e660498607a45a4f5e Author: Stephane Fillod <fi...@us...> Date: Mon Mar 15 15:13:55 2021 +0100 prm80: protcol evolution in firmware V5 - RSSI appended to system state ("E" command) - new ranging for the volume value - implement a cache handling for the system state (not V5 specific) diff --git a/rigs/prm80/prm80.c b/rigs/prm80/prm80.c index 7a05250c..4f13dcd7 100644 --- a/rigs/prm80/prm80.c +++ b/rigs/prm80/prm80.c @@ -48,6 +48,12 @@ #define CHAN_MIN 0 #define CHAN_MAX 99 +// "E" system state is cached for this time (ms) +#define PRM80_CACHE_TIMEOUT 200 + +// Length (in bytes) of the response to the "E" command +#define CMD_E_RSP_LEN 22 + #define RX_IF_OFFSET MHz(21.4) // The rig's PLL only deals with freq in Hz divided by this value @@ -72,7 +78,7 @@ MessageAide: DB "H",0Dh,0Ah DB " [1] a [5] = Show 80c552 port state P1 to P5.",0Dh,0Ah DB " [C] = Print channels list.",0Dh,0Ah DB " [D] = Set system byte.",0Dh,0Ah - DB " [E] = Show system state (Mode-Chan-Chanstate-Sql-Vol-Lock-RX freq-TX freq).",0Dh,0Ah + DB " [E] = Show system state (Mode-Chan-Chanstate-Sql-Vol-Lock-RX freq-TX freq,RSSI).",0Dh,0Ah DB " [F] = Set squelch.",0Dh,0Ah DB " [H] = Print this help page.",0Dh,0Ah DB " [I] = Erase and init RAM and EEPROM.",0Dh,0Ah @@ -98,7 +104,7 @@ MessageAide: DB "H",0Dh,0Ah [D] = Set system byte. [E] = Show system state (Mode-Chan-Chanstate-Sql-Vol-Lock-RX freq-TX - freq). + freq-RSSI). [F] = Set squelch. [H] = Print this help page. [K] = Set lock byte. @@ -139,6 +145,13 @@ MessageAide: DB "H",0Dh,0Ah * ********************************************************************* */ +static void prm80_force_cache_timeout(RIG *rig) +{ + struct prm80_priv_data *priv = (struct prm80_priv_data *)rig->state.priv; + + rig_force_cache_timeout(&priv->status_tv); +} + /* * Read a prompt terminated by delimiter, then write an optional string s. */ @@ -319,6 +332,8 @@ int prm80_reset(RIG *rig, reset_t reset) return retval; } + prm80_force_cache_timeout(rig); + return RIG_OK; } @@ -395,6 +410,8 @@ int prm80_set_freq(RIG *rig, vfo_t vfo, freq_t freq) priv->rx_freq = freq; } + prm80_force_cache_timeout(rig); + return rc; } @@ -416,6 +433,8 @@ int prm80_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) priv->tx_freq = tx_freq; } + prm80_force_cache_timeout(rig); + return rc; } @@ -526,6 +545,8 @@ int prm80_set_mem(RIG *rig, vfo_t vfo, int ch) sprintf(chbuf, "%02u", (unsigned)ch); + prm80_force_cache_timeout(rig); + // Send command, no answer expected from rig except ">" prompt return prm80_transaction(rig, "N", chbuf, 1); @@ -579,7 +600,7 @@ static unsigned hhtoi(const char *p) /** * Get system state [E] from rig into \a statebuf */ -static int prm80_read_system_state(hamlib_port_t *rigport, char *statebuf) +static int prm80_do_read_system_state(hamlib_port_t *rigport, char *statebuf) { char *p; int ret; @@ -596,7 +617,7 @@ static int prm80_read_system_state(hamlib_port_t *rigport, char *statebuf) } // The response length is fixed - ret = read_block(rigport, statebuf, 20); + ret = read_block(rigport, statebuf, CMD_E_RSP_LEN); if (ret < 0) { @@ -608,10 +629,10 @@ static int prm80_read_system_state(hamlib_port_t *rigport, char *statebuf) statebuf[ret] = '\0'; } - if (ret < 20) + if (ret < CMD_E_RSP_LEN) { - rig_debug(RIG_DEBUG_ERR, "%s: len=%d < 20, statebuf='%s'\n", __func__, - ret, statebuf); + rig_debug(RIG_DEBUG_ERR, "%s: len=%d < %d, statebuf='%s'\n", __func__, + ret, CMD_E_RSP_LEN, statebuf); RETURNFUNC(-RIG_EPROTO); } @@ -620,8 +641,9 @@ static int prm80_read_system_state(hamlib_port_t *rigport, char *statebuf) if (p) { int left_to_read = (p - statebuf) + 1; - memmove(statebuf, p + 1, 20 - left_to_read); - ret = read_block(rigport, statebuf + 20 - left_to_read, left_to_read); + memmove(statebuf, p + 1, CMD_E_RSP_LEN - left_to_read); + ret = read_block(rigport, statebuf + CMD_E_RSP_LEN - left_to_read, + left_to_read); if (ret < 0) { @@ -629,16 +651,45 @@ static int prm80_read_system_state(hamlib_port_t *rigport, char *statebuf) } else { - statebuf[20] = '\0'; + statebuf[CMD_E_RSP_LEN] = '\0'; } rig_debug(RIG_DEBUG_WARN, "%s: len=%d, statebuf='%s'\n", __func__, ret, statebuf); } + prm80_wait_for_prompt(rigport); + return RIG_OK; } +/* + * Layer to handle the cache to Get system state [E] + */ +static int prm80_read_system_state(RIG *rig, char *statebuf) +{ + struct prm80_priv_data *priv = (struct prm80_priv_data *)rig->state.priv; + int ret = RIG_OK; + + if (rig_check_cache_timeout(&priv->status_tv, PRM80_CACHE_TIMEOUT)) + { + ret = prm80_do_read_system_state(&rig->state.rigport, statebuf); + + if (ret == RIG_OK) + { + strcpy(priv->cached_statebuf, statebuf); + + /* update cache date */ + gettimeofday(&priv->status_tv, NULL); + } + } + else + { + strcpy(statebuf, priv->cached_statebuf); + } + + return ret; +} /* * prm80_get_channel @@ -647,7 +698,6 @@ static int prm80_read_system_state(hamlib_port_t *rigport, char *statebuf) int prm80_get_channel(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) { struct prm80_priv_data *priv = (struct prm80_priv_data *)rig->state.priv; - struct rig_state *rs = &rig->state; char statebuf[BUFSZ]; int ret, chanstate, mode_byte, lock_byte; @@ -661,15 +711,15 @@ int prm80_get_channel(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) } } - ret = prm80_read_system_state(&rs->rigport, statebuf); + ret = prm80_read_system_state(rig, statebuf); if (ret != RIG_OK) { return ret; } - /* (Mode-Chan-Chanstate-Sql-Vol-Lock-RX freq-TX freq). */ - /* Examples: 1240080AFF0033F02D40 or 14000C00FD0079708020 */ + /* (Mode-Chan-Chanstate-Sql-Vol-Lock-RX freq-TX freq-RSSI). */ + /* Examples: 1240080AFF0033F02D40__ or 14000C00FD0079708020__ */ /* Current mode: ; b0: Squelch b1: power @@ -698,10 +748,13 @@ int prm80_get_channel(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) // squelch is in low nibble chan->levels[LVL_SQL].f = ((float)(hhtoi(statebuf + 6) & 0x0F)) / 15.; - // (remote control) volume is in high nibble - chan->levels[LVL_AF].f = ((float)(hhtoi(statebuf + 8) >> 4)) / 15.; + // volume is hex "00" .. "10" + chan->levels[LVL_AF].f = ((float)hhtoi(statebuf + 8)) / 16.; chan->levels[LVL_RFPOWER].f = (mode_byte & 0x02) ? 1.0 : 0.0; + // new in FW V5 + chan->levels[LVL_RAWSTR].i = hhtoi(statebuf + 20); + chan->funcs = 0; chan->funcs |= (chanstate & 0x02) ? RIG_FUNC_REV : 0; @@ -734,8 +787,6 @@ int prm80_get_channel(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) //return -RIG_ENIMPL; } - prm80_wait_for_prompt(&rs->rigport); - return RIG_OK; } @@ -904,6 +955,8 @@ int prm80_set_channel(RIG *rig, vfo_t vfo, const channel_t *chan) } } + prm80_force_cache_timeout(rig); + return RIG_OK; } @@ -929,6 +982,8 @@ int prm80_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) ret = -RIG_EINVAL; } + prm80_force_cache_timeout(rig); + return ret; } @@ -974,7 +1029,8 @@ int prm80_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) switch (level) { case RIG_LEVEL_AF: - sprintf(buf, "%02u", (unsigned)(val.f * 15)); + // Unlike system state, volume decimal + sprintf(buf, "%02u", (unsigned)(val.f * 16)); return prm80_transaction(rig, "O", buf, 1); @@ -991,15 +1047,13 @@ int prm80_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) ; b6: Debouncing in effect b7: LCD refresh */ // Perform a "Read-Modify-Write" of the mode_byte - ret = prm80_read_system_state(&rig->state.rigport, buf); + ret = prm80_read_system_state(rig, buf); if (ret != RIG_OK) { return ret; } - prm80_wait_for_prompt(&rig->state.rigport); - mode_byte = hhtoi(buf); mode_byte &= ~0x02; mode_byte |= (val.f == 0.) ? 0 : 0x02; @@ -1013,6 +1067,8 @@ int prm80_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) return -RIG_EINVAL; } + prm80_force_cache_timeout(rig); + return RIG_OK; } @@ -1078,48 +1134,6 @@ static int prm80_get_rawstr_RAM(RIG *rig, value_t *val) } #endif -/* - * get_level RIG_LEVEL_RAWSTR - * - * NB : requires a V5 firmware! - */ -static int prm80_get_rawstr(RIG *rig, value_t *val) -{ - char buf[BUFSZ]; - struct rig_state *rs = &rig->state; - int ret; - - // Get rid of possible prompt sent by the rig - rig_flush(&rs->rigport); - - /* [A] = RSSI */ - ret = write_block(&rs->rigport, "A", 1); - - if (ret < 0) - { - RETURNFUNC(ret); - } - - // The response length is fixed - ret = read_block(&rs->rigport, buf, 4); - - if (ret < 0) - { - return ret; - } - - if (ret >= 0) - { - buf[ret] = '\0'; - } - - val->i = hhtoi(buf); - - prm80_wait_for_prompt(&rs->rigport); - - return RIG_OK; -} - /* * prm80_get_level * Assumes rig!=NULL @@ -1129,12 +1143,6 @@ int prm80_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) int ret; channel_t chan; - // Get rawstr apart, it is not read from system state - if (level == RIG_LEVEL_RAWSTR) - { - return prm80_get_rawstr(rig, val); - } - memset(&chan, 0, sizeof(chan)); chan.vfo = RIG_VFO_CURR; @@ -1147,6 +1155,11 @@ int prm80_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) switch (level) { + case RIG_LEVEL_RAWSTR: + val->i = chan.levels[LVL_RAWSTR].i; + + break; + case RIG_LEVEL_AF: val->f = chan.levels[LVL_AF].f; @@ -1176,8 +1189,7 @@ int prm80_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) char statebuf[BUFSZ]; int ret, mode_byte; - // TODO use command 'A' which is faster, but not in V4 - ret = prm80_read_system_state(&rig->state.rigport, statebuf); + ret = prm80_read_system_state(rig, statebuf); if (ret != RIG_OK) { @@ -1189,8 +1201,6 @@ int prm80_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt) // TX mode on? *ptt = (mode_byte & 0x08) ? RIG_PTT_ON : RIG_PTT_OFF; - prm80_wait_for_prompt(&rig->state.rigport); - return RIG_OK; } @@ -1199,8 +1209,7 @@ int prm80_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) char statebuf[BUFSZ]; int ret, mode_byte; - // TODO use command 'A' which is faster, but not in V4 - ret = prm80_read_system_state(&rig->state.rigport, statebuf); + ret = prm80_read_system_state(rig, statebuf); if (ret != RIG_OK) { @@ -1212,8 +1221,6 @@ int prm80_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) // Squelch open? *dcd = (mode_byte & 0x04) ? RIG_DCD_ON : RIG_DCD_OFF; - prm80_wait_for_prompt(&rig->state.rigport); - return RIG_OK; } diff --git a/rigs/prm80/prm80.h b/rigs/prm80/prm80.h index 4728b7c9..c2c33f04 100644 --- a/rigs/prm80/prm80.h +++ b/rigs/prm80/prm80.h @@ -24,7 +24,7 @@ #include <hamlib/rig.h> -#define BACKEND_VER "20210306" +#define BACKEND_VER "20210315" #define PRM80_MEM_CAP { \ .freq = 1, \ @@ -37,6 +37,8 @@ struct prm80_priv_data freq_t rx_freq; /* last RX freq set */ freq_t tx_freq; /* last TX freq set */ split_t split; /* emulated split on/off */ + struct timeval status_tv; /* date of last "E" command */ + char cached_statebuf[32]; /* response of last "E" command */ }; int prm80_init(RIG *rig); diff --git a/rigs/prm80/pysimulprm80.py b/rigs/prm80/pysimulprm80.py index 6ed1e8d6..0a2627a6 100755 --- a/rigs/prm80/pysimulprm80.py +++ b/rigs/prm80/pysimulprm80.py @@ -59,7 +59,7 @@ class Prm80Simul: self.ChanNum = 0 self.LockByte = 0 self.Squelch = 0 - self.Volume = 0xff + self.Volume = 0x10 self.ModeByte = 0x16 self.ChanState = 0x0c self.MaxChan = 80 @@ -172,17 +172,19 @@ class Prm80Simul: self.pty_write(b'\r\n') def tch_Estate(self): - """ Show system state (Mode-Chan-Chanstate-Sql-Vol-Lock-RX freq-TX freq) """ - #self.pty_write(b'16000C00FF0079708020') - self.pty_write('{:02X}{:02X}{:02X}{:02X}{:02X}{:02X}{:04X}{:04X}'.format( + """ Show system state (Mode-Chan-Chanstate-Sql-Vol-Lock-RX freq-TX freq-RSSI) (FW V5)""" + #self.pty_write(b'16000C0010007970802018') + rssi=24 + self.pty_write('{:02X}{:02X}{:02X}{:02X}{:02X}{:02X}{:04X}{:04X}{:02X}'.format( self.ModeByte, self.ChanNum, self.ChanState, - self.Squelch, + self.Squelch, # low nibble self.Volume, self.LockByte, self.RxPLL, - self.TxPLL + self.TxPLL, + rssi ).encode()) def tch_Astatus(self): commit 257ae409d2ca53089c33cd78d2f7c6d2be08344e Author: Stephane Fillod <fi...@us...> Date: Mon Mar 15 14:54:40 2021 +0100 prm80: fix SQL parsing diff --git a/rigs/prm80/prm80.c b/rigs/prm80/prm80.c index 506a7c6f..7a05250c 100644 --- a/rigs/prm80/prm80.c +++ b/rigs/prm80/prm80.c @@ -27,6 +27,7 @@ #include <stdlib.h> #include <string.h> /* String function definitions */ #include <unistd.h> /* UNIX standard function definitions */ +#include <ctype.h> #include <math.h> #include "hamlib/rig.h" @@ -557,15 +558,22 @@ int prm80_get_mem(RIG *rig, vfo_t vfo, int *ch) /* * Convert first two hexadecimal digit to integer */ -static int hhtoi(const char *p) +static unsigned hhtoi(const char *p) { char buf[4]; + // it has to be hex digits + if (!isxdigit(p[0]) || !isxdigit(p[1])) + { + rig_debug(RIG_DEBUG_ERR, "%s: unexpected content '%s'\n", __func__, p); + return 0; + } + buf[0] = p[0]; buf[1] = p[1]; buf[2] = '\0'; - return (int)strtol(buf, NULL, 16); + return (unsigned)strtol(buf, NULL, 16); } /** @@ -688,8 +696,9 @@ int prm80_get_channel(RIG *rig, vfo_t vfo, channel_t *chan, int read_only) (chanstate & 0x04) ? RIG_RPT_SHIFT_PLUS : RIG_RPT_SHIFT_NONE; chan->flags = (chanstate & 0x08) ? RIG_CHFLAG_SKIP : 0; - // cppcheck-suppress * - chan->levels[LVL_SQL].f = ((float)(hhtoi(statebuf + 6) >> 4)) / 15.; + // squelch is in low nibble + chan->levels[LVL_SQL].f = ((float)(hhtoi(statebuf + 6) & 0x0F)) / 15.; + // (remote control) volume is in high nibble chan->levels[LVL_AF].f = ((float)(hhtoi(statebuf + 8) >> 4)) / 15.; chan->levels[LVL_RFPOWER].f = (mode_byte & 0x02) ? 1.0 : 0.0; ----------------------------------------------------------------------- Summary of changes: rigs/prm80/prm80.c | 178 ++++++++++++++++++++++++--------------------- rigs/prm80/prm80.h | 4 +- rigs/prm80/pysimulprm80.py | 19 ++--- src/rig.c | 3 +- tests/ampctl.c | 3 +- tests/ampctl_parse.c | 2 +- tests/ampctld.c | 2 +- tests/rigctl.c | 5 +- tests/rigctl_parse.c | 2 +- tests/rigctlcom.c | 10 ++- tests/rigctld.c | 5 +- tests/rigmem.c | 4 +- tests/rigsmtr.c | 4 +- tests/rigswr.c | 4 +- tests/rotctl.c | 3 +- tests/rotctl_parse.c | 2 +- tests/rotctld.c | 2 +- 17 files changed, 135 insertions(+), 117 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-19 03:49:59
|
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 c1277b170e0444b1de1d55012e6024c983a5e24e (commit) via 5b74438b7679221a96650cea7d6bf33421774c67 (commit) from b9cc75c4a020e7a800c03ba64d74fc7a6d6fe6a4 (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 c1277b170e0444b1de1d55012e6024c983a5e24e Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Mar 18 22:46:45 2021 -0500 Fix Icom icom_get_usb_echo_off to read the freq response when echo is on This takes into account whatever the response time of the rig is https://github.com/Hamlib/Hamlib/issues/615 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 481c24d2..d12721e4 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -730,8 +730,13 @@ int icom_get_usb_echo_off(RIG *rig) if (ack_len == 1) // then we got an echo of the cmd { + struct rig_state *rs = &rig->state; + unsigned char buf[16]; priv->serial_USB_echo_off = 0; rig_debug(RIG_DEBUG_VERBOSE, "%s: USB echo on detected\n", __func__); + // we should have a freq response so we'll read it and don't really care + // flushing doesn't always work as it depends on timing + read_icom_frame(&rs->rigport,buf,sizeof(buf)); } else { diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index c3959eae..9127cc62 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20210316" +#define BACKEND_VER "20210318" /* * defines used by comp_cal_str in rig.c commit 5b74438b7679221a96650cea7d6bf33421774c67 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Mar 18 17:11:19 2021 -0500 DDon't do band select on FDX3000 -- seems to have a problem putting split on all the time diff --git a/rigs/yaesu/newcat.c b/rigs/yaesu/newcat.c index 105f4098..cb1039ae 100644 --- a/rigs/yaesu/newcat.c +++ b/rigs/yaesu/newcat.c @@ -894,8 +894,10 @@ int newcat_set_freq(RIG *rig, vfo_t vfo, freq_t freq) && !rig->state.disable_yaesu_bandselect // remove the split check here -- hopefully works OK //&& !rig->state.cache.split + // seems some rigs are problematic + && !(is_ftdx3000) // some rigs can't do BS command on 60M - && !(is_ftdx3000 && newcat_band_index(freq) == 2) + // && !(is_ftdx3000 && newcat_band_index(freq) == 2) && !(is_ft2000 && newcat_band_index(freq) == 2) && !(is_ftdx1200 && newcat_band_index(freq) == 2) && !is_ft891 // 891 does not remember bandwidth so don't do this ----------------------------------------------------------------------- Summary of changes: rigs/icom/icom.c | 5 +++++ rigs/icom/icom.h | 2 +- rigs/yaesu/newcat.c | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-18 20:41:48
|
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 b9cc75c4a020e7a800c03ba64d74fc7a6d6fe6a4 (commit) from b958e42a0c392d0e028a13b6259aec0fa1eb7169 (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 b9cc75c4a020e7a800c03ba64d74fc7a6d6fe6a4 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Mar 18 15:40:32 2021 -0500 Remove all frequency verification as it seems to create problems on some rigs https://github.com/Hamlib/Hamlib/issues/615 diff --git a/src/rig.c b/src/rig.c index 4702f68e..aa788610 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1716,6 +1716,7 @@ int HAMLIB_API rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq) set_cache_freq(rig, vfo, (freq_t)0); +#if 0 // this verification seems to be causing bad behavior on some reigs if (caps->get_freq) { retcode = rig_get_freq(rig, vfo, &tfreq); @@ -1734,6 +1735,9 @@ int HAMLIB_API rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq) } } else { retry = 0; } +#else + tfreq = freq; +#endif } while (tfreq != freq && retry-- > 0); @@ -3504,7 +3508,11 @@ int HAMLIB_API rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) if (retcode != RIG_OK) { RETURNFUNC(retcode); } +#if 0 // this verification seems to be causing bad behavior on some reigs retcode = rig_get_freq(rig, tx_vfo, &tfreq); +#else + tfreq = tx_freq; +#endif } while (tfreq != tx_freq && retry-- > 0 && retcode == RIG_OK); @@ -3534,6 +3542,7 @@ int HAMLIB_API rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) do { +#if 0 // this verification seems to be causing bad behavior on some reigs if (caps->set_split_freq) { retcode = caps->set_split_freq(rig, vfo, tx_freq); @@ -3544,6 +3553,9 @@ int HAMLIB_API rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) retcode = rig_set_freq(rig, RIG_VFO_CURR, tx_freq); rig_get_freq(rig, vfo, &tfreq); } +#else + tfreq = tx_freq; +#endif } while (tfreq != tx_freq && retry-- > 0 && retcode == RIG_OK); @@ -3973,6 +3985,7 @@ int HAMLIB_API rig_set_split_freq_mode(RIG *rig, do { retcode = caps->set_split_freq_mode(rig, vfo, tx_freq, tx_mode, tx_width); +#if 0 // this verification seems to be causing bad behavior on some reigs retcode2 = rig_get_split_freq(rig, vfo, &tfreq); if (tfreq != tx_freq) @@ -3982,6 +3995,10 @@ int HAMLIB_API rig_set_split_freq_mode(RIG *rig, tfreq, retry, retcode, retcode2); hl_usleep(50 * 1000); // 50ms sleep may help here } +#else + tfreq = tx_freq; + retcode2 = RIG_OK; +#endif } while (tfreq != tx_freq && retry-- > 0 && retcode == RIG_OK && retcode2 == RIG_OK); ----------------------------------------------------------------------- Summary of changes: src/rig.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-18 14:28:05
|
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 b958e42a0c392d0e028a13b6259aec0fa1eb7169 (commit) from 30eaa78034767cabdd91b11b1de081da4216e3e4 (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 b958e42a0c392d0e028a13b6259aec0fa1eb7169 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Mar 18 09:26:17 2021 -0500 Fix 10Hz resolution problem with FT1000MP rigs https://github.com/Hamlib/Hamlib/issues/616 diff --git a/rigs/yaesu/ft1000mp.c b/rigs/yaesu/ft1000mp.c index 5fcc36ec..2c9bc60a 100644 --- a/rigs/yaesu/ft1000mp.c +++ b/rigs/yaesu/ft1000mp.c @@ -38,6 +38,7 @@ #include <stdlib.h> #include <string.h> /* String function definitions */ #include <unistd.h> /* UNIX standard function definitions */ +#include <math.h> #include "hamlib/rig.h" #include "bandplan.h" @@ -222,7 +223,7 @@ const struct rig_caps ft1000mp_caps = RIG_MODEL(RIG_MODEL_FT1000MP), .model_name = "FT-1000MP", .mfg_name = "Yaesu", - .version = "20210310.0", + .version = "20210318.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -356,7 +357,7 @@ const struct rig_caps ft1000mpmkv_caps = RIG_MODEL(RIG_MODEL_FT1000MPMKV), .model_name = "MARK-V FT-1000MP", .mfg_name = "Yaesu", - .version = "20210310.0", + .version = "20210318.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -490,7 +491,7 @@ const struct rig_caps ft1000mpmkvfld_caps = RIG_MODEL(RIG_MODEL_FT1000MPMKVFLD), .model_name = "MARK-V Field FT-1000MP", .mfg_name = "Yaesu", - .version = "20210310.0", + .version = "20210318.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_TRANSCEIVER, @@ -763,8 +764,10 @@ int ft1000mp_set_freq(RIG *rig, vfo_t vfo, freq_t freq) */ memcpy(&p->p_cmd, &ncmd[cmd_index].nseq, YAESU_CMD_LENGTH); + // round freq to 10Hz intervals due to rig restriction + freq = round(freq/10.0)*10.0; + to_bcd(p->p_cmd, freq / 10, 8); /* store bcd format in in p_cmd */ - /* TODO -- fix 10Hz resolution -- FS */ // cppcheck-suppress * rig_debug(RIG_DEBUG_TRACE, "%s: freq = %"PRIll" Hz\n", __func__, ----------------------------------------------------------------------- Summary of changes: rigs/yaesu/ft1000mp.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-18 13:16:31
|
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 30eaa78034767cabdd91b11b1de081da4216e3e4 (commit) from c7c5cd81bc92c8bf4af7134e89e7d259b081aad3 (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 30eaa78034767cabdd91b11b1de081da4216e3e4 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Mar 18 08:16:06 2021 -0500 astyle rig.c diff --git a/src/rig.c b/src/rig.c index b877d5b8..4702f68e 100644 --- a/src/rig.c +++ b/src/rig.c @@ -3147,7 +3147,7 @@ int HAMLIB_API rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) case RIG_DCD_PARALLEL: - retcode=par_dcd_get(&rig->state.dcdport, dcd); + retcode = par_dcd_get(&rig->state.dcdport, dcd); RETURNFUNC(retcode); case RIG_DCD_GPIO: ----------------------------------------------------------------------- Summary of changes: src/rig.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-18 12:13:04
|
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 c7c5cd81bc92c8bf4af7134e89e7d259b081aad3 (commit) via ab59951e97daffbffa3487418be91eef7ca16df0 (commit) via 4201beafcdc418c2a32df702041fa384e751dfc5 (commit) via 90112b576953d6e5d647978d0654b45484edb5d7 (commit) via 27192d0c813aa79c6eb09d85077c7a0fae5489e7 (commit) via 0942553687f1763121a56247c3d5a70dbabd25f8 (commit) via 5dfb3b85671e8542a0016aae4d63f5ef76bab023 (commit) from 8817f121809998ac25700a6eff868e119fd0f892 (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 c7c5cd81bc92c8bf4af7134e89e7d259b081aad3 Author: Michael Black W9MDB <mdb...@ya...> Date: Thu Mar 18 07:09:58 2021 -0500 In rig.c change RETURNFUNC calls with functions into separate lines https://github.com/Hamlib/Hamlib/issues/615 diff --git a/src/rig.c b/src/rig.c index b762d9e0..b877d5b8 100644 --- a/src/rig.c +++ b/src/rig.c @@ -3099,7 +3099,8 @@ int HAMLIB_API rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_dcd(rig, vfo, dcd)); + retcode = caps->get_dcd(rig, vfo, dcd); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3146,11 +3147,13 @@ int HAMLIB_API rig_get_dcd(RIG *rig, vfo_t vfo, dcd_t *dcd) case RIG_DCD_PARALLEL: - RETURNFUNC(par_dcd_get(&rig->state.dcdport, dcd)); + retcode=par_dcd_get(&rig->state.dcdport, dcd); + RETURNFUNC(retcode); case RIG_DCD_GPIO: case RIG_DCD_GPION: - RETURNFUNC(gpio_dcd_get(&rig->state.dcdport, dcd)); + retcode = gpio_dcd_get(&rig->state.dcdport, dcd); + RETURNFUNC(retcode); case RIG_DCD_NONE: RETURNFUNC(-RIG_ENAVAIL); /* not available */ @@ -3200,7 +3203,8 @@ int HAMLIB_API rig_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_rptr_shift(rig, vfo, rptr_shift)); + retcode = caps->set_rptr_shift(rig, vfo, rptr_shift); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3267,7 +3271,8 @@ int HAMLIB_API rig_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_rptr_shift(rig, vfo, rptr_shift)); + retcode = caps->get_rptr_shift(rig, vfo, rptr_shift); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3334,7 +3339,8 @@ int HAMLIB_API rig_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_rptr_offs(rig, vfo, rptr_offs)); + retcode = caps->set_rptr_offs(rig, vfo, rptr_offs); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3401,7 +3407,8 @@ int HAMLIB_API rig_get_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t *rptr_offs) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_rptr_offs(rig, vfo, rptr_offs)); + retcode = caps->get_rptr_offs(rig, vfo, rptr_offs); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -3466,7 +3473,8 @@ int HAMLIB_API rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) || vfo == RIG_VFO_TX || vfo == rig->state.current_vfo)) { - RETURNFUNC(caps->set_split_freq(rig, vfo, tx_freq)); + retcode = caps->set_split_freq(rig, vfo, tx_freq); + RETURNFUNC(retcode); } vfo = vfo_fixup(rig, vfo); @@ -3595,7 +3603,8 @@ int HAMLIB_API rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) || vfo == RIG_VFO_TX || vfo == rig->state.current_vfo)) { - RETURNFUNC(caps->get_split_freq(rig, vfo, tx_freq)); + retcode = caps->get_split_freq(rig, vfo, tx_freq); + RETURNFUNC(retcode); } /* Assisted mode */ @@ -3613,7 +3622,8 @@ int HAMLIB_API rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) if (caps->get_freq && (caps->targetable_vfo & RIG_TARGETABLE_FREQ)) { - RETURNFUNC(caps->get_freq(rig, tx_vfo, tx_freq)); + retcode = caps->get_freq(rig, tx_vfo, tx_freq); + RETURNFUNC(retcode); } @@ -3723,7 +3733,8 @@ int HAMLIB_API rig_set_split_mode(RIG *rig, || vfo == RIG_VFO_TX || vfo == rig->state.current_vfo)) { - RETURNFUNC(caps->set_split_mode(rig, vfo, tx_mode, tx_width)); + retcode = caps->set_split_mode(rig, vfo, tx_mode, tx_width); + RETURNFUNC(retcode); } /* Assisted mode */ @@ -3741,7 +3752,8 @@ int HAMLIB_API rig_set_split_mode(RIG *rig, if (caps->set_mode && (caps->targetable_vfo & RIG_TARGETABLE_MODE)) { - RETURNFUNC(caps->set_mode(rig, tx_vfo, tx_mode, tx_width)); + retcode = caps->set_mode(rig, tx_vfo, tx_mode, tx_width); + RETURNFUNC(retcode); } @@ -3832,7 +3844,8 @@ int HAMLIB_API rig_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, || vfo == RIG_VFO_TX || vfo == rig->state.current_vfo)) { - RETURNFUNC(caps->get_split_mode(rig, vfo, tx_mode, tx_width)); + retcode = caps->get_split_mode(rig, vfo, tx_mode, tx_width); + RETURNFUNC(retcode); } /* Assisted mode */ @@ -3850,7 +3863,8 @@ int HAMLIB_API rig_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, if (caps->get_mode && (caps->targetable_vfo & RIG_TARGETABLE_MODE)) { - RETURNFUNC(caps->get_mode(rig, tx_vfo, tx_mode, tx_width)); + retcode = caps->get_mode(rig, tx_vfo, tx_mode, tx_width); + RETURNFUNC(retcode); } @@ -4035,7 +4049,8 @@ int HAMLIB_API rig_get_split_freq_mode(RIG *rig, if (caps->get_split_freq_mode) { - RETURNFUNC(caps->get_split_freq_mode(rig, vfo, tx_freq, tx_mode, tx_width)); + retcode = caps->get_split_freq_mode(rig, vfo, tx_freq, tx_mode, tx_width); + return retcode; } retcode = rig_get_split_freq(rig, vfo, tx_freq); @@ -4292,7 +4307,8 @@ int HAMLIB_API rig_set_rit(RIG *rig, vfo_t vfo, shortfreq_t rit) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_rit(rig, vfo, rit)); + retcode = caps->set_rit(rig, vfo, rit); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4360,7 +4376,8 @@ int HAMLIB_API rig_get_rit(RIG *rig, vfo_t vfo, shortfreq_t *rit) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_rit(rig, vfo, rit)); + retcode = caps->get_rit(rig, vfo, rit); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4428,7 +4445,8 @@ int HAMLIB_API rig_set_xit(RIG *rig, vfo_t vfo, shortfreq_t xit) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_xit(rig, vfo, xit)); + retcode = caps->set_xit(rig, vfo, xit); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4496,7 +4514,8 @@ int HAMLIB_API rig_get_xit(RIG *rig, vfo_t vfo, shortfreq_t *xit) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_xit(rig, vfo, xit)); + retcode = caps->get_xit(rig, vfo, xit); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4563,7 +4582,8 @@ int HAMLIB_API rig_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_ts(rig, vfo, ts)); + retcode = caps->set_ts(rig, vfo, ts); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4630,7 +4650,8 @@ int HAMLIB_API rig_get_ts(RIG *rig, vfo_t vfo, shortfreq_t *ts) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_ts(rig, vfo, ts)); + retcode = caps->get_ts(rig, vfo, ts); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4703,7 +4724,8 @@ int HAMLIB_API rig_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->set_ant(rig, vfo, ant, option)); + retcode = caps->set_ant(rig, vfo, ant, option); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4778,7 +4800,8 @@ int HAMLIB_API rig_get_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t *option, || vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->get_ant(rig, vfo, ant, option, ant_curr, ant_tx, ant_rx)); + retcode = caps->get_ant(rig, vfo, ant, option, ant_curr, ant_tx, ant_rx); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -4983,6 +5006,8 @@ shortfreq_t HAMLIB_API rig_get_resolution(RIG *rig, rmode_t mode) */ int HAMLIB_API rig_set_powerstat(RIG *rig, powerstat_t status) { + int retcode; + ENTERFUNC; if (CHECK_RIG_ARG(rig)) @@ -4996,7 +5021,8 @@ int HAMLIB_API rig_set_powerstat(RIG *rig, powerstat_t status) RETURNFUNC(-RIG_ENAVAIL); } - RETURNFUNC(rig->caps->set_powerstat(rig, status)); + retcode = rig->caps->set_powerstat(rig, status); + RETURNFUNC(retcode); } @@ -5016,6 +5042,8 @@ int HAMLIB_API rig_set_powerstat(RIG *rig, powerstat_t status) */ int HAMLIB_API rig_get_powerstat(RIG *rig, powerstat_t *status) { + int retcode; + ENTERFUNC; if (CHECK_RIG_ARG(rig) || !status) @@ -5028,7 +5056,8 @@ int HAMLIB_API rig_get_powerstat(RIG *rig, powerstat_t *status) RETURNFUNC(-RIG_ENAVAIL); } - RETURNFUNC(rig->caps->get_powerstat(rig, status)); + retcode = rig->caps->get_powerstat(rig, status); + RETURNFUNC(retcode); } @@ -5048,6 +5077,8 @@ int HAMLIB_API rig_get_powerstat(RIG *rig, powerstat_t *status) */ int HAMLIB_API rig_reset(RIG *rig, reset_t reset) { + int retcode; + ENTERFUNC; if (CHECK_RIG_ARG(rig)) @@ -5060,7 +5091,8 @@ int HAMLIB_API rig_reset(RIG *rig, reset_t reset) RETURNFUNC(-RIG_ENAVAIL); } - RETURNFUNC(rig->caps->reset(rig, reset)); + retcode = rig->caps->reset(rig, reset); + RETURNFUNC(retcode); } @@ -5150,6 +5182,8 @@ int HAMLIB_API rig_probe_all(hamlib_port_t *port, */ vfo_op_t HAMLIB_API rig_has_vfo_op(RIG *rig, vfo_op_t op) { + int retcode; + ENTERFUNC; if (!rig || !rig->caps) @@ -5157,7 +5191,8 @@ vfo_op_t HAMLIB_API rig_has_vfo_op(RIG *rig, vfo_op_t op) RETURNFUNC(0); } - RETURNFUNC(rig->caps->vfo_ops & op); + retcode = rig->caps->vfo_ops & op; + RETURNFUNC(retcode); } @@ -5199,7 +5234,8 @@ int HAMLIB_API rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->vfo_op(rig, vfo, op)); + retcode = caps->vfo_op(rig, vfo, op); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5247,6 +5283,8 @@ int HAMLIB_API rig_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) */ scan_t HAMLIB_API rig_has_scan(RIG *rig, scan_t scan) { + int retcode; + ENTERFUNC; if (!rig || !rig->caps) @@ -5254,7 +5292,8 @@ scan_t HAMLIB_API rig_has_scan(RIG *rig, scan_t scan) RETURNFUNC(0); } - RETURNFUNC(rig->caps->scan_ops & scan); + retcode = rig->caps->scan_ops & scan; + RETURNFUNC(retcode); } @@ -5298,7 +5337,8 @@ int HAMLIB_API rig_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->scan(rig, vfo, scan, ch)); + retcode = caps->scan(rig, vfo, scan, ch); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5365,7 +5405,8 @@ int HAMLIB_API rig_send_dtmf(RIG *rig, vfo_t vfo, const char *digits) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->send_dtmf(rig, vfo, digits)); + retcode = caps->send_dtmf(rig, vfo, digits); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5433,7 +5474,8 @@ int HAMLIB_API rig_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->recv_dtmf(rig, vfo, digits, length)); + retcode = caps->recv_dtmf(rig, vfo, digits, length); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5500,7 +5542,8 @@ int HAMLIB_API rig_send_morse(RIG *rig, vfo_t vfo, const char *msg) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->send_morse(rig, vfo, msg)); + retcode = caps->send_morse(rig, vfo, msg); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5715,7 +5758,8 @@ int HAMLIB_API rig_send_voice_mem(RIG *rig, vfo_t vfo, int ch) if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { - RETURNFUNC(caps->send_voice_mem(rig, vfo, ch)); + retcode = caps->send_voice_mem(rig, vfo, ch); + RETURNFUNC(retcode); } if (!caps->set_vfo) @@ -5791,6 +5835,8 @@ const freq_range_t *HAMLIB_API rig_get_range(const freq_range_t *range_list, */ int HAMLIB_API rig_set_vfo_opt(RIG *rig, int status) { + int retcode; + ENTERFUNC; if (rig->caps->set_vfo_opt == NULL) @@ -5798,7 +5844,8 @@ int HAMLIB_API rig_set_vfo_opt(RIG *rig, int status) RETURNFUNC(-RIG_ENAVAIL); } - RETURNFUNC(rig->caps->set_vfo_opt(rig, status)); + retcode = rig->caps->set_vfo_opt(rig, status); + RETURNFUNC(retcode); } /** commit ab59951e97daffbffa3487418be91eef7ca16df0 Author: Michael Black W9MDB <mdb...@ya...> Date: Wed Mar 17 07:56:27 2021 -0500 astyle files diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 11ead96e..481c24d2 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -6482,7 +6482,8 @@ int icom_set_powerstat(RIG *rig, powerstat_t status) RETURNFUNC(retval); } - if (status == RIG_POWER_OFF && (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK))) + if (status == RIG_POWER_OFF && (ack_len != 1 || (ack_len >= 1 + && ackbuf[0] != ACK))) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); diff --git a/src/rig.c b/src/rig.c index ca519ae7..b762d9e0 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1405,7 +1405,7 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) } // if freq == 0 then we are asking to invalidate the cache - if (freq == 0) flag = HAMLIB_ELAPSED_INVALIDATE; + if (freq == 0) { flag = HAMLIB_ELAPSED_INVALIDATE; } // pick a sane default if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) { vfo = RIG_VFO_A; } commit 4201beafcdc418c2a32df702041fa384e751dfc5 Merge: 27192d0c 90112b57 Author: Michael Black <mdb...@ya...> Date: Wed Mar 17 07:43:37 2021 -0500 Merge pull request #614 from mikaelnousiainen/fix-unnecessary-rig-reopen Fix unnecessary rig re-open cycles by refactoring rigctl_parse return values commit 90112b576953d6e5d647978d0654b45484edb5d7 Author: Mikael Nousiainen <mik...@ik...> Date: Tue Mar 16 23:39:35 2021 +0200 First attempt at fixing rigctl_parse return values and unnecessary rig re-open cycles diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index c3a5f269..5e01ee62 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -140,6 +140,15 @@ enum rig_errcode_e { RIG_EDOM /*!< 17 Argument out of domain of func */ }; +/** + * \brief Determines if the given error code indicates a "soft" error + * Soft errors are caused by invalid parameters and software/hardware features + * and cannot be fixed by retries or by re-initializing hardware. + */ +#define RIG_IS_SOFT_ERRCODE(errcode) (errcode == RIG_EINVAL || errcode == RIG_ENIMPL || errcode == RIG_ERJCTED \ + || errcode == RIG_ETRUNC || errcode == RIG_ENAVAIL || errcode == RIG_ENTARGET \ + || errcode == RIG_EVFO || errcode == RIG_EDOM) + /** * \brief Token in the netrigctl protocol for returning error code */ diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index 8d4bdff6..11ead96e 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -6532,20 +6532,6 @@ int icom_get_powerstat(RIG *rig, powerstat_t *status) RETURNFUNC(retval); } - if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) - { - // if we don't get ACK/NAK some serial corruption occurred - // so we'll call it a timeout for retry purposes - RETURNFUNC(-RIG_ETIMEOUT); - } - - if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) - { - rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, - ackbuf[0], ack_len); - RETURNFUNC(-RIG_ERJCTED); - } - *status = ackbuf[1] == S_PWR_ON ? RIG_POWER_ON : RIG_POWER_OFF; } @@ -7385,13 +7371,6 @@ int icom_get_raw_buf(RIG *rig, int cmd, int subcmd, int subcmdbuflen, cmdhead += (subcmd == -1) ? 1 : 2; ack_len -= cmdhead; - if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) - { - // if we don't get ACK/NAK some serial corruption occurred - // so we'll call it a timeout for retry purposes - RETURNFUNC(-RIG_ETIMEOUT); - } - rig_debug(RIG_DEBUG_TRACE, "%s: %d\n", __func__, ack_len); if (*reslen < ack_len || res == NULL) diff --git a/tests/rigctl.c b/tests/rigctl.c index 978fc871..e982dbce 100644 --- a/tests/rigctl.c +++ b/tests/rigctl.c @@ -611,14 +611,9 @@ int main(int argc, char *argv[]) interactive, prompt, &vfo_opt, send_cmd_term, &ext_resp, &resp_sep); - if (retcode == 2) - { - exitcode = 2; - } - // if we get a hard error we try to reopen the rig again // this should cover short dropouts that can occur - if (retcode == -RIG_EIO || retcode == 2) + if (retcode < 0 && !RIG_IS_SOFT_ERRCODE(-retcode)) { int retry = 3; rig_debug(RIG_DEBUG_ERR, "%s: i/o error\n", __func__) @@ -632,10 +627,9 @@ int main(int argc, char *argv[]) rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode); } while (retry-- > 0 && retcode != RIG_OK); - } } - while (retcode == 0 || retcode == 2 || retcode == -RIG_ENAVAIL); + while (retcode == RIG_OK || RIG_IS_SOFT_ERRCODE(-retcode)); if (interactive && prompt) { diff --git a/tests/rigctl_parse.c b/tests/rigctl_parse.c index ebb8eb1b..729382ba 100644 --- a/tests/rigctl_parse.c +++ b/tests/rigctl_parse.c @@ -65,7 +65,6 @@ extern int read_history(); #include <hamlib/rig.h> #include "misc.h" #include "iofunc.h" -#include "serial.h" #include "sprintflst.h" #include "rigctl_parse.h" @@ -662,7 +661,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#1? retcode=%d\n", __func__, retcode); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } if (cmd != 0xa) @@ -681,12 +680,12 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%c", &cmd) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#2?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } } else if (cmd == '+' && prompt) { - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } if (cmd != '\\' @@ -704,7 +703,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%c", &cmd) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#3?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } } else if (cmd != '\\' @@ -717,7 +716,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, && prompt) { - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* command by name */ @@ -728,7 +727,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%c", pcmd) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#4?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } retcode = fscanf(fin, "%s", ++pcmd); @@ -755,7 +754,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, fprintf_flush(fout, "\nRig command: "); } - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } last_was_ret = 1; @@ -773,11 +772,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%c", &cmd) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#6?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } } - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } my_rig->state.vfo_opt = *vfo_opt; @@ -790,14 +789,14 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (interactive && !prompt) { fprintf(fout, "%s0\n", NETRIGCTL_RET); } fflush(fout); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } if (cmd == '?') { usage_rig(fout); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } } else @@ -807,11 +806,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (EOF == retcode) { - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } else if ('\0' == command[1]) { @@ -832,7 +831,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, fprintf(stderr, "Command '%c' not found!\n", cmd); } - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } if (!(cmd_entry->flags & ARG_NOVFO) && *vfo_opt) @@ -850,7 +849,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%s", arg1) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#7?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } vfo = rig_parse_vfo(arg1); @@ -866,7 +865,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } vfo = rig_parse_vfo(arg1); @@ -889,7 +888,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (fgets(arg1, MAXARGSZ, fin) == NULL) { - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } if (arg1[0] == 0xa) @@ -903,7 +902,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (fgets(arg1, MAXARGSZ, fin) == NULL) { - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } } @@ -931,11 +930,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(stderr, "Invalid arg for command '%s'\n", cmd_entry->name); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p1 = arg1; @@ -959,7 +958,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%s", arg1) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#8?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p1 = arg1; @@ -976,7 +975,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p1 = arg1; @@ -1005,7 +1004,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%s", arg2) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#9?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p2 = arg2; @@ -1019,11 +1018,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(stderr, "Invalid arg for command '%s'\n", cmd_entry->name); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p2 = arg2; @@ -1052,7 +1051,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (scanfc(fin, "%s", arg3) < 1) { rig_debug(RIG_DEBUG_WARN, "%s: nothing to scan#10?\n", __func__); - RETURNFUNC(-1); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p3 = arg3; @@ -1067,11 +1066,11 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, fprintf(stderr, "Invalid arg for command '%s'\n", cmd_entry->name); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } else if (retcode < 0) { - RETURNFUNC(retcode); + RETURNFUNC(RIGCTL_PARSE_ERROR); } p3 = arg3; @@ -1098,13 +1097,13 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (!input_line) { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } /* Q or q to quit */ if (!(strncasecmp(input_line, "q", 1))) { - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } /* '?' for help */ @@ -1112,13 +1111,13 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { usage_rig(fout); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* '#' for comment */ if (!(strncmp(input_line, "#", 1))) { - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* Blank line entered */ @@ -1126,7 +1125,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } rig_debug(RIG_DEBUG_TRACE, "%s: input_line: %s\n", __func__, input_line); @@ -1149,7 +1148,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { /* Oops! Invoke GDB!! */ fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } /* At this point parsed_input contains the typed text of the command @@ -1208,7 +1207,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(stderr, "Valid multiple character command names contain alphanumeric characters plus '_'\n"); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } } @@ -1217,13 +1216,13 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, /* Single '\' entered, prompt again */ else if ((*parsed_input[0] == '\\') && (strlen(parsed_input[0]) == 1)) { - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* Multiple characters but no leading '\' */ else { fprintf(stderr, "Precede multiple character command names with '\\'\n"); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } cmd_entry = find_cmd_entry(cmd); @@ -1239,7 +1238,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, fprintf(stderr, "Command '%c' not found!\n", cmd); } - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* If vfo_opt is enabled (-o|--vfo) check if already given @@ -1264,7 +1263,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (!input_line) { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } /* Blank line entered */ @@ -1272,7 +1271,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } /* Get the first token of input, the rest, if any, will be @@ -1287,7 +1286,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1366,7 +1365,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } if (input_line) @@ -1376,7 +1375,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1428,7 +1427,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } result = strtok(input_line, " "); @@ -1440,7 +1439,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1494,7 +1493,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } result = strtok(input_line, " "); @@ -1506,7 +1505,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1560,7 +1559,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, { fprintf(fout, "? for help, q to quit.\n"); fflush(fout); - RETURNFUNC(0); + RETURNFUNC(RIG_OK); } result = strtok(input_line, " "); @@ -1572,7 +1571,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, else { fprintf_flush(fout, "\n"); - RETURNFUNC(1); + RETURNFUNC(RIGCTL_PARSE_END); } } @@ -1669,7 +1668,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, rig_debug(RIG_DEBUG_TRACE, "%s: vfo_opt=%d\n", __func__, *vfo_opt); - if (retcode == RIG_EIO) + if (retcode == -RIG_EIO) { rig_debug(RIG_DEBUG_ERR, "%s: RIG_EIO?\n", __func__); @@ -1727,12 +1726,7 @@ int rigctl_parse(RIG *my_rig, FILE *fin, FILE *fout, char *argv[], int argc, if (sync_cb) { sync_cb(0); } /* unlock if necessary */ - if (retcode == -RIG_ENAVAIL) - { - RETURNFUNC(retcode); - } - - RETURNFUNC(retcode != RIG_OK ? 2 : 0); + RETURNFUNC(retcode); } diff --git a/tests/rigctl_parse.h b/tests/rigctl_parse.h index a741742f..e1a86697 100644 --- a/tests/rigctl_parse.h +++ b/tests/rigctl_parse.h @@ -28,6 +28,9 @@ #include <stdio.h> #include <hamlib/rig.h> +#define RIGCTL_PARSE_END 1 +#define RIGCTL_PARSE_ERROR 2 + /* * external prototype */ diff --git a/tests/rigctld.c b/tests/rigctld.c index c4edaf6d..46ba0275 100644 --- a/tests/rigctld.c +++ b/tests/rigctld.c @@ -1075,21 +1075,9 @@ void *handle_socket(void *arg) if (retcode != 0) { rig_debug(RIG_DEBUG_ERR, "%s: rigctl_parse retcode=%d\n", __func__, retcode); } - -#if 0 // disabled -- don't think we need this - - // see https://github.com/Hamlib/Hamlib/issues/516 - if (retcode == -1) - { - //sleep(1); // probably don't need this delay - //continue; - } - -#endif - // if we get a hard error we try to reopen the rig again // this should cover short dropouts that can occur - if (retcode == -RIG_EIO || retcode == 2) + if (retcode < 0 && !RIG_IS_SOFT_ERRCODE(-retcode)) { int retry = 3; rig_debug(RIG_DEBUG_ERR, "%s: i/o error\n", __func__) @@ -1103,39 +1091,9 @@ void *handle_socket(void *arg) rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode); } while (retry-- > 0 && retcode != RIG_OK); - - } - - -#if 0 - - if (ferror(fsockin) || ferror(fsockout) || retcode == 2) - { - if (ferror(fsockout)) { fsockout = get_fsockout(handle_data_arg); } - - rig_debug(RIG_DEBUG_ERR, "%s: socket error in=%d, out=%d\n", __func__, - ferror(fsockin), ferror(fsockout)); - // if we get an error from the rig we'll try to repoen - // that may fix things when COM ports drop and such - int retry = 4; - - if (retcode == 2) - { - do - { - retcode = rig_close(my_rig); - hl_usleep(1000 * 1000); - rig_debug(RIG_DEBUG_ERR, "%s: rig_close retcode=%d\n", __func__, retcode); - retcode = rig_open(my_rig); - rig_debug(RIG_DEBUG_ERR, "%s: rig_open retcode=%d\n", __func__, retcode); - } - while (retry-- > 0 && retcode != RIG_OK); - } } - -#endif } - while (retcode == 0 || retcode == 2 || retcode == -RIG_ENAVAIL); + while (retcode == RIG_OK || RIG_IS_SOFT_ERRCODE(-retcode)); #ifdef HAVE_PTHREAD #if 0 commit 27192d0c813aa79c6eb09d85077c7a0fae5489e7 Author: Michael Black W9MDB <mdb...@ya...> Date: Tue Mar 16 12:45:30 2021 -0500 Fix potential seg faults in icom.c https://github.com/Hamlib/Hamlib/issues/612 diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index c4d80151..8d4bdff6 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -1075,21 +1075,14 @@ int icom_set_freq(RIG *rig, vfo_t vfo, freq_t freq) } } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) - { - // if we don't get ACK/NAK some serial corruption occurred - // so we'll call it a timeout for retry purposes - RETURNFUNC(-RIG_ETIMEOUT); - } - - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -1599,7 +1592,7 @@ int icom_set_dsp_flt(RIG *rig, rmode_t mode, pbwidth_t width) RETURNFUNC(retval); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: command not supported ? (%#.2x), " "len=%d\n", __func__, ackbuf[0], ack_len); @@ -1714,7 +1707,7 @@ int icom_set_mode_with_data(RIG *rig, vfo_t vfo, rmode_t mode, } else { - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: command not supported ? (%#.2x), len=%d\n", @@ -1791,14 +1784,14 @@ int icom_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2170,14 +2163,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2196,14 +2189,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2224,14 +2217,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2253,14 +2246,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2287,14 +2280,14 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -2813,14 +2806,14 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -3647,14 +3640,14 @@ int icom_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -3778,14 +3771,14 @@ int icom_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -3886,14 +3879,14 @@ int icom_set_rptr_offs(RIG *rig, vfo_t vfo, shortfreq_t rptr_offs) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4171,14 +4164,14 @@ int icom_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4392,14 +4385,14 @@ int icom_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4512,14 +4505,14 @@ int icom_set_split_mode(RIG *rig, vfo_t vfo, rmode_t tx_mode, RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4622,14 +4615,14 @@ int icom_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode, RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4746,14 +4739,14 @@ int icom_set_split_freq_mode(RIG *rig, vfo_t vfo, freq_t tx_freq, RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -4892,14 +4885,14 @@ int icom_get_split_freq_mode(RIG *rig, vfo_t vfo, freq_t *tx_freq, RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -5140,14 +5133,14 @@ int icom_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, vfo_t tx_vfo) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -5333,14 +5326,14 @@ int icom_set_ts(RIG *rig, vfo_t vfo, shortfreq_t ts) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6004,14 +5997,14 @@ int icom_set_ctcss_tone(RIG *rig, vfo_t vfo, tone_t tone) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6112,14 +6105,14 @@ int icom_set_ctcss_sql(RIG *rig, vfo_t vfo, tone_t tone) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6213,14 +6206,14 @@ int icom_set_dcs_code(RIG *rig, vfo_t vfo, tone_t code) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6319,14 +6312,14 @@ int icom_set_dcs_sql(RIG *rig, vfo_t vfo, tone_t code) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6489,7 +6482,7 @@ int icom_set_powerstat(RIG *rig, powerstat_t status) RETURNFUNC(retval); } - if (status == RIG_POWER_OFF && (ack_len != 1 || ackbuf[0] != ACK)) + if (status == RIG_POWER_OFF && (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK))) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6539,14 +6532,14 @@ int icom_get_powerstat(RIG *rig, powerstat_t *status) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6583,14 +6576,14 @@ int icom_set_mem(RIG *rig, vfo_t vfo, int ch) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6620,14 +6613,14 @@ int icom_set_bank(RIG *rig, vfo_t vfo, int bank) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6756,14 +6749,14 @@ int icom_set_ant(RIG *rig, vfo_t vfo, ant_t ant, value_t option) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -6943,14 +6936,14 @@ int icom_vfo_op(RIG *rig, vfo_t vfo, vfo_op_t op) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { if (op != RIG_OP_XCHG) { @@ -7056,14 +7049,14 @@ int icom_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack_len != 1 || ackbuf[0] != ACK) + if (ack_len != 1 || (ack_len >= 1 && ackbuf[0] != ACK)) { rig_debug(RIG_DEBUG_ERR, "%s: ack NG (%#.2x), len=%d\n", __func__, ackbuf[0], ack_len); @@ -7101,14 +7094,14 @@ int icom_send_morse(RIG *rig, vfo_t vfo, const char *msg) RETURNFUNC(retval); } - if (ack_len >= 1 && ackbuf[0] != ACK && ackbuf[1] != NAK) + if ((ack_len >= 1 && ackbuf[0] != ACK) && (ack_len >= 2 && ackbuf[1] != NAK)) { // if we don't get ACK/NAK some serial corruption occurred // so we'll call it a timeout for retry purposes RETURNFUNC(-RIG_ETIMEOUT); } - if (ack... [truncated message content] |
From: Michael B. <mdb...@us...> - 2021-03-16 03:57:03
|
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 8817f121809998ac25700a6eff868e119fd0f892 (commit) from 3bc39aaec1f09bd461b82a70c4503127f4d1ebca (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 8817f121809998ac25700a6eff868e119fd0f892 Author: Michael Black W9MDB <mdb...@ya...> Date: Mon Mar 15 22:55:45 2021 -0500 Fix rig_set_freq and set_cache_freq so if freq=0 cache is expired https://github.com/Hamlib/Hamlib/issues/610 diff --git a/src/rig.c b/src/rig.c index af5f686a..ca519ae7 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1392,6 +1392,8 @@ static int set_cache_mode(RIG *rig, vfo_t vfo, mode_t mode, pbwidth_t width) static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) { + int flag = HAMLIB_ELAPSED_SET; + ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s, current_vfo=%s\n", __func__, rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo)); @@ -1402,6 +1404,9 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) vfo = rig->state.current_vfo; } + // if freq == 0 then we are asking to invalidate the cache + if (freq == 0) flag = HAMLIB_ELAPSED_INVALIDATE; + // pick a sane default if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) { vfo = RIG_VFO_A; } @@ -1433,40 +1438,40 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) case RIG_VFO_MAIN: case RIG_VFO_MAIN_A: rig->state.cache.freqMainA = freq; - elapsed_ms(&rig->state.cache.time_freqMainA, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_freqMainA, flag); break; case RIG_VFO_B: case RIG_VFO_MAIN_B: case RIG_VFO_SUB: rig->state.cache.freqMainB = freq; - elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_freqMainB, flag); break; case RIG_VFO_C: case RIG_VFO_MAIN_C: rig->state.cache.freqMainC = freq; - elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_freqMainC, flag); break; case RIG_VFO_SUB_A: rig->state.cache.freqSubA = freq; - elapsed_ms(&rig->state.cache.time_freqSubA, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_freqSubA, flag); break; case RIG_VFO_SUB_B: rig->state.cache.freqSubB = freq; - elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_freqSubB, flag); break; case RIG_VFO_SUB_C: rig->state.cache.freqSubC = freq; - elapsed_ms(&rig->state.cache.time_freqSubC, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_freqSubC, flag); break; case RIG_VFO_MEM: rig->state.cache.freqMem = freq; - elapsed_ms(&rig->state.cache.time_freqMem, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_freqMem, flag); break; default: ----------------------------------------------------------------------- Summary of changes: src/rig.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-15 22:51:53
|
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 3bc39aaec1f09bd461b82a70c4503127f4d1ebca (commit) from 288f82f96387668f0cf531782711e37cc55847f5 (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 3bc39aaec1f09bd461b82a70c4503127f4d1ebca Author: Michael Black W9MDB <mdb...@ya...> Date: Mon Mar 15 17:51:22 2021 -0500 astyle files is preparation for 4.2 release diff --git a/rigs/aor/aor.c b/rigs/aor/aor.c index 6c2dd045..d69fc933 100644 --- a/rigs/aor/aor.c +++ b/rigs/aor/aor.c @@ -642,7 +642,8 @@ int aor_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) } /* should be caught by the front end */ - if ((val.i != 0) && (i >= HAMLIB_MAXDBLSTSIZ || RIG_IS_DBLST_END(rs->attenuator[i]))) + if ((val.i != 0) && (i >= HAMLIB_MAXDBLSTSIZ + || RIG_IS_DBLST_END(rs->attenuator[i]))) { return -RIG_EINVAL; } diff --git a/rigs/aor/sr2200.c b/rigs/aor/sr2200.c index 954568a0..63033e05 100644 --- a/rigs/aor/sr2200.c +++ b/rigs/aor/sr2200.c @@ -648,7 +648,8 @@ int sr2200_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) } /* should be caught by the front end */ - if ((val.i != 0) && (i >= HAMLIB_MAXDBLSTSIZ || RIG_IS_DBLST_END(rs->attenuator[i]))) + if ((val.i != 0) && (i >= HAMLIB_MAXDBLSTSIZ + || RIG_IS_DBLST_END(rs->attenuator[i]))) { return -RIG_EINVAL; } diff --git a/rigs/dummy/dummy.c b/rigs/dummy/dummy.c index 1e20ddb6..1bc0a4ce 100644 --- a/rigs/dummy/dummy.c +++ b/rigs/dummy/dummy.c @@ -396,15 +396,15 @@ static int dummy_set_freq(RIG *rig, vfo_t vfo, freq_t freq) rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s %s\n", __func__, rig_strvfo(vfo), fstr); - switch(vfo) + switch (vfo) { - case RIG_VFO_MAIN: - case RIG_VFO_A: priv->vfo_a.freq = freq;break; + case RIG_VFO_MAIN: + case RIG_VFO_A: priv->vfo_a.freq = freq; break; - case RIG_VFO_SUB: - case RIG_VFO_B: priv->vfo_b.freq = freq;break; + case RIG_VFO_SUB: + case RIG_VFO_B: priv->vfo_b.freq = freq; break; - case RIG_VFO_C: priv->vfo_c.freq = freq;break; + case RIG_VFO_C: priv->vfo_c.freq = freq; break; } if (!priv->split) @@ -470,11 +470,11 @@ static int dummy_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) switch (vfo) { - case RIG_VFO_A: priv->vfo_a.mode = mode; priv->vfo_a.width = width;break; + case RIG_VFO_A: priv->vfo_a.mode = mode; priv->vfo_a.width = width; break; - case RIG_VFO_B: priv->vfo_b.mode = mode; priv->vfo_b.width = width;break; + case RIG_VFO_B: priv->vfo_b.mode = mode; priv->vfo_b.width = width; break; - case RIG_VFO_C: priv->vfo_c.mode = mode; priv->vfo_c.width = width;break; + case RIG_VFO_C: priv->vfo_c.mode = mode; priv->vfo_c.width = width; break; } if (RIG_PASSBAND_NOCHANGE == width) { RETURNFUNC(RIG_OK); } @@ -483,6 +483,7 @@ static int dummy_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) { width = curr->width = rig_passband_normal(rig, mode); } + switch (vfo) { case RIG_VFO_A: priv->vfo_a.width = width; break; @@ -504,17 +505,17 @@ static int dummy_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) usleep(CMDSLEEP); rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__, rig_strvfo(vfo)); - if (vfo == RIG_VFO_CURR) vfo = rig->state.current_vfo; + if (vfo == RIG_VFO_CURR) { vfo = rig->state.current_vfo; } - switch(vfo) + switch (vfo) { - case RIG_VFO_MAIN: - case RIG_VFO_A: *mode = priv->vfo_a.mode;*width = priv->vfo_a.width; break; + case RIG_VFO_MAIN: + case RIG_VFO_A: *mode = priv->vfo_a.mode; *width = priv->vfo_a.width; break; - case RIG_VFO_SUB: - case RIG_VFO_B: *mode = priv->vfo_b.mode;*width = priv->vfo_b.width; break; + case RIG_VFO_SUB: + case RIG_VFO_B: *mode = priv->vfo_b.mode; *width = priv->vfo_b.width; break; - case RIG_VFO_C: *mode = priv->vfo_c.mode;*width = priv->vfo_c.width; break; + case RIG_VFO_C: *mode = priv->vfo_c.mode; *width = priv->vfo_c.width; break; } RETURNFUNC(RIG_OK); @@ -530,7 +531,7 @@ static int dummy_set_vfo(RIG *rig, vfo_t vfo) usleep(CMDSLEEP); rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__, rig_strvfo(vfo)); - if (vfo == RIG_VFO_CURR) vfo = rig->state.current_vfo; + if (vfo == RIG_VFO_CURR) { vfo = rig->state.current_vfo; } priv->last_vfo = priv->curr_vfo; priv->curr_vfo = vfo; @@ -2122,7 +2123,7 @@ struct rig_caps dummy_caps = .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_OTHER, - .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT|RIG_TARGETABLE_FREQ|RIG_TARGETABLE_MODE, + .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE, .ptt_type = RIG_PTT_RIG, .dcd_type = RIG_DCD_RIG, .port_type = RIG_PORT_NONE, @@ -2287,7 +2288,7 @@ struct rig_caps dummy_no_vfo_caps = .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_OTHER, - .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT|RIG_TARGETABLE_FREQ|RIG_TARGETABLE_MODE, + .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT | RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE, .ptt_type = RIG_PTT_RIG, .dcd_type = RIG_DCD_RIG, .port_type = RIG_PORT_NONE, diff --git a/rigs/dummy/flrig.c b/rigs/dummy/flrig.c index 1082e3b2..5dc5bfd1 100644 --- a/rigs/dummy/flrig.c +++ b/rigs/dummy/flrig.c @@ -71,7 +71,7 @@ static int flrig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq); static int flrig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt); static int flrig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width); static int flrig_set_split_mode(RIG *rig, vfo_t vfo, rmode_t mode, - pbwidth_t width); + pbwidth_t width); static int flrig_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width); static int flrig_get_vfo(RIG *rig, vfo_t *vfo); static int flrig_set_vfo(RIG *rig, vfo_t vfo); @@ -80,138 +80,138 @@ static int flrig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt); static int flrig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq); static int flrig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq); static int flrig_set_split_vfo(RIG *rig, vfo_t vfo, split_t split, - vfo_t tx_vfo); + vfo_t tx_vfo); static int flrig_get_split_vfo(RIG *rig, vfo_t vfo, split_t *split, - vfo_t *tx_vfo); + vfo_t *tx_vfo); static int flrig_set_split_freq_mode(RIG *rig, vfo_t vfo, freq_t freq, - rmode_t mode, pbwidth_t width); + rmode_t mode, pbwidth_t width); static int flrig_get_split_freq_mode(RIG *rig, vfo_t vfo, freq_t *freq, - rmode_t *mode, pbwidth_t *width); + rmode_t *mode, pbwidth_t *width); static int flrig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val); static int flrig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val); static const char *flrig_get_info(RIG *rig); static int flrig_power2mW(RIG *rig, unsigned int *mwpower, float power, - freq_t freq, rmode_t mode); + freq_t freq, rmode_t mode); static int flrig_mW2power(RIG *rig, float *power, unsigned int mwpower, - freq_t freq, rmode_t mode); + freq_t freq, rmode_t mode); struct flrig_priv_data { - vfo_t curr_vfo; - char bandwidths[MAXBANDWIDTHLEN]; /* pipe delimited set returned from flrig */ - int nbandwidths; - char info[8192]; - ptt_t ptt; - split_t split; - rmode_t curr_modeA; - rmode_t curr_modeB; - freq_t curr_freqA; - freq_t curr_freqB; - pbwidth_t curr_widthA; - pbwidth_t curr_widthB; - int has_get_modeA; /* True if this function is available */ - int has_get_bwA; /* True if this function is available */ - float powermeter_scale; /* So we can scale power meter to 0-1 */ + vfo_t curr_vfo; + char bandwidths[MAXBANDWIDTHLEN]; /* pipe delimited set returned from flrig */ + int nbandwidths; + char info[8192]; + ptt_t ptt; + split_t split; + rmode_t curr_modeA; + rmode_t curr_modeB; + freq_t curr_freqA; + freq_t curr_freqB; + pbwidth_t curr_widthA; + pbwidth_t curr_widthB; + int has_get_modeA; /* True if this function is available */ + int has_get_bwA; /* True if this function is available */ + float powermeter_scale; /* So we can scale power meter to 0-1 */ }; const struct rig_caps flrig_caps = { - RIG_MODEL(RIG_MODEL_FLRIG), - .model_name = "FLRig", - .mfg_name = "FLRig", - .version = BACKEND_VER ".0", - .copyright = "LGPL", - .status = RIG_STATUS_STABLE, - .rig_type = RIG_TYPE_TRANSCEIVER, - .targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE, - .ptt_type = RIG_PTT_RIG, - .port_type = RIG_PORT_NETWORK, - .write_delay = 0, - .post_write_delay = 0, - .timeout = 5000, - .retry = 5, - - .has_get_func = RIG_FUNC_NONE, - .has_set_func = RIG_FUNC_NONE, - .has_get_level = FLRIG_LEVELS, - .has_set_level = RIG_LEVEL_SET(FLRIG_LEVELS), - .has_get_parm = RIG_PARM_NONE, - .has_set_parm = RIG_PARM_NONE, - .filters = { - RIG_FLT_END - }, - - .rx_range_list1 = {{ - .startf = kHz(1), .endf = GHz(10), .modes = FLRIG_MODES, - .low_power = -1, .high_power = -1, FLRIG_VFOS, RIG_ANT_1 - }, - RIG_FRNG_END, - }, - .tx_range_list1 = {RIG_FRNG_END,}, - .rx_range_list2 = {{ - .startf = kHz(1), .endf = GHz(10), .modes = FLRIG_MODES, - .low_power = -1, .high_power = -1, FLRIG_VFOS, RIG_ANT_1 - }, - RIG_FRNG_END, - }, - .tx_range_list2 = {RIG_FRNG_END,}, - .tuning_steps = { {FLRIG_MODES, 1}, {FLRIG_MODES, RIG_TS_ANY}, RIG_TS_END, }, - .priv = NULL, /* priv */ - - .rig_init = flrig_init, - .rig_open = flrig_open, - .rig_close = flrig_close, - .rig_cleanup = flrig_cleanup, - - .set_freq = flrig_set_freq, - .get_freq = flrig_get_freq, - .set_mode = flrig_set_mode, - .get_mode = flrig_get_mode, - .set_vfo = flrig_set_vfo, - .get_vfo = flrig_get_vfo, - .get_info = flrig_get_info, - .set_ptt = flrig_set_ptt, - .get_ptt = flrig_get_ptt, - .set_split_mode = flrig_set_split_mode, - .set_split_freq = flrig_set_split_freq, - .get_split_freq = flrig_get_split_freq, - .set_split_vfo = flrig_set_split_vfo, - .get_split_vfo = flrig_get_split_vfo, - .set_split_freq_mode = flrig_set_split_freq_mode, - .get_split_freq_mode = flrig_get_split_freq_mode, - .set_level = flrig_set_level, - .get_level = flrig_get_level, - .power2mW = flrig_power2mW, - .mW2power = flrig_mW2power + RIG_MODEL(RIG_MODEL_FLRIG), + .model_name = "FLRig", + .mfg_name = "FLRig", + .version = BACKEND_VER ".0", + .copyright = "LGPL", + .status = RIG_STATUS_STABLE, + .rig_type = RIG_TYPE_TRANSCEIVER, + .targetable_vfo = RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE, + .ptt_type = RIG_PTT_RIG, + .port_type = RIG_PORT_NETWORK, + .write_delay = 0, + .post_write_delay = 0, + .timeout = 5000, + .retry = 5, + + .has_get_func = RIG_FUNC_NONE, + .has_set_func = RIG_FUNC_NONE, + .has_get_level = FLRIG_LEVELS, + .has_set_level = RIG_LEVEL_SET(FLRIG_LEVELS), + .has_get_parm = RIG_PARM_NONE, + .has_set_parm = RIG_PARM_NONE, + .filters = { + RIG_FLT_END + }, + + .rx_range_list1 = {{ + .startf = kHz(1), .endf = GHz(10), .modes = FLRIG_MODES, + .low_power = -1, .high_power = -1, FLRIG_VFOS, RIG_ANT_1 + }, + RIG_FRNG_END, + }, + .tx_range_list1 = {RIG_FRNG_END,}, + .rx_range_list2 = {{ + .startf = kHz(1), .endf = GHz(10), .modes = FLRIG_MODES, + .low_power = -1, .high_power = -1, FLRIG_VFOS, RIG_ANT_1 + }, + RIG_FRNG_END, + }, + .tx_range_list2 = {RIG_FRNG_END,}, + .tuning_steps = { {FLRIG_MODES, 1}, {FLRIG_MODES, RIG_TS_ANY}, RIG_TS_END, }, + .priv = NULL, /* priv */ + + .rig_init = flrig_init, + .rig_open = flrig_open, + .rig_close = flrig_close, + .rig_cleanup = flrig_cleanup, + + .set_freq = flrig_set_freq, + .get_freq = flrig_get_freq, + .set_mode = flrig_set_mode, + .get_mode = flrig_get_mode, + .set_vfo = flrig_set_vfo, + .get_vfo = flrig_get_vfo, + .get_info = flrig_get_info, + .set_ptt = flrig_set_ptt, + .get_ptt = flrig_get_ptt, + .set_split_mode = flrig_set_split_mode, + .set_split_freq = flrig_set_split_freq, + .get_split_freq = flrig_get_split_freq, + .set_split_vfo = flrig_set_split_vfo, + .get_split_vfo = flrig_get_split_vfo, + .set_split_freq_mode = flrig_set_split_freq_mode, + .get_split_freq_mode = flrig_get_split_freq_mode, + .set_level = flrig_set_level, + .get_level = flrig_get_level, + .power2mW = flrig_power2mW, + .mW2power = flrig_mW2power }; //Structure for mapping flrig dynmamic modes to hamlib modes //flrig displays modes as the rig displays them struct s_modeMap { - rmode_t mode_hamlib; - char *mode_flrig; + rmode_t mode_hamlib; + char *mode_flrig; }; //FLRig will provide us the modes for the selected rig //We will then put them in this struct static struct s_modeMap modeMap[] = { - {RIG_MODE_USB, NULL}, - {RIG_MODE_LSB, NULL}, - {RIG_MODE_PKTUSB, NULL}, - {RIG_MODE_PKTLSB, NULL}, - {RIG_MODE_AM, NULL}, - {RIG_MODE_FM, NULL}, - {RIG_MODE_FMN, NULL}, - {RIG_MODE_WFM, NULL}, - {RIG_MODE_CW, NULL}, - {RIG_MODE_CWR, NULL}, - {RIG_MODE_RTTY, NULL}, - {RIG_MODE_RTTYR, NULL}, - {RIG_MODE_C4FM, NULL}, - {0, NULL} + {RIG_MODE_USB, NULL}, + {RIG_MODE_LSB, NULL}, + {RIG_MODE_PKTUSB, NULL}, + {RIG_MODE_PKTLSB, NULL}, + {RIG_MODE_AM, NULL}, + {RIG_MODE_FM, NULL}, + {RIG_MODE_FMN, NULL}, + {RIG_MODE_WFM, NULL}, + {RIG_MODE_CW, NULL}, + {RIG_MODE_CWR, NULL}, + {RIG_MODE_RTTY, NULL}, + {RIG_MODE_RTTYR, NULL}, + {RIG_MODE_C4FM, NULL}, + {0, NULL} }; /* @@ -220,23 +220,23 @@ static struct s_modeMap modeMap[] = */ static int check_vfo(vfo_t vfo) { - switch (vfo) - { - case RIG_VFO_A: - break; + switch (vfo) + { + case RIG_VFO_A: + break; - case RIG_VFO_TX: - case RIG_VFO_B: - break; + case RIG_VFO_TX: + case RIG_VFO_B: + break; - case RIG_VFO_CURR: - break; // will default to A in which_vfo + case RIG_VFO_CURR: + break; // will default to A in which_vfo - default: - RETURNFUNC(FALSE); - } + default: + RETURNFUNC(FALSE); + } - RETURNFUNC(TRUE); + RETURNFUNC(TRUE); } /*Rather than use some huge XML library we only need a few things @@ -245,52 +245,52 @@ static int check_vfo(vfo_t vfo) */ static char *xml_build(char *cmd, char *value, char *xmlbuf, int xmlbuflen) { - char xml[4096]; // we shouldn't need more the 4096 bytes for this - char tmp[32]; - char *header; - int n; - - // We want at least a 4K buf to play with - if (xmlbuflen < 4096) - { - rig_debug(RIG_DEBUG_ERR, "%s: xmllen < 4096\n", __func__); - return NULL; - } - - header = - "POST /RPC2 HTTP/1.1\r\n" "User-Agent: XMLRPC++ 0.8\r\n" - "Host: 127.0.0.1:12345\r\n" "Content-type: text/xml\r\n"; - n = snprintf(xmlbuf, xmlbuflen, "%s", header); - - if (n != strlen(header)) - { - rig_debug(RIG_DEBUG_ERR, "%s: snprintf of header failed, len=%d, got=%d\n", - __func__, (int)strlen(header), n); - } - - n = snprintf(xml, sizeof(xml), "<?xml version=\"1.0\"?>\r\n"); - - if (n != strlen(xml)) - { - rig_debug(RIG_DEBUG_ERR, "%s: snprintf of xml failed, len=%d, got=%d\n", - __func__, (int)strlen(header), n); - } - - strncat(xml, "<methodCall><methodName>", sizeof(xml) - 1); - strncat(xml, cmd, sizeof(xml) - strlen(xml) - 1); - strncat(xml, "</methodName>\r\n", sizeof(xml) - strlen(xml) - 1); - - if (value && strlen(value) > 0) - { - strncat(xml, value, sizeof(xml) - 1); - } - - strncat(xml, "</methodCall>\r\n", sizeof(xml) - 1); - strncat(xmlbuf, "Content-length: ", xmlbuflen - 1); - snprintf(tmp, sizeof(tmp), "%d\r\n\r\n", (int)strlen(xml)); - strncat(xmlbuf, tmp, xmlbuflen - 1); - strncat(xmlbuf, xml, xmlbuflen - 1); - return xmlbuf; + char xml[4096]; // we shouldn't need more the 4096 bytes for this + char tmp[32]; + char *header; + int n; + + // We want at least a 4K buf to play with + if (xmlbuflen < 4096) + { + rig_debug(RIG_DEBUG_ERR, "%s: xmllen < 4096\n", __func__); + return NULL; + } + + header = + "POST /RPC2 HTTP/1.1\r\n" "User-Agent: XMLRPC++ 0.8\r\n" + "Host: 127.0.0.1:12345\r\n" "Content-type: text/xml\r\n"; + n = snprintf(xmlbuf, xmlbuflen, "%s", header); + + if (n != strlen(header)) + { + rig_debug(RIG_DEBUG_ERR, "%s: snprintf of header failed, len=%d, got=%d\n", + __func__, (int)strlen(header), n); + } + + n = snprintf(xml, sizeof(xml), "<?xml version=\"1.0\"?>\r\n"); + + if (n != strlen(xml)) + { + rig_debug(RIG_DEBUG_ERR, "%s: snprintf of xml failed, len=%d, got=%d\n", + __func__, (int)strlen(header), n); + } + + strncat(xml, "<methodCall><methodName>", sizeof(xml) - 1); + strncat(xml, cmd, sizeof(xml) - strlen(xml) - 1); + strncat(xml, "</methodName>\r\n", sizeof(xml) - strlen(xml) - 1); + + if (value && strlen(value) > 0) + { + strncat(xml, value, sizeof(xml) - 1); + } + + strncat(xml, "</methodCall>\r\n", sizeof(xml) - 1); + strncat(xmlbuf, "Content-length: ", xmlbuflen - 1); + snprintf(tmp, sizeof(tmp), "%d\r\n\r\n", (int)strlen(xml)); + strncat(xmlbuf, tmp, xmlbuflen - 1); + strncat(xmlbuf, xml, xmlbuflen - 1); + return xmlbuf; } /*This is a very crude xml parse specific to what we need from FLRig @@ -299,59 +299,59 @@ static char *xml_build(char *cmd, char *value, char *xmlbuf, int xmlbuflen) */ static char *xml_parse2(char *xml, char *value, int valueLen) { - char *delims = "<>\r\n "; - char *xmltmp = strdup(xml); - //rig_debug(RIG_DEBUG_TRACE, "%s: xml='%s'\n", __func__,xml); - char *pr = xml; - char *p = strtok_r(xmltmp, delims, &pr); - value[0] = 0; - - while (p) - { - if (streq(p, "value")) - { - p = strtok_r(NULL, delims, &pr); - - if (streq(p, "array")) { continue; } - - if (streq(p, "/value")) { continue; } // empty value - - if (streq(p, "i4") || streq(p, "double")) - { - p = strtok_r(NULL, delims, &pr); - } - else if (streq(p, "array")) - { - strtok_r(NULL, delims, &pr); - p = strtok_r(NULL, delims, &pr); - } - - if (strlen(value) + strlen(p) + 1 < valueLen) - { - if (value[0] != 0) { strcat(value, "|"); } - - strcat(value, p); - } - else // we'll just stop adding stuff - { - rig_debug(RIG_DEBUG_ERR, "%s: max value length exceeded\n", __func__); - } - } - else - { - p = strtok_r(NULL, delims, &pr); - } - } - - rig_debug(RIG_DEBUG_TRACE, "%s: value returned='%s'\n", __func__, value); - - if (rig_need_debug(RIG_DEBUG_WARN) && value != NULL && strlen(value) == 0) - { - rig_debug(RIG_DEBUG_ERR, "%s: xml='%s'\n", __func__, xml); - } - - free(xmltmp); - return value; + char *delims = "<>\r\n "; + char *xmltmp = strdup(xml); + //rig_debug(RIG_DEBUG_TRACE, "%s: xml='%s'\n", __func__,xml); + char *pr = xml; + char *p = strtok_r(xmltmp, delims, &pr); + value[0] = 0; + + while (p) + { + if (streq(p, "value")) + { + p = strtok_r(NULL, delims, &pr); + + if (streq(p, "array")) { continue; } + + if (streq(p, "/value")) { continue; } // empty value + + if (streq(p, "i4") || streq(p, "double")) + { + p = strtok_r(NULL, delims, &pr); + } + else if (streq(p, "array")) + { + strtok_r(NULL, delims, &pr); + p = strtok_r(NULL, delims, &pr); + } + + if (strlen(value) + strlen(p) + 1 < valueLen) + { + if (value[0] != 0) { strcat(value, "|"); } + + strcat(value, p); + } + else // we'll just stop adding stuff + { + rig_debug(RIG_DEBUG_ERR, "%s: max value length exceeded\n", __func__); + } + } + else + { + p = strtok_r(NULL, delims, &pr); + } + } + + rig_debug(RIG_DEBUG_TRACE, "%s: value returned='%s'\n", __func__, value); + + if (rig_need_debug(RIG_DEBUG_WARN) && value != NULL && strlen(value) == 0) + { + rig_debug(RIG_DEBUG_ERR, "%s: xml='%s'\n", __func__, xml); + } + + free(xmltmp); + return value; } /* @@ -361,39 +361,39 @@ static char *xml_parse2(char *xml, char *value, int valueLen) */ static char *xml_parse(char *xml, char *value, int value_len) { - char *next; - char *pxml; + char *next; + char *pxml; - /* first off we should have an OK on the 1st line */ - if (strstr(xml, " 200 OK") == NULL) - { - return(NULL); - } + /* first off we should have an OK on the 1st line */ + if (strstr(xml, " 200 OK") == NULL) + { + return (NULL); + } - rig_debug(RIG_DEBUG_TRACE, "%s XML:\n%s\n", __func__, xml); + rig_debug(RIG_DEBUG_TRACE, "%s XML:\n%s\n", __func__, xml); - // find the xml skipping the other stuff above it - pxml = strstr(xml, "<?xml"); + // find the xml skipping the other stuff above it + pxml = strstr(xml, "<?xml"); - if (pxml == NULL) - { - return(NULL); - } + if (pxml == NULL) + { + return (NULL); + } - next = strchr(pxml + 1, '<'); + next = strchr(pxml + 1, '<'); - if (value != NULL) - { - xml_parse2(next, value, value_len); - } + if (value != NULL) + { + xml_parse2(next, value, value_len); + } - if (value && strstr(value, "faultString")) - { - rig_debug(RIG_DEBUG_ERR, "%s error:\n%s\n", __func__, value); - value[0] = 0; /* truncate to give empty response */ - } + if (value && strstr(value, "faultString")) + { + rig_debug(RIG_DEBUG_ERR, "%s error:\n%s\n", __func__, value); + value[0] = 0; /* truncate to give empty response */ + } - return(value); + return (value); } /* @@ -402,81 +402,81 @@ static char *xml_parse(char *xml, char *value, int value_len) */ static int read_transaction(RIG *rig, char *xml, int xml_len) { - int retval; - int retry; - char *delims; - char *terminator = "</methodResponse>"; - struct rig_state *rs = &rig->state; - - ENTERFUNC; - - retry = 2; - delims = "\n"; - xml[0] = 0; - - do - { - char tmp_buf[MAXXMLLEN]; // plenty big for expected flrig responses hopefully - - if (retry < 2) - { - rig_debug(RIG_DEBUG_WARN, "%s: retry needed? retry=%d\n", __func__, retry); - } - - int len = read_string(&rs->rigport, tmp_buf, sizeof(tmp_buf), delims, - strlen(delims)); - rig_debug(RIG_DEBUG_TRACE, "%s: string='%s'\n", __func__, tmp_buf); - - // if our first response we should see the HTTP header - if (strlen(xml) == 0 && strstr(tmp_buf, "HTTP/1.1 200 OK") == NULL) - { - rig_debug(RIG_DEBUG_ERR, "%s: Expected 'HTTP/1.1 200 OK', got '%s'\n", __func__, - tmp_buf); - RETURNFUNC(-1); - } - - if (len > 0) { retry = 3; } - - if (len <= 0) - { - rig_debug(RIG_DEBUG_ERR, "%s: read_string error=%d\n", __func__, len); - continue; - } - - if (strlen(xml) + strlen(tmp_buf) < xml_len - 1) - { - strncat(xml, tmp_buf, xml_len - 1); - } - else - { - rig_debug(RIG_DEBUG_ERR, - "%s: xml buffer overflow!!\nTrying to add len=%d\nTo len=%d\n", __func__, - (int)strlen(tmp_buf), (int)strlen(xml)); - RETURNFUNC(-RIG_EPROTO); - } - } - while (retry-- > 0 && strstr(xml, terminator) == NULL); - - if (retry == 0) - { - rig_debug(RIG_DEBUG_WARN, "%s: retry timeout\n", __func__); - RETURNFUNC(-RIG_ETIMEOUT); - } - - if (strstr(xml, terminator)) - { - rig_debug(RIG_DEBUG_TRACE, "%s: got %s\n", __func__, terminator); - // Slow down just a bit -- not sure this is needed anymore but not a big deal here - hl_usleep(2 * 1000); - retval = RIG_OK; - } - else - { - rig_debug(RIG_DEBUG_VERBOSE, "%s: did not get %s\n", __func__, terminator); - retval = -(101 + RIG_EPROTO); - } - - RETURNFUNC(retval); + int retval; + int retry; + char *delims; + char *terminator = "</methodResponse>"; + struct rig_state *rs = &rig->state; + + ENTERFUNC; + + retry = 2; + delims = "\n"; + xml[0] = 0; + + do + { + char tmp_buf[MAXXMLLEN]; // plenty big for expected flrig responses hopefully + + if (retry < 2) + { + rig_debug(RIG_DEBUG_WARN, "%s: retry needed? retry=%d\n", __func__, retry); + } + + int len = read_string(&rs->rigport, tmp_buf, sizeof(tmp_buf), delims, + strlen(delims)); + rig_debug(RIG_DEBUG_TRACE, "%s: string='%s'\n", __func__, tmp_buf); + + // if our first response we should see the HTTP header + if (strlen(xml) == 0 && strstr(tmp_buf, "HTTP/1.1 200 OK") == NULL) + { + rig_debug(RIG_DEBUG_ERR, "%s: Expected 'HTTP/1.1 200 OK', got '%s'\n", __func__, + tmp_buf); + continue; // we'll try again + } + + if (len > 0) { retry = 3; } + + if (len <= 0) + { + rig_debug(RIG_DEBUG_ERR, "%s: read_string error=%d\n", __func__, len); + continue; + } + + if (strlen(xml) + strlen(tmp_buf) < xml_len - 1) + { + strncat(xml, tmp_buf, xml_len - 1); + } + else + { + rig_debug(RIG_DEBUG_ERR, + "%s: xml buffer overflow!!\nTrying to add len=%d\nTo len=%d\n", __func__, + (int)strlen(tmp_buf), (int)strlen(xml)); + RETURNFUNC(-RIG_EPROTO); + } + } + while (retry-- > 0 && strstr(xml, terminator) == NULL); + + if (retry == 0) + { + rig_debug(RIG_DEBUG_WARN, "%s: retry timeout\n", __func__); + RETURNFUNC(-RIG_ETIMEOUT); + } + + if (strstr(xml, terminator)) + { + rig_debug(RIG_DEBUG_TRACE, "%s: got %s\n", __func__, terminator); + // Slow down just a bit -- not sure this is needed anymore but not a big deal here + hl_usleep(2 * 1000); + retval = RIG_OK; + } + else + { + rig_debug(RIG_DEBUG_VERBOSE, "%s: did not get %s\n", __func__, terminator); + retval = -(101 + RIG_EPROTO); + } + + RETURNFUNC(retval); } /* @@ -486,89 +486,89 @@ static int read_transaction(RIG *rig, char *xml, int xml_len) static int write_transaction(RIG *rig, char *xml, int xml_len) { - int try = rig->caps->retry; + int try = rig->caps->retry; - int retval = -RIG_EPROTO; + int retval = -RIG_EPROTO; - struct rig_state *rs = &rig->state; + struct rig_state *rs = &rig->state; - ENTERFUNC; + ENTERFUNC; - // This shouldn't ever happen...but just in case - // We need to avoid an empty write as rigctld replies with blank line - if (xml_len == 0) - { - rig_debug(RIG_DEBUG_ERR, "%s: len==0??\n", __func__); - RETURNFUNC(retval); - } + // This shouldn't ever happen...but just in case + // We need to avoid an empty write as rigctld replies with blank line + if (xml_len == 0) + { + rig_debug(RIG_DEBUG_ERR, "%s: len==0??\n", __func__); + RETURNFUNC(retval); + } - // appears we can lose sync if we don't clear things out - // shouldn't be anything for us now anyways - rig_flush(&rig->state.rigport); + // appears we can lose sync if we don't clear things out + // shouldn't be anything for us now anyways + rig_flush(&rig->state.rigport); - while (try-- >= 0 && retval != RIG_OK) - { - retval = write_block(&rs->rigport, xml, strlen(xml)); + while (try-- >= 0 && retval != RIG_OK) + { + retval = write_block(&rs->rigport, xml, strlen(xml)); - if (retval < 0) - { - RETURNFUNC(-RIG_EIO); - } - } + if (retval < 0) + { + RETURNFUNC(-RIG_EIO); + } + } - RETURNFUNC(retval); + RETURNFUNC(retval); } static int flrig_transaction(RIG *rig, char *cmd, char *cmd_arg, char *value, - int value_len) + int value_len) { - char xml[MAXXMLLEN]; - int retry = 5; + char xml[MAXXMLLEN]; + int retry = 5; - ENTERFUNC; + ENTERFUNC; - if (value) - { - value[0] = 0; - } + if (value) + { + value[0] = 0; + } - do - { - char *pxml; - int retval; + do + { + char *pxml; + int retval; - if (retry < 2) - { - rig_debug(RIG_DEBUG_VERBOSE, "%s: cmd=%s, retry=%d\n", __func__, cmd, retry); - } + if (retry < 2) + { + rig_debug(RIG_DEBUG_VERBOSE, "%s: cmd=%s, retry=%d\n", __func__, cmd, retry); + } - pxml = xml_build(cmd, cmd_arg, xml, sizeof(xml)); - retval = write_transaction(rig, pxml, strlen(pxml)); + pxml = xml_build(cmd, cmd_arg, xml, sizeof(xml)); + retval = write_transaction(rig, pxml, strlen(pxml)); - if (retval != RIG_OK) - { - rig_debug(RIG_DEBUG_ERR, "%s: write_transaction error=%d\n", __func__, retval); + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: write_transaction error=%d\n", __func__, retval); - // if we get RIG_EIO the socket has probably disappeared - // so bubble up the error so port can re re-opened - if (retval == -RIG_EIO) { RETURNFUNC(retval); } + // if we get RIG_EIO the socket has probably disappeared + // so bubble up the error so port can re re-opened + if (retval == -RIG_EIO) { RETURNFUNC(retval); } - hl_usleep(50 * 1000); // 50ms sleep if error - } + hl_usleep(50 * 1000); // 50ms sleep if error + } - read_transaction(rig, xml, sizeof(xml)); // this might time out -- that's OK + read_transaction(rig, xml, sizeof(xml)); // this might time out -- that's OK - if (value) - { - xml_parse(xml, value, value_len); - } - } - while (((value && strlen(value) == 0) || (strlen(xml) == 0)) - && retry--); // we'll do retries if needed + if (value) + { + xml_parse(xml, value, value_len); + } + } + while (((value && strlen(value) == 0) || (strlen(xml) == 0)) + && retry--); // we'll do retries if needed - if (value && strlen(value) == 0) { RETURNFUNC(RIG_EPROTO); } + if (value && strlen(value) == 0) { RETURNFUNC(RIG_EPROTO); } - RETURNFUNC(RIG_OK); + RETURNFUNC(RIG_OK); } /* @@ -577,43 +577,43 @@ static int flrig_transaction(RIG *rig, char *cmd, char *cmd_arg, char *value, */ static int flrig_init(RIG *rig) { - struct flrig_priv_data *priv; + struct flrig_priv_data *priv; - ENTERFUNC; - rig_debug(RIG_DEBUG_TRACE, "%s version %s\n", __func__, BACKEND_VER); + ENTERFUNC; + rig_debug(RIG_DEBUG_TRACE, "%s version %s\n", __func__, BACKEND_VER); - rig->state.priv = (struct flrig_priv_data *)malloc(sizeof( - struct flrig_priv_data)); + rig->state.priv = (struct flrig_priv_data *)malloc(sizeof( + struct flrig_priv_data)); - if (!rig->state.priv) - { - RETURNFUNC(-RIG_ENOMEM); - } + if (!rig->state.priv) + { + RETURNFUNC(-RIG_ENOMEM); + } - priv = rig->state.priv; + priv = rig->state.priv; - memset(priv, 0, sizeof(struct flrig_priv_data)); + memset(priv, 0, sizeof(struct flrig_priv_data)); - /* - * set arbitrary initial status - */ - rig->state.current_vfo = RIG_VFO_A; - priv->split = 0; - priv->ptt = 0; - priv->curr_modeA = -1; - priv->curr_modeB = -1; - priv->curr_widthA = -1; - priv->curr_widthB = -1; - - if (!rig->caps) - { - RETURNFUNC(-RIG_EINVAL); - } - - strncpy(rig->state.rigport.pathname, DEFAULTPATH, - sizeof(rig->state.rigport.pathname)); - - RETURNFUNC(RIG_OK); + /* + * set arbitrary initial status + */ + rig->state.current_vfo = RIG_VFO_A; + priv->split = 0; + priv->ptt = 0; + priv->curr_modeA = -1; + priv->curr_modeB = -1; + priv->curr_widthA = -1; + priv->curr_widthB = -1; + + if (!rig->caps) + { + RETURNFUNC(-RIG_EINVAL); + } + + strncpy(rig->state.rigport.pathname, DEFAULTPATH, + sizeof(rig->state.rigport.pathname)); + + RETURNFUNC(RIG_OK); } /* @@ -623,27 +623,27 @@ static int flrig_init(RIG *rig) */ static const char *modeMapGetFLRig(rmode_t modeHamlib) { - int i; - - rig_debug(RIG_DEBUG_TRACE,"%s: called\n", __func__); - - for (i = 0; modeMap[i].mode_hamlib != 0; ++i) - { - rig_debug(RIG_DEBUG_TRACE, - "%s: checking modeMap[%d]=%.0f to modeHamlib=%.0f, mode_flrig='%s'\n", __func__, - i, (double)modeMap[i].mode_hamlib, (double)modeHamlib, modeMap[i].mode_flrig); - - if (modeMap[i].mode_hamlib == modeHamlib) - { - rig_debug(RIG_DEBUG_TRACE, "%s matched mode=%.0f, returning '%s'\n", __func__, - (double)modeHamlib, modeMap[i].mode_flrig); - return(modeMap[i].mode_flrig); - } - } - - rig_debug(RIG_DEBUG_ERR, "%s: Unknown mode requested: %s\n", __func__, - rig_strrmode(modeHamlib)); - return("ERROR"); + int i; + + rig_debug(RIG_DEBUG_TRACE, "%s: called\n", __func__); + + for (i = 0; modeMap[i].mode_hamlib != 0; ++i) + { + rig_debug(RIG_DEBUG_TRACE, + "%s: checking modeMap[%d]=%.0f to modeHamlib=%.0f, mode_flrig='%s'\n", __func__, + i, (double)modeMap[i].mode_hamlib, (double)modeHamlib, modeMap[i].mode_flrig); + + if (modeMap[i].mode_hamlib == modeHamlib) + { + rig_debug(RIG_DEBUG_TRACE, "%s matched mode=%.0f, returning '%s'\n", __func__, + (double)modeHamlib, modeMap[i].mode_flrig); + return (modeMap[i].mode_flrig); + } + } + + rig_debug(RIG_DEBUG_ERR, "%s: Unknown mode requested: %s\n", __func__, + rig_strrmode(modeHamlib)); + return ("ERROR"); } /* @@ -653,28 +653,28 @@ static const char *modeMapGetFLRig(rmode_t modeHamlib) */ static rmode_t modeMapGetHamlib(const char *modeFLRig) { - int i; - char modeFLRigCheck[64]; + int i; + char modeFLRigCheck[64]; - ENTERFUNC; + ENTERFUNC; - snprintf(modeFLRigCheck, sizeof(modeFLRigCheck), "|%s|", modeFLRig); + snprintf(modeFLRigCheck, sizeof(modeFLRigCheck), "|%s|", modeFLRig); - for (i = 0; modeMap[i].mode_hamlib != 0; ++i) - { - rig_debug(RIG_DEBUG_TRACE, "%s: find '%s' in '%s'\n", __func__, - modeFLRigCheck, modeMap[i].mode_flrig); + for (i = 0; modeMap[i].mode_hamlib != 0; ++i) + { + rig_debug(RIG_DEBUG_TRACE, "%s: find '%s' in '%s'\n", __func__, + modeFLRigCheck, modeMap[i].mode_flrig); - if (modeMap[i].mode_flrig - && strcmp(modeMap[i].mode_flrig, modeFLRigCheck) == 0) - { - RETURNFUNC(modeMap[i].mode_hamlib); - } - } + if (modeMap[i].mode_flrig + && strcmp(modeMap[i].mode_flrig, modeFLRigCheck) == 0) + { + RETURNFUNC(modeMap[i].mode_hamlib); + } + } - rig_debug(RIG_DEBUG_TRACE, "%s: mode requested: %s, not in modeMap\n", __func__, - modeFLRig); - RETURNFUNC(RIG_MODE_NONE); + rig_debug(RIG_DEBUG_TRACE, "%s: mode requested: %s, not in modeMap\n", __func__, + modeFLRig); + RETURNFUNC(RIG_MODE_NONE); } @@ -684,51 +684,51 @@ static rmode_t modeMapGetHamlib(const char *modeFLRig) */ static void modeMapAdd(rmode_t *modes, rmode_t mode_hamlib, char *mode_flrig) { - int i; - int len1; - - rig_debug(RIG_DEBUG_TRACE, "%s:mode_flrig=%s\n", __func__, mode_flrig); - - // if we already have it just return - // We get ERROR if the mode is not known so non-ERROR is OK - if (modeMapGetHamlib(mode_flrig) != RIG_MODE_NONE) { return; } - - len1 = strlen(mode_flrig) + 3; /* bytes needed for allocating */ - - for (i = 0; modeMap[i].mode_hamlib != 0; ++i) - { - if (modeMap[i].mode_hamlib == mode_hamlib) - { - int len2; - *modes |= modeMap[i].mode_hamlib; - - /* we will pipe delimit all the entries for easier matching */ - /* all entries will have pipe symbol on both sides */ - if (modeMap[i].mode_flrig == NULL) - { - modeMap[i].mode_flrig = calloc(1, len1); - - if (modeMap[i].mode_flrig == NULL) - { - rig_debug(RIG_DEBUG_ERR, "%s: error allocating memory for modeMap\n", - __func__); - return; - } - } - - len2 = strlen(modeMap[i].mode_flrig); /* current len w/o null */ - modeMap[i].mode_flrig = realloc(modeMap[i].mode_flrig, - strlen(modeMap[i].mode_flrig) + len1); - - if (strlen(modeMap[i].mode_flrig) == 0) { modeMap[i].mode_flrig[0] = '|'; } - - strncat(modeMap[i].mode_flrig, mode_flrig, len1 + len2); - strncat(modeMap[i].mode_flrig, "|", len1 + len2); - rig_debug(RIG_DEBUG_TRACE, "%s: Adding mode=%s, index=%d, result=%s\n", - __func__, mode_flrig, i, modeMap[i].mode_flrig); - return; - } - } + int i; + int len1; + + rig_debug(RIG_DEBUG_TRACE, "%s:mode_flrig=%s\n", __func__, mode_flrig); + + // if we already have it just return + // We get ERROR if the mode is not known so non-ERROR is OK + if (modeMapGetHamlib(mode_flrig) != RIG_MODE_NONE) { return; } + + len1 = strlen(mode_flrig) + 3; /* bytes needed for allocating */ + + for (i = 0; modeMap[i].mode_hamlib != 0; ++i) + { + if (modeMap[i].mode_hamlib == mode_hamlib) + { + int len2; + *modes |= modeMap[i].mode_hamlib; + + /* we will pipe delimit all the entries for easier matching */ + /* all entries will have pipe symbol on both sides */ + if (modeMap[i].mode_flrig == NULL) + { + modeMap[i].mode_flrig = calloc(1, len1); + + if (modeMap[i].mode_flrig == NULL) + { + rig_debug(RIG_DEBUG_ERR, "%s: error allocating memory for modeMap\n", + __func__); + return; + } + } + + len2 = strlen(modeMap[i].mode_flrig); /* current len w/o null */ + modeMap[i].mode_flrig = realloc(modeMap[i].mode_flrig, + strlen(modeMap[i].mode_flrig) + len1); + + if (strlen(modeMap[i].mode_flrig) == 0) { modeMap[i].mode_flrig[0] = '|'; } + + strncat(modeMap[i].mode_flrig, mode_flrig, len1 + len2); + strncat(modeMap[i].mode_flrig, "|", len1 + len2); + rig_debug(RIG_DEBUG_TRACE, "%s: Adding mode=%s, index=%d, result=%s\n", + __func__, mode_flrig, i, modeMap[i].mode_flrig); + return; + } + } } /* @@ -737,251 +737,254 @@ static void modeMapAdd(rmode_t *modes, rmode_t mode_hamlib, char *mode_flrig) */ static int flrig_open(RIG *rig) { - int retval; - char value[MAXXMLLEN]; - char arg[MAXXMLLEN]; - rmode_t modes; - char *p; - char *pr; - struct flrig_priv_data *priv = (struct flrig_priv_data *) rig->state.priv; - - ENTERFUNC; - rig_debug(RIG_DEBUG_VERBOSE, "%s version %s\n", __func__, BACKEND_VER); - - retval = flrig_transaction(rig, "main.get_version", NULL, value, sizeof(value)); - - if (retval != RIG_OK) - { - rig_debug(RIG_DEBUG_ERR, "%s: get_version failed: %s\n", __func__, - rigerror(retval)); - RETURNFUNC(retval); - } - rig_debug(RIG_DEBUG_VERBOSE, "%s FlRig version %s\n", __func__, value); - - retval = flrig_transaction(rig, "rig.get_xcvr", NULL, value, sizeof(value)); - - if (retval != RIG_OK) - { - rig_debug(RIG_DEBUG_ERR, "%s: get_xcvr failed: %s\n", __func__, - rigerror(retval)); - RETURNFUNC(retval); - } - retval = flrig_transaction(rig, "rig.get_xcvr", NULL, value, sizeof(value)); - - if (retval != RIG_OK) - { - rig_debug(RIG_DEBUG_ERR, "%s: get_xcvr failed: %s\n", __func__, - rigerror(retval)); - RETURNFUNC(retval); - } - retval = flrig_transaction(rig, "rig.get_xcvr", NULL, value, sizeof(value)); - - if (retval != RIG_OK) - { - rig_debug(RIG_DEBUG_ERR, "%s: get_xcvr failed: %s\n", __func__, - rigerror(retval)); - RETURNFUNC(retval); - } - - strncpy(priv->info, value, sizeof(priv->info)); - rig_debug(RIG_DEBUG_VERBOSE, "Transceiver=%s\n", value); - - /* see if get_pwrmeter_scale is available */ - retval = flrig_transaction(rig, "rig.get_pwrmeter_scale", NULL, value, - sizeof(value)); - - if (retval != RIG_OK) { RETURNFUNC(retval); } - - priv->powermeter_scale = 1; // default - - if (strlen(value) > 0) - { - priv->powermeter_scale = atof(value); - } - - /* see if get_modeA is available */ - retval = flrig_transaction(rig, "rig.get_modeA", NULL, value, sizeof(value)); - - if (retval != RIG_OK) { RETURNFUNC(retval); } - - if (strlen(value) > 0) /* must have it since we got an answer */ - { - priv->has_get_modeA = 1; - rig_debug(RIG_DEBUG_VERBOSE, "%s: getmodeA is available=%s\n", __func__, - value); - } - else - { - rig_debug(RIG_DEBUG_VERBOSE, "%s: getmodeA is not available\n", __func__); - } - - /* see if get_bwA is available */ - retval = flrig_transaction(rig, "rig.get_bwA", NULL, value, sizeof(value)); - - if (retval != RIG_OK) { RETURNFUNC(retval); } - - if (strlen(value) > 0) /* must have it since we got an answer */ - { - priv->has_get_bwA = 1; - rig_debug(RIG_DEBUG_VERBOSE, "%s: get_bwA is available=%s\n", __func__, - value); - } - else - { - rig_debug(RIG_DEBUG_VERBOSE, "%s: get_bwA is not available\n", __func__); - } - - strcpy(arg, value); - retval = flrig_transaction(rig, "rig.get_AB", arg, value, sizeof(value)); - - if (retval != RIG_OK) { RETURNFUNC(retval); } - - if (streq(value, "A")) - { - rig->state.current_vfo = RIG_VFO_A; - } - else - { - rig->state.current_vfo = RIG_VFO_B; - } - - rig_debug(RIG_DEBUG_TRACE, "%s: currvfo=%s value=%s\n", __func__, - rig_strvfo(rig->state.current_vfo), value); - //vfo_t vfo=RIG_VFO_A; - //vfo_t vfo_tx=RIG_VFO_B; // split is always VFOB - //flrig_get_split_vfo(rig, vfo, &priv->split, &vfo_tx); - - /* find out available widths and modes */ - retval = flrig_transaction(rig, "rig.get_modes", NULL, value, sizeof(value)); - - if (retval != RIG_OK) { RETURNFUNC(retval); } - - rig_debug(RIG_DEBUG_VERBOSE, "%s: modes=%s\n", __func__, value); - modes = 0; - pr = value; - - /* The following modes in FLRig are not implemented yet - A1A - AM-2 - AM6.0 - AM-D1 -- doesn't appear to be read/set - AM-D2 -- doesn't appear to be read/set - AM-D3 -- doesn't appear to be read/set - AMW -- don't have mode in rig.h - CW2.4 -- could be CW - CW500 -- could be CWN but CWN not in rig.h - CW-N -- could be CWN but CWN not in rig.h - CWN -- dcould be CWN but CWN not in rig.h - CW-NR -- don't have mode in rig.h - DATA2-LSB - DV - DV-R - F1B - FM-D1 -- doesn't appear to be read/set - FM-D2 -- doesn't appear to be read/set - FM-D3 -- doesn't appear to be read/set - H3E - M11 - USB-D -- doesn't appear to be read/set - USB-D1 -- doesn't appear to be read/set - USB-D2 -- doesn't appear to be read/set - USB-D3 -- doesn't appear to be read/set - USER-L -- doesn't appear to be read/set - USER-U -- doesn't appear to be read/set - */ - - for (p = strtok_r(value, "|", &pr); p != NULL; p = strtok_r(NULL, "|", &pr)) - { - if (streq(p, "AM-D")) { modeMapAdd(&modes, RIG_MODE_PKTAM, p); } - else if (streq(p, "AM")) { modeMapAdd(&modes, RIG_MODE_AM, p); } - else if (streq(p, "AM-N")) { modeMapAdd(&modes, RIG_MODE_AMN, p); } - else if (streq(p, "AMN")) { modeMapAdd(&modes, RIG_MODE_AMN, p); } - else if (streq(p, "CW")) { modeMapAdd(&modes, RIG_MODE_CW, p); } - else if (streq(p, "CW-L")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } - else if (streq(p, "CW-LSB")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } - else if (streq(p, "CW-R")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } - else if (streq(p, "CW-U")) { modeMapAdd(&modes, RIG_MODE_CW, p); } - else if (streq(p, "CW-USB")) { modeMapAdd(&modes, RIG_MODE_CW, p); } - else if (streq(p, "CWL")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } - else if (streq(p, "CWU")) { modeMapAdd(&modes, RIG_MODE_CW, p); } - else if (streq(p, "D-LSB")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "D-USB")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "DATA")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "DATA-FM")) { modeMapAdd(&modes, RIG_MODE_PKTFM, p); } - else if (streq(p, "DATA-L")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "DATA-R")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "DATA-LSB")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "DATA-USB")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "DATA-U")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "DIG")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "DIGI")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "DIGL")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "DIGU")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "DSB")) { modeMapAdd(&modes, RIG_MODE_DSB, p); } - else if (streq(p, "FM")) { modeMapAdd(&modes, RIG_MODE_FM, p); } - else if (streq(p, "FM-D")) { modeMapAdd(&modes, RIG_MODE_PKTFM, p); } - else if (streq(p, "FMN")) { modeMapAdd(&modes, RIG_MODE_FMN, p); } - else if (streq(p, "FM-N")) { modeMapAdd(&modes, RIG_MODE_FMN, p); } - else if (streq(p, "FMW")) { modeMapAdd(&modes, RIG_MODE_WFM, p); } - else if (streq(p, "FSK")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "FSK-R")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "LCW")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } - else if (streq(p, "LSB")) { modeMapAdd(&modes, RIG_MODE_LSB, p); } - else if (streq(p, "LSB-D")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "LSB-D1")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "LSB-D2")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "LSB-D3")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "NFM")) { modeMapAdd(&modes, RIG_MODE_FMN, p); } - else if (streq(p, "PKT")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "PKT-FM")) { modeMapAdd(&modes, RIG_MODE_PKTFM, p); } - else if (streq(p, "PKT-L")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "PKT-U")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "PKT(L)")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "PKT(U)")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "PSK")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "PSK-L")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "PSK-R")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "PSK-U")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "RTTY")) { modeMapAdd(&modes, RIG_MODE_RTTY, p); } - else if (streq(p, "RTTY-L")) { modeMapAdd(&modes, RIG_MODE_RTTYR, p); } - else if (streq(p, "RTTY-R")) { modeMapAdd(&modes, RIG_MODE_RTTYR, p); } - else if (streq(p, "RTTY-U")) { modeMapAdd(&modes, RIG_MODE_RTTY, p); } - else if (streq(p, "RTTY(U)")) { modeMapAdd(&modes, RIG_MODE_RTTY, p); } - else if (streq(p, "RTTY(R")) { modeMapAdd(&modes, RIG_MODE_RTTYR, p); } - else if (streq(p, "SAH")) { modeMapAdd(&modes, RIG_MODE_SAH, p); } - else if (streq(p, "SAL")) { modeMapAdd(&modes, RIG_MODE_SAL, p); } - else if (streq(p, "SAM")) { modeMapAdd(&modes, RIG_MODE_SAM, p); } - else if (streq(p, "USB")) { modeMapAdd(&modes, RIG_MODE_USB, p); } - else if (streq(p, "USB-D")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "USB-D1")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "USB-D2")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "USB-D3")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "USER-U")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } - else if (streq(p, "USER-L")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } - else if (streq(p, "W-FM")) { modeMapAdd(&modes, RIG_MODE_WFM, p); } - else if (streq(p, "WFM")) { modeMapAdd(&modes, RIG_MODE_WFM, p); } - else if (streq(p, "UCW")) { modeMapAdd(&modes, RIG_MODE_CW, p); } - else if (streq(p, "C4FM")) { modeMapAdd(&modes, RIG_MODE_C4FM, p); } - else if (streq(p, "SPEC")) { modeMapAdd(&modes, RIG_MODE_SPEC, p); } - else if (streq(p, "DRM")) // we don't support DRM yet (or maybe ever) - { - rig_debug(RIG_DEBUG_VERBOSE, "%s: no mapping for mode %s\n", __func__, p); - } - else { rig_debug(RIG_DEBUG_ERR, "%s: Unknown mode (new?) for this rig='%s'\n", __func__, p); } - } - - rig->state.mode_list = modes; - - retval = rig_strrmodes(modes, value, sizeof(value)); - - if (retval != RIG_OK) // we might get TRUNC but we can still print the debug - { - rig_debug(RIG_DEBUG_VERBOSE, "%s: %s\n", __func__, rigerror(retval)); - } - - rig_debug(RIG_DEBUG_VERBOSE, "%s: hamlib modes=%s\n", __func__, value); - - RETURNFUNC(retval); + int retval; + char value[MAXXMLLEN]; + char arg[MAXXMLLEN]; + rmode_t modes; + char *p; + char *pr; + struct flrig_priv_data *priv = (struct flrig_priv_data *) rig->state.priv; + + ENTERFUNC; + rig_debug(RIG_DEBUG_VERBOSE, "%s version %s\n", __func__, BACKEND_VER); + + retval = flrig_transaction(rig, "main.get_version", NULL, value, sizeof(value)); + + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: get_version failed: %s\n", __func__, + rigerror(retval)); + RETURNFUNC(retval); + } + + rig_debug(RIG_DEBUG_VERBOSE, "%s FlRig version %s\n", __func__, value); + + retval = flrig_transaction(rig, "rig.get_xcvr", NULL, value, sizeof(value)); + + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: get_xcvr failed: %s\n", __func__, + rigerror(retval)); + RETURNFUNC(retval); + } + + retval = flrig_transaction(rig, "rig.get_xcvr", NULL, value, sizeof(value)); + + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: get_xcvr failed: %s\n", __func__, + rigerror(retval)); + RETURNFUNC(retval); + } + + retval = flrig_transaction(rig, "rig.get_xcvr", NULL, value, sizeof(value)); + + if (retval != RIG_OK) + { + rig_debug(RIG_DEBUG_ERR, "%s: get_xcvr failed: %s\n", __func__, + rigerror(retval)); + RETURNFUNC(retval); + } + + strncpy(priv->info, value, sizeof(priv->info)); + rig_debug(RIG_DEBUG_VERBOSE, "Transceiver=%s\n", value); + + /* see if get_pwrmeter_scale is available */ + retval = flrig_transaction(rig, "rig.get_pwrmeter_scale", NULL, value, + sizeof(value)); + + if (retval != RIG_OK) { RETURNFUNC(retval); } + + priv->powermeter_scale = 1; // default + + if (strlen(value) > 0) + { + priv->powermeter_scale = atof(value); + } + + /* see if get_modeA is available */ + retval = flrig_transaction(rig, "rig.get_modeA", NULL, value, sizeof(value)); + + if (retval != RIG_OK) { RETURNFUNC(retval); } + + if (strlen(value) > 0) /* must have it since we got an answer */ + { + priv->has_get_modeA = 1; + rig_debug(RIG_DEBUG_VERBOSE, "%s: getmodeA is available=%s\n", __func__, + value); + } + else + { + rig_debug(RIG_DEBUG_VERBOSE, "%s: getmodeA is not available\n", __func__); + } + + /* see if get_bwA is available */ + retval = flrig_transaction(rig, "rig.get_bwA", NULL, value, sizeof(value)); + + if (retval != RIG_OK) { RETURNFUNC(retval); } + + if (strlen(value) > 0) /* must have it since we got an answer */ + { + priv->has_get_bwA = 1; + rig_debug(RIG_DEBUG_VERBOSE, "%s: get_bwA is available=%s\n", __func__, + value); + } + else + { + rig_debug(RIG_DEBUG_VERBOSE, "%s: get_bwA is not available\n", __func__); + } + + strcpy(arg, value); + retval = flrig_transaction(rig, "rig.get_AB", arg, value, sizeof(value)); + + if (retval != RIG_OK) { RETURNFUNC(retval); } + + if (streq(value, "A")) + { + rig->state.current_vfo = RIG_VFO_A; + } + else + { + rig->state.current_vfo = RIG_VFO_B; + } + + rig_debug(RIG_DEBUG_TRACE, "%s: currvfo=%s value=%s\n", __func__, + rig_strvfo(rig->state.current_vfo), value); + //vfo_t vfo=RIG_VFO_A; + //vfo_t vfo_tx=RIG_VFO_B; // split is always VFOB + //flrig_get_split_vfo(rig, vfo, &priv->split, &vfo_tx); + + /* find out available widths and modes */ + retval = flrig_transaction(rig, "rig.get_modes", NULL, value, sizeof(value)); + + if (retval != RIG_OK) { RETURNFUNC(retval); } + + rig_debug(RIG_DEBUG_VERBOSE, "%s: modes=%s\n", __func__, value); + modes = 0; + pr = value; + + /* The following modes in FLRig are not implemented yet + A1A + AM-2 + AM6.0 + AM-D1 -- doesn't appear to be read/set + AM-D2 -- doesn't appear to be read/set + AM-D3 -- doesn't appear to be read/set + AMW -- don't have mode in rig.h + CW2.4 -- could be CW + CW500 -- could be CWN but CWN not in rig.h + CW-N -- could be CWN but CWN not in rig.h + CWN -- dcould be CWN but CWN not in rig.h + CW-NR -- don't have mode in rig.h + DATA2-LSB + DV + DV-R + F1B + FM-D1 -- doesn't appear to be read/set + FM-D2 -- doesn't appear to be read/set + FM-D3 -- doesn't appear to be read/set + H3E + M11 + USB-D -- doesn't appear to be read/set + USB-D1 -- doesn't appear to be read/set + USB-D2 -- doesn't appear to be read/set + USB-D3 -- doesn't appear to be read/set + USER-L -- doesn't appear to be read/set + USER-U -- doesn't appear to be read/set + */ + + for (p = strtok_r(value, "|", &pr); p != NULL; p = strtok_r(NULL, "|", &pr)) + { + if (streq(p, "AM-D")) { modeMapAdd(&modes, RIG_MODE_PKTAM, p); } + else if (streq(p, "AM")) { modeMapAdd(&modes, RIG_MODE_AM, p); } + else if (streq(p, "AM-N")) { modeMapAdd(&modes, RIG_MODE_AMN, p); } + else if (streq(p, "AMN")) { modeMapAdd(&modes, RIG_MODE_AMN, p); } + else if (streq(p, "CW")) { modeMapAdd(&modes, RIG_MODE_CW, p); } + else if (streq(p, "CW-L")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } + else if (streq(p, "CW-LSB")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } + else if (streq(p, "CW-R")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } + else if (streq(p, "CW-U")) { modeMapAdd(&modes, RIG_MODE_CW, p); } + else if (streq(p, "CW-USB")) { modeMapAdd(&modes, RIG_MODE_CW, p); } + else if (streq(p, "CWL")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } + else if (streq(p, "CWU")) { modeMapAdd(&modes, RIG_MODE_CW, p); } + else if (streq(p, "D-LSB")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "D-USB")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } + else if (streq(p, "DATA")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } + else if (streq(p, "DATA-FM")) { modeMapAdd(&modes, RIG_MODE_PKTFM, p); } + else if (streq(p, "DATA-L")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "DATA-R")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "DATA-LSB")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "DATA-USB")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } + else if (streq(p, "DATA-U")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } + else if (streq(p, "DIG")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } + else if (streq(p, "DIGI")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } + else if (streq(p, "DIGL")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "DIGU")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } + else if (streq(p, "DSB")) { modeMapAdd(&modes, RIG_MODE_DSB, p); } + else if (streq(p, "FM")) { modeMapAdd(&modes, RIG_MODE_FM, p); } + else if (streq(p, "FM-D")) { modeMapAdd(&modes, RIG_MODE_PKTFM, p); } + else if (streq(p, "FMN")) { modeMapAdd(&modes, RIG_MODE_FMN, p); } + else if (streq(p, "FM-N")) { modeMapAdd(&modes, RIG_MODE_FMN, p); } + else if (streq(p, "FMW")) { modeMapAdd(&modes, RIG_MODE_WFM, p); } + else if (streq(p, "FSK")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } + else if (streq(p, "FSK-R")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "LCW")) { modeMapAdd(&modes, RIG_MODE_CWR, p); } + else if (streq(p, "LSB")) { modeMapAdd(&modes, RIG_MODE_LSB, p); } + else if (streq(p, "LSB-D")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "LSB-D1")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "LSB-D2")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "LSB-D3")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p, "NFM")) { modeMapAdd(&modes, RIG_MODE_FMN, p); } + else if (streq(p, "PKT")) { modeMapAdd(&modes, RIG_MODE_PKTUSB, p); } + else if (streq(p, "PKT-FM")) { modeMapAdd(&modes, RIG_MODE_PKTFM, p); } + else if (streq(p, "PKT-L")) { modeMapAdd(&modes, RIG_MODE_PKTLSB, p); } + else if (streq(p... [truncated message content] |
From: Michael B. <mdb...@us...> - 2021-03-15 16:17:10
|
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 288f82f96387668f0cf531782711e37cc55847f5 (commit) via 1ba72fa725c77a0f40748eec8fda066b605049b2 (commit) via 2ef73b49fc8a2e5ce9778abbef4694ce6ce159f1 (commit) via 62402d1b15ff9bdcae1e9253ce7e902e2dec60f0 (commit) via a4d14e6f920894c2f62e3c424b7cb54fb81afdb9 (commit) from d66e0b98075a39485fdcbbf89529c0642202d3b0 (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 288f82f96387668f0cf531782711e37cc55847f5 Merge: 1ba72fa7 2ef73b49 Author: Michael Black W9MDB <mdb...@ya...> Date: Mon Mar 15 11:16:45 2021 -0500 Merge branch 'master' of https://github.com/Hamlib/Hamlib commit 1ba72fa725c77a0f40748eec8fda066b605049b2 Author: Michael Black W9MDB <mdb...@ya...> Date: Mon Mar 15 11:15:41 2021 -0500 Improve caching https://github.com/Hamlib/Hamlib/issues/280 https://github.com/Hamlib/Hamlib/issues/606 diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 4fdc0b45..c3a5f269 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -402,7 +402,7 @@ typedef unsigned int vfo_t; /** \brief '' -- used in caps */ -#define RIG_VFO_N(n) (1u<<(n)) +#define RIG_VFO_N(n) ((vfo_t)(1u<<(n))) /** \brief \c VFONone -- vfo unknown */ #define RIG_VFO_NONE 0 @@ -425,12 +425,18 @@ typedef unsigned int vfo_t; /** \brief \c SubB -- alias for SUB_B */ #define RIG_VFO_SUB_B RIG_VFO_N(22) +/** \brief \c SubC -- alias for SUB_B */ +#define RIG_VFO_SUB_C RIG_VFO_N(3) + /** \brief \c MainA -- alias for MAIN_A */ #define RIG_VFO_MAIN_A RIG_VFO_N(23) /** \brief \c MainB -- alias for MAIN_B */ #define RIG_VFO_MAIN_B RIG_VFO_N(24) +/** \brief \c MainC -- alias for MAIN_C */ +#define RIG_VFO_MAIN_C RIG_VFO_N(4) + /** \brief \c Sub -- alias for SUB */ #define RIG_VFO_SUB RIG_VFO_N(25) @@ -452,7 +458,7 @@ typedef unsigned int vfo_t; /** \brief \c Flag to set all VFOS */ #define RIG_VFO_ALL RIG_VFO_N(31) -// we and also use RIG_VFO_N(31) if needed +// we can also use RIG_VFO_N(31) if needed // Misc VFO Macros @@ -2081,7 +2087,7 @@ typedef enum { struct rig_cache { int timeout_ms; // the cache timeout for invalidating itself vfo_t vfo; - freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1 + //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1 // other abstraction here is based on dual vfo rigs and mapped to all others // So we have four possible states of rig // MainA, MainB, SubA, SubB @@ -2089,42 +2095,55 @@ struct rig_cache { // Most rigs have MainA and MainB // Dual VFO rigs can have SubA and SubB too // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction - freq_t freqCurr; // VFO_CURR freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB -#if 0 freq_t freqMainC; // VFO_C, VFO_MAINC -#endif freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs - freq_t freqMem; // VFO_MEM -- last MEM channel -#if 0 // future freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs -#endif - rmode_t mode; - pbwidth_t width; - pbwidth_t widthB; // if non-zero then rig has separate width for VFOB + freq_t freqMem; // VFO_MEM -- last MEM channel + rmode_t modeMainA; + rmode_t modeMainB; + rmode_t modeMainC; + rmode_t modeSubA; + rmode_t modeSubB; + rmode_t modeSubC; + rmode_t modeMem; + pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA + pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB + pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC + pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA + pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB + pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC + pbwidth_t widthMem; // if non-zero then rig has separate width for Mem ptt_t ptt; split_t split; vfo_t split_vfo; // split caches two values - struct timespec time_freq; - struct timespec time_freqCurr; struct timespec time_freqMainA; struct timespec time_freqMainB; -#if 0 struct timespec time_freqMainC; -#endif struct timespec time_freqSubA; struct timespec time_freqSubB; + struct timespec time_freqSubC; struct timespec time_freqMem; struct timespec time_vfo; - struct timespec time_mode; + struct timespec time_modeMainA; + struct timespec time_modeMainB; + struct timespec time_modeMainC; + struct timespec time_modeSubA; + struct timespec time_modeSubB; + struct timespec time_modeSubC; + struct timespec time_modeMem; + struct timespec time_widthMainA; + struct timespec time_widthMainB; + struct timespec time_widthMainC; + struct timespec time_widthSubA; + struct timespec time_widthSubB; + struct timespec time_widthSubC; + struct timespec time_widthMem; struct timespec time_ptt; struct timespec time_split; - vfo_t vfo_freq; // last vfo cached - vfo_t vfo_mode; // last vfo cached int satmode; // if rig is in satellite mode - rmode_t modeB; }; @@ -2982,6 +3001,7 @@ extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t sele extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status); extern HAMLIB_EXPORT(int) rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode, pbwidth_t *width, split_t *split); +extern HAMLIB_EXPORT(int) rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int * cache_ms_freq, rmode_t *mode, int *cache_ms_mode, pbwidth_t *width, int *cache_ms_width); typedef unsigned long rig_useconds_t; diff --git a/rigs/dummy/dummy.c b/rigs/dummy/dummy.c index 46faa1d4..1e20ddb6 100644 --- a/rigs/dummy/dummy.c +++ b/rigs/dummy/dummy.c @@ -72,6 +72,7 @@ struct dummy_priv_data channel_t vfo_a; channel_t vfo_b; + channel_t vfo_c; channel_t mem[NB_CHAN]; struct ext_list *ext_funcs; @@ -388,13 +389,23 @@ static int dummy_set_freq(RIG *rig, vfo_t vfo, freq_t freq) if (vfo == RIG_VFO_CURR) { vfo = priv->curr_vfo; } + // we emulate a rig with 100Hz set freq interval limits -- truncation + freq = freq - ((unsigned long)freq % 100); usleep(CMDSLEEP); sprintf_freq(fstr, sizeof(fstr), freq); rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s %s\n", __func__, rig_strvfo(vfo), fstr); - if (vfo == RIG_VFO_A || vfo == RIG_VFO_MAIN) { priv->curr->freq = freq; } - else if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) { priv->curr->tx_freq = freq; } + switch(vfo) + { + case RIG_VFO_MAIN: + case RIG_VFO_A: priv->vfo_a.freq = freq;break; + + case RIG_VFO_SUB: + case RIG_VFO_B: priv->vfo_b.freq = freq;break; + + case RIG_VFO_C: priv->vfo_c.freq = freq;break; + } if (!priv->split) { @@ -430,10 +441,12 @@ static int dummy_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) switch (vfo) { case RIG_VFO_MAIN: - case RIG_VFO_A: *freq = priv->curr->freq; break; + case RIG_VFO_A: *freq = priv->vfo_a.freq; break; case RIG_VFO_SUB: - case RIG_VFO_B: *freq = priv->curr->tx_freq; break; + case RIG_VFO_B: *freq = priv->vfo_b.freq; break; + + case RIG_VFO_C: *freq = priv->vfo_c.freq; break; default: RETURNFUNC(-RIG_EINVAL); } @@ -455,17 +468,28 @@ static int dummy_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s %s %s\n", __func__, rig_strvfo(vfo), rig_strrmode(mode), buf); - curr->mode = mode; + switch (vfo) + { + case RIG_VFO_A: priv->vfo_a.mode = mode; priv->vfo_a.width = width;break; + + case RIG_VFO_B: priv->vfo_b.mode = mode; priv->vfo_b.width = width;break; + + case RIG_VFO_C: priv->vfo_c.mode = mode; priv->vfo_c.width = width;break; + } if (RIG_PASSBAND_NOCHANGE == width) { RETURNFUNC(RIG_OK); } if (width == RIG_PASSBAND_NORMAL) { - curr->width = rig_passband_normal(rig, mode); + width = curr->width = rig_passband_normal(rig, mode); } - else + switch (vfo) { - curr->width = width; + case RIG_VFO_A: priv->vfo_a.width = width; break; + + case RIG_VFO_B: priv->vfo_b.width = width; break; + + case RIG_VFO_C: priv->vfo_c.width = width; break; } RETURNFUNC(RIG_OK); @@ -475,14 +499,23 @@ static int dummy_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) static int dummy_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) { struct dummy_priv_data *priv = (struct dummy_priv_data *)rig->state.priv; - channel_t *curr = priv->curr; ENTERFUNC; usleep(CMDSLEEP); rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__, rig_strvfo(vfo)); - *mode = curr->mode; - *width = curr->width; + if (vfo == RIG_VFO_CURR) vfo = rig->state.current_vfo; + + switch(vfo) + { + case RIG_VFO_MAIN: + case RIG_VFO_A: *mode = priv->vfo_a.mode;*width = priv->vfo_a.width; break; + + case RIG_VFO_SUB: + case RIG_VFO_B: *mode = priv->vfo_b.mode;*width = priv->vfo_b.width; break; + + case RIG_VFO_C: *mode = priv->vfo_c.mode;*width = priv->vfo_c.width; break; + } RETURNFUNC(RIG_OK); } @@ -497,6 +530,8 @@ static int dummy_set_vfo(RIG *rig, vfo_t vfo) usleep(CMDSLEEP); rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__, rig_strvfo(vfo)); + if (vfo == RIG_VFO_CURR) vfo = rig->state.current_vfo; + priv->last_vfo = priv->curr_vfo; priv->curr_vfo = vfo; @@ -513,6 +548,8 @@ static int dummy_set_vfo(RIG *rig, vfo_t vfo) case RIG_VFO_B: priv->curr = &priv->vfo_b; break; + case RIG_VFO_C: priv->curr = &priv->vfo_c; break; + case RIG_VFO_MEM: if (curr->channel_num >= 0 && curr->channel_num < NB_CHAN) { @@ -2085,7 +2122,7 @@ struct rig_caps dummy_caps = .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_OTHER, - .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT, + .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT|RIG_TARGETABLE_FREQ|RIG_TARGETABLE_MODE, .ptt_type = RIG_PTT_RIG, .dcd_type = RIG_DCD_RIG, .port_type = RIG_PORT_NONE, @@ -2250,7 +2287,7 @@ struct rig_caps dummy_no_vfo_caps = .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_OTHER, - .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT, + .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT|RIG_TARGETABLE_FREQ|RIG_TARGETABLE_MODE, .ptt_type = RIG_PTT_RIG, .dcd_type = RIG_DCD_RIG, .port_type = RIG_PORT_NONE, diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index c5c2d256..9832eb9c 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -281,7 +281,7 @@ int icom_one_transaction(RIG *rig, int cmd, int subcmd, if (frm_len < ACKFRMLEN) { RETURNFUNC(-RIG_EPROTO); } // if we send a bad command we will get back a NAK packet // e.g. fe fe e0 50 fa fd - if (NAK == buf[frm_len - 2]) { RETURNFUNC(-RIG_ERJCTED); } + if (frm_len == 6 && NAK == buf[frm_len - 2]) { RETURNFUNC(-RIG_ERJCTED); } rig_debug(RIG_DEBUG_TRACE, "%s: frm_len=%d, frm_len-1=%02x, frm_len-2=%02x\n", __func__, frm_len, buf[frm_len-1], buf[frm_len-2]); diff --git a/src/misc.c b/src/misc.c index 7e443c7e..105e8d4b 100644 --- a/src/misc.c +++ b/src/misc.c @@ -566,9 +566,11 @@ static struct { RIG_VFO_MAIN, "Main" }, { RIG_VFO_MAIN_A, "MainA" }, { RIG_VFO_MAIN_B, "MainB" }, + { RIG_VFO_MAIN_C, "MainB" }, { RIG_VFO_SUB, "Sub" }, { RIG_VFO_SUB_A, "SubA" }, { RIG_VFO_SUB_B, "SubB" }, + { RIG_VFO_SUB_C, "SubC" }, { RIG_VFO_NONE, "None" }, { 0xffffff, "" }, }; diff --git a/src/misc.h b/src/misc.h index 517334a4..a3c74f9d 100644 --- a/src/misc.h +++ b/src/misc.h @@ -150,18 +150,24 @@ void errmsg(int err, char *s, const char *func, const char *file, int line); return (rctmp); \ } while(0) -#if 0 // 5.0 - elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_INVALIDATE); -#endif #define CACHE_RESET {\ - elapsed_ms(&rig->state.cache.time_freq, HAMLIB_ELAPSED_INVALIDATE);\ - elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_freqMainA, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_freqSubA, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_vfo, HAMLIB_ELAPSED_INVALIDATE);\ - elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeSubA, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeSubB, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeSubC, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthMainA, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthMainB, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthMainC, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthSubA, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthSubB, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthSubC, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_split, HAMLIB_ELAPSED_INVALIDATE);\ } diff --git a/src/rig.c b/src/rig.c index c719759d..2745504b 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1321,19 +1321,70 @@ int HAMLIB_API rig_get_twiddle(RIG *rig, int *seconds) RETURNFUNC(RIG_OK); } -/* caching prototype to be fully implemented in 4.1 */ +static int set_cache_mode(RIG *rig, vfo_t vfo, mode_t mode, pbwidth_t width) +{ + ENTERFUNC; + if (vfo == RIG_VFO_CURR) + { + // if CURR then update this before we figure out the real VFO + vfo = rig->state.current_vfo; + } + // pick a sane default + if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) vfo = RIG_VFO_A; + switch (vfo) + { + case RIG_VFO_ALL: // we'll use NONE to reset all VFO caches + elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainA, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainC, HAMLIB_ELAPSED_INVALIDATE); + break; + case RIG_VFO_A: + case RIG_VFO_MAIN: + case RIG_VFO_MAIN_A: + rig->state.cache.modeMainA = mode; + if (width > 0) rig->state.cache.widthMainA = width; + elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_widthMainA, HAMLIB_ELAPSED_SET); + break; + case RIG_VFO_B: + case RIG_VFO_SUB: + case RIG_VFO_MAIN_B: + rig->state.cache.modeMainB = mode; + if (width > 0) rig->state.cache.widthMainB = width; + elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_widthMainB, HAMLIB_ELAPSED_SET); + break; + case RIG_VFO_C: + case RIG_VFO_MAIN_C: + rig->state.cache.modeMainC = mode; + if (width > 0) rig->state.cache.widthMainC = width; + elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_widthMainC, HAMLIB_ELAPSED_SET); + break; + default: + rig_debug(RIG_DEBUG_ERR, "%s: unknown vfo=%s\n", __func__, rig_strvfo(vfo)); + RETURNFUNC(-RIG_EINTERNAL); + } + + RETURNFUNC(RIG_OK); +} + static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) { + ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s, current_vfo=%s\n", __func__, rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo)); if (vfo == RIG_VFO_CURR) { // if CURR then update this before we figure out the real VFO - rig->state.cache.freqCurr = freq; - elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_SET); vfo = rig->state.current_vfo; } + // pick a sane default + if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) vfo = RIG_VFO_A; rig_debug(RIG_DEBUG_TRACE, "%s: set vfo=%s to freq=%.0f\n", __func__, rig_strvfo(vfo), freq); @@ -1341,17 +1392,22 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) switch (vfo) { case RIG_VFO_ALL: // we'll use NONE to reset all VFO caches - elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqMainA, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqSubA, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_freqSubC, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqMem, HAMLIB_ELAPSED_INVALIDATE); - break; - - case RIG_VFO_CURR: - rig->state.cache.freqCurr = freq; - elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_vfo, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainA, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainC, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_split, HAMLIB_ELAPSED_INVALIDATE); break; case RIG_VFO_A: @@ -1368,13 +1424,11 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_SET); break; -#if 0 // 5.0 - - case RIG_VFO_C: // is there a MainC/SubC we need to cover? + case RIG_VFO_C: + case RIG_VFO_MAIN_C: rig->state.cache.freqMainC = freq; elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_SET); break; -#endif case RIG_VFO_SUB_A: rig->state.cache.freqSubA = freq; @@ -1386,6 +1440,11 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_SET); break; + case RIG_VFO_SUB_C: + rig->state.cache.freqSubC = freq; + elapsed_ms(&rig->state.cache.time_freqSubC, HAMLIB_ELAPSED_SET); + break; + case RIG_VFO_MEM: rig->state.cache.freqMem = freq; elapsed_ms(&rig->state.cache.time_freqMem, HAMLIB_ELAPSED_SET); @@ -1400,65 +1459,84 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) RETURNFUNC(RIG_OK); } -/* caching prototype to be fully implemented in 4.1 */ -static int get_cache_freq(RIG *rig, vfo_t vfo, freq_t *freq, int *cache_ms) +int rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int *cache_ms_freq, rmode_t *mode, int *cache_ms_mode, pbwidth_t *width, int *cache_ms_width) { + ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s, current_vfo=%s\n", __func__, rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo)); if (vfo == RIG_VFO_CURR) { vfo = rig->state.current_vfo; } + // pick a sane default + if (vfo == RIG_VFO_CURR || vfo == RIG_VFO_NONE) { vfo = RIG_VFO_A; } // VFO_C to be implemented switch (vfo) { - case RIG_VFO_CURR: - *freq = rig->state.cache.freqCurr; - *cache_ms = elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_GET); - break; - case RIG_VFO_A: case RIG_VFO_MAIN: case RIG_VFO_MAIN_A: *freq = rig->state.cache.freqMainA; - *cache_ms = elapsed_ms(&rig->state.cache.time_freqMainA, HAMLIB_ELAPSED_GET); + *mode = rig->state.cache.modeMainA; + *width = rig->state.cache.widthMainA; + *cache_ms_freq = elapsed_ms(&rig->state.cache.time_freqMainA, HAMLIB_ELAPSED_GET); + *cache_ms_mode = elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_GET); + *cache_ms_width = elapsed_ms(&rig->state.cache.time_widthMainA, HAMLIB_ELAPSED_GET); break; case RIG_VFO_B: case RIG_VFO_SUB: *freq = rig->state.cache.freqMainB; - *cache_ms = elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_GET); + *mode = rig->state.cache.modeMainB; + *width = rig->state.cache.widthMainB; + *cache_ms_freq = elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_GET); + *cache_ms_mode = elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_GET); + *cache_ms_width = elapsed_ms(&rig->state.cache.time_widthMainB, HAMLIB_ELAPSED_GET); break; case RIG_VFO_SUB_A: *freq = rig->state.cache.freqSubA; - *cache_ms = elapsed_ms(&rig->state.cache.time_freqSubA, HAMLIB_ELAPSED_GET); + *mode = rig->state.cache.modeSubA; + *width = rig->state.cache.widthSubA; + *cache_ms_freq = elapsed_ms(&rig->state.cache.time_freqSubA, HAMLIB_ELAPSED_GET); + *cache_ms_mode = elapsed_ms(&rig->state.cache.time_modeSubA, HAMLIB_ELAPSED_GET); + *cache_ms_width = elapsed_ms(&rig->state.cache.time_widthSubA, HAMLIB_ELAPSED_GET); break; case RIG_VFO_SUB_B: *freq = rig->state.cache.freqSubB; - *cache_ms = elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_GET); + *mode = rig->state.cache.modeSubB; + *width = rig->state.cache.widthSubB; + *cache_ms_freq = elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_GET); + *cache_ms_mode = elapsed_ms(&rig->state.cache.time_modeSubB, HAMLIB_ELAPSED_GET); + *cache_ms_width = elapsed_ms(&rig->state.cache.time_widthSubB, HAMLIB_ELAPSED_GET); break; -#if 0 // 5.0 - case RIG_VFO_C: //case RIG_VFO_MAINC: // not used by any rig yet *freq = rig->state.cache.freqMainC; - *cache_ms = elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_GET); + *mode = rig->state.cache.modeMainC; + *width = rig->state.cache.widthMainC; + *cache_ms_freq = elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_GET); + *cache_ms_mode = elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_GET); + *cache_ms_width = elapsed_ms(&rig->state.cache.time_widthMainC, HAMLIB_ELAPSED_GET); break; -#endif -#if 0 // no known rigs use this yet - - case RIG_VFO_SUBC: + case RIG_VFO_SUB_C: *freq = rig->state.cache.freqSubC; - *cache_ms = rig->state.cache.time_freqSubC; + *mode = rig->state.cache.modeSubC; + *width = rig->state.cache.widthSubC; + *cache_ms_freq = elapsed_ms(&rig->state.cache.time_freqSubC, HAMLIB_ELAPSED_GET); + *cache_ms_mode = elapsed_ms(&rig->state.cache.time_modeSubC, HAMLIB_ELAPSED_GET); + *cache_ms_width = elapsed_ms(&rig->state.cache.time_widthSubC, HAMLIB_ELAPSED_GET); break; -#endif case RIG_VFO_MEM: *freq = rig->state.cache.freqMem; - *cache_ms = elapsed_ms(&rig->state.cache.time_freqMem, HAMLIB_ELAPSED_GET); + *mode = rig->state.cache.modeMem; + *width = rig->state.cache.widthMem; + *cache_ms_freq = elapsed_ms(&rig->state.cache.time_freqMem, HAMLIB_ELAPSED_GET); + *cache_ms_mode = elapsed_ms(&rig->state.cache.time_modeMem, HAMLIB_ELAPSED_GET); + *cache_ms_width = elapsed_ms(&rig->state.cache.time_widthMem, HAMLIB_ELAPSED_GET); break; default: @@ -1591,7 +1669,7 @@ int HAMLIB_API rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq) if (retcode != RIG_OK) { RETURNFUNC(retcode); } - set_cache_freq(rig, RIG_VFO_ALL, (freq_t)0); + set_cache_freq(rig, vfo, (freq_t)0); if (caps->get_freq) { @@ -1679,7 +1757,6 @@ int HAMLIB_API rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq) #endif ) { - elapsed_ms(&rig->state.cache.time_freq, HAMLIB_ELAPSED_INVALIDATE); set_cache_freq(rig, RIG_VFO_ALL, (freq_t)0); retcode = rig_get_freq(rig, vfo, &freq_new); @@ -1697,12 +1774,7 @@ int HAMLIB_API rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq) // update our current freq too if (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo) { rig->state.current_freq = freq_new; } - - elapsed_ms(&(rig->state.cache.time_freq), HAMLIB_ELAPSED_SET); - rig->state.cache.freq = freq_new; - //future 4.1 caching set_cache_freq(rig, vfo, freq_new); - rig->state.cache.vfo_freq = vfo; RETURNFUNC(retcode); } @@ -1728,8 +1800,9 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) { const struct rig_caps *caps; int retcode; - int cache_ms; vfo_t curr_vfo; + rmode_t mode; + pbwidth_t width; rig_debug(RIG_DEBUG_VERBOSE, "%s called vfo=%s\n", __func__, rig_strvfo(vfo)); @@ -1757,7 +1830,8 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) rig->state.cache.split, rig->state.cache.satmode, rig_strvfo(rig->state.tx_vfo)); // always return the cached freq for this clause - get_cache_freq(rig, vfo, freq, &cache_ms); + int cache_ms_freq, cache_ms_mode, cache_ms_width; + rig_get_cache(rig, vfo, freq, &cache_ms_freq, &mode, &cache_ms_mode, &width, &cache_ms_width); RETURNFUNC(RIG_OK); } @@ -1787,26 +1861,21 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) } } + int cache_ms_freq, cache_ms_mode, cache_ms_width; + rig_get_cache(rig, vfo, freq, &cache_ms_freq, &mode, &cache_ms_mode, &width, &cache_ms_width); + rig_debug(RIG_DEBUG_TRACE, "%s: cache check1 age=%dms\n", __func__, cache_ms_freq); - //future 4.1 caching - cache_ms = 10000; - get_cache_freq(rig, vfo, freq, &cache_ms); - rig_debug(RIG_DEBUG_TRACE, "%s: cache check1 age=%dms\n", __func__, cache_ms); - //future 4.1 caching needs to check individual VFO timeouts - //cache_ms = elapsed_ms(&rig->state.cache.time_freq, HAMLIB_ELAPSED_GET); - //rig_debug(RIG_DEBUG_TRACE, "%s: cache check2 age=%dms\n", __func__, cache_ms); - - if (freq != 0 && cache_ms < rig->state.cache.timeout_ms) + if (freq != 0 && cache_ms_freq < rig->state.cache.timeout_ms) { rig_debug(RIG_DEBUG_TRACE, "%s: %s cache hit age=%dms, freq=%.0f\n", __func__, - rig_strvfo(vfo), cache_ms, *freq); + rig_strvfo(vfo), cache_ms_freq, *freq); RETURNFUNC(RIG_OK); } else { rig_debug(RIG_DEBUG_TRACE, - "%s: cache miss age=%dms, cached_vfo=%s, asked_vfo=%s\n", __func__, cache_ms, - rig_strvfo(rig->state.cache.vfo_freq), rig_strvfo(vfo)); + "%s: cache miss age=%dms, cached_vfo=%s, asked_vfo=%s\n", __func__, cache_ms_freq, + rig_strvfo(vfo), rig_strvfo(vfo)); } caps = rig->caps; @@ -1834,15 +1903,15 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) // sometimes a network rig like FLRig will return freq=0 // so we'll just reuse the cache for that condition if (*freq == 0) { - *freq = rig->state.cache.freq; + rmode_t mode; + pbwidth_t width; + int freq_ms,mode_ms,width_ms; + rig_get_cache(rig,vfo,freq,&freq_ms,&mode,&mode_ms,&width,&width_ms); } if (retcode == RIG_OK) { - rig->state.cache.freq = *freq; - //future 4.1 caching set_cache_freq(rig, vfo, *freq); - rig->state.cache.vfo_freq = *freq; } } else @@ -1867,13 +1936,7 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) if (RIG_OK == retcode) { - cache_ms = elapsed_ms(&(rig->state.cache.time_freq), HAMLIB_ELAPSED_SET); - rig_debug(RIG_DEBUG_TRACE, "%s: cache reset age=%dms, vfo=%s, freq=%.0f\n", - __func__, cache_ms, rig_strvfo(vfo), *freq); - rig->state.cache.freq = *freq; - //future 4.1 caching set_cache_freq(rig, vfo, *freq); - rig->state.cache.vfo_freq = vfo; /* return the first error code */ retcode = rc2; } @@ -1896,14 +1959,7 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) *freq += rig->state.lo_freq; } - - cache_ms = elapsed_ms(&(rig->state.cache.time_freq), HAMLIB_ELAPSED_SET); - rig_debug(RIG_DEBUG_TRACE, "%s: cache reset age=%dms, vfo=%s, freq=%.0f\n", - __func__, cache_ms, rig_strvfo(vfo), *freq); - rig->state.cache.freq = *freq; - //future 4.1 caching set_cache_freq(rig, vfo, *freq); - rig->state.cache.vfo_freq = vfo; RETURNFUNC(retcode); } @@ -2010,25 +2066,10 @@ int HAMLIB_API rig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) } } - if (retcode == RIG_OK - && (vfo == RIG_VFO_CURR || vfo == rig->state.current_vfo)) - { - rig->state.current_mode = mode; - rig->state.current_width = width; - } - - if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB || vfo == RIG_VFO_MAIN_B) - { - rig->state.cache.mode = mode; - } - else - { - rig->state.cache.modeB = mode; - } - - rig->state.cache.vfo_mode = mode; // is this still needed? - elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_SET); + if (retcode != RIG_OK) RETURNFUNC(retcode); + set_cache_mode(rig,vfo,mode,width); + RETURNFUNC(retcode); } @@ -2059,7 +2100,7 @@ int HAMLIB_API rig_get_mode(RIG *rig, { const struct rig_caps *caps; int retcode; - int cache_ms; + freq_t freq; ENTERFUNC; @@ -2075,26 +2116,20 @@ int HAMLIB_API rig_get_mode(RIG *rig, RETURNFUNC(-RIG_ENAVAIL); } - cache_ms = elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_GET); + int cache_ms_freq, cache_ms_mode, cache_ms_width; + rig_get_cache(rig, vfo, &freq, &cache_ms_freq, mode, &cache_ms_mode, width, &cache_ms_width); rig_debug(RIG_DEBUG_TRACE, "%s: %s cache check age=%dms\n", __func__, - rig_strvfo(vfo), cache_ms); + rig_strvfo(vfo), cache_ms_freq); - if (cache_ms < rig->state.cache.timeout_ms && rig->state.cache.vfo_mode == vfo) + if (cache_ms_mode < rig->state.cache.timeout_ms || cache_ms_width < rig->state.cache.timeout_ms) { - rig_debug(RIG_DEBUG_TRACE, "%s: cache hit age=%dms\n", __func__, cache_ms); - *mode = rig->state.cache.mode; - *width = rig->state.cache.width; - - if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB || vfo == RIG_VFO_MAIN_B) - { - *width = rig->state.cache.widthB; - } + rig_debug(RIG_DEBUG_TRACE, "%s: cache hit age mode=%dms, width=%dms\n", __func__, cache_ms_mode, cache_ms_width); RETURNFUNC(RIG_OK); } else { - rig_debug(RIG_DEBUG_TRACE, "%s: cache miss age=%dms\n", __func__, cache_ms); + rig_debug(RIG_DEBUG_TRACE, "%s: cache miss age mode=%dms, width=%dms\n", __func__, cache_ms_mode, cache_ms_width); } if ((caps->targetable_vfo & RIG_TARGETABLE_MODE) @@ -2149,23 +2184,7 @@ int HAMLIB_API rig_get_mode(RIG *rig, *width = rig_passband_normal(rig, *mode); } - rig->state.cache.mode = *mode; - - if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB || vfo == RIG_VFO_MAIN_B) - { - rig->state.cache.widthB = *width; - - if (*width == 0) { *width = rig->state.cache.width; } - - rig->state.cache.modeB = vfo; - } - else - { - rig->state.cache.width = *width; - rig->state.cache.vfo_mode = vfo; - } - - cache_ms = elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_SET); + set_cache_mode(rig,vfo,*mode,*width); RETURNFUNC(retcode); } @@ -2405,14 +2424,19 @@ int HAMLIB_API rig_set_vfo(RIG *rig, vfo_t vfo) __func__, rigerror(retcode)); } - else // don't expire cache if we just read it - { - elapsed_ms(&rig->state.cache.time_freq, HAMLIB_ELAPSED_INVALIDATE); + else + { // if no get_freq clear all cache to be sure we refresh whatever we can + set_cache_freq(rig, RIG_VFO_ALL, (freq_t)0); } // expire several cached items when we switch VFOs elapsed_ms(&rig->state.cache.time_vfo, HAMLIB_ELAPSED_INVALIDATE); - elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainA, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainC, HAMLIB_ELAPSED_INVALIDATE); rig_debug(RIG_DEBUG_TRACE, "%s: return %d, vfo=%s\n", __func__, retcode, rig_strvfo(vfo)); diff --git a/tests/Makefile.am b/tests/Makefile.am index 7d5ff217..86381d7d 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -10,7 +10,7 @@ DISTCLEANFILES = rigctl.log rigctl.sum testbcd.log testbcd.sum hamlibdatetime.h bin_PROGRAMS = rigctl rigctld rigmem rigsmtr rigswr rotctl rotctld rigctlcom ampctl ampctld -check_PROGRAMS = dumpmem testrig testrigopen testrigcaps testtrn testbcd testfreq listrigs testloc rig_bench cachetest cachetest2 +check_PROGRAMS = dumpmem testrig testrigopen testrigcaps testtrn testbcd testfreq listrigs testloc rig_bench testcache cachetest cachetest2 RIGCOMMONSRC = rigctl_parse.c rigctl_parse.h dumpcaps.c uthash.h hamlibdatetime.h ROTCOMMONSRC = rotctl_parse.c rotctl_parse.h dumpcaps_rot.c uthash.h hamlibdatetime.h @@ -77,7 +77,7 @@ EXTRA_DIST = rigmatrix_head.html rig_split_lst.awk testctld.pl testrotctld.pl \ hamlibdatetime.h.in # Support 'make check' target for simple tests -check_SCRIPTS = testrig.sh testfreq.sh testbcd.sh testloc.sh testrigcaps.sh +check_SCRIPTS = testrig.sh testfreq.sh testbcd.sh testloc.sh testrigcaps.sh testcache.sh TESTS = $(check_SCRIPTS) @@ -102,6 +102,10 @@ testrigcaps.sh: echo './testrigcaps' > testrigcaps.sh chmod +x ./testrigcaps.sh +testcache.sh: + echo './testcache 1' > testcache.sh + chmod +x ./testcache.sh + # If we have a .git directory then we will generate the hamlibdate.h # file and replace it if it is different. Fall back to a copy of a # generic hamlibdatetime.h.in in the source tree. Build looks in build @@ -126,4 +130,4 @@ FORCE: dist-hook: test ./ -ef $(srcdir)/ || test ! -f hamlibdatetime.h || cp -f hamlibdatetime.h $(srcdir)/ -CLEANFILES = testrig.sh testfreq.sh testbcd.sh testloc.sh testrigcaps.sh +CLEANFILES = testrig.sh testfreq.sh testbcd.sh testloc.sh testrigcaps.sh testcache.sh diff --git a/tests/testcache.c b/tests/testcache.c new file mode 100644 index 00000000..853f009a --- /dev/null +++ b/tests/testcache.c @@ -0,0 +1,161 @@ +/* This program does a check of cache timing and hit/miss + * By Michael Black W9MDB + * Used in testing caching effects that have been added + * To compile: + * gcc -I../src -I../include -g -o cachetest3 cachetest3.c -lhamlib + * To run: + * ./cachetest3 + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <hamlib/rig.h> +#include <hamlib/riglist.h> +//#include "misc.h" + + +int main(int argc, char *argv[]) +{ + RIG *my_rig; + char *rig_file, *info_buf; + int retcode; + int model; + int cache_timeout = 0; + + model = 1; // we'll just use the dummy rig by default + rig_file = "127.0.0.1:4532"; // default if we use model#2 + + if (argc == 2) + { + model = atoi(argv[1]); + + if (model == 1) { rig_file = ""; } + } + + if (argc == 3) + { + rig_file = argv[2]; + } + + printf("Model#%d\n", model); + rig_set_debug(RIG_DEBUG_WARN); + + /* Instantiate a rig */ + my_rig = rig_init(model); // your rig model. + + /* Set up serial port, baud rate */ + + strncpy(my_rig->state.rigport.pathname, rig_file, HAMLIB_FILPATHLEN - 1); + + /* Open my rig */ + retcode = rig_open(my_rig); + + if (retcode != RIG_OK) + { + fprintf(stderr, "%s: rig_open failed %s\n", __func__, + rigerror(retcode)); + return 1; + } + + rig_set_cache_timeout_ms(my_rig, HAMLIB_CACHE_ALL, cache_timeout); + /* Give me ID info, e.g., firmware version. */ + info_buf = (char *)rig_get_info(my_rig); + + if (info_buf) + { + strtok(info_buf, "\r\n"); + printf("Rig_info: '%s'\n", info_buf); + } + + vfo_t vfo; + retcode = rig_get_vfo(my_rig, &vfo); + + if (vfo != RIG_VFO_A) + { + printf("VFO != VFOA\n"); + exit(1); + } + + printf("VFO: %s\n", rig_strvfo(vfo)); + freq_t freqA, freqB, freqC; + rmode_t modeA, modeB, modeC; + pbwidth_t widthA, widthB, widthC; + int freq_ms, mode_ms, width_ms; + rig_get_cache(my_rig, vfo, &freqA, &freq_ms, &modeA, &mode_ms, &widthA, + &width_ms); + printf("freq=%.0f cache times=%d,%d,%d\n", freqA, freq_ms, mode_ms, width_ms); + rig_get_cache(my_rig, vfo, &freqA, &freq_ms, &modeA, &mode_ms, &widthA, + &width_ms); + printf("freq=%.0f cache times=%d,%d,%d\n", freqA, freq_ms, mode_ms, width_ms); + rig_set_freq(my_rig, RIG_VFO_A, 14074055); + rig_set_freq(my_rig, RIG_VFO_B, 14074155); + rig_set_freq(my_rig, RIG_VFO_C, 14074255); + rig_set_mode(my_rig, RIG_VFO_A, RIG_MODE_USB, 1000); + rig_set_mode(my_rig, RIG_VFO_B, RIG_MODE_LSB, 2000); + rig_set_mode(my_rig, RIG_VFO_C, RIG_MODE_PKTUSB, 3000); + + rig_get_cache(my_rig, RIG_VFO_A, &freqA, &freq_ms, &modeA, &mode_ms, &widthA, + &width_ms); + printf("VFOA freq=%.0f, mode=%s, width=%d, cache times=%d,%d,%d\n", freqA, + rig_strrmode(modeA), (int)widthA, freq_ms, mode_ms, width_ms); + + rig_get_cache(my_rig, RIG_VFO_B, &freqB, &freq_ms, &modeB, &mode_ms, &widthB, + &width_ms); + printf("VFOB freq=%.0f, mode=%s, width=%d, cache times=%d,%d,%d\n", freqB, + rig_strrmode(modeB), (int)widthB, freq_ms, mode_ms, width_ms); + + rig_get_cache(my_rig, RIG_VFO_C, &freqC, &freq_ms, &modeC, &mode_ms, &widthC, + &width_ms); + printf("VFOC freq=%.0f, mode=%s, width=%d, cache times=%d,%d,%d\n", freqC, + rig_strrmode(modeC), (int)widthC, freq_ms, mode_ms, width_ms); + + if (freqA != 14074000) { printf("freqA == %.1f\n", freqA); exit(1); } + + if (modeA != RIG_MODE_USB) { printf("modeA = %s\n", rig_strrmode(modeA)); exit(1); } + + if (widthA != 1000) { printf("widthA = %d\n", (int)widthA); exit(1); } + + if (freqB != 14074100) { printf("freqB = %.1f\n", freqB); exit(1); } + + if (modeB != RIG_MODE_LSB) { printf("modeB = %s\n", rig_strrmode(modeB)); exit(1); } + + if (widthB != 2000) { printf("widthB = %d\n", (int)widthB); exit(1); } + + if (freqC != 14074200) { printf("freqC = %.1f\n", freqC); exit(1); } + + if (modeC != RIG_MODE_PKTUSB) { printf("modeC = %s\n", rig_strrmode(modeC)); exit(1); } + + if (widthC != 3000) { printf("widthC = %d\n", (int)widthC); exit(1); } + + printf("PTT ON\n"); + rig_set_ptt(my_rig,RIG_VFO_CURR,RIG_PTT_ON); + ptt_t ptt; + printf("PTT get ptt ON\n"); + rig_get_ptt(my_rig,RIG_VFO_CURR,&ptt); + if (ptt != RIG_PTT_ON) { printf("ptt != ON\n"); exit(1); } + hl_usleep(1000*1000); + rig_get_ptt(my_rig,RIG_VFO_CURR,&ptt); + printf("PTT get ptt ON\n"); + if (ptt != RIG_PTT_ON) { printf("ptt != ON\n"); exit(1); } + printf("PTT ptt OFF\n"); + rig_set_ptt(my_rig,RIG_VFO_CURR,RIG_PTT_OFF); + if (ptt != RIG_PTT_ON) { printf("ptt != ON\n"); exit(1); } + rig_get_ptt(my_rig,RIG_VFO_CURR,&ptt); + printf("PTT get ptt OFF\n"); + + vfo_t tx_vfo; + split_t split; + rig_get_split_vfo(my_rig,RIG_VFO_A,&split, &tx_vfo); + printf("split=%d, tx_vfo=%s\n", split, rig_strvfo(tx_vfo)); + if (split !=0 || tx_vfo != RIG_VFO_A) { printf("split#1 failed\n"); exit(1); } + rig_set_split_vfo(my_rig,RIG_VFO_A,RIG_SPLIT_ON,RIG_VFO_B); + hl_usleep(1000*1000); + rig_get_split_vfo(my_rig,RIG_VFO_A,&split,&tx_vfo); + printf("split=%d, tx_vfo=%s\n", split, rig_strvfo(tx_vfo)); + if (split != RIG_SPLIT_ON || tx_vfo != RIG_VFO_B) { printf("split#2 failed\n"); exit(1); } + + printf("All OK\n"); + rig_close(my_rig); + return 0 ; +}; commit 2ef73b49fc8a2e5ce9778abbef4694ce6ce159f1 Author: Michael Black W9MDB <mdb...@ya...> Date: Mon Mar 15 11:15:41 2021 -0500 https://github.com/Hamlib/Hamlib/issues/280 https://github.com/Hamlib/Hamlib/issues/606 diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 4fdc0b45..c3a5f269 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -402,7 +402,7 @@ typedef unsigned int vfo_t; /** \brief '' -- used in caps */ -#define RIG_VFO_N(n) (1u<<(n)) +#define RIG_VFO_N(n) ((vfo_t)(1u<<(n))) /** \brief \c VFONone -- vfo unknown */ #define RIG_VFO_NONE 0 @@ -425,12 +425,18 @@ typedef unsigned int vfo_t; /** \brief \c SubB -- alias for SUB_B */ #define RIG_VFO_SUB_B RIG_VFO_N(22) +/** \brief \c SubC -- alias for SUB_B */ +#define RIG_VFO_SUB_C RIG_VFO_N(3) + /** \brief \c MainA -- alias for MAIN_A */ #define RIG_VFO_MAIN_A RIG_VFO_N(23) /** \brief \c MainB -- alias for MAIN_B */ #define RIG_VFO_MAIN_B RIG_VFO_N(24) +/** \brief \c MainC -- alias for MAIN_C */ +#define RIG_VFO_MAIN_C RIG_VFO_N(4) + /** \brief \c Sub -- alias for SUB */ #define RIG_VFO_SUB RIG_VFO_N(25) @@ -452,7 +458,7 @@ typedef unsigned int vfo_t; /** \brief \c Flag to set all VFOS */ #define RIG_VFO_ALL RIG_VFO_N(31) -// we and also use RIG_VFO_N(31) if needed +// we can also use RIG_VFO_N(31) if needed // Misc VFO Macros @@ -2081,7 +2087,7 @@ typedef enum { struct rig_cache { int timeout_ms; // the cache timeout for invalidating itself vfo_t vfo; - freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1 + //freq_t freq; // to be deprecated in 4.1 when full Main/Sub/A/B caching is implemented in 4.1 // other abstraction here is based on dual vfo rigs and mapped to all others // So we have four possible states of rig // MainA, MainB, SubA, SubB @@ -2089,42 +2095,55 @@ struct rig_cache { // Most rigs have MainA and MainB // Dual VFO rigs can have SubA and SubB too // For dual VFO rigs simplex operations are all done on MainA/MainB -- ergo this abstraction - freq_t freqCurr; // VFO_CURR freq_t freqMainA; // VFO_A, VFO_MAIN, and VFO_MAINA freq_t freqMainB; // VFO_B, VFO_SUB, and VFO_MAINB -#if 0 freq_t freqMainC; // VFO_C, VFO_MAINC -#endif freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs - freq_t freqMem; // VFO_MEM -- last MEM channel -#if 0 // future freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs -#endif - rmode_t mode; - pbwidth_t width; - pbwidth_t widthB; // if non-zero then rig has separate width for VFOB + freq_t freqMem; // VFO_MEM -- last MEM channel + rmode_t modeMainA; + rmode_t modeMainB; + rmode_t modeMainC; + rmode_t modeSubA; + rmode_t modeSubB; + rmode_t modeSubC; + rmode_t modeMem; + pbwidth_t widthMainA; // if non-zero then rig has separate width for MainA + pbwidth_t widthMainB; // if non-zero then rig has separate width for MainB + pbwidth_t widthMainC; // if non-zero then rig has separate width for MainC + pbwidth_t widthSubA; // if non-zero then rig has separate width for SubA + pbwidth_t widthSubB; // if non-zero then rig has separate width for SubB + pbwidth_t widthSubC; // if non-zero then rig has separate width for SubC + pbwidth_t widthMem; // if non-zero then rig has separate width for Mem ptt_t ptt; split_t split; vfo_t split_vfo; // split caches two values - struct timespec time_freq; - struct timespec time_freqCurr; struct timespec time_freqMainA; struct timespec time_freqMainB; -#if 0 struct timespec time_freqMainC; -#endif struct timespec time_freqSubA; struct timespec time_freqSubB; + struct timespec time_freqSubC; struct timespec time_freqMem; struct timespec time_vfo; - struct timespec time_mode; + struct timespec time_modeMainA; + struct timespec time_modeMainB; + struct timespec time_modeMainC; + struct timespec time_modeSubA; + struct timespec time_modeSubB; + struct timespec time_modeSubC; + struct timespec time_modeMem; + struct timespec time_widthMainA; + struct timespec time_widthMainB; + struct timespec time_widthMainC; + struct timespec time_widthSubA; + struct timespec time_widthSubB; + struct timespec time_widthSubC; + struct timespec time_widthMem; struct timespec time_ptt; struct timespec time_split; - vfo_t vfo_freq; // last vfo cached - vfo_t vfo_mode; // last vfo cached int satmode; // if rig is in satellite mode - rmode_t modeB; }; @@ -2982,6 +3001,7 @@ extern HAMLIB_EXPORT(int) rig_set_cache_timeout_ms(RIG *rig, hamlib_cache_t sele extern HAMLIB_EXPORT(int) rig_set_vfo_opt(RIG *rig, int status); extern HAMLIB_EXPORT(int) rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode, pbwidth_t *width, split_t *split); +extern HAMLIB_EXPORT(int) rig_get_cache(RIG *rig, vfo_t vfo, freq_t *freq, int * cache_ms_freq, rmode_t *mode, int *cache_ms_mode, pbwidth_t *width, int *cache_ms_width); typedef unsigned long rig_useconds_t; diff --git a/rigs/dummy/dummy.c b/rigs/dummy/dummy.c index 46faa1d4..1e20ddb6 100644 --- a/rigs/dummy/dummy.c +++ b/rigs/dummy/dummy.c @@ -72,6 +72,7 @@ struct dummy_priv_data channel_t vfo_a; channel_t vfo_b; + channel_t vfo_c; channel_t mem[NB_CHAN]; struct ext_list *ext_funcs; @@ -388,13 +389,23 @@ static int dummy_set_freq(RIG *rig, vfo_t vfo, freq_t freq) if (vfo == RIG_VFO_CURR) { vfo = priv->curr_vfo; } + // we emulate a rig with 100Hz set freq interval limits -- truncation + freq = freq - ((unsigned long)freq % 100); usleep(CMDSLEEP); sprintf_freq(fstr, sizeof(fstr), freq); rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s %s\n", __func__, rig_strvfo(vfo), fstr); - if (vfo == RIG_VFO_A || vfo == RIG_VFO_MAIN) { priv->curr->freq = freq; } - else if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) { priv->curr->tx_freq = freq; } + switch(vfo) + { + case RIG_VFO_MAIN: + case RIG_VFO_A: priv->vfo_a.freq = freq;break; + + case RIG_VFO_SUB: + case RIG_VFO_B: priv->vfo_b.freq = freq;break; + + case RIG_VFO_C: priv->vfo_c.freq = freq;break; + } if (!priv->split) { @@ -430,10 +441,12 @@ static int dummy_get_freq(RIG *rig, vfo_t vfo, freq_t *freq) switch (vfo) { case RIG_VFO_MAIN: - case RIG_VFO_A: *freq = priv->curr->freq; break; + case RIG_VFO_A: *freq = priv->vfo_a.freq; break; case RIG_VFO_SUB: - case RIG_VFO_B: *freq = priv->curr->tx_freq; break; + case RIG_VFO_B: *freq = priv->vfo_b.freq; break; + + case RIG_VFO_C: *freq = priv->vfo_c.freq; break; default: RETURNFUNC(-RIG_EINVAL); } @@ -455,17 +468,28 @@ static int dummy_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s %s %s\n", __func__, rig_strvfo(vfo), rig_strrmode(mode), buf); - curr->mode = mode; + switch (vfo) + { + case RIG_VFO_A: priv->vfo_a.mode = mode; priv->vfo_a.width = width;break; + + case RIG_VFO_B: priv->vfo_b.mode = mode; priv->vfo_b.width = width;break; + + case RIG_VFO_C: priv->vfo_c.mode = mode; priv->vfo_c.width = width;break; + } if (RIG_PASSBAND_NOCHANGE == width) { RETURNFUNC(RIG_OK); } if (width == RIG_PASSBAND_NORMAL) { - curr->width = rig_passband_normal(rig, mode); + width = curr->width = rig_passband_normal(rig, mode); } - else + switch (vfo) { - curr->width = width; + case RIG_VFO_A: priv->vfo_a.width = width; break; + + case RIG_VFO_B: priv->vfo_b.width = width; break; + + case RIG_VFO_C: priv->vfo_c.width = width; break; } RETURNFUNC(RIG_OK); @@ -475,14 +499,23 @@ static int dummy_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width) static int dummy_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width) { struct dummy_priv_data *priv = (struct dummy_priv_data *)rig->state.priv; - channel_t *curr = priv->curr; ENTERFUNC; usleep(CMDSLEEP); rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__, rig_strvfo(vfo)); - *mode = curr->mode; - *width = curr->width; + if (vfo == RIG_VFO_CURR) vfo = rig->state.current_vfo; + + switch(vfo) + { + case RIG_VFO_MAIN: + case RIG_VFO_A: *mode = priv->vfo_a.mode;*width = priv->vfo_a.width; break; + + case RIG_VFO_SUB: + case RIG_VFO_B: *mode = priv->vfo_b.mode;*width = priv->vfo_b.width; break; + + case RIG_VFO_C: *mode = priv->vfo_c.mode;*width = priv->vfo_c.width; break; + } RETURNFUNC(RIG_OK); } @@ -497,6 +530,8 @@ static int dummy_set_vfo(RIG *rig, vfo_t vfo) usleep(CMDSLEEP); rig_debug(RIG_DEBUG_VERBOSE, "%s called: %s\n", __func__, rig_strvfo(vfo)); + if (vfo == RIG_VFO_CURR) vfo = rig->state.current_vfo; + priv->last_vfo = priv->curr_vfo; priv->curr_vfo = vfo; @@ -513,6 +548,8 @@ static int dummy_set_vfo(RIG *rig, vfo_t vfo) case RIG_VFO_B: priv->curr = &priv->vfo_b; break; + case RIG_VFO_C: priv->curr = &priv->vfo_c; break; + case RIG_VFO_MEM: if (curr->channel_num >= 0 && curr->channel_num < NB_CHAN) { @@ -2085,7 +2122,7 @@ struct rig_caps dummy_caps = .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_OTHER, - .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT, + .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT|RIG_TARGETABLE_FREQ|RIG_TARGETABLE_MODE, .ptt_type = RIG_PTT_RIG, .dcd_type = RIG_DCD_RIG, .port_type = RIG_PORT_NONE, @@ -2250,7 +2287,7 @@ struct rig_caps dummy_no_vfo_caps = .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_OTHER, - .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT, + .targetable_vfo = RIG_TARGETABLE_PTT | RIG_TARGETABLE_RITXIT|RIG_TARGETABLE_FREQ|RIG_TARGETABLE_MODE, .ptt_type = RIG_PTT_RIG, .dcd_type = RIG_DCD_RIG, .port_type = RIG_PORT_NONE, diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index c5c2d256..9832eb9c 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -281,7 +281,7 @@ int icom_one_transaction(RIG *rig, int cmd, int subcmd, if (frm_len < ACKFRMLEN) { RETURNFUNC(-RIG_EPROTO); } // if we send a bad command we will get back a NAK packet // e.g. fe fe e0 50 fa fd - if (NAK == buf[frm_len - 2]) { RETURNFUNC(-RIG_ERJCTED); } + if (frm_len == 6 && NAK == buf[frm_len - 2]) { RETURNFUNC(-RIG_ERJCTED); } rig_debug(RIG_DEBUG_TRACE, "%s: frm_len=%d, frm_len-1=%02x, frm_len-2=%02x\n", __func__, frm_len, buf[frm_len-1], buf[frm_len-2]); diff --git a/src/misc.c b/src/misc.c index 7e443c7e..105e8d4b 100644 --- a/src/misc.c +++ b/src/misc.c @@ -566,9 +566,11 @@ static struct { RIG_VFO_MAIN, "Main" }, { RIG_VFO_MAIN_A, "MainA" }, { RIG_VFO_MAIN_B, "MainB" }, + { RIG_VFO_MAIN_C, "MainB" }, { RIG_VFO_SUB, "Sub" }, { RIG_VFO_SUB_A, "SubA" }, { RIG_VFO_SUB_B, "SubB" }, + { RIG_VFO_SUB_C, "SubC" }, { RIG_VFO_NONE, "None" }, { 0xffffff, "" }, }; diff --git a/src/misc.h b/src/misc.h index 517334a4..a3c74f9d 100644 --- a/src/misc.h +++ b/src/misc.h @@ -150,18 +150,24 @@ void errmsg(int err, char *s, const char *func, const char *file, int line); return (rctmp); \ } while(0) -#if 0 // 5.0 - elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_INVALIDATE); -#endif #define CACHE_RESET {\ - elapsed_ms(&rig->state.cache.time_freq, HAMLIB_ELAPSED_INVALIDATE);\ - elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_freqMainA, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_freqSubA, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_vfo, HAMLIB_ELAPSED_INVALIDATE);\ - elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeSubA, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeSubB, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_modeSubC, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthMainA, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthMainB, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthMainC, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthSubA, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthSubB, HAMLIB_ELAPSED_INVALIDATE);\ + elapsed_ms(&rig->state.cache.time_widthSubC, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_ptt, HAMLIB_ELAPSED_INVALIDATE);\ elapsed_ms(&rig->state.cache.time_split, HAMLIB_ELAPSED_INVALIDATE);\ } diff --git a/src/rig.c b/src/rig.c index c719759d..2745504b 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1321,19 +1321,70 @@ int HAMLIB_API rig_get_twiddle(RIG *rig, int *seconds) RETURNFUNC(RIG_OK); } -/* caching prototype to be fully implemented in 4.1 */ +static int set_cache_mode(RIG *rig, vfo_t vfo, mode_t mode, pbwidth_t width) +{ + ENTERFUNC; + if (vfo == RIG_VFO_CURR) + { + // if CURR then update this before we figure out the real VFO + vfo = rig->state.current_vfo; + } + // pick a sane default + if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) vfo = RIG_VFO_A; + switch (vfo) + { + case RIG_VFO_ALL: // we'll use NONE to reset all VFO caches + elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainA, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_widthMainC, HAMLIB_ELAPSED_INVALIDATE); + break; + case RIG_VFO_A: + case RIG_VFO_MAIN: + case RIG_VFO_MAIN_A: + rig->state.cache.modeMainA = mode; + if (width > 0) rig->state.cache.widthMainA = width; + elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_widthMainA, HAMLIB_ELAPSED_SET); + break; + case RIG_VFO_B: + case RIG_VFO_SUB: + case RIG_VFO_MAIN_B: + rig->state.cache.modeMainB = mode; + if (width > 0) rig->state.cache.widthMainB = width; + elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_widthMainB, HAMLIB_ELAPSED_SET); + break; + case RIG_VFO_C: + case RIG_VFO_MAIN_C: + rig->state.cache.modeMainC = mode; + if (width > 0) rig->state.cache.widthMainC = width; + elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_widthMainC, HAMLIB_ELAPSED_SET); + break; + default: + rig_debug(RIG_DEBUG_ERR, "%s: unknown vfo=%s\n", __func__, rig_strvfo(vfo)); + RETURNFUNC(-RIG_EINTERNAL); + } + + RETURNFUNC(RIG_OK); +} + static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) { + ENTERFUNC; rig_debug(RIG_DEBUG_TRACE, "%s: vfo=%s, current_vfo=%s\n", __func__, rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo)); if (vfo == RIG_VFO_CURR) { // if CURR then update this before we figure out the real VFO - rig->state.cache.freqCurr = freq; - elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_SET); vfo = rig->state.current_vfo; } + // pick a sane default + if (vfo == RIG_VFO_NONE || vfo == RIG_VFO_CURR) vfo = RIG_VFO_A; rig_debug(RIG_DEBUG_TRACE, "%s: set vfo=%s to freq=%.0f\n", __func__, rig_strvfo(vfo), freq); @@ -1341,17 +1392,22 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) switch (vfo) { case RIG_VFO_ALL: // we'll use NONE to reset all VFO caches - elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqMainA, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqSubA, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_freqSubC, HAMLIB_ELAPSED_INVALIDATE); elapsed_ms(&rig->state.cache.time_freqMem, HAMLIB_ELAPSED_INVALIDATE); - break; - - case RIG_VFO_CURR: - rig->state.cache.freqCurr = freq; - elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_SET); + elapsed_ms(&rig->state.cache.time_vfo, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainA, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainB, HAMLIB_ELAPSED_INVALIDATE); + elapsed_ms(&rig->state.cache.time_modeMainC, HAMLIB_ELAPSED_INVALIDATE); + elap... [truncated message content] |
From: Michael B. <mdb...@us...> - 2021-03-14 21:45:59
|
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 d66e0b98075a39485fdcbbf89529c0642202d3b0 (commit) via 88318e19c939cf7e14a1f1ffcf709d371f73ffba (commit) from dff7bdd7a79e33de446f10f87dea5dbd5bc9ca45 (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 d66e0b98075a39485fdcbbf89529c0642202d3b0 Author: Michael Black W9MDB <mdb...@ya...> Date: Sun Mar 14 16:43:17 2021 -0500 Narrow the Icom NAK packet check to only 6 byte frames https://github.com/Hamlib/Hamlib/issues/607 diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 88d24f8a..547d8bc6 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20210313" +#define BACKEND_VER "20210314" /* * defines used by comp_cal_str in rig.c commit 88318e19c939cf7e14a1f1ffcf709d371f73ffba Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Mar 13 15:32:26 2021 -0600 Add additional VFOS to dummy.c for cache testing https://github.com/Hamlib/Hamlib/issues/606 diff --git a/rigs/dummy/dummy.c b/rigs/dummy/dummy.c index 49e9bd70..46faa1d4 100644 --- a/rigs/dummy/dummy.c +++ b/rigs/dummy/dummy.c @@ -2042,7 +2042,7 @@ static int dummy_mW2power(RIG *rig, float *power, unsigned int mwpower, #define DUMMY_VFO_OP 0x7ffffffUL /* All possible VFO OPs */ #define DUMMY_SCAN 0x7ffffffUL /* All possible scan OPs */ -#define DUMMY_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_MEM|RIG_VFO_MAIN|RIG_VFO_SUB) +#define DUMMY_VFOS (RIG_VFO_A|RIG_VFO_B|RIG_VFO_C|RIG_VFO_MEM|RIG_VFO_MAIN|RIG_VFO_SUB|RIG_VFO_MAIN_A|RIG_VFO_MAIN_B|RIG_VFO_SUB_A|RIG_VFO_SUB_B) #define DUMMY_MODES (RIG_MODE_AM | RIG_MODE_CW | RIG_MODE_RTTY | \ RIG_MODE_SSB | RIG_MODE_FM | RIG_MODE_WFM | \ @@ -2081,7 +2081,7 @@ struct rig_caps dummy_caps = RIG_MODEL(RIG_MODEL_DUMMY), .model_name = "Dummy", .mfg_name = "Hamlib", - .version = "20210210.0", + .version = "20210313.0", .copyright = "LGPL", .status = RIG_STATUS_STABLE, .rig_type = RIG_TYPE_OTHER, ----------------------------------------------------------------------- Summary of changes: rigs/dummy/dummy.c | 4 ++-- rigs/icom/icom.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-13 14:05:43
|
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 dff7bdd7a79e33de446f10f87dea5dbd5bc9ca45 (commit) from a42e13351b6fe6901b83d5aaa8ee5facc264d9b1 (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 dff7bdd7a79e33de446f10f87dea5dbd5bc9ca45 Author: Michael Black W9MDB <mdb...@ya...> Date: Sat Mar 13 08:03:53 2021 -0600 For icom recognize bad command return packets e.g. fe fe e0 50 fa fd https://github.com/Hamlib/Hamlib/issues/607 diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index af49e19a..c5c2d256 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -279,6 +279,9 @@ int icom_one_transaction(RIG *rig, int cmd, int subcmd, } if (frm_len < ACKFRMLEN) { RETURNFUNC(-RIG_EPROTO); } + // if we send a bad command we will get back a NAK packet + // e.g. fe fe e0 50 fa fd + if (NAK == buf[frm_len - 2]) { RETURNFUNC(-RIG_ERJCTED); } rig_debug(RIG_DEBUG_TRACE, "%s: frm_len=%d, frm_len-1=%02x, frm_len-2=%02x\n", __func__, frm_len, buf[frm_len-1], buf[frm_len-2]); diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index b9eb6eaa..88d24f8a 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include <sys/time.h> #endif -#define BACKEND_VER "20210310" +#define BACKEND_VER "20210313" /* * defines used by comp_cal_str in rig.c ----------------------------------------------------------------------- Summary of changes: rigs/icom/frame.c | 3 +++ rigs/icom/icom.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-13 04:53:20
|
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 a42e13351b6fe6901b83d5aaa8ee5facc264d9b1 (commit) from ee6f682963a238b62a7c189e79aad87c90fef877 (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 a42e13351b6fe6901b83d5aaa8ee5facc264d9b1 Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Mar 12 22:51:17 2021 -0600 Update comments in k3.c diff --git a/rigs/kenwood/k3.c b/rigs/kenwood/k3.c index 4b83c295..d93ff6d1 100644 --- a/rigs/kenwood/k3.c +++ b/rigs/kenwood/k3.c @@ -1462,27 +1462,27 @@ int k3_set_split_mode(RIG *rig, vfo_t vfo, rmode_t tx_mode, pbwidth_t tx_width) switch (tx_mode) { case RIG_MODE_PKTLSB: - tx_mode = RIG_MODE_RTTY; // in "DT0" Subband RIG_MODE_RTTY = USB and RIG_MODE_RTTYR = LSB + tx_mode = RIG_MODE_RTTY; // "DT0" RIG_MODE_RTTY = LSB snprintf(cmd_m, sizeof(cmd_m), - "DT0"); /* DATA A mode - DATA (REV) on LSB optimized for HF Packet, VFO dial is suppressed carrier QRG */ + "DT0"); /* DATA A mode - DATA-R LSB, suppressed carrier */ break; case RIG_MODE_PKTUSB: - tx_mode = RIG_MODE_RTTYR; // in "DT0" Subband RIG_MODE_RTTY = USB and RIG_MODE_RTTYR = LSB + tx_mode = RIG_MODE_RTTYR; // "DT0" RIG_MODE_RTTYR = USB snprintf(cmd_m, sizeof(cmd_m), - "DT0"); /* DATA A mode - AFSK on USB general, VFO dial is suppressed carrier QRG */ + "DT0"); /* DATA A mode - DATA on USB, suppressed carrier */ break; case RIG_MODE_RTTY: - tx_mode = RIG_MODE_RTTY; // in "DT1" Subband RIG_MODE_RTTY = LSB and RIG_MODE_RTTYR = USB + tx_mode = RIG_MODE_RTTY; // DT1" RIG_MODE_RTTY = LSB and RIG_MODE_RTTYR = USB snprintf(cmd_m, sizeof(cmd_m), "DT1"); /* FSK D mode - direct FSK on LSB optimized for RTTY, VFO dial is MARK */ break; case RIG_MODE_RTTYR: - tx_mode = RIG_MODE_RTTYR; // in "DT2" Subband RIG_MODE_RTTY = LSB and RIG_MODE_RTTYR = USB + tx_mode = RIG_MODE_RTTYR; // "DT2" RIG_MODE_RTTY = USB and RIG_MODE_RTTYR = USB snprintf(cmd_m, sizeof(cmd_m), - "DT2"); /* FSK D mode - direct FSK keying, LSB is "normal", VFO dial is MARK */ + "DT2"); /* FSK D mode - direct FSK on USB optimized for RTTY, VFO dial is MARK */ break; case RIG_MODE_PSK: ----------------------------------------------------------------------- Summary of changes: rigs/kenwood/k3.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |
From: Michael B. <mdb...@us...> - 2021-03-12 18:26: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 ee6f682963a238b62a7c189e79aad87c90fef877 (commit) from 20e41b59ec89fddf40e391f0c2276041e226096f (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 ee6f682963a238b62a7c189e79aad87c90fef877 Author: Michael Black W9MDB <mdb...@ya...> Date: Fri Mar 12 12:26:10 2021 -0600 Remove unneed NAK check on wrong location -- NAK check already being done https://www.dropbox.com/s/q0i90h7ee1w2tnf/bin.zip?dl=0 diff --git a/rigs/icom/frame.c b/rigs/icom/frame.c index 2d1664a9..af49e19a 100644 --- a/rigs/icom/frame.c +++ b/rigs/icom/frame.c @@ -281,7 +281,6 @@ int icom_one_transaction(RIG *rig, int cmd, int subcmd, if (frm_len < ACKFRMLEN) { RETURNFUNC(-RIG_EPROTO); } rig_debug(RIG_DEBUG_TRACE, "%s: frm_len=%d, frm_len-1=%02x, frm_len-2=%02x\n", __func__, frm_len, buf[frm_len-1], buf[frm_len-2]); - if (NAK == buf[frm_len - 2]) { RETURNFUNC(-RIG_ERJCTED); } // has to be one of these two now or frame is corrupt if (FI != buf[frm_len - 1] && ACK != buf[frm_len - 1]) { RETURNFUNC(-RIG_BUSBUSY); } ----------------------------------------------------------------------- Summary of changes: rigs/icom/frame.c | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |