diff options
Diffstat (limited to 'mpm/lib/mykonos/config/ad937x_config_t.hpp')
| -rw-r--r-- | mpm/lib/mykonos/config/ad937x_config_t.hpp | 64 | 
1 files changed, 64 insertions, 0 deletions
| diff --git a/mpm/lib/mykonos/config/ad937x_config_t.hpp b/mpm/lib/mykonos/config/ad937x_config_t.hpp new file mode 100644 index 000000000..5375e0867 --- /dev/null +++ b/mpm/lib/mykonos/config/ad937x_config_t.hpp @@ -0,0 +1,64 @@ +#pragma once + +#include "../adi/t_mykonos.h" +#include "ad937x_fir.h" +#include <boost/noncopyable.hpp> + +// This class exists so that the entire mykonos config can be allocated and managed together +class ad937x_device  : public boost::noncopyable +{ +    // The top level device struct contains all other structs, so everything is technically "public" +    // a user could technically modify the pointers in the structs, but we have no way of preventing that +public: +    ad937x_device(); +    mykonosDevice_t * const device = &_device; + +private: +    mykonosDevice_t _device; + +    // in general, this organization stinks +    // TODO: group and make more sense of these fields and pointers +    spiSettings_t _spiSettings; +    mykonosRxSettings_t _rx; +    mykonosTxSettings_t _tx; +    mykonosObsRxSettings_t _obsRx; +    mykonosAuxIo_t _auxIo; +    mykonosDigClocks_t _clocks; + +    ad937x_fir _rx_fir_config; +    mykonosRxProfile_t _rxProfile; +    std::vector<uint16_t> _customRxAdcProfile; +    mykonosJesd204bFramerConfig_t _framer; +    mykonosRxGainControl_t _rxGainCtrl; +    mykonosAgcCfg_t _rxAgcCtrl; +    mykonosPeakDetAgcCfg_t _rxPeakAgc; +    mykonosPowerMeasAgcCfg_t _rxPowerAgc; + +    ad937x_fir _tx_fir_config; +    mykonosTxProfile_t _txProfile; +    mykonosJesd204bDeframerConfig_t _deframer; +    mykonosDpdConfig_t _dpdConfig; +    mykonosClgcConfig_t _clgcConfig; +    mykonosVswrConfig_t _vswrConfig; + +    ad937x_fir _orx_fir_config; +    mykonosRxProfile_t _orxProfile; +    mykonosORxGainControl_t _orxGainCtrl; +    mykonosAgcCfg_t _orxAgcCtrl; +    mykonosPeakDetAgcCfg_t _orxPeakAgc; +    mykonosPowerMeasAgcCfg_t _orxPowerAgc; + +    ad937x_fir _sniffer_rx_fir_config; +    mykonosRxProfile_t _snifferProfile; +    mykonosSnifferGainControl_t _snifferGainCtrl; +    mykonosJesd204bFramerConfig_t _orxFramer; +    std::vector<uint16_t> _customORxAdcProfile; + +    mykonosGpio3v3_t _gpio3v3; +    mykonosGpioLowVoltage_t _gpio; +    mykonosArmGpioConfig_t _armGpio; + +    void _init_pointers(); +    void _assign_firs(); +    void _assign_default_configuration(); +}; | 
