From cfc19fc42b44b436fc4fcf2fe90ea27a790aa0b0 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 | 31 +++++++++++++++++++++++++++++++ bindings/python/test_amp.py | 9 +++++++++ 2 files changed, 40 insertions(+) diff --git a/bindings/amplifier.swg b/bindings/amplifier.swg index 0693fb980..bc49490fb 100644 --- a/bindings/amplifier.swg +++ b/bindings/amplifier.swg @@ -135,6 +135,37 @@ typedef struct Amp { return s; } + 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; + + switch (level) + { + case AMP_LEVEL_SWR: + case AMP_LEVEL_PF: + return PyFloat_FromDouble(val.f); + + case AMP_LEVEL_NH: + case AMP_LEVEL_PWR_INPUT: + case AMP_LEVEL_PWR_FWD: + case AMP_LEVEL_PWR_REFLECTED: + case AMP_LEVEL_PWR_PEAK: + return PyLong_FromLong(val.i); + + case AMP_LEVEL_FAULT: + return PyUnicode_FromString(val.s); + + default: + self->error_status = -RIG_EINVAL; + } + + return Py_None; + } + AMPMETHOD1GET(get_powerstat, powerstat_t) }; diff --git a/bindings/python/test_amp.py b/bindings/python/test_amp.py index 0e08bc698..1de2870bf 100755 --- a/bindings/python/test_amp.py +++ b/bindings/python/test_amp.py @@ -48,6 +48,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