From f7d38f92cac73fb8b952f5dde3853f40ef910e14 Mon Sep 17 00:00:00 2001 From: Daniele Forsi IU5HKX Date: Sat, 24 May 2025 20:51:01 +0200 Subject: [PATCH] Implement Amp.get_level --- bindings/amplifier.swg | 17 +++++++++++++++++ bindings/python/test_amp.py | 9 +++++++++ 2 files changed, 26 insertions(+) diff --git a/bindings/amplifier.swg b/bindings/amplifier.swg index 59c16e7bc..a22a02765 100644 --- a/bindings/amplifier.swg +++ b/bindings/amplifier.swg @@ -147,4 +147,21 @@ typedef struct Amp { } AMPMETHOD1GET(get_powerstat, powerstat_t) + + PyObject * get_level(setting_t level) + { + value_t val; + + self->error_status = amp_get_level(self->amp, level, &val); + if (self->error_status != RIG_OK) + return Py_None; + + if (AMP_LEVEL_IS_FLOAT(level)) + return PyFloat_FromDouble(val.f); + else if (AMP_LEVEL_IS_STRING(level)) + return PyUnicode_FromString(val.s); + + return PyLong_FromLong(val.i); + } + }; diff --git a/bindings/python/test_amp.py b/bindings/python/test_amp.py index 22b0f3af7..f3d915071 100755 --- a/bindings/python/test_amp.py +++ b/bindings/python/test_amp.py @@ -92,6 +92,15 @@ class TestClass: assert amp.set_freq(0) is None assert amp.set_freq(123.45) is None assert amp.get_freq() == 123.45 + assert amp.get_level(Hamlib.AMP_LEVEL_NONE) is None + level = amp.get_level(Hamlib.AMP_LEVEL_SWR) + assert isinstance(level, float) + level = amp.get_level(Hamlib.AMP_LEVEL_PWR_REFLECTED) + assert isinstance(level, int) + level = amp.get_level(Hamlib.AMP_LEVEL_FAULT) + assert isinstance(level, str) + level = amp.get_level(123456) + assert level is None assert amp.set_powerstat(Hamlib.RIG_POWER_ON) is None assert amp.get_powerstat() == Hamlib.RIG_POWER_ON assert amp.close() is None