[Hamlib-commits] Hamlib -- Ham radio control libraries branch master updated. 717d720a3605745a47812
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: n0nb <n0...@us...> - 2025-05-26 16:16:01
|
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 717d720a3605745a47812908b088117580e4e10c (commit) via b5df48d8d9839460e13201765b278c6a32741158 (commit) from 43017b38f08c6ed75fa9c5a4d88bdb0875e7c15a (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 717d720a3605745a47812908b088117580e4e10c Merge: 43017b38f b5df48d8d Author: Nate Bargmann <n0...@n0...> Date: Mon May 26 11:09:36 2025 -0500 Merge GitHub PR #1744 commit b5df48d8d9839460e13201765b278c6a32741158 Author: George Baltz N3GB <Geo...@gm...> Date: Sat May 24 20:20:10 2025 -0400 Add locking around get/set levels diff --git a/src/settings.c b/src/settings.c index 8dfbb6731..0667160b0 100644 --- a/src/settings.c +++ b/src/settings.c @@ -90,6 +90,7 @@ int HAMLIB_API rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) return -RIG_ENAVAIL; } + rig_lock(rig, 1); if ((caps->targetable_vfo & RIG_TARGETABLE_LEVEL) || vfo == RIG_VFO_CURR || vfo == STATE(rig)->current_vfo) @@ -103,12 +104,14 @@ int HAMLIB_API rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) } #endif - - return caps->set_level(rig, vfo, level, val); + retcode = caps->set_level(rig, vfo, level, val); + rig_lock(rig, 0); + return retcode; } if (!caps->set_vfo) { + rig_lock(rig, 0); return -RIG_ENTARGET; } @@ -117,11 +120,13 @@ int HAMLIB_API rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) if (retcode != RIG_OK) { + rig_lock(rig, 0); return retcode; } retcode = caps->set_level(rig, vfo, level, val); caps->set_vfo(rig, curr_vfo); + rig_lock(rig, 0); return retcode; } @@ -172,6 +177,7 @@ int HAMLIB_API rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) return -RIG_ENAVAIL; } + rig_lock(rig, 1); // Keep Out! /* * Special case(frontend emulation): calibrated S-meter reading */ @@ -187,10 +193,12 @@ int HAMLIB_API rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) if (retcode != RIG_OK) { + rig_lock(rig, 0); return retcode; } val->i = (int)rig_raw2val(rawstr.i, &rs->str_cal); + rig_lock(rig, 0); return RIG_OK; } @@ -199,12 +207,14 @@ int HAMLIB_API rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) || vfo == RIG_VFO_CURR || vfo == rs->current_vfo) { - - return caps->get_level(rig, vfo, level, val); + retcode = caps->get_level(rig, vfo, level, val); + rig_lock(rig, 0); + return retcode; } if (!caps->set_vfo) { + rig_lock(rig, 0); return -RIG_ENTARGET; } @@ -213,11 +223,13 @@ int HAMLIB_API rig_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) if (retcode != RIG_OK) { + rig_lock(rig, 0); return retcode; } retcode = caps->get_level(rig, vfo, level, val); caps->set_vfo(rig, curr_vfo); + rig_lock(rig, 0); return retcode; } ----------------------------------------------------------------------- Summary of changes: src/settings.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) hooks/post-receive -- Hamlib -- Ham radio control libraries |