[Hamlib-commits] Hamlib -- Ham radio control libraries branch Hamlib-4.6.3 updated. 53d2eed741d36fd
Library to control radio transceivers and receivers
Brought to you by:
n0nb
From: n0nb <n0...@us...> - 2025-05-26 16:17:49
|
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, Hamlib-4.6.3 has been updated via 53d2eed741d36fd87622a601590d8e860f048bc3 (commit) from f0ac83bcba5b7bf0a6a2db18d31069bbd118cd41 (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 53d2eed741d36fd87622a601590d8e860f048bc3 Author: George Baltz N3GB <Geo...@gm...> Date: Sat May 24 20:20:10 2025 -0400 Add locking around get/set levels (cherry picked from commit b5df48d8d9839460e13201765b278c6a32741158) 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 |