diff --git a/rigs/kenwood/kenwood.c b/rigs/kenwood/kenwood.c index 3cc70f6c8..258c0d030 100644 --- a/rigs/kenwood/kenwood.c +++ b/rigs/kenwood/kenwood.c @@ -3311,9 +3311,17 @@ int kenwood_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) case RIG_LEVEL_RFPOWER: { + static mode_t mode = RIG_MODE_NONE; int power_now, power_min, power_max; - // Power min/max can vary so we query to find them out every time - retval = kenwood_get_power_minmax(rig, &power_now, &power_min, &power_max, 0); + pbwidth_t twidth; + int err = rig_get_mode(rig, vfo, &priv->curr_mode, &twidth); + // https://github.com/Hamlib/Hamlib/issues/1595 + if (!err && priv->curr_mode != mode) // only need to check when mode changes + { + mode = priv->curr_mode; + // Power min/max can vary so we query to find them out every time + retval = kenwood_get_power_minmax(rig, &power_now, &power_min, &power_max, 0); + } if (retval != RIG_OK) { RETURNFUNC(retval); } diff --git a/rigs/kenwood/kenwood.h b/rigs/kenwood/kenwood.h index 93b8cde1c..3508f91bd 100644 --- a/rigs/kenwood/kenwood.h +++ b/rigs/kenwood/kenwood.h @@ -28,7 +28,7 @@ #include "token.h" #include "idx_builtin.h" -#define BACKEND_VER "20240807" +#define BACKEND_VER "20240815" #define EOM_KEN ';' #define EOM_TH '\r'