diff --git a/qgcresources.qrc b/qgcresources.qrc
index 2a45d0053626ed3a5deda52f610c092334b97c39..9cd9d8e411b15641b380bd8cdb70d76e2fe29f08 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 0000000000000000000000000000000000000000..077fa3622117300b1b170858505ad06f81db5cc6
--- /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 c02adfcf666a5fc65963e22e19ee59190806bade..4aa4677a1076ddb994f20e5e9c25e7fea150d72b 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 e19dfe9e3ca55f44779a403e7b6a0e7351314603..19026dd5855b406815c342ef8c8110a943d5f204 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 cb0efc6d75d1b667b7a4403844eec8acfecaafe3..07319f5f3885a14e16cc35a07c98abbcbe65087d 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 ae875535c4b2a3b6985b71a959007297769a9905..3df2e38647b11df347505adb3d72691031e21639 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 {