From 4e373478e7c232878999ccbfd7382fd9d105e513 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 27 May 2022 14:02:52 +0200 Subject: [PATCH] DOA2: Compass widget updates --- plugins/channelmimo/doa2/doa2compass.cpp | 187 +++++++++++------------ plugins/channelmimo/doa2/doa2compass.h | 95 +++++++----- plugins/channelmimo/doa2/doa2gui.cpp | 5 + 3 files changed, 150 insertions(+), 137 deletions(-) diff --git a/plugins/channelmimo/doa2/doa2compass.cpp b/plugins/channelmimo/doa2/doa2compass.cpp index 0b2fcfb8b..c210d010e 100644 --- a/plugins/channelmimo/doa2/doa2compass.cpp +++ b/plugins/channelmimo/doa2/doa2compass.cpp @@ -30,6 +30,7 @@ DOA2Compass::DOA2Compass(QWidget *parent) m_sizeMax = 600; m_offset = 2; m_size = m_sizeMin - 2*m_offset; + m_drawLegend = false; setMinimumSize(m_sizeMin, m_sizeMin); setMaximumSize(m_sizeMax, m_sizeMax); @@ -37,17 +38,15 @@ DOA2Compass::DOA2Compass(QWidget *parent) setFocusPolicy(Qt::NoFocus); - m_yaw = 0.0; - m_alt = 0.0; - m_h = 0.0; + m_azPos = 0.0; + m_azNeg = 0.0; + m_azAnt = 0.0; } DOA2Compass::~DOA2Compass() { - } - void DOA2Compass::canvasReplot_slot(void) { update(); @@ -56,13 +55,14 @@ void DOA2Compass::canvasReplot_slot(void) void DOA2Compass::resizeEvent(QResizeEvent *event) { m_size = qMin(width(),height()) - 2*m_offset; + QWidget::resizeEvent(event); } void DOA2Compass::paintEvent(QPaintEvent *) { QPainter painter(this); - QBrush bgGround(QColor(48,172,220)); + QBrush bgGround(palette().button().color()); QPen whitePen(Qt::white); QPen blackPen(Qt::black); @@ -77,15 +77,12 @@ void DOA2Compass::paintEvent(QPaintEvent *) greenPen.setWidth(2); painter.setRenderHint(QPainter::Antialiasing); - painter.translate(width() / 2, height() / 2); - // draw background { - painter.setPen(blackPen); + painter.setPen(whitePen); painter.setBrush(bgGround); - painter.drawEllipse(-m_size/2, -m_size/2, m_size, m_size); } @@ -100,60 +97,47 @@ void DOA2Compass::paintEvent(QPaintEvent *) QString s; blackPen.setWidth(1); - painter.setPen(blackPen); + painter.setPen(whitePen); + painter.setFont(font()); for(int i=0; ikey()) { - case Qt::Key_Left: - m_yaw -= 1.0; - break; - case Qt::Key_Right: - m_yaw += 1.0; - break; - case Qt::Key_Down: - m_alt -= 1.0; - break; - case Qt::Key_Up: - m_alt += 1.0; - break; - case Qt::Key_W: - m_h += 1.0; - break; - case Qt::Key_S: - m_h -= 1.0; - break; - - default: - QWidget::keyPressEvent(event); - break; - } - - update(); -} diff --git a/plugins/channelmimo/doa2/doa2compass.h b/plugins/channelmimo/doa2/doa2compass.h index 2ad71f6d3..68279adee 100644 --- a/plugins/channelmimo/doa2/doa2compass.h +++ b/plugins/channelmimo/doa2/doa2compass.h @@ -31,70 +31,93 @@ public: /// /// \brief Set all data (yaw, alt, height) /// - /// \param y - yaw ( in degree) - /// \param a - altitude ( in m) - /// \param h - height from ground (in m) + /// \param azPos - forward (positive angles side relative to antennas direction) azimuth (in degrees) + /// \param azNeg - reverse (negatve angles side relative to antennas direction) azimuth (in degrees) + /// \param azAnt - antennas azimuth from 1 (connected to stream 0) to 2 (connected to stream 1) /// - void setData(double y, double a, double h) { - m_yaw = y; - m_alt = a; - m_h = h; + void setData(double azPos, double azNeg, double azAnt) { + m_azPos = azPos; + m_azNeg = azNeg; + m_azAnt = azAnt; - if( m_yaw < 0 ) m_yaw = 360 + m_yaw; - if( m_yaw > 360 ) m_yaw = m_yaw - 360; + if( m_azPos < 0 ) m_azPos = 360 + m_azPos; + if( m_azPos > 360 ) m_azPos = m_azPos - 360; + + if( m_azNeg < 0 ) m_azNeg = 360 + m_azNeg; + if( m_azNeg > 360 ) m_azNeg = m_azNeg - 360; + + if( azAnt < 0 ) azAnt = 360 + azAnt; + if( azAnt > 360 ) azAnt = azAnt - 360; emit canvasReplot(); } /// - /// \brief Set yaw angle (in degree) - /// \param val - yaw angle (in degree) + /// \brief Set forward azimoth (in degree) + /// \param val - forward azimoth (in degree) /// - void setYaw(double val) { - m_yaw = val; - if( m_yaw < 0 ) m_yaw = 360 + m_yaw; - if( m_yaw > 360 ) m_yaw = m_yaw - 360; + void setAzPos(double val) + { + m_azPos = val; + if( m_azPos < 0 ) m_azPos = 360 + m_azPos; + if( m_azPos > 360 ) m_azPos = m_azPos - 360; emit canvasReplot(); } /// - /// \brief Set altitude value - /// \param val - altitude (in m) + /// \brief Set reverse azimoth (in degree) + /// \param val - reverse azimoth (in degree) /// - void setAlt(double val) { - m_alt = val; + void setAzNeg(double val) + { + m_azNeg = val; + if( m_azNeg < 0 ) m_azNeg = 360 + m_azNeg; + if( m_azNeg > 360 ) m_azNeg = m_azNeg - 360; emit canvasReplot(); } /// - /// \brief Set height from ground - /// \param val - height (in m) + /// \brief Set antennas azimoth (in degree) + /// \param val - antennas azimoth (in degree) /// - void setH(double val) { - m_h = val; + void setAzAnt(double val) + { + m_azAnt = val; + if( m_azAnt < 0 ) m_azAnt = 360 + m_azAnt; + if( m_azAnt > 360 ) m_azAnt = m_azAnt - 360; emit canvasReplot(); } /// - /// \brief Get yaw angle - /// \return yaw angle (in degree) + /// \brief Draw legend in the center of the compass + /// \param drawLegend - true to draw legend else false /// - double getYaw() {return m_yaw;} + void drawLegend(bool drawLegend) + { + m_drawLegend = drawLegend; + emit canvasReplot(); + } /// - /// \brief Get altitude value - /// \return altitude (in m) + /// \brief Get forward azimuth + /// \return forward azimuth (in degree) /// - double getAlt() {return m_alt;} + double getAzPos() const {return m_azPos; } /// - /// \brief Get height from ground - /// \return height from ground (in m) + /// \brief Get reverse azimuth + /// \return reverse azimuth (in degree) /// - double getH() {return m_h;} + double getAzNeg() const {return m_azNeg; } + + /// + /// \brief Get antennas azimuth + /// \return antennas azimuth (in degree) + /// + double getAzAnt() const {return m_azAnt; } signals: void canvasReplot(void); @@ -105,15 +128,15 @@ protected slots: protected: void paintEvent(QPaintEvent *event); void resizeEvent(QResizeEvent *event); - void keyPressEvent(QKeyEvent *event); protected: int m_sizeMin, m_sizeMax; ///< widget min/max size (in pixel) int m_size, m_offset; ///< widget size and offset size + bool m_drawLegend; ///< draw legend in the center - double m_yaw; ///< yaw angle (in degree) - double m_alt; ///< altitude (in m) - double m_h; ///< height from ground (in m) + double m_azPos; ///< forward (+) azimuth (in degree) + double m_azNeg; ///< reverse (-) azimuth (in degree) + double m_azAnt; ///< antennas azimuth from 1 (connected to stream 0) to 2 (connected to stream 1) }; #endif // INCLUDE_DOA2COMPASS_H diff --git a/plugins/channelmimo/doa2/doa2gui.cpp b/plugins/channelmimo/doa2/doa2gui.cpp index 27ea8b4a0..ad51a4c32 100644 --- a/plugins/channelmimo/doa2/doa2gui.cpp +++ b/plugins/channelmimo/doa2/doa2gui.cpp @@ -151,6 +151,11 @@ DOA2GUI::DOA2GUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, MIMOChannel *ch makeUIConnections(); displayRateAndShift(); applySettings(true); + + // Test + ui->compass->setAzNeg(85); + ui->compass->setAzPos(315); + ui->compass->setAzAnt(20); } DOA2GUI::~DOA2GUI()