aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/lib/mykonos/config/ad937x_config_t.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mpm/lib/mykonos/config/ad937x_config_t.cpp')
-rw-r--r--mpm/lib/mykonos/config/ad937x_config_t.cpp521
1 files changed, 427 insertions, 94 deletions
diff --git a/mpm/lib/mykonos/config/ad937x_config_t.cpp b/mpm/lib/mykonos/config/ad937x_config_t.cpp
index 9bebeafad..97651b0b4 100644
--- a/mpm/lib/mykonos/config/ad937x_config_t.cpp
+++ b/mpm/lib/mykonos/config/ad937x_config_t.cpp
@@ -7,87 +7,421 @@
#include "ad937x_config_t.hpp"
#include "ad937x_default_config.hpp"
-const int16_t ad937x_config_t::DEFAULT_TX_FIR[DEFAULT_TX_FIR_SIZE] =
- { -94, -26, 282, 177, -438, -368, 756, 732,-1170,-1337, 1758, 2479,-2648,-5088, 4064,16760,
- 16759, 4110,-4881,-2247, 2888, 1917,-1440,-1296, 745, 828, -358, -474, 164, 298, -16, -94 };
-
-const int16_t ad937x_config_t::DEFAULT_TX_FIR_15366[DEFAULT_TX_FIR_SIZE] =
- { 4, -16, -5, 75, -13, -229, 85, 547, -293,-1158, 738, 2290,-1640,-4805, 3687,17108,
- 17108, 3687,-4805,-1640, 2290, 738,-1158, -293, 547, 85, -229, -13, 75, -5, -16, 4 };
-
-const int16_t ad937x_config_t::DEFAULT_RX_FIR[DEFAULT_RX_FIR_SIZE] =
- { -20, 6, 66, 22, -128, -54, 240, 126, -402, -248, 634, 444, -956, -756, 1400, 1244,
- -2028,-2050, 2978, 3538,-4646,-7046, 9536,30880,30880, 9536,-7046,-4646, 3538, 2978,-2050,-2028,
- 1244, 1400, -756, -956, 444, 634, -248, -402, 126, 240, -54, -128, 22, 66, 6, -20 };
-
-const int16_t ad937x_config_t::DEFAULT_RX_FIR_15366[DEFAULT_RX_FIR_SIZE] =
- { -16, -22, 18, 74, 24, -132, -152, 132, 372, 38, -598, -474, 638, 1178, -206,-1952,
- -984, 2362, 3152,-1612,-6544,-2164,12806,26836,26836,12806,-2164,-6544,-1612, 3152, 2362, -984,
- -1952, -206, 1178, 638, -474, -598, 38, 372, 132, -152, -132, 24, 74, 18, -22, -16 };
-
-const int16_t ad937x_config_t::DEFAULT_OBSRX_FIR[DEFAULT_RX_FIR_SIZE] =
- { -14, -19, 44, 41, -89, -95, 175, 178, -303, -317, 499, 527, -779, -843, 1184, 1317,
- -1781,-2059, 2760, 3350,-4962,-7433, 9822,32154,32154, 9822,-7433,-4962, 3350, 2760,-2059,-1781,
- 1317, 1184, -843, -779, 527, 499, -317, -303, 178, 175, -95, -89, 41, 44, -19, -14 };
-
-const int16_t ad937x_config_t::DEFAULT_OBSRX_FIR_15366[DEFAULT_RX_FIR_SIZE] =
- { -2, 3, 12, -19, -28, 44, 74, -92, -169, 150, 353, -203, -671, 203, 1179, -66,
- -1952, -347, 3153, 1307,-5595,-4820,11323,29525,29525,11323,-4820,-5595, 1307, 3153, -347,-1952,
- -66, 1179, 203, -671, -203, 353, 150, -169, -92, 74, 44, -28, -19, 12, 3, -2 };
-
-const int16_t ad937x_config_t::DEFAULT_SNIFFER_FIR[DEFAULT_RX_FIR_SIZE] =
- { -1, -5, -14, -23, -16, 24, 92, 137, 80, -120, -378, -471, -174, 507, 1174, 1183,
- 98,-1771,-3216,-2641, 942, 7027,13533,17738,17738,13533, 7027, 942,-2641,-3216,-1771, 98,
- 1183, 1174, 507, -174, -471, -378, -120, 80, 137, 92, 24, -16, -23, -14, -5, -1 };
-
-const int16_t ad937x_config_t::DEFAULT_SNIFFER_FIR_15366[DEFAULT_RX_FIR_SIZE] =
- { 10, 31, 59, 71, 30, -92, -283, -456, -466, -175, 440, 1192, 1683, 1444, 198,-1871,
- -3988, -4942,-3512, 958, 8118,16519,23993,28395,28395,23993,16519, 8118, 958,-3512,-4942,-3988,
- -1871, 198, 1444, 1683, 1192, 440, -175, -466, -456, -283, -92, 30, 71, 59, 31, 10 };
-
-ad937x_config_t::ad937x_config_t(spiSettings_t* sps, const size_t deserializer_lane_xbar) :
- _rx(DEFAULT_RX_SETTINGS),
- _rxProfile(DEFAULT_RX_PROFILE),
- _framer(DEFAULT_FRAMER),
- _rxGainCtrl(DEFAULT_RX_GAIN),
- _rxPeakAgc(DEFAULT_RX_PEAK_AGC),
- _rxPowerAgc(DEFAULT_RX_POWER_AGC),
- _rxAgcCtrl(DEFAULT_RX_AGC_CTRL),
-
- _tx(DEFAULT_TX_SETTINGS),
- _txProfile(DEFAULT_TX_PROFILE),
- _deframer(DEFAULT_DEFRAMER),
+const int16_t ad937x_config_t::DEFAULT_TX_FIR[DEFAULT_TX_FIR_SIZE] = {-94,
+ -26,
+ 282,
+ 177,
+ -438,
+ -368,
+ 756,
+ 732,
+ -1170,
+ -1337,
+ 1758,
+ 2479,
+ -2648,
+ -5088,
+ 4064,
+ 16760,
+ 16759,
+ 4110,
+ -4881,
+ -2247,
+ 2888,
+ 1917,
+ -1440,
+ -1296,
+ 745,
+ 828,
+ -358,
+ -474,
+ 164,
+ 298,
+ -16,
+ -94};
+
+const int16_t ad937x_config_t::DEFAULT_TX_FIR_15366[DEFAULT_TX_FIR_SIZE] = {4,
+ -16,
+ -5,
+ 75,
+ -13,
+ -229,
+ 85,
+ 547,
+ -293,
+ -1158,
+ 738,
+ 2290,
+ -1640,
+ -4805,
+ 3687,
+ 17108,
+ 17108,
+ 3687,
+ -4805,
+ -1640,
+ 2290,
+ 738,
+ -1158,
+ -293,
+ 547,
+ 85,
+ -229,
+ -13,
+ 75,
+ -5,
+ -16,
+ 4};
+
+const int16_t ad937x_config_t::DEFAULT_RX_FIR[DEFAULT_RX_FIR_SIZE] = {-20,
+ 6,
+ 66,
+ 22,
+ -128,
+ -54,
+ 240,
+ 126,
+ -402,
+ -248,
+ 634,
+ 444,
+ -956,
+ -756,
+ 1400,
+ 1244,
+ -2028,
+ -2050,
+ 2978,
+ 3538,
+ -4646,
+ -7046,
+ 9536,
+ 30880,
+ 30880,
+ 9536,
+ -7046,
+ -4646,
+ 3538,
+ 2978,
+ -2050,
+ -2028,
+ 1244,
+ 1400,
+ -756,
+ -956,
+ 444,
+ 634,
+ -248,
+ -402,
+ 126,
+ 240,
+ -54,
+ -128,
+ 22,
+ 66,
+ 6,
+ -20};
+
+const int16_t ad937x_config_t::DEFAULT_RX_FIR_15366[DEFAULT_RX_FIR_SIZE] = {-16,
+ -22,
+ 18,
+ 74,
+ 24,
+ -132,
+ -152,
+ 132,
+ 372,
+ 38,
+ -598,
+ -474,
+ 638,
+ 1178,
+ -206,
+ -1952,
+ -984,
+ 2362,
+ 3152,
+ -1612,
+ -6544,
+ -2164,
+ 12806,
+ 26836,
+ 26836,
+ 12806,
+ -2164,
+ -6544,
+ -1612,
+ 3152,
+ 2362,
+ -984,
+ -1952,
+ -206,
+ 1178,
+ 638,
+ -474,
+ -598,
+ 38,
+ 372,
+ 132,
+ -152,
+ -132,
+ 24,
+ 74,
+ 18,
+ -22,
+ -16};
+
+const int16_t ad937x_config_t::DEFAULT_OBSRX_FIR[DEFAULT_RX_FIR_SIZE] = {-14,
+ -19,
+ 44,
+ 41,
+ -89,
+ -95,
+ 175,
+ 178,
+ -303,
+ -317,
+ 499,
+ 527,
+ -779,
+ -843,
+ 1184,
+ 1317,
+ -1781,
+ -2059,
+ 2760,
+ 3350,
+ -4962,
+ -7433,
+ 9822,
+ 32154,
+ 32154,
+ 9822,
+ -7433,
+ -4962,
+ 3350,
+ 2760,
+ -2059,
+ -1781,
+ 1317,
+ 1184,
+ -843,
+ -779,
+ 527,
+ 499,
+ -317,
+ -303,
+ 178,
+ 175,
+ -95,
+ -89,
+ 41,
+ 44,
+ -19,
+ -14};
+
+const int16_t ad937x_config_t::DEFAULT_OBSRX_FIR_15366[DEFAULT_RX_FIR_SIZE] = {-2,
+ 3,
+ 12,
+ -19,
+ -28,
+ 44,
+ 74,
+ -92,
+ -169,
+ 150,
+ 353,
+ -203,
+ -671,
+ 203,
+ 1179,
+ -66,
+ -1952,
+ -347,
+ 3153,
+ 1307,
+ -5595,
+ -4820,
+ 11323,
+ 29525,
+ 29525,
+ 11323,
+ -4820,
+ -5595,
+ 1307,
+ 3153,
+ -347,
+ -1952,
+ -66,
+ 1179,
+ 203,
+ -671,
+ -203,
+ 353,
+ 150,
+ -169,
+ -92,
+ 74,
+ 44,
+ -28,
+ -19,
+ 12,
+ 3,
+ -2};
+
+const int16_t ad937x_config_t::DEFAULT_SNIFFER_FIR[DEFAULT_RX_FIR_SIZE] = {-1,
+ -5,
+ -14,
+ -23,
+ -16,
+ 24,
+ 92,
+ 137,
+ 80,
+ -120,
+ -378,
+ -471,
+ -174,
+ 507,
+ 1174,
+ 1183,
+ 98,
+ -1771,
+ -3216,
+ -2641,
+ 942,
+ 7027,
+ 13533,
+ 17738,
+ 17738,
+ 13533,
+ 7027,
+ 942,
+ -2641,
+ -3216,
+ -1771,
+ 98,
+ 1183,
+ 1174,
+ 507,
+ -174,
+ -471,
+ -378,
+ -120,
+ 80,
+ 137,
+ 92,
+ 24,
+ -16,
+ -23,
+ -14,
+ -5,
+ -1};
+
+const int16_t ad937x_config_t::DEFAULT_SNIFFER_FIR_15366[DEFAULT_RX_FIR_SIZE] = {10,
+ 31,
+ 59,
+ 71,
+ 30,
+ -92,
+ -283,
+ -456,
+ -466,
+ -175,
+ 440,
+ 1192,
+ 1683,
+ 1444,
+ 198,
+ -1871,
+ -3988,
+ -4942,
+ -3512,
+ 958,
+ 8118,
+ 16519,
+ 23993,
+ 28395,
+ 28395,
+ 23993,
+ 16519,
+ 8118,
+ 958,
+ -3512,
+ -4942,
+ -3988,
+ -1871,
+ 198,
+ 1444,
+ 1683,
+ 1192,
+ 440,
+ -175,
+ -466,
+ -456,
+ -283,
+ -92,
+ 30,
+ 71,
+ 59,
+ 31,
+ 10};
+
+ad937x_config_t::ad937x_config_t(spiSettings_t* sps, const size_t deserializer_lane_xbar)
+ : _rx(DEFAULT_RX_SETTINGS)
+ , _rxProfile(DEFAULT_RX_PROFILE)
+ , _framer(DEFAULT_FRAMER)
+ , _rxGainCtrl(DEFAULT_RX_GAIN)
+ , _rxPeakAgc(DEFAULT_RX_PEAK_AGC)
+ , _rxPowerAgc(DEFAULT_RX_POWER_AGC)
+ , _rxAgcCtrl(DEFAULT_RX_AGC_CTRL)
+ ,
+
+ _tx(DEFAULT_TX_SETTINGS)
+ , _txProfile(DEFAULT_TX_PROFILE)
+ , _deframer(DEFAULT_DEFRAMER)
+ ,
// TODO: Remove if ADI ever fixes this
// The TX bring up requires a valid ORX profile
// https://github.com/EttusResearch/uhddev/blob/f0f8f58471c3fed94279c32f00e9f8da7db40efd/mpm/lib/mykonos/adi/mykonos.c#L16590
- _obsRx(DEFAULT_ORX_SETTINGS),
- _orxFramer(DEFAULT_ORX_FRAMER),
- _orxProfile(DEFAULT_ORX_PROFILE),
- _orxGainCtrl(DEFAULT_ORX_GAIN),
- _orxPeakAgc(DEFAULT_ORX_PEAK_AGC),
- _orxPowerAgc(DEFAULT_ORX_POWER_AGC),
- _orxAgcCtrl(DEFAULT_ORX_AGC_CTRL),
+ _obsRx(DEFAULT_ORX_SETTINGS)
+ , _orxFramer(DEFAULT_ORX_FRAMER)
+ , _orxProfile(DEFAULT_ORX_PROFILE)
+ , _orxGainCtrl(DEFAULT_ORX_GAIN)
+ , _orxPeakAgc(DEFAULT_ORX_PEAK_AGC)
+ , _orxPowerAgc(DEFAULT_ORX_POWER_AGC)
+ , _orxAgcCtrl(DEFAULT_ORX_AGC_CTRL)
+ ,
// TODO: Remove if ADI ever fixes this
// ORX bring up requires a valid sniffer gain control struct
// https://github.com/EttusResearch/uhddev/blob/f0f8f58471c3fed94279c32f00e9f8da7db40efd/mpm/lib/mykonos/adi/mykonos.c#L5752
- _snifferGainCtrl(DEFAULT_SNIFFER_GAIN),
+ _snifferGainCtrl(DEFAULT_SNIFFER_GAIN)
+ ,
- _armGpio(DEFAULT_ARM_GPIO),
- _gpio3v3(DEFAULT_GPIO_3V3),
- _gpio(DEFAULT_GPIO),
+ _armGpio(DEFAULT_ARM_GPIO)
+ , _gpio3v3(DEFAULT_GPIO_3V3)
+ , _gpio(DEFAULT_GPIO)
+ ,
- _auxIo(DEFAULT_AUX_IO),
- _clocks(DEFAULT_CLOCKS),
+ _auxIo(DEFAULT_AUX_IO)
+ , _clocks(DEFAULT_CLOCKS)
+ ,
- tx_fir_config(DEFAULT_TX_FIR_GAIN, std::vector<int16_t>(DEFAULT_TX_FIR, DEFAULT_TX_FIR + DEFAULT_TX_FIR_SIZE)),
- rx_fir_config(DEFAULT_RX_FIR_GAIN, std::vector<int16_t>(DEFAULT_RX_FIR, DEFAULT_RX_FIR + DEFAULT_RX_FIR_SIZE)),
- _orx_fir_config(DEFAULT_RX_FIR_GAIN, std::vector<int16_t>(DEFAULT_OBSRX_FIR, DEFAULT_OBSRX_FIR + DEFAULT_RX_FIR_SIZE)),
- _sniffer_rx_fir_config(DEFAULT_RX_FIR_GAIN, std::vector<int16_t>(DEFAULT_SNIFFER_FIR, DEFAULT_SNIFFER_FIR + DEFAULT_RX_FIR_SIZE))
+ tx_fir_config(DEFAULT_TX_FIR_GAIN,
+ std::vector<int16_t>(DEFAULT_TX_FIR, DEFAULT_TX_FIR + DEFAULT_TX_FIR_SIZE))
+ , rx_fir_config(DEFAULT_RX_FIR_GAIN,
+ std::vector<int16_t>(DEFAULT_RX_FIR, DEFAULT_RX_FIR + DEFAULT_RX_FIR_SIZE))
+ , _orx_fir_config(DEFAULT_RX_FIR_GAIN,
+ std::vector<int16_t>(
+ DEFAULT_OBSRX_FIR, DEFAULT_OBSRX_FIR + DEFAULT_RX_FIR_SIZE))
+ , _sniffer_rx_fir_config(DEFAULT_RX_FIR_GAIN,
+ std::vector<int16_t>(
+ DEFAULT_SNIFFER_FIR, DEFAULT_SNIFFER_FIR + DEFAULT_RX_FIR_SIZE))
{
- _device.spiSettings = sps;
+ _device.spiSettings = sps;
_deframer.deserializerLaneCrossbar = deserializer_lane_xbar;
_init_pointers();
@@ -95,52 +429,51 @@ ad937x_config_t::ad937x_config_t(spiSettings_t* sps, const size_t deserializer_l
device = &_device;
}
-// This function sets up all the pointers in all of our local members that represent the device struct
-// This function should only be called during construction.
+// This function sets up all the pointers in all of our local members that represent the
+// device struct This function should only be called during construction.
void ad937x_config_t::_init_pointers()
{
- _device.rx = &_rx;
- _device.tx = &_tx;
- _device.obsRx = &_obsRx;
- _device.auxIo = &_auxIo;
+ _device.rx = &_rx;
+ _device.tx = &_tx;
+ _device.obsRx = &_obsRx;
+ _device.auxIo = &_auxIo;
_device.clocks = &_clocks;
- _rx.rxProfile = &_rxProfile;
- _rx.framer = &_framer;
- _rx.rxGainCtrl = &_rxGainCtrl;
- _rx.rxAgcCtrl = &_rxAgcCtrl;
- _rxProfile.rxFir = rx_fir_config.fir;
+ _rx.rxProfile = &_rxProfile;
+ _rx.framer = &_framer;
+ _rx.rxGainCtrl = &_rxGainCtrl;
+ _rx.rxAgcCtrl = &_rxAgcCtrl;
+ _rxProfile.rxFir = rx_fir_config.fir;
_rxProfile.customAdcProfile = nullptr;
- _rxAgcCtrl.peakAgc = &_rxPeakAgc;
- _rxAgcCtrl.powerAgc = &_rxPowerAgc;
+ _rxAgcCtrl.peakAgc = &_rxPeakAgc;
+ _rxAgcCtrl.powerAgc = &_rxPowerAgc;
- _tx.txProfile = &_txProfile;
+ _tx.txProfile = &_txProfile;
_txProfile.txFir = tx_fir_config.fir;
- _tx.deframer = &_deframer;
+ _tx.deframer = &_deframer;
// AD9373
- _tx.dpdConfig = nullptr;
+ _tx.dpdConfig = nullptr;
_tx.clgcConfig = nullptr;
_tx.vswrConfig = nullptr;
// TODO: ideally we set none of this information and leave the profile as nullptr
// Check that the API supports this
- _obsRx.orxProfile = &_orxProfile;
- _obsRx.orxGainCtrl = &_orxGainCtrl;
- _obsRx.orxAgcCtrl = &_orxAgcCtrl;
- _orxProfile.rxFir = _orx_fir_config.fir;
+ _obsRx.orxProfile = &_orxProfile;
+ _obsRx.orxGainCtrl = &_orxGainCtrl;
+ _obsRx.orxAgcCtrl = &_orxAgcCtrl;
+ _orxProfile.rxFir = _orx_fir_config.fir;
_orxProfile.customAdcProfile = nullptr;
- _orxAgcCtrl.peakAgc = &_orxPeakAgc;
- _orxAgcCtrl.powerAgc = &_orxPowerAgc;
+ _orxAgcCtrl.peakAgc = &_orxPeakAgc;
+ _orxAgcCtrl.powerAgc = &_orxPowerAgc;
- _obsRx.snifferProfile = &_snifferProfile;
- _snifferProfile.rxFir = _sniffer_rx_fir_config.fir;
+ _obsRx.snifferProfile = &_snifferProfile;
+ _snifferProfile.rxFir = _sniffer_rx_fir_config.fir;
_obsRx.snifferGainCtrl = &_snifferGainCtrl;
// sniffer has no AGC ctrl, so leave as null
_obsRx.framer = &_orxFramer;
_auxIo.gpio3v3 = &_gpio3v3;
- _auxIo.gpio = &_gpio;
+ _auxIo.gpio = &_gpio;
_auxIo.armGpio = &_armGpio;
}
-