From 242ceb25d1ba6af1d033301ae20e5d564083bb59 Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 6 Nov 2023 19:31:46 +0100 Subject: [PATCH] devices: fix wrong gain to power mapping The dev type was set too early, but the actual dev is only being discovered during open, so update it. This broke the gain to power mapping by defaulting to a wrong device. Change-Id: I1dda6023ca6f15bc063c3dfbc704db2410ff7c98 --- Transceiver52M/device/bladerf/bladerf.cpp | 1 + Transceiver52M/device/common/bandmanager.h | 6 +++++- Transceiver52M/device/lms/LMSDevice.cpp | 1 + Transceiver52M/device/uhd/UHDDevice.cpp | 2 ++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Transceiver52M/device/bladerf/bladerf.cpp b/Transceiver52M/device/bladerf/bladerf.cpp index 3e830b17..2f3c86a5 100644 --- a/Transceiver52M/device/bladerf/bladerf.cpp +++ b/Transceiver52M/device/bladerf/bladerf.cpp @@ -279,6 +279,7 @@ int blade_device::open() dev_type = blade_dev_type::BLADE2; tx_window = TX_WINDOW_FIXED; + update_band_dev(dev_key(dev_type, tx_sps, rx_sps)); struct bladerf_devinfo info; bladerf_get_devinfo(dev, &info); diff --git a/Transceiver52M/device/common/bandmanager.h b/Transceiver52M/device/common/bandmanager.h index a198937e..d07f21d7 100644 --- a/Transceiver52M/device/common/bandmanager.h +++ b/Transceiver52M/device/common/bandmanager.h @@ -34,7 +34,7 @@ class band_manager { using powerkeyt = typename powermapt::key_type; using powermappedt = typename powermapt::mapped_type; using devkeyt = typename devmapt::key_type; - const devkeyt &m_dev_type; + devkeyt m_dev_type; const powermapt &m_power_map; const devmapt &m_dev_map; powerkeyt m_fallback; @@ -102,6 +102,10 @@ class band_manager { band_ass_curr_sess = false; } + void update_band_dev(devkeyt dev_type) { + m_dev_type = dev_type; + } + void get_dev_band_desc(powermappedt &desc) { if (m_band == 0) { diff --git a/Transceiver52M/device/lms/LMSDevice.cpp b/Transceiver52M/device/lms/LMSDevice.cpp index 451d2b9e..7c220d21 100644 --- a/Transceiver52M/device/lms/LMSDevice.cpp +++ b/Transceiver52M/device/lms/LMSDevice.cpp @@ -245,6 +245,7 @@ int LMSDevice::open() m_dev_type = parse_dev_type(m_lms_dev); dev_desc = dev_param_map.at(m_dev_type); + update_band_dev(m_dev_type); if ((cfg->clock_ref != REF_EXTERNAL) && (cfg->clock_ref != REF_INTERNAL)) { LOGC(DDEV, ERROR) << "Invalid reference type"; diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp index ec772aa5..85e9e38a 100644 --- a/Transceiver52M/device/uhd/UHDDevice.cpp +++ b/Transceiver52M/device/uhd/UHDDevice.cpp @@ -530,6 +530,8 @@ int uhd_device::open() if (!parse_dev_type()) return -1; + update_band_dev(dev_key(dev_type, tx_sps, rx_sps)); + if ((dev_type == E3XX) && !uhd_e3xx_version_chk()) { LOGC(DDEV, ALERT) << "E3XX requires UHD 003.009.000 or greater"; return -1;