From df0a73d4a8338d3d87f9292d32bf79a9c6495893 Mon Sep 17 00:00:00 2001 From: dogmaphobic Date: Fri, 27 Nov 2015 19:05:12 -0500 Subject: [PATCH] Telemetry RSSI --- qgcresources.qrc | 1 + src/ui/toolbar/Images/TelemRSSI.svg | 18 +++++ src/ui/toolbar/MainToolBar.qml | 89 ++++++++++++++++++++++++ src/ui/toolbar/MainToolBarController.cc | 22 +++++- src/ui/toolbar/MainToolBarController.h | 22 ++++++ src/ui/toolbar/MainToolBarIndicators.qml | 33 +++++++++ 6 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 src/ui/toolbar/Images/TelemRSSI.svg diff --git a/qgcresources.qrc b/qgcresources.qrc index 2a45d0053..9cd9d8e41 100644 --- a/qgcresources.qrc +++ b/qgcresources.qrc @@ -93,6 +93,7 @@ src/ui/toolbar/Images/Signal60.svg src/ui/toolbar/Images/Signal80.svg src/ui/toolbar/Images/Signal100.svg + src/ui/toolbar/Images/TelemRSSI.svg src/ui/toolbar/Images/Yield.svg src/MissionManager/CogWheel.svg diff --git a/src/ui/toolbar/Images/TelemRSSI.svg b/src/ui/toolbar/Images/TelemRSSI.svg new file mode 100644 index 000000000..077fa3622 --- /dev/null +++ b/src/ui/toolbar/Images/TelemRSSI.svg @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/src/ui/toolbar/MainToolBar.qml b/src/ui/toolbar/MainToolBar.qml index c02adfcf6..4aa4677a1 100644 --- a/src/ui/toolbar/MainToolBar.qml +++ b/src/ui/toolbar/MainToolBar.qml @@ -171,6 +171,16 @@ Rectangle { return colorGrey } + function getRSSIColor(value) { + if(value >= 0) + return colorGrey; + if(value > -60) + return colorGreen; + if(value > -90) + return colorOrange; + return colorRed; + } + Component.onCompleted: { //-- TODO: Get this from the actual state flyButton.checked = true @@ -288,6 +298,85 @@ Rectangle { } } + //--------------------------------------------- + // Telemetry RSSI Info + Component { + id: telemRSSIInfo + Rectangle { + color: Qt.rgba(0,0,0,0.75) + width: telemCol.width + ScreenTools.defaultFontPixelWidth * 3 + height: telemCol.height + ScreenTools.defaultFontPixelHeight * 2 + radius: ScreenTools.defaultFontPixelHeight * 0.5 + Column { + id: telemCol + spacing: ScreenTools.defaultFontPixelHeight * 0.5 + width: Math.max(telemGrid.width, telemLabel.width) + anchors.margins: ScreenTools.defaultFontPixelHeight + anchors.centerIn: parent + QGCLabel { + id: telemLabel + text: "Telemetry RSSI Status" + font.weight:Font.DemiBold + anchors.horizontalCenter: parent.horizontalCenter + } + GridLayout { + id: telemGrid + anchors.margins: ScreenTools.defaultFontPixelHeight + columnSpacing: ScreenTools.defaultFontPixelWidth + anchors.horizontalCenter: parent.horizontalCenter + columns: 2 + QGCLabel { + text: "Local RSSI:" + } + QGCLabel { + text: _controller.telemetryLRSSI + " dBm" + } + QGCLabel { + text: "Remote RSSI:" + } + QGCLabel { + text: _controller.telemetryRRSSI + " dBm" + } + QGCLabel { + text: "RX Errors:" + } + QGCLabel { + text: _controller.telemetryRXErrors + } + QGCLabel { + text: "Errors Fixed:" + } + QGCLabel { + text: _controller.telemetryFixed + } + QGCLabel { + text: "TX Buffer:" + } + QGCLabel { + text: _controller.telemetryTXBuffer + } + QGCLabel { + text: "Local Noise:" + } + QGCLabel { + text: _controller.telemetryLNoise + } + QGCLabel { + text: "Remote Noise:" + } + QGCLabel { + text: _controller.telemetryRNoise + } + } + } + Component.onCompleted: { + var pos = mapFromItem(toolBar, centerX - (width / 2), toolBar.height) + x = pos.x + y = pos.y + ScreenTools.defaultFontPixelHeight + } + } + } + //--------------------------------------------- // Toolbar Row Row { diff --git a/src/ui/toolbar/MainToolBarController.cc b/src/ui/toolbar/MainToolBarController.cc index e19dfe9e3..19026dd58 100644 --- a/src/ui/toolbar/MainToolBarController.cc +++ b/src/ui/toolbar/MainToolBarController.cc @@ -96,7 +96,7 @@ void MainToolBarController::_activeVehicleChanged(Vehicle* vehicle) } } -void MainToolBarController::_telemetryChanged(LinkInterface*, unsigned, unsigned, int rssi, int remrssi, unsigned, unsigned, unsigned) +void MainToolBarController::_telemetryChanged(LinkInterface*, unsigned rxerrors, unsigned fixed, int rssi, int remrssi, unsigned txbuf, unsigned noise, unsigned remnoise) { if(_telemetryLRSSI != rssi) { _telemetryLRSSI = rssi; @@ -106,6 +106,26 @@ void MainToolBarController::_telemetryChanged(LinkInterface*, unsigned, unsigned _telemetryRRSSI = remrssi; emit telemetryRRSSIChanged(_telemetryRRSSI); } + if(_telemetryRXErrors != rxerrors) { + _telemetryRXErrors = rxerrors; + emit telemetryRXErrorsChanged(_telemetryRXErrors); + } + if(_telemetryFixed != fixed) { + _telemetryFixed = fixed; + emit telemetryFixedChanged(_telemetryFixed); + } + if(_telemetryTXBuffer != txbuf) { + _telemetryTXBuffer = txbuf; + emit telemetryTXBufferChanged(_telemetryTXBuffer); + } + if(_telemetryLNoise != noise) { + _telemetryLNoise = noise; + emit telemetryLNoiseChanged(_telemetryLNoise); + } + if(_telemetryRNoise != remnoise) { + _telemetryRNoise = remnoise; + emit telemetryRNoiseChanged(_telemetryRNoise); + } } void MainToolBarController::_setProgressBarValue(float value) diff --git a/src/ui/toolbar/MainToolBarController.h b/src/ui/toolbar/MainToolBarController.h index cb0efc6d7..07319f5f3 100644 --- a/src/ui/toolbar/MainToolBarController.h +++ b/src/ui/toolbar/MainToolBarController.h @@ -61,10 +61,21 @@ public: Q_PROPERTY(float progressBarValue MEMBER _progressBarValue NOTIFY progressBarValueChanged) Q_PROPERTY(int telemetryRRSSI READ telemetryRRSSI NOTIFY telemetryRRSSIChanged) Q_PROPERTY(int telemetryLRSSI READ telemetryLRSSI NOTIFY telemetryLRSSIChanged) + Q_PROPERTY(unsigned int telemetryRXErrors READ telemetryRXErrors NOTIFY telemetryRXErrorsChanged) + Q_PROPERTY(unsigned int telemetryFixed READ telemetryFixed NOTIFY telemetryFixedChanged) + Q_PROPERTY(unsigned int telemetryTXBuffer READ telemetryTXBuffer NOTIFY telemetryTXBufferChanged) + Q_PROPERTY(unsigned int telemetryLNoise READ telemetryLNoise NOTIFY telemetryLNoiseChanged) + Q_PROPERTY(unsigned int telemetryRNoise READ telemetryRNoise NOTIFY telemetryRNoiseChanged) void viewStateChanged (const QString& key, bool value); + int telemetryRRSSI () { return _telemetryRRSSI; } int telemetryLRSSI () { return _telemetryLRSSI; } + unsigned int telemetryRXErrors () { return _telemetryRXErrors; } + unsigned int telemetryFixed () { return _telemetryFixed; } + unsigned int telemetryTXBuffer () { return _telemetryTXBuffer; } + unsigned int telemetryLNoise () { return _telemetryLNoise; } + unsigned int telemetryRNoise () { return _telemetryRNoise; } void showToolBarMessage(const QString& message); @@ -73,6 +84,11 @@ signals: void telemetryRRSSIChanged (int value); void telemetryLRSSIChanged (int value); void heightChanged (double height); + void telemetryRXErrorsChanged (unsigned int value); + void telemetryFixedChanged (unsigned int value); + void telemetryTXBufferChanged (unsigned int value); + void telemetryLNoiseChanged (unsigned int value); + void telemetryRNoiseChanged (unsigned int value); /// Shows a non-modal message below the toolbar void showMessage(const QString& message); @@ -90,6 +106,12 @@ private: double _remoteRSSIstore; int _telemetryRRSSI; int _telemetryLRSSI; + uint32_t _telemetryRXErrors; + uint32_t _telemetryFixed; + uint32_t _telemetryTXBuffer; + uint32_t _telemetryLNoise; + uint32_t _telemetryRNoise; + double _toolbarHeight; bool _toolbarMessageVisible; diff --git a/src/ui/toolbar/MainToolBarIndicators.qml b/src/ui/toolbar/MainToolBarIndicators.qml index ae875535c..3df2e3864 100644 --- a/src/ui/toolbar/MainToolBarIndicators.qml +++ b/src/ui/toolbar/MainToolBarIndicators.qml @@ -227,6 +227,39 @@ Row { } } + //------------------------------------------------------------------------- + //-- Telemetry RSSI + Item { + id: telemRssi + width: telemIcon.width + height: mainWindow.tbCellHeight + visible: _controller.telemetryLRSSI < 0 + Image { + id: telemIcon + source: "/qmlimages/TelemRSSI.svg" + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + height: parent.height * 0.5 + width: height * 1.5 + visible: false + anchors.verticalCenter: parent.verticalCenter + } + ColorOverlay { + id: telemOverlay + anchors.fill: telemIcon + source: telemIcon + color: getRSSIColor(_controller.telemetryLRSSI) + } + MouseArea { + anchors.fill: parent + onClicked: { + var centerX = mapToItem(toolBar, x, y).x + (width / 2) + mainWindow.showPopUp(telemRSSIInfo, centerX) + } + } + } + //------------------------------------------------------------------------- //-- Battery Indicator Item { -- 2.22.0