Commit bdfacbd2 authored by dogmaphobic's avatar dogmaphobic

General Clean Up

parent 0064bb76
...@@ -34,7 +34,7 @@ FactPanel { ...@@ -34,7 +34,7 @@ FactPanel {
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "WiFi Channel:" labelText: "WiFi Channel:"
valueText: wifiChannel.valueString valueText: wifiChannel ? wifiChannel.valueString : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "WiFi SSID:" labelText: "WiFi SSID:"
...@@ -46,7 +46,7 @@ FactPanel { ...@@ -46,7 +46,7 @@ FactPanel {
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "UART Baud Rate:" labelText: "UART Baud Rate:"
valueText: uartBaud.valueString valueText: uartBaud ? uartBaud.valueString : ""
} }
} }
} }
...@@ -18,7 +18,7 @@ FactPanel { ...@@ -18,7 +18,7 @@ FactPanel {
property Fact sysIdFact: controller.getParameterFact(-1, "MAV_SYS_ID") property Fact sysIdFact: controller.getParameterFact(-1, "MAV_SYS_ID")
property Fact sysAutoStartFact: controller.getParameterFact(-1, "SYS_AUTOSTART") property Fact sysAutoStartFact: controller.getParameterFact(-1, "SYS_AUTOSTART")
property bool autoStartSet: sysAutoStartFact.value != 0 property bool autoStartSet: sysAutoStartFact ? (sysAutoStartFact.value !== 0) : false
Column { Column {
anchors.fill: parent anchors.fill: parent
...@@ -26,7 +26,7 @@ FactPanel { ...@@ -26,7 +26,7 @@ FactPanel {
VehicleSummaryRow { VehicleSummaryRow {
labelText: "System ID:" labelText: "System ID:"
valueText: sysIdFact.valueString valueText: sysIdFact ? sysIdFact.valueString : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
......
...@@ -25,22 +25,22 @@ FactPanel { ...@@ -25,22 +25,22 @@ FactPanel {
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Mode switch:" labelText: "Mode switch:"
valueText: modeSwFact.value == 0 ? "Setup required" : modeSwFact.valueString valueText: modeSwFact ? (modeSwFact.value === 0 ? "Setup required" : modeSwFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Position Ctl switch:" labelText: "Position Ctl switch:"
valueText: posCtlSwFact.value == 0 ? "Disabled" : posCtlSwFact.valueString valueText: posCtlSwFact ? (posCtlSwFact.value === 0 ? "Disabled" : posCtlSwFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Loiter switch:" labelText: "Loiter switch:"
valueText: loiterSwFact.value == 0 ? "Disabled" : loiterSwFact.valueString valueText: loiterSwFact ? (loiterSwFact.value === 0 ? "Disabled" : loiterSwFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Return switch:" labelText: "Return switch:"
valueText: returnSwFact.value == 0 ? "Disabled" : returnSwFact.valueString valueText: returnSwFact ? (returnSwFact.value === 0 ? "Disabled" : returnSwFact.valueString) : ""
} }
} }
} }
...@@ -28,37 +28,37 @@ FactPanel { ...@@ -28,37 +28,37 @@ FactPanel {
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Roll:" labelText: "Roll:"
valueText: mapRollFact.value == 0 ? "Setup required" : mapRollFact.valueString valueText: mapRollFact ? (mapRollFact.value === 0 ? "Setup required" : mapRollFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Pitch:" labelText: "Pitch:"
valueText: mapPitchFact.value == 0 ? "Setup required" : mapPitchFact.valueString valueText: mapPitchFact ? (mapPitchFact.value === 0 ? "Setup required" : mapPitchFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Yaw:" labelText: "Yaw:"
valueText: mapYawFact.value == 0 ? "Setup required" : mapYawFact.valueString valueText: mapYawFact ? (mapYawFact.value === 0 ? "Setup required" : mapYawFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Throttle:" labelText: "Throttle:"
valueText: mapThrottleFact.value == 0 ? "Setup required" : mapThrottleFact.valueString valueText: mapThrottleFact ? (mapThrottleFact.value === 0 ? "Setup required" : mapThrottleFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Flaps:" labelText: "Flaps:"
valueText: mapFlapsFact.value == 0 ? "Disabled" : mapFlapsFact.valueString valueText: mapFlapsFact ? (mapFlapsFact.value === 0 ? "Disabled" : mapFlapsFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Aux1:" labelText: "Aux1:"
valueText: mapAux1Fact.value == 0 ? "Disabled" : mapAux1Fact.valueString valueText: mapAux1Fact ? (mapAux1Fact.value === 0 ? "Disabled" : mapAux1Fact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Aux2:" labelText: "Aux2:"
valueText: mapAux2Fact.value == 0 ? "Disabled" : mapAux2Fact.valueString valueText: mapAux2Fact ? (mapAux2Fact.value === 0 ? "Disabled" : mapAux2Fact.valueString) : ""
} }
} }
} }
...@@ -51,17 +51,17 @@ FactPanel { ...@@ -51,17 +51,17 @@ FactPanel {
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Battery Full:" labelText: "Battery Full:"
valueText: batVChargedFact.valueString valueText: batVChargedFact ? batVChargedFact.valueString : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Battery Empty:" labelText: "Battery Empty:"
valueText: batVEmptyFact.valueString valueText: batVEmptyFact ? batVEmptyFact.valueString : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Number of Cells:" labelText: "Number of Cells:"
valueText: batCellsFact.valueString valueText: batCellsFact ? batCellsFact.valueString : ""
} }
} }
} }
...@@ -26,27 +26,27 @@ FactPanel { ...@@ -26,27 +26,27 @@ FactPanel {
VehicleSummaryRow { VehicleSummaryRow {
labelText: "RTL min alt:" labelText: "RTL min alt:"
valueText: returnAltFact.valueString valueText: returnAltFact ? returnAltFact.valueString : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "RTL home alt:" labelText: "RTL home alt:"
valueText: descendAltFact.valueString valueText: descendAltFact ? descendAltFact.valueString : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "RTL loiter delay:" labelText: "RTL loiter delay:"
valueText: landDelayFact.value < 0 ? "Disabled" : landDelayFact.valueString valueText: landDelayFact ? (landDelayFact.value < 0 ? "Disabled" : landDelayFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Telemetry loss RTL:" labelText: "Telemetry loss RTL:"
valueText: commDLLossFact.value != -1 ? "Disabled" : commDLLossFact.valueString valueText: commDLLossFact ? (commDLLossFact.value != -1 ? "Disabled" : commDLLossFact.valueString) : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "RC loss RTL (seconds):" labelText: "RC loss RTL (seconds):"
valueText: commRCLossFact.valueString valueText: commRCLossFact ? commRCLossFact.valueString : ""
} }
} }
} }
...@@ -29,17 +29,17 @@ FactPanel { ...@@ -29,17 +29,17 @@ FactPanel {
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Compass:" labelText: "Compass:"
valueText: mag0IdFact.value == 0 ? "Setup required" : "Ready" valueText: mag0IdFact ? (mag0IdFact.value === 0 ? "Setup required" : "Ready") : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Gyro:" labelText: "Gyro:"
valueText: gyro0IdFact.value == 0 ? "Setup required" : "Ready" valueText: gyro0IdFact ? (gyro0IdFact.value === 0 ? "Setup required" : "Ready") : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Accelerometer:" labelText: "Accelerometer:"
valueText: accel0IdFact.value == 0 ? "Setup required" : "Ready" valueText: accel0IdFact ? (accel0IdFact.value === 0 ? "Setup required" : "Ready") : ""
} }
} }
} }
...@@ -29,22 +29,22 @@ FactPanel { ...@@ -29,22 +29,22 @@ FactPanel {
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Compass:" labelText: "Compass:"
valueText: mag0IdFact.value == 0 ? "Setup required" : "Ready" valueText: mag0IdFact ? (mag0IdFact.value === 0 ? "Setup required" : "Ready") : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Gyro:" labelText: "Gyro:"
valueText: gyro0IdFact.value == 0 ? "Setup required" : "Ready" valueText: gyro0IdFact ? (gyro0IdFact.value === 0 ? "Setup required" : "Ready") : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Accelerometer:" labelText: "Accelerometer:"
valueText: accel0IdFact.value == 0 ? "Setup required" : "Ready" valueText: accel0IdFact ? (accel0IdFact.value === 0 ? "Setup required" : "Ready") : ""
} }
VehicleSummaryRow { VehicleSummaryRow {
labelText: "Airspeed:" labelText: "Airspeed:"
valueText: dpressOffFact.value == 0 ? "Setup required" : "Ready" valueText: dpressOffFact ? (dpressOffFact.value === 0 ? "Setup required" : "Ready") : ""
} }
} }
} }
...@@ -11,8 +11,8 @@ import QGroundControl.Controls 1.0 ...@@ -11,8 +11,8 @@ import QGroundControl.Controls 1.0
QGCTextField { QGCTextField {
id: _textField id: _textField
text: fact.valueString text: fact ? fact.valueString : ""
unitsLabel: fact.units unitsLabel: fact ? fact.units : ""
showUnits: true showUnits: true
property Fact fact: null property Fact fact: null
......
...@@ -514,7 +514,7 @@ void MissionController::_initAllMissionItems(void) ...@@ -514,7 +514,7 @@ void MissionController::_initAllMissionItems(void)
homeItem->setCoordinate(QGeoCoordinate(37.803784, -122.462276, 0.0)); homeItem->setCoordinate(QGeoCoordinate(37.803784, -122.462276, 0.0));
} }
qDebug() << "home item" << homeItem->homePositionValid() << homeItem->coordinate(); //qDebug() << "home item" << homeItem->homePositionValid() << homeItem->coordinate();
for (int i=0; i<_missionItems->count(); i++) { for (int i=0; i<_missionItems->count(); i++) {
_initMissionItem(qobject_cast<MissionItem*>(_missionItems->get(i))); _initMissionItem(qobject_cast<MissionItem*>(_missionItems->get(i)));
......
...@@ -52,7 +52,8 @@ void QGCDockWidget::closeEvent(QCloseEvent* event) ...@@ -52,7 +52,8 @@ void QGCDockWidget::closeEvent(QCloseEvent* event)
void QGCDockWidget::loadSettings(void) void QGCDockWidget::loadSettings(void)
{ {
if (_action) { // TODO: This is crashing for some reason. Disabled until sorted out.
if (0 /*_action*/) {
QSettings settings; QSettings settings;
settings.beginGroup(_settingsGroup); settings.beginGroup(_settingsGroup);
if (settings.contains(_title)) { if (settings.contains(_title)) {
...@@ -64,7 +65,8 @@ void QGCDockWidget::loadSettings(void) ...@@ -64,7 +65,8 @@ void QGCDockWidget::loadSettings(void)
void QGCDockWidget::saveSettings(void) void QGCDockWidget::saveSettings(void)
{ {
if (_action) { // TODO: This is crashing for some reason. Disabled until sorted out.
if (0 /*_action*/) {
QSettings settings; QSettings settings;
settings.beginGroup(_settingsGroup); settings.beginGroup(_settingsGroup);
settings.setValue(_title, saveGeometry()); settings.setValue(_title, saveGeometry());
......
...@@ -95,7 +95,7 @@ Rectangle { ...@@ -95,7 +95,7 @@ Rectangle {
text: setupComplete ? text: setupComplete ?
"Below you will find a summary of the settings for your vehicle. To the left are the setup menus for each component." : "Below you will find a summary of the settings for your vehicle. To the left are the setup menus for each component." :
"WARNING: Your vehicle requires setup prior to flight. Please resolve the items marked in red using the menu on the left." "WARNING: Your vehicle requires setup prior to flight. Please resolve the items marked in red using the menu on the left."
property bool setupComplete: multiVehicleManager.activeVehicle.autopilot.setupComplete property bool setupComplete: multiVehicleManager.activeVehicle ? multiVehicleManager.activeVehicle.autopilot.setupComplete : false
} }
Flow { Flow {
...@@ -104,7 +104,7 @@ Rectangle { ...@@ -104,7 +104,7 @@ Rectangle {
spacing: _summaryBoxSpace spacing: _summaryBoxSpace
Repeater { Repeater {
model: multiVehicleManager.activeVehicle.autopilot.vehicleComponents model: multiVehicleManager.activeVehicle ? multiVehicleManager.activeVehicle.autopilot.vehicleComponents : undefined
// Outer summary item rectangle // Outer summary item rectangle
Rectangle { Rectangle {
......
...@@ -24,87 +24,89 @@ along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>. ...@@ -24,87 +24,89 @@ along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
/// @file /// @file
/// @author Don Gagne <don@thegagnes.com> /// @author Don Gagne <don@thegagnes.com>
import QtQuick 2.2 import QtQuick 2.5
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QtQuick.Dialogs 1.2
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.Controllers 1.0 import QGroundControl.Controllers 1.0
import QGroundControl.ScreenTools 1.0
ViewWidget { QGCView {
connectedComponent: commandComponenet viewPanel: panel
Component { property real _margins: ScreenTools.defaultFontPixelHeight
id: commandComponenet property string _emptyText: "<p>" +
"You can create your own commands and parameter editing user interface in this widget. " +
Item { "You do this by providing your own Qml file. " +
id: bogusFactPanel "This support is a work in progress and the details may change somewhat in the future. " +
"By using this feature you are connecting directly to the internals of QGroundControl. " +
"Doing so incorrectly may cause instability both in QGroundControl and/or your vehicle. " +
"So make sure to test your changes thoroughly before using them in flight.</p>" +
"<p>Click 'Load Custom Qml file' to provide your custom qml file.</p>" +
"<p>Click 'Reset' to reset to none.</p>" +
"<p>Example usage: http://www.qgroundcontrol.org/custom_command_qml_widgets</p>"
// We aren't really using the controller in a FactPanel for this usage so we QGCPalette { id: qgcPal; colorGroupEnabled: enabled }
// pass in a bogus item to keep it from getting upset. CustomCommandWidgetController { id: controller; factPanel: panel }
CustomCommandWidgetController { id: controller; factPanel: bogusFactPanel }
Item { QGCViewPanel {
id: panel
anchors.fill: parent
Rectangle {
anchors.fill: parent
color: qgcPal.window
QGCLabel {
id: textOutput
anchors.margins: _margins
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top anchors.top: parent.top
anchors.bottom: buttonRow.top anchors.bottom: buttonRow.top
width: parent.width
QGCLabel {
id: errorOutput
anchors.fill: parent
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
visible: false textFormat: Text.RichText
text: _emptyText
visible: !loader.visible
} }
QGCLabel {
id: warning
anchors.fill: parent
wrapMode: Text.WordWrap
visible: !controller.customQmlFile
text: "You can create your own commands and parameter editing user interface in this widget. " +
"You do this by providing your own Qml file. " +
"This support is a work in progress and the details may change somewhat in the future. " +
"By using this feature you are connecting directly to the internals of QGroundControl. " +
"Doing so incorrectly may cause instability both in QGroundControl and/or your vehicle. " +
"So make sure to test your changes thoroughly before using them in flight.\n\n" +
"Click 'Select Qml file' to provide your custom qml file.\n" +
"Click 'Clear Qml file' to reset to none.\n" +
"Example usage: http://www.qgroundcontrol.org/custom_command_qml_widgets"
}
Loader { Loader {
id: loader id: loader
anchors.fill: parent anchors.margins: _margins
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: buttonRow.top
source: controller.customQmlFile source: controller.customQmlFile
visible: controller.customQmlFile visible: false
onStatusChanged: { onStatusChanged: {
loader.visible = true
if (loader.status == Loader.Error) { if (loader.status == Loader.Error) {
if (sourceComponent.status == Component.Error) { if (sourceComponent.status == Component.Error) {
errorOutput.text = sourceComponent.errorString() textOutput.text = sourceComponent.errorString()
errorOutput.visible = true
loader.visible = false loader.visible = false
} }
} }
} }
} }
}
Row { Row {
id: buttonRow id: buttonRow
spacing: 10 spacing: ScreenTools.defaultFontPixelWidth
anchors.margins: _margins
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
QGCButton { QGCButton {
text: "Select Qml file..." text: "Load Custom Qml file..."
width: ScreenTools.defaultFontPixelWidth * 22
onClicked: controller.selectQmlFile() onClicked: controller.selectQmlFile()
} }
QGCButton { QGCButton {
text: "Clear Qml file" text: "Reset"
width: ScreenTools.defaultFontPixelWidth * 22
onClicked: { onClicked: {
errorOutput.visible = false
controller.clearQmlFile() controller.clearQmlFile()
loader.visible = false
textOutput.text = _emptyText
} }
} }
} }
......
...@@ -36,32 +36,30 @@ const char* CustomCommandWidgetController::_settingsKey = "CustomCommand.QmlFile ...@@ -36,32 +36,30 @@ const char* CustomCommandWidgetController::_settingsKey = "CustomCommand.QmlFile
CustomCommandWidgetController::CustomCommandWidgetController(void) : CustomCommandWidgetController::CustomCommandWidgetController(void) :
_uas(NULL) _uas(NULL)
{ {
if(qgcApp()->toolbox()->multiVehicleManager()->activeVehicle()) {
_uas = qgcApp()->toolbox()->multiVehicleManager()->activeVehicle()->uas(); _uas = qgcApp()->toolbox()->multiVehicleManager()->activeVehicle()->uas();
Q_ASSERT(_uas); }
QSettings settings; QSettings settings;
_customQmlFile = settings.value(_settingsKey).toString(); _customQmlFile = settings.value(_settingsKey).toString();
connect(qgcApp()->toolbox()->multiVehicleManager(), &MultiVehicleManager::activeVehicleChanged, this, &CustomCommandWidgetController::_activeVehicleChanged);
} }
void CustomCommandWidgetController::sendCommand(int commandId, QVariant componentId, QVariant confirm, QVariant param1, QVariant param2, QVariant param3, QVariant param4, QVariant param5, QVariant param6, QVariant param7) void CustomCommandWidgetController::sendCommand(int commandId, QVariant componentId, QVariant confirm, QVariant param1, QVariant param2, QVariant param3, QVariant param4, QVariant param5, QVariant param6, QVariant param7)
{ {
Q_UNUSED(commandId); if(_uas) {
Q_UNUSED(componentId);
Q_UNUSED(confirm);
Q_UNUSED(param1);
Q_UNUSED(param2);
Q_UNUSED(param3);
Q_UNUSED(param4);
Q_UNUSED(param5);
Q_UNUSED(param6);
Q_UNUSED(param7);
_uas->executeCommand((MAV_CMD)commandId, confirm.toInt(), param1.toFloat(), param2.toFloat(), param3.toFloat(), param4.toFloat(), param5.toFloat(), param6.toFloat(), param7.toFloat(), componentId.toInt()); _uas->executeCommand((MAV_CMD)commandId, confirm.toInt(), param1.toFloat(), param2.toFloat(), param3.toFloat(), param4.toFloat(), param5.toFloat(), param6.toFloat(), param7.toFloat(), componentId.toInt());
}
}
void CustomCommandWidgetController::_activeVehicleChanged(Vehicle* activeVehicle)
{
if(activeVehicle)
_uas = activeVehicle->uas();
} }
void CustomCommandWidgetController::selectQmlFile(void) void CustomCommandWidgetController::selectQmlFile(void)
{ {
QSettings settings; QSettings settings;
QString qmlFile = QGCFileDialog::getOpenFileName(NULL, "Select custom Qml file", QString(), "Qml files (*.qml)"); QString qmlFile = QGCFileDialog::getOpenFileName(NULL, "Select custom Qml file", QString(), "Qml files (*.qml)");
if (qmlFile.isEmpty()) { if (qmlFile.isEmpty()) {
_customQmlFile.clear(); _customQmlFile.clear();
...@@ -71,7 +69,6 @@ void CustomCommandWidgetController::selectQmlFile(void) ...@@ -71,7 +69,6 @@ void CustomCommandWidgetController::selectQmlFile(void)
_customQmlFile = url.toString(); _customQmlFile = url.toString();
settings.setValue(_settingsKey, _customQmlFile); settings.setValue(_settingsKey, _customQmlFile);
} }
emit customQmlFileChanged(_customQmlFile); emit customQmlFileChanged(_customQmlFile);
} }
......
...@@ -39,12 +39,15 @@ public: ...@@ -39,12 +39,15 @@ public:
Q_PROPERTY(QString customQmlFile MEMBER _customQmlFile NOTIFY customQmlFileChanged) Q_PROPERTY(QString customQmlFile MEMBER _customQmlFile NOTIFY customQmlFileChanged)
Q_INVOKABLE void sendCommand(int commandId, QVariant componentId, QVariant confirm, QVariant param1, QVariant param2, QVariant param3, QVariant param4, QVariant param5, QVariant param6, QVariant param7); Q_INVOKABLE void sendCommand (int commandId, QVariant componentId, QVariant confirm, QVariant param1, QVariant param2, QVariant param3, QVariant param4, QVariant param5, QVariant param6, QVariant param7);
Q_INVOKABLE void selectQmlFile(void); Q_INVOKABLE void selectQmlFile (void);
Q_INVOKABLE void clearQmlFile(void); Q_INVOKABLE void clearQmlFile (void);
signals: signals:
void customQmlFileChanged(const QString& customQmlFile); void customQmlFileChanged (const QString& customQmlFile);
private slots:
void _activeVehicleChanged (Vehicle* activeVehicle);
private: private:
UASInterface* _uas; UASInterface* _uas;
......
...@@ -101,6 +101,14 @@ public: ...@@ -101,6 +101,14 @@ public:
/// @return true: This link is replaying a log file, false: Normal two-way communication link /// @return true: This link is replaying a log file, false: Normal two-way communication link
virtual bool isLogReplay(void) { return false; } virtual bool isLogReplay(void) { return false; }
/**
* @Enable/Disable data rate collection
**/
void enableDataRate(bool enable)
{
_enableRateCollection = enable;
}
/** /**
* @Brief Get the current incoming data rate. * @Brief Get the current incoming data rate.
* *
...@@ -192,6 +200,7 @@ protected: ...@@ -192,6 +200,7 @@ protected:
QThread(0) QThread(0)
, _mavlinkChannelSet(false) , _mavlinkChannelSet(false)
, _active(false) , _active(false)
, _enableRateCollection(false)
{ {
// Initialize everything for the data rate calculation buffers. // Initialize everything for the data rate calculation buffers.
_inDataIndex = 0; _inDataIndex = 0;
...@@ -211,6 +220,7 @@ protected: ...@@ -211,6 +220,7 @@ protected:
/// @param byteCount Number of bytes received /// @param byteCount Number of bytes received
/// @param time Time in ms send occured /// @param time Time in ms send occured
void _logInputDataRate(quint64 byteCount, qint64 time) { void _logInputDataRate(quint64 byteCount, qint64 time) {
if(_enableRateCollection)
_logDataRateToBuffer(_inDataWriteAmounts, _inDataWriteTimes, &_inDataIndex, byteCount, time); _logDataRateToBuffer(_inDataWriteAmounts, _inDataWriteTimes, &_inDataIndex, byteCount, time);
} }
...@@ -219,6 +229,7 @@ protected: ...@@ -219,6 +229,7 @@ protected:
/// @param byteCount Number of bytes sent /// @param byteCount Number of bytes sent
/// @param time Time in ms receive occured /// @param time Time in ms receive occured
void _logOutputDataRate(quint64 byteCount, qint64 time) { void _logOutputDataRate(quint64 byteCount, qint64 time) {
if(_enableRateCollection)
_logDataRateToBuffer(_outDataWriteAmounts, _outDataWriteTimes, &_outDataIndex, byteCount, time); _logDataRateToBuffer(_outDataWriteAmounts, _outDataWriteTimes, &_outDataIndex, byteCount, time);
} }
...@@ -354,6 +365,7 @@ private: ...@@ -354,6 +365,7 @@ private:
mutable QMutex _dataRateMutex; // Mutex for accessing the data rate member variables mutable QMutex _dataRateMutex; // Mutex for accessing the data rate member variables
bool _active; ///< true: link is actively receiving mavlink messages bool _active; ///< true: link is actively receiving mavlink messages
bool _enableRateCollection;
}; };
typedef QSharedPointer<LinkInterface> SharedLinkInterface; typedef QSharedPointer<LinkInterface> SharedLinkInterface;
......
...@@ -99,8 +99,6 @@ UDPLink::UDPLink(UDPConfiguration* config) ...@@ -99,8 +99,6 @@ UDPLink::UDPLink(UDPConfiguration* config)
// We're doing it wrong - because the Qt folks got the API wrong: // We're doing it wrong - because the Qt folks got the API wrong:
// http://blog.qt.digia.com/blog/2010/06/17/youre-doing-it-wrong/ // http://blog.qt.digia.com/blog/2010/06/17/youre-doing-it-wrong/
moveToThread(this); moveToThread(this);
//qDebug() << "UDP Created " << _config->name();
} }
UDPLink::~UDPLink() UDPLink::~UDPLink()
...@@ -140,7 +138,7 @@ void UDPLink::run() ...@@ -140,7 +138,7 @@ void UDPLink::run()
if(!_running) if(!_running)
break; break;
//-- Settle down (it gets here if there is nothing to read or write) //-- Settle down (it gets here if there is nothing to read or write)
this->msleep(5); _socket->waitForReadyRead(5);
} }
} else { } else {
exec(); exec();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment