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
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 @@
 
 	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 @@
 	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 @@
 		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 @@
 
 	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 @@
 	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;