Commit c66b9495 authored by Adyasha Dash's avatar Adyasha Dash

Merge remote-tracking branch 'upstream/master' into update/mission_stat_distance_calculation

parents fc0e560f f62ceec0
...@@ -27,19 +27,19 @@ install: ...@@ -27,19 +27,19 @@ install:
Write-Host "Installed" -ForegroundColor Green Write-Host "Installed" -ForegroundColor Green
- ps: | - ps: |
Write-Host "Installing GStreamer..." -ForegroundColor Cyan Write-Host "Installing GStreamer..." -ForegroundColor Cyan
$msiPath = "$($env:USERPROFILE)\gstreamer-1.0-x86-1.8.1.msi" $msiPath = "$($env:USERPROFILE)\gstreamer-1.0-x86-1.5.2.msi"
Write-Host "Downloading..." Write-Host "Downloading..."
(New-Object Net.WebClient).DownloadFile('https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-x86-1.8.1.msi', $msiPath) (New-Object Net.WebClient).DownloadFile('https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-x86-1.5.2.msi', $msiPath)
Write-Host "Installing..." Write-Host "Installing..."
cmd /c start /wait msiexec /package $msiPath /passive cmd /c start /wait msiexec /package $msiPath /passive ADDLOCAL=ALL
Write-Host "Installed" -ForegroundColor Green Write-Host "Installed" -ForegroundColor Green
- ps: | - ps: |
Write-Host "Installing GStreamer dev..." -ForegroundColor Cyan Write-Host "Installing GStreamer dev..." -ForegroundColor Cyan
$msiPath = "$($env:USERPROFILE)\gstreamer-1.0-devel-x86-1.8.1.msi" $msiPath = "$($env:USERPROFILE)\gstreamer-1.0-devel-x86-1.5.2.msi"
Write-Host "Downloading..." Write-Host "Downloading..."
(New-Object Net.WebClient).DownloadFile('https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-devel-x86-1.8.1.msi', $msiPath) (New-Object Net.WebClient).DownloadFile('https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/gstreamer-1.0-devel-x86-1.5.2.msi', $msiPath)
Write-Host "Installing..." Write-Host "Installing..."
cmd /c start /wait msiexec /package $msiPath /passive cmd /c start /wait msiexec /package $msiPath /passive ADDLOCAL=ALL
Write-Host "Installed" -ForegroundColor Green Write-Host "Installed" -ForegroundColor Green
build_script: build_script:
......
...@@ -193,6 +193,26 @@ Item { ...@@ -193,6 +193,26 @@ Item {
indexModel: false indexModel: false
} }
} }
Row {
spacing: ScreenTools.defaultFontPixelWidth
property Fact fact: controller.getParameterFact(-1, "RC_MAP_TRANS_SW", false)
visible: (controller.vehicle.vtol && controller.parameterExists(-1, "RC_MAP_TRANS_SW"))
QGCLabel {
anchors.baseline: vtolCombo.baseline
text: "VTOL mode switch:"
color: parent.fact.value == 0 ? qgcPal.text : (controller.rcChannelValues[parent.fact.value - 1] >= 1500 ? "yellow" : qgcPal.text)
}
FactComboBox {
id: vtolCombo
width: _channelComboWidth
fact: parent.fact
indexModel: false
}
}
} // Column } // Column
} // Rectangle } // Rectangle
......
...@@ -66,6 +66,7 @@ QGCView { ...@@ -66,6 +66,7 @@ QGCView {
FlightDisplayViewController { id: _controller } FlightDisplayViewController { id: _controller }
function setStates() { function setStates() {
QGroundControl.saveBoolGlobalSetting(_mainIsMapKey, _mainIsMap)
if(_mainIsMap) { if(_mainIsMap) {
//-- Adjust Margins //-- Adjust Margins
_flightMapContainer.state = "fullMode" _flightMapContainer.state = "fullMode"
......
...@@ -51,7 +51,7 @@ Rectangle { ...@@ -51,7 +51,7 @@ Rectangle {
anchors.leftMargin: _topBottomMargin anchors.leftMargin: _topBottomMargin
anchors.left: parent.left anchors.left: parent.left
size: _innerRadius * 2 size: _innerRadius * 2
active: active active: root.active
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
} }
...@@ -60,7 +60,7 @@ Rectangle { ...@@ -60,7 +60,7 @@ Rectangle {
anchors.leftMargin: _spacing anchors.leftMargin: _spacing
anchors.left: attitude.right anchors.left: attitude.right
size: _innerRadius * 2 size: _innerRadius * 2
active: active active: root.active
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
} }
} }
...@@ -278,6 +278,7 @@ public: ...@@ -278,6 +278,7 @@ public:
Q_PROPERTY(bool supportsManualControl READ supportsManualControl CONSTANT) Q_PROPERTY(bool supportsManualControl READ supportsManualControl CONSTANT)
Q_PROPERTY(bool supportsThrottleModeCenterZero READ supportsThrottleModeCenterZero CONSTANT) Q_PROPERTY(bool supportsThrottleModeCenterZero READ supportsThrottleModeCenterZero CONSTANT)
Q_PROPERTY(bool supportsJSButton READ supportsJSButton CONSTANT) Q_PROPERTY(bool supportsJSButton READ supportsJSButton CONSTANT)
Q_PROPERTY(bool supportsRadio READ supportsRadio CONSTANT)
Q_PROPERTY(bool sub READ sub CONSTANT) Q_PROPERTY(bool sub READ sub CONSTANT)
Q_PROPERTY(bool autoDisconnect MEMBER _autoDisconnect NOTIFY autoDisconnectChanged) Q_PROPERTY(bool autoDisconnect MEMBER _autoDisconnect NOTIFY autoDisconnectChanged)
Q_PROPERTY(QString prearmError READ prearmError WRITE setPrearmError NOTIFY prearmErrorChanged) Q_PROPERTY(QString prearmError READ prearmError WRITE setPrearmError NOTIFY prearmErrorChanged)
......
...@@ -61,13 +61,15 @@ public: ...@@ -61,13 +61,15 @@ public:
bool reboot(QextSerialPort* port); bool reboot(QextSerialPort* port);
// Supported bootloader board ids // Supported bootloader board ids
static const int boardIDPX4FMUV1 = 5; ///< PX4 V1 board static const int boardIDPX4FMUV1 = 5; ///< PX4 V1 board, as from USB PID
static const int boardIDPX4FMUV2 = 9; ///< PX4 V2 board static const int boardIDPX4FMUV2 = 9; ///< PX4 V2 board, as from USB PID
static const int boardIDPX4FMUV4 = 11; ///< PX4 V4 board static const int boardIDPX4FMUV4 = 11; ///< PX4 V4 board, as from USB PID
static const int boardIDPX4Flow = 6; ///< PX4 Flow board static const int boardIDPX4Flow = 6; ///< PX4 Flow board, as from USB PID
static const int boardIDAeroCore = 98; ///< Gumstix AeroCore board static const int boardIDAeroCore = 98; ///< Gumstix AeroCore board, as from USB PID
static const int boardID3DRRadio = 78; ///< 3DR Radio static const int boardID3DRRadio = 78; ///< 3DR Radio. This is an arbitrary value unrelated to the PID
static const int boardIDMINDPXFMUV2 = 88; ///< MindPX V2 board static const int boardIDMINDPXFMUV2 = 88; ///< MindPX V2 board, as from USB PID
static const int boardIDTAPV1 = 64; ///< TAP V1 board, as from USB PID
static const int boardIDASCV1 = 65; ///< ASC V1 board, as from USB PID
signals: signals:
/// @brief Signals progress indicator for long running bootloader utility routines /// @brief Signals progress indicator for long running bootloader utility routines
......
...@@ -97,7 +97,7 @@ QGCView { ...@@ -97,7 +97,7 @@ QGCView {
} else { } else {
// We end up here when we detect a board plugged in after we've started upgrade // We end up here when we detect a board plugged in after we've started upgrade
statusTextArea.append(highlightPrefix + qsTr("Found device") + highlightSuffix + ": " + controller.boardType) statusTextArea.append(highlightPrefix + qsTr("Found device") + highlightSuffix + ": " + controller.boardType)
if (controller.boardType == "Pixhawk" || controller.boardType == "AeroCore" || controller.boardType == "PX4 Flow" || controller.boardType == "PX4 FMU V1" || controller.boardType == "MindPX") { if (controller.boardType == "Pixhawk" || controller.boardType == "AeroCore" || controller.boardType == "PX4 Flow" || controller.boardType == "PX4 FMU V1" || controller.boardType == "MindPX" || controller.boardType == "TAP V1" || controller.boardType == "ASC V1") {
showDialog(pixhawkFirmwareSelectDialogComponent, title, qgcView.showDialogDefaultWidth, StandardButton.Ok | StandardButton.Cancel) showDialog(pixhawkFirmwareSelectDialogComponent, title, qgcView.showDialogDefaultWidth, StandardButton.Ok | StandardButton.Cancel)
} }
} }
......
...@@ -139,6 +139,14 @@ void FirmwareUpgradeController::_foundBoard(bool firstAttempt, const QSerialPort ...@@ -139,6 +139,14 @@ void FirmwareUpgradeController::_foundBoard(bool firstAttempt, const QSerialPort
_foundBoardTypeName = "MindPX"; _foundBoardTypeName = "MindPX";
_startFlashWhenBootloaderFound = false; _startFlashWhenBootloaderFound = false;
break; break;
case QGCSerialPortInfo::BoardTypeTAPV1:
_foundBoardTypeName = "TAP V1";
_startFlashWhenBootloaderFound = false;
break;
case QGCSerialPortInfo::BoardTypeASCV1:
_foundBoardTypeName = "ASC V1";
_startFlashWhenBootloaderFound = false;
break;
case QGCSerialPortInfo::BoardTypePX4Flow: case QGCSerialPortInfo::BoardTypePX4Flow:
_foundBoardTypeName = "PX4 Flow"; _foundBoardTypeName = "PX4 Flow";
_startFlashWhenBootloaderFound = false; _startFlashWhenBootloaderFound = false;
...@@ -344,6 +352,18 @@ void FirmwareUpgradeController::_initFirmwareHash() ...@@ -344,6 +352,18 @@ void FirmwareUpgradeController::_initFirmwareHash()
{ AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/mindpx-v2_default.px4"}, { AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/mindpx-v2_default.px4"},
{ AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/mindpx-v2_default.px4"}, { AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/mindpx-v2_default.px4"},
}; };
//////////////////////////////////// TAPV1 firmwares //////////////////////////////////////////////////
FirmwareToUrlElement_t rgTAPV1FirmwareArray[] = {
{ AutoPilotStackPX4, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/stable/tap-v1_default.px4"},
{ AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/tap-v1_default.px4"},
{ AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/tap-v1_default.px4"},
};
//////////////////////////////////// ASCV1 firmwares //////////////////////////////////////////////////
FirmwareToUrlElement_t rgASCV1FirmwareArray[] = {
{ AutoPilotStackPX4, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/stable/asc-v1_default.px4"},
{ AutoPilotStackPX4, BetaFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/beta/asc-v1_default.px4"},
{ AutoPilotStackPX4, DeveloperFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Firmware/master/asc-v1_default.px4"},
};
/////////////////////////////// px4flow firmwares /////////////////////////////////////// /////////////////////////////// px4flow firmwares ///////////////////////////////////////
FirmwareToUrlElement_t rgPX4FLowFirmwareArray[] = { FirmwareToUrlElement_t rgPX4FLowFirmwareArray[] = {
{ PX4Flow, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Flow/master/px4flow.px4" }, { PX4Flow, StableFirmware, DefaultVehicleFirmware, "http://px4-travis.s3.amazonaws.com/Flow/master/px4flow.px4" },
...@@ -385,6 +405,18 @@ void FirmwareUpgradeController::_initFirmwareHash() ...@@ -385,6 +405,18 @@ void FirmwareUpgradeController::_initFirmwareHash()
_rgMindPXFMUV2Firmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url); _rgMindPXFMUV2Firmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url);
} }
size = sizeof(rgTAPV1FirmwareArray)/sizeof(rgTAPV1FirmwareArray[0]);
for (int i = 0; i < size; i++) {
const FirmwareToUrlElement_t& element = rgTAPV1FirmwareArray[i];
_rgTAPV1Firmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url);
}
size = sizeof(rgASCV1FirmwareArray)/sizeof(rgASCV1FirmwareArray[0]);
for (int i = 0; i < size; i++) {
const FirmwareToUrlElement_t& element = rgASCV1FirmwareArray[i];
_rgASCV1Firmware.insert(FirmwareIdentifier(element.stackType, element.firmwareType, element.vehicleType), element.url);
}
size = sizeof(rgPX4FLowFirmwareArray)/sizeof(rgPX4FLowFirmwareArray[0]); size = sizeof(rgPX4FLowFirmwareArray)/sizeof(rgPX4FLowFirmwareArray[0]);
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
const FirmwareToUrlElement_t& element = rgPX4FLowFirmwareArray[i]; const FirmwareToUrlElement_t& element = rgPX4FLowFirmwareArray[i];
...@@ -420,6 +452,10 @@ QHash<FirmwareUpgradeController::FirmwareIdentifier, QString>* FirmwareUpgradeCo ...@@ -420,6 +452,10 @@ QHash<FirmwareUpgradeController::FirmwareIdentifier, QString>* FirmwareUpgradeCo
return &_rgAeroCoreFirmware; return &_rgAeroCoreFirmware;
case Bootloader::boardIDMINDPXFMUV2: case Bootloader::boardIDMINDPXFMUV2:
return &_rgMindPXFMUV2Firmware; return &_rgMindPXFMUV2Firmware;
case Bootloader::boardIDTAPV1:
return &_rgTAPV1Firmware;
case Bootloader::boardIDASCV1:
return &_rgASCV1Firmware;
case Bootloader::boardID3DRRadio: case Bootloader::boardID3DRRadio:
return &_rg3DRRadioFirmware; return &_rg3DRRadioFirmware;
default: default:
...@@ -447,6 +483,12 @@ QHash<FirmwareUpgradeController::FirmwareIdentifier, QString>* FirmwareUpgradeCo ...@@ -447,6 +483,12 @@ QHash<FirmwareUpgradeController::FirmwareIdentifier, QString>* FirmwareUpgradeCo
case QGCSerialPortInfo::BoardTypeMINDPXFMUV2: case QGCSerialPortInfo::BoardTypeMINDPXFMUV2:
boardId = Bootloader::boardIDMINDPXFMUV2; boardId = Bootloader::boardIDMINDPXFMUV2;
break; break;
case QGCSerialPortInfo::BoardTypeTAPV1:
boardId = Bootloader::boardIDTAPV1;
break;
case QGCSerialPortInfo::BoardTypeASCV1:
boardId = Bootloader::boardIDASCV1;
break;
case QGCSerialPortInfo::BoardTypePX4Flow: case QGCSerialPortInfo::BoardTypePX4Flow:
boardId = Bootloader::boardIDPX4Flow; boardId = Bootloader::boardIDPX4Flow;
break; break;
......
...@@ -194,6 +194,8 @@ private: ...@@ -194,6 +194,8 @@ private:
QHash<FirmwareIdentifier, QString> _rgAeroCoreFirmware; QHash<FirmwareIdentifier, QString> _rgAeroCoreFirmware;
QHash<FirmwareIdentifier, QString> _rgPX4FMUV1Firmware; QHash<FirmwareIdentifier, QString> _rgPX4FMUV1Firmware;
QHash<FirmwareIdentifier, QString> _rgMindPXFMUV2Firmware; QHash<FirmwareIdentifier, QString> _rgMindPXFMUV2Firmware;
QHash<FirmwareIdentifier, QString> _rgTAPV1Firmware;
QHash<FirmwareIdentifier, QString> _rgASCV1Firmware;
QHash<FirmwareIdentifier, QString> _rgPX4FLowFirmware; QHash<FirmwareIdentifier, QString> _rgPX4FLowFirmware;
QHash<FirmwareIdentifier, QString> _rg3DRRadioFirmware; QHash<FirmwareIdentifier, QString> _rg3DRRadioFirmware;
......
...@@ -38,7 +38,7 @@ The build system is setup to use pkgconfig and it will find the necessary header ...@@ -38,7 +38,7 @@ The build system is setup to use pkgconfig and it will find the necessary header
### Mac OS ### Mac OS
Download the gstreamer framework from here: http://gstreamer.freedesktop.org/data/pkg/osx. The current version, as this is written is 1.5.2. Download the gstreamer framework from here: http://gstreamer.freedesktop.org/data/pkg/osx. Supported version is 1.5.2. QGC may work with newer version, but it is untested.
You need two packages: You need two packages:
- [gstreamer-1.0-devel-1.5.2-x86_64.pkg](http://gstreamer.freedesktop.org/data/pkg/osx/1.5.2/gstreamer-1.0-devel-1.5.2-x86_64.pkg) - [gstreamer-1.0-devel-1.5.2-x86_64.pkg](http://gstreamer.freedesktop.org/data/pkg/osx/1.5.2/gstreamer-1.0-devel-1.5.2-x86_64.pkg)
...@@ -72,6 +72,10 @@ qgroundcontrol ...@@ -72,6 +72,10 @@ qgroundcontrol
### Windows ### Windows
TODO: Binaries found in http://gstreamer.freedesktop.org/data/pkg/windows Download the gstreamer framework from here: http://gstreamer.freedesktop.org/data/pkg/windows. Supported version is 1.5.2. QGC may work with newer version, but it is untested.
(work in progress)
You need two packages:
- [gstreamer-1.0-devel-x86-1.5.2.msi](https://gstreamer.freedesktop.org/data/pkg/windows/1.5.2/gstreamer-1.0-devel-x86-1.5.2.msi)
- [gstreamer-1.0-x86-1.5.2.msi](https://gstreamer.freedesktop.org/data/pkg/windows/1.5.2/gstreamer-1.0-x86-1.5.2.msi)
The installer places them under c:\gstreamer, which is where the QGC build system will look for it.
...@@ -42,8 +42,7 @@ ...@@ -42,8 +42,7 @@
#endif #endif
#if defined(QGC_GST_STREAMING) #if defined(QGC_GST_STREAMING)
#if defined(__macos__) #if (defined(__macos__) && defined(QGC_INSTALL_RELEASE)) || defined(Q_OS_WIN)
#ifdef QGC_INSTALL_RELEASE
static void qgcputenv(const QString& key, const QString& root, const QString& path) static void qgcputenv(const QString& key, const QString& root, const QString& path)
{ {
QString value = root + path; QString value = root + path;
...@@ -51,7 +50,6 @@ static void qgcputenv(const QString& key, const QString& root, const QString& pa ...@@ -51,7 +50,6 @@ static void qgcputenv(const QString& key, const QString& root, const QString& pa
} }
#endif #endif
#endif #endif
#endif
void initializeVideoStreaming(int &argc, char* argv[]) void initializeVideoStreaming(int &argc, char* argv[])
{ {
...@@ -67,6 +65,9 @@ void initializeVideoStreaming(int &argc, char* argv[]) ...@@ -67,6 +65,9 @@ void initializeVideoStreaming(int &argc, char* argv[])
qgcputenv("GST_PLUGIN_PATH_1_0", currentDir, "/../Frameworks/GStreamer.framework/Versions/Current/lib/gstreamer-1.0"); qgcputenv("GST_PLUGIN_PATH_1_0", currentDir, "/../Frameworks/GStreamer.framework/Versions/Current/lib/gstreamer-1.0");
qgcputenv("GST_PLUGIN_PATH", currentDir, "/../Frameworks/GStreamer.framework/Versions/Current/lib/gstreamer-1.0"); qgcputenv("GST_PLUGIN_PATH", currentDir, "/../Frameworks/GStreamer.framework/Versions/Current/lib/gstreamer-1.0");
#endif #endif
#elif defined(Q_OS_WIN)
QString currentDir = QCoreApplication::applicationDirPath();
qgcputenv("GST_PLUGIN_PATH", currentDir, "/gstreamer-plugins");
#endif #endif
// Initialize GStreamer // Initialize GStreamer
GError* error = NULL; GError* error = NULL;
......
...@@ -51,29 +51,26 @@ LinuxBuild { ...@@ -51,29 +51,26 @@ LinuxBuild {
GST_ROOT = c:/gstreamer/1.0/x86 GST_ROOT = c:/gstreamer/1.0/x86
exists($$GST_ROOT) { exists($$GST_ROOT) {
CONFIG += VideoEnabled CONFIG += VideoEnabled
LIBS += -L$$GST_ROOT/lib/gstreamer-1.0/static -lgstreamer-1.0 -lgstvideo-1.0 -lgstbase-1.0
LIBS += -L$$GST_ROOT/lib -lglib-2.0 -lintl -lgobject-2.0 LIBS += -L$$GST_ROOT/lib -lgstreamer-1.0 -lgstvideo-1.0 -lgstbase-1.0
LIBS += -lglib-2.0 -lintl -lgobject-2.0
INCLUDEPATH += \ INCLUDEPATH += \
$$GST_ROOT/include/gstreamer-1.0 \ $$GST_ROOT/include/gstreamer-1.0 \
$$GST_ROOT/include/glib-2.0 \ $$GST_ROOT/include/glib-2.0 \
$$GST_ROOT/lib/gstreamer-1.0/include \ $$GST_ROOT/lib/gstreamer-1.0/include \
$$GST_ROOT/lib/glib-2.0/include $$GST_ROOT/lib/glib-2.0/include
COPY_FILE_LIST = \
$$GST_ROOT\\bin\\libffi-6.dll \
$$GST_ROOT\\bin\\libglib-2.0-0.dll \
$$GST_ROOT\\bin\\libgmodule-2.0-0.dll \
$$GST_ROOT\\bin\\libgobject-2.0-0.dll \
$$GST_ROOT\\bin\\libgstbase-1.0-0.dll \
$$GST_ROOT\\bin\\libgstreamer-1.0-0.dll \
$$GST_ROOT\\bin\\libgstvideo-1.0-0.dll \
$$GST_ROOT\\bin\\libintl-8.dll \
$$GST_ROOT\\bin\\liborc-0.4-0.dll \
$$GST_ROOT\\bin\\libwinpthread-1.dll
DESTDIR_WIN = $$replace(DESTDIR, "/", "\\") DESTDIR_WIN = $$replace(DESTDIR, "/", "\\")
for(COPY_FILE, COPY_FILE_LIST) { GST_ROOT_WIN = $$replace(GST_ROOT, "/", "\\")
QMAKE_POST_LINK += $$escape_expand(\\n) $$QMAKE_COPY \"$$COPY_FILE\" \"$$DESTDIR_WIN\"
} # Copy main GStreamer runtime files
QMAKE_POST_LINK += $$escape_expand(\\n) QMAKE_POST_LINK += $$escape_expand(\\n) xcopy \"$$GST_ROOT_WIN\\bin\*.dll\" \"$$DESTDIR_WIN\" /S/Y $$escape_expand(\\n)
QMAKE_POST_LINK += xcopy \"$$GST_ROOT_WIN\\bin\*.\" \"$$DESTDIR_WIN\" /S/Y $$escape_expand(\\n)
# Copy GStreamer plugins
QMAKE_POST_LINK += $$escape_expand(\\n) xcopy \"$$GST_ROOT_WIN\\lib\\gstreamer-1.0\\*.dll\" \"$$DESTDIR_WIN\\gstreamer-plugins\\\" /Y $$escape_expand(\\n)
QMAKE_POST_LINK += $$escape_expand(\\n) xcopy \"$$GST_ROOT_WIN\\lib\\gstreamer-1.0\\validate\\*.dll\" \"$$DESTDIR_WIN\\gstreamer-plugins\\validate\\\" /Y $$escape_expand(\\n)
} }
} else:AndroidBuild { } else:AndroidBuild {
#- gstreamer assumed to be installed in $$PWD/../../android/gstreamer-1.0-android-armv7-1.5.2 #- gstreamer assumed to be installed in $$PWD/../../android/gstreamer-1.0-android-armv7-1.5.2
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "UAS.h" #include "UAS.h"
#include "QGCApplication.h" #include "QGCApplication.h"
#include "QGCToolbox.h" #include "QGCToolbox.h"
#include "QGCMapEngine.h"
#include "Vehicle.h" #include "Vehicle.h"
#include "MainWindow.h" #include "MainWindow.h"
...@@ -31,7 +32,6 @@ ...@@ -31,7 +32,6 @@
QGC_LOGGING_CATEGORY(LogDownloadLog, "LogDownloadLog") QGC_LOGGING_CATEGORY(LogDownloadLog, "LogDownloadLog")
static QLocale kLocale;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
struct LogDownloadData { struct LogDownloadData {
LogDownloadData(QGCLogEntry* entry); LogDownloadData(QGCLogEntry* entry);
...@@ -42,6 +42,8 @@ struct LogDownloadData { ...@@ -42,6 +42,8 @@ struct LogDownloadData {
uint ID; uint ID;
QGCLogEntry* entry; QGCLogEntry* entry;
uint written; uint written;
size_t rate_bytes;
qreal rate_avg;
QElapsedTimer elapsed; QElapsedTimer elapsed;
void advanceChunk() void advanceChunk()
...@@ -76,6 +78,8 @@ LogDownloadData::LogDownloadData(QGCLogEntry* entry_) ...@@ -76,6 +78,8 @@ LogDownloadData::LogDownloadData(QGCLogEntry* entry_)
: ID(entry_->id()) : ID(entry_->id())
, entry(entry_) , entry(entry_)
, written(0) , written(0)
, rate_bytes(0)
, rate_avg(0)
{ {
} }
...@@ -95,7 +99,7 @@ QGCLogEntry::QGCLogEntry(uint logId, const QDateTime& dateTime, uint logSize, bo ...@@ -95,7 +99,7 @@ QGCLogEntry::QGCLogEntry(uint logId, const QDateTime& dateTime, uint logSize, bo
QString QString
QGCLogEntry::sizeStr() const QGCLogEntry::sizeStr() const
{ {
return kLocale.toString(_logSize); return QGCMapEngine::bigSizeToString(_logSize);
} }
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
...@@ -332,10 +336,18 @@ LogDownloadController::_logData(UASInterface* uas, uint32_t ofs, uint16_t id, ui ...@@ -332,10 +336,18 @@ LogDownloadController::_logData(UASInterface* uas, uint32_t ofs, uint16_t id, ui
//-- Write chunk to file //-- Write chunk to file
if(_downloadData->file.write((const char*)data, count)) { if(_downloadData->file.write((const char*)data, count)) {
_downloadData->written += count; _downloadData->written += count;
_downloadData->rate_bytes += count;
if (_downloadData->elapsed.elapsed() >= kGUIRateMilliseconds) { if (_downloadData->elapsed.elapsed() >= kGUIRateMilliseconds) {
//-- Update download rate
qreal rrate = _downloadData->rate_bytes/(_downloadData->elapsed.elapsed()/1000.0);
_downloadData->rate_avg = _downloadData->rate_avg*0.95 + rrate*0.05;
_downloadData->rate_bytes = 0;
//-- Update status //-- Update status
QString comma_value = kLocale.toString(_downloadData->written); const QString status = QString("%1 (%2/s)").arg(QGCMapEngine::bigSizeToString(_downloadData->written),
_downloadData->entry->setStatus(comma_value); QGCMapEngine::bigSizeToString(_downloadData->rate_avg));
_downloadData->entry->setStatus(status);
_downloadData->elapsed.start(); _downloadData->elapsed.start();
} }
result = true; result = true;
......
...@@ -335,7 +335,7 @@ void LinkManager::saveLinkConfigurationList() ...@@ -335,7 +335,7 @@ void LinkManager::saveLinkConfigurationList()
linkConfig->saveSettings(settings, root); linkConfig->saveSettings(settings, root);
} }
} else { } else {
qWarning() << "Internal error"; qWarning() << "Internal error for link configuration in LinkManager";
} }
} }
QString root(LinkConfiguration::settingsRoot()); QString root(LinkConfiguration::settingsRoot());
...@@ -542,6 +542,18 @@ void LinkManager::_updateAutoConnectLinks(void) ...@@ -542,6 +542,18 @@ void LinkManager::_updateAutoConnectLinks(void)
pSerialConfig->setUsbDirect(true); pSerialConfig->setUsbDirect(true);
} }
break; break;
case QGCSerialPortInfo::BoardTypeTAPV1:
if (_autoconnectPixhawk) {
pSerialConfig = new SerialConfiguration(QString("TAP on %1").arg(portInfo.portName().trimmed()));
pSerialConfig->setUsbDirect(true);
}
break;
case QGCSerialPortInfo::BoardTypeASCV1:
if (_autoconnectPixhawk) {
pSerialConfig = new SerialConfiguration(QString("ASC on %1").arg(portInfo.portName().trimmed()));
pSerialConfig->setUsbDirect(true);
}
break;
case QGCSerialPortInfo::BoardTypePX4Flow: case QGCSerialPortInfo::BoardTypePX4Flow:
if (_autoconnectPX4Flow) { if (_autoconnectPX4Flow) {
pSerialConfig = new SerialConfiguration(QString("PX4Flow on %1").arg(portInfo.portName().trimmed())); pSerialConfig = new SerialConfiguration(QString("PX4Flow on %1").arg(portInfo.portName().trimmed()));
......
...@@ -25,6 +25,8 @@ static const struct VIDPIDMapInfo_s { ...@@ -25,6 +25,8 @@ static const struct VIDPIDMapInfo_s {
{ QGCSerialPortInfo::px4VendorId, QGCSerialPortInfo::px4FlowProductId, QGCSerialPortInfo::BoardTypePX4Flow, "Found PX4 Flow" }, { QGCSerialPortInfo::px4VendorId, QGCSerialPortInfo::px4FlowProductId, QGCSerialPortInfo::BoardTypePX4Flow, "Found PX4 Flow" },
{ QGCSerialPortInfo::px4VendorId, QGCSerialPortInfo::AeroCoreProductId, QGCSerialPortInfo::BoardTypeAeroCore, "Found AeroCore" }, { QGCSerialPortInfo::px4VendorId, QGCSerialPortInfo::AeroCoreProductId, QGCSerialPortInfo::BoardTypeAeroCore, "Found AeroCore" },
{ QGCSerialPortInfo::px4VendorId, QGCSerialPortInfo::MindPXFMUV2ProductId, QGCSerialPortInfo::BoardTypeMINDPXFMUV2,"Found MindPX FMU V2" }, { QGCSerialPortInfo::px4VendorId, QGCSerialPortInfo::MindPXFMUV2ProductId, QGCSerialPortInfo::BoardTypeMINDPXFMUV2,"Found MindPX FMU V2" },
{ QGCSerialPortInfo::px4VendorId, QGCSerialPortInfo::TAPV1ProductId, QGCSerialPortInfo::BoardTypeTAPV1, "Found TAP V1" },
{ QGCSerialPortInfo::px4VendorId, QGCSerialPortInfo::ASCV1ProductId, QGCSerialPortInfo::BoardTypeASCV1, "Found ASC V1" },
{ QGCSerialPortInfo::threeDRRadioVendorId, QGCSerialPortInfo::threeDRRadioProductId, QGCSerialPortInfo::BoardTypeSikRadio, "Found SiK Radio" }, { QGCSerialPortInfo::threeDRRadioVendorId, QGCSerialPortInfo::threeDRRadioProductId, QGCSerialPortInfo::BoardTypeSikRadio, "Found SiK Radio" },
{ QGCSerialPortInfo::siLabsRadioVendorId, QGCSerialPortInfo::siLabsRadioProductId, QGCSerialPortInfo::BoardTypeSikRadio, "Found SiK Radio" }, { QGCSerialPortInfo::siLabsRadioVendorId, QGCSerialPortInfo::siLabsRadioProductId, QGCSerialPortInfo::BoardTypeSikRadio, "Found SiK Radio" },
{ QGCSerialPortInfo::ubloxRTKVendorId, QGCSerialPortInfo::ubloxRTKProductId, QGCSerialPortInfo::BoardTypeRTKGPS, "Found RTK GPS" }, { QGCSerialPortInfo::ubloxRTKVendorId, QGCSerialPortInfo::ubloxRTKProductId, QGCSerialPortInfo::BoardTypeRTKGPS, "Found RTK GPS" },
...@@ -81,6 +83,12 @@ QGCSerialPortInfo::BoardType_t QGCSerialPortInfo::boardType(void) const ...@@ -81,6 +83,12 @@ QGCSerialPortInfo::BoardType_t QGCSerialPortInfo::boardType(void) const
} else if (description() == "MindPX FMU v2.x" || description() == "MindPX BL FMU v2.x") { } else if (description() == "MindPX FMU v2.x" || description() == "MindPX BL FMU v2.x") {
qCDebug(QGCSerialPortInfoLog) << "Found MindPX FMU V2 (by name matching fallback)"; qCDebug(QGCSerialPortInfoLog) << "Found MindPX FMU V2 (by name matching fallback)";
boardType = BoardTypeMINDPXFMUV2; boardType = BoardTypeMINDPXFMUV2;
} else if (description() == "PX4 TAP v1.x" || description() == "PX4 BL TAP v1.x") {
qCDebug(QGCSerialPortInfoLog) << "Found TAP V1 (by name matching fallback)";
boardType = BoardTypeTAPV1;
} else if (description() == "PX4 ASC v1.x" || description() == "PX4 BL ASC v1.x") {
qCDebug(QGCSerialPortInfoLog) << "Found ASC V1 (by name matching fallback)";
boardType = BoardTypeASCV1;
} else if (description() == "FT231X USB UART") { } else if (description() == "FT231X USB UART") {
qCDebug(QGCSerialPortInfoLog) << "Found possible Radio (by name matching fallback)"; qCDebug(QGCSerialPortInfoLog) << "Found possible Radio (by name matching fallback)";
boardType = BoardTypeSikRadio; boardType = BoardTypeSikRadio;
...@@ -114,7 +122,8 @@ bool QGCSerialPortInfo::boardTypePixhawk(void) const ...@@ -114,7 +122,8 @@ bool QGCSerialPortInfo::boardTypePixhawk(void) const
return boardType == BoardTypePX4FMUV1 || boardType == BoardTypePX4FMUV2 return boardType == BoardTypePX4FMUV1 || boardType == BoardTypePX4FMUV2
|| boardType == BoardTypePX4FMUV4 || boardType == BoardTypeAeroCore || boardType == BoardTypePX4FMUV4 || boardType == BoardTypeAeroCore
|| boardType == BoardTypeMINDPXFMUV2; || boardType == BoardTypeMINDPXFMUV2 || boardType == BoardTypeTAPV1
|| boardType == BoardTypeASCV1;
} }
bool QGCSerialPortInfo::isBootloader(void) const bool QGCSerialPortInfo::isBootloader(void) const
......
...@@ -35,6 +35,8 @@ public: ...@@ -35,6 +35,8 @@ public:
BoardTypeAeroCore, BoardTypeAeroCore,
BoardTypeRTKGPS, BoardTypeRTKGPS,
BoardTypeMINDPXFMUV2, BoardTypeMINDPXFMUV2,
BoardTypeTAPV1,
BoardTypeASCV1,
BoardTypeUnknown BoardTypeUnknown
} BoardType_t; } BoardType_t;
...@@ -52,6 +54,8 @@ public: ...@@ -52,6 +54,8 @@ public:
static const int px4FlowProductId = 21; ///< Product ID for PX4 Flow board static const int px4FlowProductId = 21; ///< Product ID for PX4 Flow board
static const int MindPXFMUV2ProductId = 48; ///< Product ID for the MindPX V2 board static const int MindPXFMUV2ProductId = 48; ///< Product ID for the MindPX V2 board
static const int TAPV1ProductId = 64; ///< Product ID for the TAP V1 board
static const int ASCV1ProductId = 65; ///< Product ID for the ASC V1 board
static const int threeDRRadioVendorId = 1027; ///< Vendor ID for 3DR Radio static const int threeDRRadioVendorId = 1027; ///< Vendor ID for 3DR Radio
static const int threeDRRadioProductId = 24597; ///< Product ID for 3DR Radio static const int threeDRRadioProductId = 24597; ///< Product ID for 3DR Radio
......
...@@ -168,6 +168,7 @@ Row { ...@@ -168,6 +168,7 @@ Row {
id: rcRssi id: rcRssi
width: rssiRow.width * 1.1 width: rssiRow.width * 1.1
height: mainWindow.tbCellHeight height: mainWindow.tbCellHeight
visible: activeVehicle ? activeVehicle.supportsRadio : true
Row { Row {
id: rssiRow id: rssiRow
height: parent.height height: parent.height
......
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