aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric <ewild@sysmocom.de>2023-11-06 19:31:46 +0100
committerfixeria <vyanitskiy@sysmocom.de>2023-11-09 09:51:07 +0000
commit242ceb25d1ba6af1d033301ae20e5d564083bb59 (patch)
treef9de6174f00089a54f42de3e5eb02965a8ad7397
parentb52650f157dadda6fdd98803d44f4c0de24ea428 (diff)
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
-rw-r--r--Transceiver52M/device/bladerf/bladerf.cpp1
-rw-r--r--Transceiver52M/device/common/bandmanager.h6
-rw-r--r--Transceiver52M/device/lms/LMSDevice.cpp1
-rw-r--r--Transceiver52M/device/uhd/UHDDevice.cpp2
4 files changed, 9 insertions, 1 deletions
diff --git a/Transceiver52M/device/bladerf/bladerf.cpp b/Transceiver52M/device/bladerf/bladerf.cpp
index 3e830b1..2f3c86a 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 a198937..d07f21d 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 451d2b9..7c220d2 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 ec772aa..85e9e38 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;