diff --git a/Makefile b/Makefile index 3c0cb974f..ebf45b515 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ # # Top level Makefile for the OpenPilot project build system. # Copyright (c) 2010-2013, The OpenPilot Team, http://www.openpilot.org +# Use 'make help' for instructions. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -93,39 +94,11 @@ endif # the tools.mk to ensure that we download/install the right tools. UNAME := $(shell uname) ARCH := $(shell uname -m) -# Here and everywhere if not Linux or OSX then assume Windows +# Here and everywhere if not Linux or Mac then assume Windows ifeq ($(filter Linux Darwin, $(UNAME)), ) UNAME := Windows endif -# Set up misc host tools -export ECHO := echo -export MKDIR := mkdir -export CP := cp -export RM := rm -export LN := ln -export CAT := cat -export SED := sed -export TAR := tar -export ANT := ant -export JAVAC := javac -export JAR := jar -export GIT := git -export CURL := curl -export PYTHON := python -export INSTALL := install - -# Command to extract version info data from the repository and source tree -export VERSION_INFO := $(PYTHON) "$(ROOT_DIR)/make/scripts/version-info.py" --path="$(ROOT_DIR)" - -# Test if quotes are needed for the echo-command -ifeq (${shell $(ECHO) "test"}, test) - export QUOTE := ' -# This line is just to clear out the single quote above ' -else - export QUOTE := -endif - # Include tools installers include $(ROOT_DIR)/make/tools.mk @@ -136,7 +109,7 @@ ifeq ($(UNAME), Linux) else ifeq ($(UNAME), Darwin) QT_SPEC = macx-g++ UAVOBJGENERATOR = "$(BUILD_DIR)/uavobjgenerator/uavobjgenerator" -else +else ifeq ($(UNAME), Windows) QT_SPEC = win32-g++ UAVOBJGENERATOR = "$(BUILD_DIR)/uavobjgenerator/$(UAVOGEN_BUILD_CONF)/uavobjgenerator.exe" endif @@ -846,8 +819,10 @@ help: @$(ECHO) " Here is a summary of the available targets:" @$(ECHO) @$(ECHO) " [Tool Installers]" - @$(ECHO) " qt_sdk_install - Install the QT development tools" @$(ECHO) " arm_sdk_install - Install the GNU ARM gcc toolchain" + @$(ECHO) " qt_sdk_install - Install the QT development tools" + @$(ECHO) " mingw_install - Install the MinGW toolchain (Windows only)" + @$(ECHO) " python_install - Install the Python interpreter (Windows only)" @$(ECHO) " openocd_install - Install the OpenOCD JTAG daemon" @$(ECHO) " stm32flash_install - Install the stm32flash tool for unbricking F1-based boards" @$(ECHO) " dfuutil_install - Install the dfu-util tool for unbricking F4-based boards" diff --git a/artwork/3D Model/boards/OPGPS/OPGPS.3DS b/artwork/3D Model/boards/OPGPS/OPGPS.3DS new file mode 100644 index 000000000..c6bbed975 Binary files /dev/null and b/artwork/3D Model/boards/OPGPS/OPGPS.3DS differ diff --git a/artwork/3D Model/boards/OPGPS/OPGPS.jpg b/artwork/3D Model/boards/OPGPS/OPGPS.jpg new file mode 100644 index 000000000..319696a04 Binary files /dev/null and b/artwork/3D Model/boards/OPGPS/OPGPS.jpg differ diff --git a/artwork/3D Model/boards/OPGPS/TEXTURE.PNG b/artwork/3D Model/boards/OPGPS/TEXTURE.PNG new file mode 100644 index 000000000..23f8c3b14 Binary files /dev/null and b/artwork/3D Model/boards/OPGPS/TEXTURE.PNG differ diff --git a/artwork/3D Model/boards/OPLink/OPLink.3DS b/artwork/3D Model/boards/OPLink/OPLink.3DS new file mode 100644 index 000000000..cfe56f1c4 Binary files /dev/null and b/artwork/3D Model/boards/OPLink/OPLink.3DS differ diff --git a/artwork/3D Model/boards/OPLink/OPLink.jpg b/artwork/3D Model/boards/OPLink/OPLink.jpg new file mode 100644 index 000000000..e5b1aac6d Binary files /dev/null and b/artwork/3D Model/boards/OPLink/OPLink.jpg differ diff --git a/artwork/3D Model/boards/OPLink/TEXTURE.PNG b/artwork/3D Model/boards/OPLink/TEXTURE.PNG new file mode 100644 index 000000000..ee659614d Binary files /dev/null and b/artwork/3D Model/boards/OPLink/TEXTURE.PNG differ diff --git a/artwork/3D Model/boards/Revolution/Revolution.3DS b/artwork/3D Model/boards/Revolution/Revolution.3DS new file mode 100644 index 000000000..58cfe8d6d Binary files /dev/null and b/artwork/3D Model/boards/Revolution/Revolution.3DS differ diff --git a/artwork/3D Model/boards/Revolution/Revolution.jpg b/artwork/3D Model/boards/Revolution/Revolution.jpg new file mode 100644 index 000000000..8d55053b0 Binary files /dev/null and b/artwork/3D Model/boards/Revolution/Revolution.jpg differ diff --git a/artwork/3D Model/boards/Revolution/TEXTURE.PNG b/artwork/3D Model/boards/Revolution/TEXTURE.PNG new file mode 100644 index 000000000..cfc4d7f6a Binary files /dev/null and b/artwork/3D Model/boards/Revolution/TEXTURE.PNG differ diff --git a/artwork/3D Model/multi/joes_cnc/CC.PNG b/artwork/3D Model/multi/joes_cnc/CC.PNG deleted file mode 100644 index 467f34a97..000000000 Binary files a/artwork/3D Model/multi/joes_cnc/CC.PNG and /dev/null differ diff --git a/artwork/3D Model/multi/joes_cnc/J14-QT_+.3DS b/artwork/3D Model/multi/joes_cnc/J14-QT_+.3DS index 1879b07c6..9d0d2de8c 100644 Binary files a/artwork/3D Model/multi/joes_cnc/J14-QT_+.3DS and b/artwork/3D Model/multi/joes_cnc/J14-QT_+.3DS differ diff --git a/artwork/3D Model/multi/joes_cnc/J14-QT_X.3DS b/artwork/3D Model/multi/joes_cnc/J14-QT_X.3DS index f26dacb45..a29de2543 100644 Binary files a/artwork/3D Model/multi/joes_cnc/J14-QT_X.3DS and b/artwork/3D Model/multi/joes_cnc/J14-QT_X.3DS differ diff --git a/artwork/3D Model/multi/joes_cnc/J14-Q_+.3DS b/artwork/3D Model/multi/joes_cnc/J14-Q_+.3DS index 21fbccf01..d4bb3dfbf 100644 Binary files a/artwork/3D Model/multi/joes_cnc/J14-Q_+.3DS and b/artwork/3D Model/multi/joes_cnc/J14-Q_+.3DS differ diff --git a/artwork/3D Model/multi/joes_cnc/J14-Q_X.3DS b/artwork/3D Model/multi/joes_cnc/J14-Q_X.3DS index 529e60fac..cb0f3e995 100644 Binary files a/artwork/3D Model/multi/joes_cnc/J14-Q_X.3DS and b/artwork/3D Model/multi/joes_cnc/J14-Q_X.3DS differ diff --git a/artwork/3D Model/multi/joes_cnc/TEXTURE.JPG b/artwork/3D Model/multi/joes_cnc/TEXTURE.JPG new file mode 100644 index 000000000..9e5500340 Binary files /dev/null and b/artwork/3D Model/multi/joes_cnc/TEXTURE.JPG differ diff --git a/artwork/3D Model/multi/joes_cnc/TEXTURE.PNG b/artwork/3D Model/multi/joes_cnc/TEXTURE.PNG deleted file mode 100644 index 5d26bb120..000000000 Binary files a/artwork/3D Model/multi/joes_cnc/TEXTURE.PNG and /dev/null differ diff --git a/artwork/PFD/pfd.svg b/artwork/PFD/pfd.svg index 6313bf1df..abdc4f8c5 100755 --- a/artwork/PFD/pfd.svg +++ b/artwork/PFD/pfd.svg @@ -14,12 +14,12 @@ height="707.56323" id="svg2" version="1.1" - inkscape:version="0.48.1 " - sodipodi:docname="pfd.svg" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="pfd-11.svg" style="display:inline" - inkscape:export-filename="H:\Documents\Hobbies\OpenPilot\SVN\artwork\PFD-2.png" - inkscape:export-xdpi="269.53" - inkscape:export-ydpi="269.53"> + inkscape:export-filename="C:\Users\Nuno\Desktop\OpenPilot\PFD\PFD-4.png" + inkscape:export-xdpi="71.993568" + inkscape:export-ydpi="71.993568"> + + + + + + + + @@ -1696,7 +1728,7 @@ + transform="matrix(4.6362185,0,0,1.9084264,-1475.4746,-363.49767)" + id="world-bg" + inkscape:label="#g4280"> + id="ground" + style="fill:url(#linearGradient5597);fill-opacity:1;stroke:none" + inkscape:label="#rect3724" /> + rx="2.7755576e-017" + inkscape:label="#rect2942" /> - 10 - 10 - - - - - 20 - 20 - - - - - -10 - -10 - - - - - - - - - - - - - - - - - - - -20 - -20 - - + style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:label="#path3808" /> + + + 10 + + + 10 + + + 20 + + + 20 + + + -10 + + + -10 + + + -20 + + + -20 + + + + + + + + + + + + + + + transform="translate(230.4171,-2.5493479)" + sodipodi:insensitive="true"> @@ -2102,8 +2051,8 @@ @@ -2278,13 +2227,370 @@ x1="460.75775" style="fill:none;stroke:#ffffff;stroke-width:2.61937094;display:inline" /> + SPD + + ALT + m/s + m + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 1 + 2 + 1 + + + + ft/s + VSI + + + + + - diff --git a/flight/targets/EntireFlash/Makefile b/flight/targets/EntireFlash/Makefile index 6b2910f94..671514d1a 100644 --- a/flight/targets/EntireFlash/Makefile +++ b/flight/targets/EntireFlash/Makefile @@ -21,6 +21,7 @@ ifndef OPENPILOT_IS_COOL endif include $(ROOT_DIR)/make/boards/$(BOARD_NAME)/board-info.mk +include $(ROOT_DIR)/make/firmware-defs.mk # Paths TOPDIR = . diff --git a/ground/openpilotgcs/bin/openpilotgcs b/ground/openpilotgcs/bin/openpilotgcs old mode 100644 new mode 100755 diff --git a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml index 5050e9f23..ebf05396c 100644 --- a/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml +++ b/ground/openpilotgcs/share/openpilotgcs/default_configurations/OpenPilotGCS.xml @@ -1570,6 +1570,28 @@ false + + + false + 0.0.0 + + + %%DATAPATH%%models/boards/Revolution/revolution.3ds + %%DATAPATH%%models/backgrounds/default_background.png + false + + + + + false + 0.0.0 + + + %%DATAPATH%%models/planes/zagi/zagi.3ds + %%DATAPATH%%models/backgrounds/default_background.png + false + + false diff --git a/ground/openpilotgcs/share/openpilotgcs/models/boards/Revolution/Revolution.3DS b/ground/openpilotgcs/share/openpilotgcs/models/boards/Revolution/Revolution.3DS new file mode 100644 index 000000000..58cfe8d6d Binary files /dev/null and b/ground/openpilotgcs/share/openpilotgcs/models/boards/Revolution/Revolution.3DS differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/boards/Revolution/TEXTURE.PNG b/ground/openpilotgcs/share/openpilotgcs/models/boards/Revolution/TEXTURE.PNG new file mode 100644 index 000000000..cfc4d7f6a Binary files /dev/null and b/ground/openpilotgcs/share/openpilotgcs/models/boards/Revolution/TEXTURE.PNG differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/CC.PNG b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/CC.PNG deleted file mode 100644 index 467f34a97..000000000 Binary files a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/CC.PNG and /dev/null differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-QT_+.3DS b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-QT_+.3DS old mode 100644 new mode 100755 index 1879b07c6..9d0d2de8c Binary files a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-QT_+.3DS and b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-QT_+.3DS differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-QT_X.3DS b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-QT_X.3DS old mode 100644 new mode 100755 index f26dacb45..a29de2543 Binary files a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-QT_X.3DS and b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-QT_X.3DS differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-Q_+.3DS b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-Q_+.3DS old mode 100644 new mode 100755 index 21fbccf01..d4bb3dfbf Binary files a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-Q_+.3DS and b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-Q_+.3DS differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-Q_X.3DS b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-Q_X.3DS old mode 100644 new mode 100755 index 529e60fac..cb0f3e995 Binary files a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-Q_X.3DS and b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/J14-Q_X.3DS differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/TEXTURE.JPG b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/TEXTURE.JPG new file mode 100644 index 000000000..9e5500340 Binary files /dev/null and b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/TEXTURE.JPG differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/TEXTURE.PNG b/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/TEXTURE.PNG deleted file mode 100644 index 5d26bb120..000000000 Binary files a/ground/openpilotgcs/share/openpilotgcs/models/multi/joes_cnc/TEXTURE.PNG and /dev/null differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/planes/zagi/texture.jpg b/ground/openpilotgcs/share/openpilotgcs/models/planes/zagi/texture.jpg new file mode 100755 index 000000000..2d1722d91 Binary files /dev/null and b/ground/openpilotgcs/share/openpilotgcs/models/planes/zagi/texture.jpg differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/planes/zagi/zagi.3ds b/ground/openpilotgcs/share/openpilotgcs/models/planes/zagi/zagi.3ds new file mode 100755 index 000000000..232cdef5d Binary files /dev/null and b/ground/openpilotgcs/share/openpilotgcs/models/planes/zagi/zagi.3ds differ diff --git a/ground/openpilotgcs/share/openpilotgcs/models/planes/zagi/zagi.jpg b/ground/openpilotgcs/share/openpilotgcs/models/planes/zagi/zagi.jpg new file mode 100755 index 000000000..18d592291 Binary files /dev/null and b/ground/openpilotgcs/share/openpilotgcs/models/planes/zagi/zagi.jpg differ diff --git a/ground/openpilotgcs/share/openpilotgcs/pfd/default/pfd.svg b/ground/openpilotgcs/share/openpilotgcs/pfd/default/pfd.svg index 2fb70210c..abdc4f8c5 100755 --- a/ground/openpilotgcs/share/openpilotgcs/pfd/default/pfd.svg +++ b/ground/openpilotgcs/share/openpilotgcs/pfd/default/pfd.svg @@ -15,7 +15,7 @@ id="svg2" version="1.1" inkscape:version="0.48.3.1 r9886" - sodipodi:docname="pfd-6.svg" + sodipodi:docname="pfd-11.svg" style="display:inline" inkscape:export-filename="C:\Users\Nuno\Desktop\OpenPilot\PFD\PFD-4.png" inkscape:export-xdpi="71.993568" @@ -1615,14 +1615,14 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="1" - inkscape:cx="568.94653" - inkscape:cy="247.78161" + inkscape:zoom="1.1617336" + inkscape:cx="415.72223" + inkscape:cy="353.78162" inkscape:document-units="px" - inkscape:current-layer="layer41" + inkscape:current-layer="svg2" showgrid="false" - inkscape:window-width="1680" - inkscape:window-height="987" + inkscape:window-width="1920" + inkscape:window-height="1017" inkscape:window-x="-4" inkscape:window-y="-4" inkscape:window-maximized="1" @@ -1721,7 +1721,7 @@ image/svg+xml - + @@ -2227,6 +2227,66 @@ x1="460.75775" style="fill:none;stroke:#ffffff;stroke-width:2.61937094;display:inline" /> + SPD + + ALT + m/s + m + style="display:inline" + sodipodi:insensitive="true"> + inkscape:label="vsi-window" + style="display:inline" + sodipodi:insensitive="true"> 1 + + + ft/s + VSI + + + id="g10197" + transform="translate(62,-40)"> 1250m diff --git a/ground/openpilotgcs/src/plugins/uavobjectutil/devicedescriptorstruct.h b/ground/openpilotgcs/src/plugins/uavobjectutil/devicedescriptorstruct.h index d1f1eb523..fb7cf2288 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectutil/devicedescriptorstruct.h +++ b/ground/openpilotgcs/src/plugins/uavobjectutil/devicedescriptorstruct.h @@ -15,28 +15,35 @@ public: static QString idToBoardName(int id) { switch (id) { - case 0x0101://MB + case 0x0101: + // MB return QString("OpenPilot MainBoard"); break; - case 0x0201://INS + case 0x0201: + // INS return QString("OpenPilot INS"); break; - case 0x0301://PipX + case 0x0301: + // OPLink Mini return QString("OPLink"); break; - case 0x0401://Coptercontrol + case 0x0401: + // Coptercontrol return QString("CopterControl"); break; - case 0x0402://Coptercontrol + case 0x0402: + // Coptercontrol 3D // It would be nice to say CC3D here but since currently we use string comparisons // for firmware compatibility and the filename path that would break return QString("CopterControl"); break; - case 0x0901://Revolution + case 0x0901: + // Revolution return QString("Revolution"); break; - case 0x0903://Revomini - return QString("Revomini"); + case 0x0903: + // Revo Mini + return QString("Revolution"); break; default: return QString(""); diff --git a/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp b/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp index 081a847c2..f2e7b9c73 100644 --- a/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp @@ -26,7 +26,7 @@ */ #include "devicewidget.h" -deviceWidget::deviceWidget(QWidget *parent) : +DeviceWidget::DeviceWidget(QWidget *parent) : QWidget(parent) { myDevice = new Ui_deviceWidget(); @@ -47,8 +47,7 @@ deviceWidget::deviceWidget(QWidget *parent) : myDevice->lblCertified->setText(""); } - -void deviceWidget::showEvent(QShowEvent *event) +void DeviceWidget::showEvent(QShowEvent *event) { Q_UNUSED(event) // Thit fitInView method should only be called now, once the @@ -57,18 +56,18 @@ void deviceWidget::showEvent(QShowEvent *event) myDevice->gVDevice->fitInView(devicePic.rect(),Qt::KeepAspectRatio); } -void deviceWidget::resizeEvent(QResizeEvent* event) +void DeviceWidget::resizeEvent(QResizeEvent* event) { Q_UNUSED(event); myDevice->gVDevice->fitInView(devicePic.rect(), Qt::KeepAspectRatio); } - -void deviceWidget::setDeviceID(int devID){ +void DeviceWidget::setDeviceID(int devID) +{ deviceID = devID; } -void deviceWidget::setDfu(DFUObject *dfu) +void DeviceWidget::setDfu(DFUObject *dfu) { m_dfu = dfu; } @@ -76,9 +75,8 @@ void deviceWidget::setDfu(DFUObject *dfu) /** Fills the various fields for the device */ -void deviceWidget::populate() +void DeviceWidget::populate() { - int id = m_dfu->devices[deviceID].ID; myDevice->lbldevID->setText(QString("Device ID: ") + QString::number(id, 16)); // DeviceID tells us what sort of HW we have detected: @@ -89,13 +87,11 @@ void deviceWidget::populate() switch (id) { case 0x0101: - devicePic.load("");//TODO - break; case 0x0201: - devicePic.load("");//TODO + devicePic.load(""); break; case 0x0301: - devicePic.load(":/uploader/images/pipx.png"); + devicePic.load(":/uploader/images/gcs-board-oplink.png"); break; case 0x0401: devicePic.load(":/uploader/images/gcs-board-cc.png"); @@ -103,7 +99,12 @@ void deviceWidget::populate() case 0x0402: devicePic.load(":/uploader/images/gcs-board-cc3d.png"); break; + case 0x0903: + devicePic.load(":/uploader/images/gcs-board-revo.png"); + break; default: + // Clear + devicePic.load(""); break; } myDevice->gVDevice->scene()->addPixmap(devicePic); @@ -141,12 +142,12 @@ void deviceWidget::populate() Freezes the contents of the widget so that a user cannot try to modify the contents */ -void deviceWidget::freeze() +void DeviceWidget::freeze() { updateButtons(false); } -void deviceWidget::updateButtons(bool enabled) +void DeviceWidget::updateButtons(bool enabled) { if (!enabled) { myDevice->description->setEnabled(false); @@ -171,22 +172,19 @@ void deviceWidget::updateButtons(bool enabled) Populates the widget field with the description in case it is structured properly */ -bool deviceWidget::populateBoardStructuredDescription(QByteArray desc) +bool DeviceWidget::populateBoardStructuredDescription(QByteArray desc) { - if(UAVObjectUtilManager::descriptionToStructure(desc,onBoardDescription)) - { + if(UAVObjectUtilManager::descriptionToStructure(desc,onBoardDescription)) { myDevice->lblGitTag->setText(onBoardDescription.gitHash); myDevice->lblBuildDate->setText(onBoardDescription.gitDate.insert(4,"-").insert(7,"-")); - if(onBoardDescription.gitTag.startsWith("RELEASE",Qt::CaseSensitive)) - { + if(onBoardDescription.gitTag.startsWith("RELEASE",Qt::CaseSensitive)) { myDevice->lblDescription->setText(onBoardDescription.gitTag); QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg")); myDevice->lblCertified->setPixmap(pix); myDevice->lblCertified->setToolTip(tr("Tagged officially released firmware build")); } - else - { + else { myDevice->lblDescription->setText(onBoardDescription.gitTag); QPixmap pix = QPixmap(QString(":uploader/images/warning.svg")); myDevice->lblCertified->setPixmap(pix); @@ -199,24 +197,20 @@ bool deviceWidget::populateBoardStructuredDescription(QByteArray desc) } return false; - } -bool deviceWidget::populateLoadedStructuredDescription(QByteArray desc) + +bool DeviceWidget::populateLoadedStructuredDescription(QByteArray desc) { - if(UAVObjectUtilManager::descriptionToStructure(desc,LoadedDescription)) - { + if(UAVObjectUtilManager::descriptionToStructure(desc,LoadedDescription)) { myDevice->lblGitTagL->setText(LoadedDescription.gitHash); - myDevice->lblBuildDateL->setText( LoadedDescription.gitDate.insert(4,"-").insert(7,"-")); - if(LoadedDescription.gitTag.startsWith("RELEASE",Qt::CaseSensitive)) - { + myDevice->lblBuildDateL->setText( LoadedDescription.gitDate.insert(4, "-").insert(7, "-")); + if(LoadedDescription.gitTag.startsWith("RELEASE",Qt::CaseSensitive)) { myDevice->lblDescritpionL->setText(LoadedDescription.gitTag); myDevice->description->setText(LoadedDescription.gitTag); QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg")); myDevice->lblCertifiedL->setPixmap(pix); myDevice->lblCertifiedL->setToolTip(tr("Tagged officially released firmware build")); - } - else - { + } else { myDevice->lblDescritpionL->setText(LoadedDescription.gitTag); myDevice->description->setText(LoadedDescription.gitTag); QPixmap pix = QPixmap(QString(":uploader/images/warning.svg")); @@ -227,19 +221,18 @@ bool deviceWidget::populateLoadedStructuredDescription(QByteArray desc) return true; } - return false; - } + /** Updates status message for messages coming from DFU */ -void deviceWidget::dfuStatus(QString str) +void DeviceWidget::dfuStatus(QString str) { status(str, STATUSICON_RUNNING); } -void deviceWidget::confirmCB(int value) +void DeviceWidget::confirmCB(int value) { updateButtons(true); } @@ -247,7 +240,7 @@ void deviceWidget::confirmCB(int value) /** Updates status message */ -void deviceWidget::status(QString str, StatusIcon ic) +void DeviceWidget::status(QString str, StatusIcon ic) { QPixmap px; myDevice->statusLabel->setText(str); @@ -267,8 +260,7 @@ void deviceWidget::status(QString str, StatusIcon ic) myDevice->statusIcon->setPixmap(px); } - -void deviceWidget::loadFirmware() +void DeviceWidget::loadFirmware() { myDevice->verticalGroupBox_loaded->setVisible(false); myDevice->groupCustom->setVisible(false); @@ -295,13 +287,12 @@ void deviceWidget::loadFirmware() QPixmap px; if (loadedFW.length()>m_dfu->devices[deviceID].SizeOfCode) { myDevice->lblCRCL->setText(tr("Can't calculate, file too big for device")); - } - else { + } else { myDevice->lblCRCL->setText( QString::number(DFUObject::CRCFromQBArray(loadedFW,m_dfu->devices[deviceID].SizeOfCode))); } + //myDevice->lblFirmwareSizeL->setText(QString("Firmware size: ")+QVariant(loadedFW.length()).toString()+ QString(" bytes")); - if (populateLoadedStructuredDescription(desc)) - { + if (populateLoadedStructuredDescription(desc)) { myDevice->confirmCheckBox->setChecked(true); myDevice->verticalGroupBox_loaded->setVisible(true); myDevice->groupCustom->setVisible(false); @@ -335,7 +326,7 @@ void deviceWidget::loadFirmware() /** Sends a firmware to the device */ -void deviceWidget::uploadFirmware() +void DeviceWidget::uploadFirmware() { // clear progress bar now // this avoids displaying an error message and the progress at 100% at the same time @@ -418,7 +409,7 @@ void deviceWidget::uploadFirmware() /** Retrieves the firmware from the device */ -void deviceWidget::downloadFirmware() +void DeviceWidget::downloadFirmware() { // clear progress bar now // this avoids displaying an error message and the progress at 100% at the same time @@ -462,7 +453,7 @@ void deviceWidget::downloadFirmware() /** Callback for the firmware download result */ -void deviceWidget::downloadFinished() +void DeviceWidget::downloadFinished() { disconnect(m_dfu, SIGNAL(downloadFinished()), this, SLOT(downloadFinished())); disconnect(m_dfu, SIGNAL(progressUpdated(int)), this, SLOT(setProgress(int))); @@ -478,7 +469,7 @@ void deviceWidget::downloadFinished() /** Callback for the firmware upload result */ -void deviceWidget::uploadFinished(OP_DFU::Status retstatus) +void DeviceWidget::uploadFinished(OP_DFU::Status retstatus) { disconnect(m_dfu, SIGNAL(uploadFinished(OP_DFU::Status)), this, SLOT(uploadFinished(OP_DFU::Status))); disconnect(m_dfu, SIGNAL(progressUpdated(int)), this, SLOT(setProgress(int))); @@ -525,7 +516,7 @@ void deviceWidget::uploadFinished(OP_DFU::Status retstatus) /** Slot to update the progress bar */ -void deviceWidget::setProgress(int percent) +void DeviceWidget::setProgress(int percent) { myDevice->progressBar->setValue(percent); } @@ -533,7 +524,7 @@ void deviceWidget::setProgress(int percent) /** *Opens an open file dialog. */ -QString deviceWidget::setOpenFileName() +QString DeviceWidget::setOpenFileName() { QFileDialog::Options options; QString selectedFilter; @@ -572,7 +563,7 @@ QString deviceWidget::setOpenFileName() /** *Set the save file name */ -QString deviceWidget::setSaveFileName() +QString DeviceWidget::setSaveFileName() { QFileDialog::Options options; QString selectedFilter; diff --git a/ground/openpilotgcs/src/plugins/uploader/devicewidget.h b/ground/openpilotgcs/src/plugins/uploader/devicewidget.h index bc44b8883..b87988c16 100644 --- a/ground/openpilotgcs/src/plugins/uploader/devicewidget.h +++ b/ground/openpilotgcs/src/plugins/uploader/devicewidget.h @@ -45,11 +45,11 @@ #include "uploader_global.h" using namespace OP_DFU; -class UPLOADER_EXPORT deviceWidget : public QWidget +class UPLOADER_EXPORT DeviceWidget : public QWidget { Q_OBJECT public: - deviceWidget(QWidget *parent = 0); + DeviceWidget(QWidget *parent = 0); void setDeviceID(int devID); void setDfu(DFUObject* dfu); void populate(); diff --git a/ground/openpilotgcs/src/plugins/uploader/devicewidget.ui b/ground/openpilotgcs/src/plugins/uploader/devicewidget.ui index b7c7849da..cc1aec074 100644 --- a/ground/openpilotgcs/src/plugins/uploader/devicewidget.ui +++ b/ground/openpilotgcs/src/plugins/uploader/devicewidget.ui @@ -6,7 +6,7 @@ 0 0 - 576 + 584 500 @@ -24,18 +24,27 @@ - + 160 160 + + + 350 + 350 + + background: transparent QFrame::NoFrame + + QPainter::HighQualityAntialiasing + diff --git a/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc.png b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc.png index ee096b76e..ee6affc3c 100644 Binary files a/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc.png and b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc.png differ diff --git a/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc3d.png b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc3d.png index 69fd4aa8c..24326c952 100644 Binary files a/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc3d.png and b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-cc3d.png differ diff --git a/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-oplink.png b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-oplink.png new file mode 100644 index 000000000..34cadf8bf Binary files /dev/null and b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-oplink.png differ diff --git a/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-revo.png b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-revo.png new file mode 100644 index 000000000..7580003ba Binary files /dev/null and b/ground/openpilotgcs/src/plugins/uploader/images/gcs-board-revo.png differ diff --git a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.cpp b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.cpp index 143d1e81c..539a3042f 100644 --- a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.cpp @@ -27,7 +27,8 @@ #include "runningdevicewidget.h" #include "devicedescriptorstruct.h" #include "uploadergadgetwidget.h" -runningDeviceWidget::runningDeviceWidget(QWidget *parent) : + +RunningDeviceWidget::RunningDeviceWidget(QWidget *parent) : QWidget(parent) { myDevice = new Ui_runningDeviceWidget(); @@ -35,11 +36,9 @@ runningDeviceWidget::runningDeviceWidget(QWidget *parent) : // Initialization of the Device icon display myDevice->devicePicture->setScene(new QGraphicsScene(this)); - } - -void runningDeviceWidget::showEvent(QShowEvent *event) +void RunningDeviceWidget::showEvent(QShowEvent *event) { Q_UNUSED(event) // Thit fitInView method should only be called now, once the @@ -48,7 +47,7 @@ void runningDeviceWidget::showEvent(QShowEvent *event) myDevice->devicePicture->fitInView(devicePic.rect(),Qt::KeepAspectRatio); } -void runningDeviceWidget::resizeEvent(QResizeEvent* event) +void RunningDeviceWidget::resizeEvent(QResizeEvent* event) { Q_UNUSED(event); myDevice->devicePicture->fitInView(devicePic.rect(), Qt::KeepAspectRatio); @@ -57,31 +56,28 @@ void runningDeviceWidget::resizeEvent(QResizeEvent* event) /** Fills the various fields for the device */ -void runningDeviceWidget::populate() +void RunningDeviceWidget::populate() { - ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); UAVObjectUtilManager* utilMngr = pm->getObject(); int id = utilMngr->getBoardModel(); myDevice->lblDeviceID->setText(QString("Device ID: ") + QString::number(id, 16)); myDevice->lblBoardName->setText(deviceDescriptorStruct::idToBoardName(id)); - myDevice->lblHWRev->setText(QString(tr("HW Revision: "))+QString::number(id & 0x00FF, 16)); - qDebug()<<"CRC"<getFirmwareCRC(); - myDevice->lblCRC->setText(QString(tr("Firmware CRC: "))+QVariant(utilMngr->getFirmwareCRC()).toString()); + myDevice->lblHWRev->setText(QString(tr("HW Revision: ")) + QString::number(id & 0x00FF, 16)); + qDebug() << "CRC" << utilMngr->getFirmwareCRC(); + myDevice->lblCRC->setText(QString(tr("Firmware CRC: ")) + QVariant(utilMngr->getFirmwareCRC()).toString()); // DeviceID tells us what sort of HW we have detected: // display a nice icon: myDevice->devicePicture->scene()->clear(); switch (id) { case 0x0101: - devicePic.load("");//TODO - break; case 0x0201: - devicePic.load("");//TODO + devicePic.load(""); break; case 0x0301: - devicePic.load(":/uploader/images/pipx.png"); + devicePic.load(":/uploader/images/gcs-board-oplink.png"); break; case 0x0401: devicePic.load(":/uploader/images/gcs-board-cc.png"); @@ -89,7 +85,12 @@ void runningDeviceWidget::populate() case 0x0402: devicePic.load(":/uploader/images/gcs-board-cc3d.png"); break; + case 0x0903: + devicePic.load(":/uploader/images/gcs-board-revo.png"); + break; default: + // Clear + devicePic.load(""); break; } myDevice->devicePicture->scene()->addPixmap(devicePic); @@ -97,65 +98,31 @@ void runningDeviceWidget::populate() myDevice->devicePicture->fitInView(devicePic.rect(),Qt::KeepAspectRatio); QString serial = utilMngr->getBoardCPUSerial().toHex(); - myDevice->CPUSerial->setText(serial); + myDevice->CPUSerial->setText(serial); QByteArray description = utilMngr->getBoardDescription(); deviceDescriptorStruct devDesc; - if(UAVObjectUtilManager::descriptionToStructure(description,devDesc)) - { - if(devDesc.gitTag.startsWith("RELEASE",Qt::CaseSensitive)) - { - myDevice->lblFWTag->setText(QString("Firmware tag: ")+devDesc.gitTag); + if(UAVObjectUtilManager::descriptionToStructure(description, devDesc)) { + if(devDesc.gitTag.startsWith("RELEASE",Qt::CaseSensitive)) { + myDevice->lblFWTag->setText(QString("Firmware tag: ") + devDesc.gitTag); QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg")); myDevice->lblCertified->setPixmap(pix); myDevice->lblCertified->setToolTip(tr("Tagged officially released firmware build")); - } - else - { - myDevice->lblFWTag->setText(QString("Firmware tag: ")+devDesc.gitTag); + } else { + myDevice->lblFWTag->setText(QString("Firmware tag: ") + devDesc.gitTag); QPixmap pix = QPixmap(QString(":uploader/images/warning.svg")); myDevice->lblCertified->setPixmap(pix); myDevice->lblCertified->setToolTip(tr("Untagged or custom firmware build")); } - myDevice->lblGitCommitTag->setText("Git commit hash: "+devDesc.gitHash); + myDevice->lblGitCommitTag->setText("Git commit hash: " + devDesc.gitHash); myDevice->lblFWDate->setText(QString("Firmware date: ") + devDesc.gitDate.insert(4,"-").insert(7,"-")); - } - else - { - - myDevice->lblFWTag->setText(QString("Firmware tag: ")+QString(description).left(QString(description).indexOf(QChar(255)))); + } else { + myDevice->lblFWTag->setText(QString("Firmware tag: ") + QString(description).left(QString(description).indexOf(QChar(255)))); myDevice->lblGitCommitTag->setText("Git commit tag: Unknown"); myDevice->lblFWDate->setText(QString("Firmware date: Unknown")); QPixmap pix = QPixmap(QString(":uploader/images/warning.svg")); myDevice->lblCertified->setPixmap(pix); myDevice->lblCertified->setToolTip(tr("Custom Firmware Build")); } - //status("Ready...", STATUSICON_INFO); } - - -/** - Updates status message - */ -/* -void runningDeviceWidget::status(QString str, StatusIcon ic) -{ - QPixmap px; - myDevice->statusLabel->setText(str); - switch (ic) { - case STATUSICON_RUNNING: - px.load(QString(":/uploader/images/system-run.svg")); - break; - case STATUSICON_OK: - px.load(QString(":/uploader/images/dialog-apply.svg")); - break; - case STATUSICON_FAIL: - px.load(QString(":/uploader/images/process-stop.svg")); - break; - default: - px.load(QString(":/uploader/images/gtk-info.svg")); - } - myDevice->statusIcon->setPixmap(px); -} -*/ diff --git a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.h b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.h index 18b354cce..15a3d5b71 100644 --- a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.h +++ b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.h @@ -41,11 +41,11 @@ #include "uavobjectutilmanager.h" #include "uploader_global.h" -class UPLOADER_EXPORT runningDeviceWidget : public QWidget +class UPLOADER_EXPORT RunningDeviceWidget : public QWidget { Q_OBJECT public: - runningDeviceWidget( QWidget *parent = 0); + RunningDeviceWidget( QWidget *parent = 0); void populate(); void freeze(); QString setOpenFileName(); @@ -58,7 +58,6 @@ private: QPixmap devicePic; //void status(QString str, StatusIcon ic); - signals: protected: diff --git a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui index b873ded19..05f5b7eaf 100644 --- a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui +++ b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui @@ -6,8 +6,8 @@ 0 0 - 516 - 299 + 561 + 387 @@ -22,12 +22,18 @@ - + 160 160 + + + 350 + 350 + + background: transparent @@ -43,12 +49,21 @@ Qt::ScrollBarAlwaysOff + + QPainter::HighQualityAntialiasing + + + + 0 + 0 + + TextLabel @@ -56,6 +71,12 @@ + + + 0 + 0 + + TextLabel @@ -63,6 +84,12 @@ + + + 0 + 0 + + TextLabel @@ -72,6 +99,12 @@ + + + 0 + 0 + + CPU Serial: @@ -79,6 +112,12 @@ + + + 0 + 0 + + true @@ -86,8 +125,34 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + diff --git a/ground/openpilotgcs/src/plugins/uploader/uploader.qrc b/ground/openpilotgcs/src/plugins/uploader/uploader.qrc index 2c21df666..d2cd82ca6 100644 --- a/ground/openpilotgcs/src/plugins/uploader/uploader.qrc +++ b/ground/openpilotgcs/src/plugins/uploader/uploader.qrc @@ -16,5 +16,7 @@ images/gcs-board-cc.png images/gcs-board-cc3d.png images/pipx.png + images/gcs-board-oplink.png + images/gcs-board-revo.png diff --git a/ground/openpilotgcs/src/plugins/uploader/uploader.ui b/ground/openpilotgcs/src/plugins/uploader/uploader.ui index 397573535..99f06b2a2 100644 --- a/ground/openpilotgcs/src/plugins/uploader/uploader.ui +++ b/ground/openpilotgcs/src/plugins/uploader/uploader.ui @@ -175,7 +175,7 @@ halting a running board. 0 - + Mainboard @@ -186,14 +186,14 @@ halting a running board. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">To upgrade the firmware in your boards, proceed as follows:</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Connect telemetry</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Once telemetry is running, press &quot;Halt&quot; above</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- You will get a list of devices.</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- You can then upload/download to/from each board as you wish</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- You can resume operations by pressing &quot;Boot&quot;</p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">To upgrade the firmware in your boards, proceed as follows:</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">- Connect telemetry</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">- Once telemetry is running, press &quot;Halt&quot; above</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">- You will get a list of devices.</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">- You can then upload/download to/from each board as you wish</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Ubuntu'; font-size:11pt;">- You can resume operations by pressing &quot;Boot&quot;</span></p></body></html> @@ -208,8 +208,8 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Ubuntu'; font-size:11pt;"><br /></p></body></html> diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp index 86c7ffcd6..1be9aa1ec 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp @@ -118,10 +118,10 @@ QString UploaderGadgetWidget::getPortDevice(const QString &friendName) void UploaderGadgetWidget::connectSignalSlot(QWidget *widget) { - connect(qobject_cast(widget),SIGNAL(uploadStarted()),this,SLOT(uploadStarted())); - connect(qobject_cast(widget),SIGNAL(uploadEnded(bool)),this,SLOT(uploadEnded(bool))); - connect(qobject_cast(widget),SIGNAL(downloadStarted()),this,SLOT(downloadStarted())); - connect(qobject_cast(widget),SIGNAL(downloadEnded(bool)),this,SLOT(downloadEnded(bool))); + connect(qobject_cast(widget),SIGNAL(uploadStarted()),this,SLOT(uploadStarted())); + connect(qobject_cast(widget),SIGNAL(uploadEnded(bool)),this,SLOT(uploadEnded(bool))); + connect(qobject_cast(widget),SIGNAL(downloadStarted()),this,SLOT(downloadStarted())); + connect(qobject_cast(widget),SIGNAL(downloadEnded(bool)),this,SLOT(downloadEnded(bool))); } FlightStatus *UploaderGadgetWidget::getFlightStatus() @@ -147,7 +147,7 @@ void UploaderGadgetWidget::onPhisicalHWConnect() Enables widget buttons if autopilot connected */ void UploaderGadgetWidget::onAutopilotConnect(){ - QTimer::singleShot(1000,this,SLOT(populate())); + QTimer::singleShot(1000, this, SLOT(populate())); } void UploaderGadgetWidget::populate() @@ -166,7 +166,7 @@ void UploaderGadgetWidget::populate() m_config->systemElements->removeTab(0); delete qw; } - runningDeviceWidget* dw = new runningDeviceWidget(this); + RunningDeviceWidget* dw = new RunningDeviceWidget(this); dw->populate(); m_config->systemElements->addTab(dw, QString("Connected Device")); } @@ -175,6 +175,7 @@ void UploaderGadgetWidget::populate() Enables widget buttons if autopilot disconnected */ void UploaderGadgetWidget::onAutopilotDisconnect(){ + m_config->haltButton->setEnabled(false); m_config->resetButton->setEnabled(false); m_config->bootButton->setEnabled(true); @@ -188,7 +189,6 @@ void UploaderGadgetWidget::onAutopilotDisconnect(){ } } - /** Tell the mainboard to go to bootloader: - Send the relevant IAP commands @@ -332,7 +332,7 @@ void UploaderGadgetWidget::goToBootloader(UAVObject* callerObj, bool success) delete qw; } for(int i=0;inumberOfDevices;i++) { - deviceWidget* dw = new deviceWidget(this); + DeviceWidget* dw = new DeviceWidget(this); connectSignalSlot(dw); dw->setDeviceID(i); dw->setDfu(dfu); @@ -477,7 +477,7 @@ void UploaderGadgetWidget::commonSystemBoot(bool safeboot) for (int i=0; i< m_config->systemElements->count(); i++) { // OP-682 arriving here too "early" (before the devices are refreshed) was leading to a crash // OP-682 the crash was due to an unchecked cast in the line below that would cast a RunningDeviceGadget to a DeviceGadget - deviceWidget *qw = dynamic_cast(m_config->systemElements->widget(i)); + DeviceWidget *qw = dynamic_cast(m_config->systemElements->widget(i)); if (qw) { // OP-682 fixed a second crash by disabling *all* buttons in the device widget // disabling the buttons is only half of the solution as even if the buttons are enabled @@ -729,7 +729,7 @@ void UploaderGadgetWidget::systemRescue() return; } for(int i=0;inumberOfDevices;i++) { - deviceWidget* dw = new deviceWidget(this); + DeviceWidget* dw = new DeviceWidget(this); connectSignalSlot(dw); dw->setDeviceID(i); dw->setDfu(dfu); diff --git a/make/scripts/win_sdk_install.sh b/make/scripts/win_sdk_install.sh new file mode 100644 index 000000000..94297fa62 --- /dev/null +++ b/make/scripts/win_sdk_install.sh @@ -0,0 +1,96 @@ +#!/bin/bash +# +# win_sdk_install.sh - Windows toolchain install script. +# Copyright (c) 2013, The OpenPilot Team, http://www.openpilot.org +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +# This script should be launched from git bash prompt. It assumes MSYS +# environment and expects path names in the form of /C/some/path, where +# C is a drive letter, and paths are in MSYS format. It probably won't +# work under cygwin. +SCRIPT_PATH="`echo "$BASH_SOURCE" | sed 's|\\\\|/|g; s|^\(.\):|/\1|'`" +SCRIPT_NAME="`basename \"$SCRIPT_PATH\"`" +SCRIPT_DIR="`dirname \"$SCRIPT_PATH\"`" +ROOT_DIR="`pushd \"$SCRIPT_DIR/../..\" >/dev/null && pwd && popd >/dev/null`" +TOOLS_DIR="$ROOT_DIR/tools" + +# Tools URLs to fetch +WGET_URL="http://wiki.openpilot.org/download/attachments/18612236/wget.exe" +MAKE_URL="http://wiki.openpilot.org/download/attachments/18612236/make.exe" + +# Expected tools paths +WGET="$TOOLS_DIR/bin/`basename \"$WGET_URL\"`" +MAKE="$TOOLS_DIR/bin/`basename \"$MAKE_URL\"`" + +# wget is necessary to fetch other files +WGET_NAME="`basename \"$WGET\"`" +if [ ! -x "$WGET" ]; then + echo "$SCRIPT_NAME: $WGET_NAME not found, fetching from $WGET_URL" + mkdir -p "`dirname \"$WGET\"`" + + VBSCRIPT="$TOOLS_DIR/fetch.$$.vbs" + cat >"$VBSCRIPT" <<-EOF + url = WScript.Arguments.Item(0) + file = WScript.Arguments.Item(1) + + Dim xHttp: Set xHttp = CreateObject("MSXML2.ServerXMLHTTP") + xHttp.Open "GET", url, False + xHttp.setOption 2, SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS + xHttp.Send + + If xHttp.Status = 200 Then + Dim bStrm: Set bStrm = CreateObject("AdoDb.Stream") + With bStrm + .Type = 1 '// binary + .Open + .Write xHttp.ResponseBody + .SaveToFile file, 2 '// overwrite + .Close + End With + WScript.Quit(0) + Else + WScript.Quit(1) + End IF +EOF + + cscript "$VBSCRIPT" "$WGET_URL" "$WGET" + rc=$? + rm "$VBSCRIPT" + + if [ $rc -ne 0 ]; then + echo "$SCRIPT_NAME: $WGET_NAME fetch error, hope it's in the path..." + WGET="$WGET_NAME" + fi +fi + +# make is necessary to fetch all SDKs +MAKE_NAME="`basename \"$MAKE\"`" +if [ ! -x "$MAKE" ]; then + echo "$SCRIPT_NAME: $MAKE_NAME not found, fetching from $MAKE_URL" + MAKE_DIR="`dirname \"$MAKE\"`" + mkdir -p "$MAKE_DIR" + $WGET -N --content-disposition -P "$MAKE_DIR" "$MAKE_URL" + if [ $? -ne 0 ]; then + echo "$SCRIPT_NAME: $MAKE_NAME fetch error, hope it's in the path..." + MAKE="$MAKE_NAME" + fi +fi + +# Finally we can fetch all SDKs using top level Makefile +cd "$ROOT_DIR" +echo "Run 'tools/bin/make all_sdk_install' to install the other tools" +echo " or 'tools/bin/make help' for more info on make targets" diff --git a/make/tools.mk b/make/tools.mk index a8f8e0b9e..c1d97e741 100644 --- a/make/tools.mk +++ b/make/tools.mk @@ -8,11 +8,11 @@ # # Ready to use: # arm_sdk_install +# qt_sdk_install +# mingw_install (Windows only) +# python_install (Windows only) # # TODO: -# wget_win_install -# make_win_install -# qt_sdk_install # openocd_install # ftd2xx_install # libusb_win_install @@ -53,13 +53,25 @@ endif ifeq ($(UNAME), Linux) ARM_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/gcc-arm-none-eabi-4_7-2013q1-20130313-linux.tar.bz2 + ifeq ($(ARCH), x86_64) + QT_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/qt-4.8.4-linux-x64.tar.bz2 + else + QT_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/qt-4.8.4-linux.tar.bz2 + endif else ifeq ($(UNAME), Darwin) ARM_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/gcc-arm-none-eabi-4_7-2013q1-20130313-mac.tar.bz2 + QT_SDK_URL := TODO/qt-4.8.4-mac.tar.bz2 else ifeq ($(UNAME), Windows) ARM_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/gcc-arm-none-eabi-4_7-2013q1-20130313-windows.tar.bz2 + QT_SDK_URL := http://wiki.openpilot.org/download/attachments/18612236/qt-4.8.4-windows.tar.bz2 + MINGW_URL := http://wiki.openpilot.org/download/attachments/18612236/mingw-4.4.0.tar.bz2 + PYTHON_URL := http://wiki.openpilot.org/download/attachments/18612236/python-2.7.4-windows.tar.bz2 endif -ARM_SDK_DIR := $(TOOLS_DIR)/gcc-arm-none-eabi-4_7-2013q1 +ARM_SDK_DIR := $(TOOLS_DIR)/gcc-arm-none-eabi-4_7-2013q1 +QT_SDK_DIR := $(TOOLS_DIR)/qt-4.8.4 +MINGW_DIR := $(TOOLS_DIR)/mingw-4.4.0 +PYTHON_DIR := $(TOOLS_DIR)/python-2.7.4 ############################## # @@ -67,7 +79,10 @@ ARM_SDK_DIR := $(TOOLS_DIR)/gcc-arm-none-eabi-4_7-2013q1 # ############################## -ALL_SDK_TARGETS := arm_sdk +ALL_SDK_TARGETS := arm_sdk qt_sdk +ifeq ($(UNAME), Windows) + ALL_SDK_TARGETS += mingw python +endif .PHONY: all_sdk_install all_sdk_clean all_sdk_distclean all_sdk_version all_sdk_install: $(addsuffix _install,$(ALL_SDK_TARGETS)) @@ -75,6 +90,47 @@ all_sdk_clean: $(addsuffix _clean,$(ALL_SDK_TARGETS)) all_sdk_distclean: $(addsuffix _distclean,$(ALL_SDK_TARGETS)) all_sdk_version: $(addsuffix _version,$(ALL_SDK_TARGETS)) +############################## +# +# Misc host tools +# +############################## + +export MKDIR := mkdir +export CP := cp +export RM := rm +export LN := ln +export CAT := cat +export SED := sed +export TAR := tar +export ANT := ant +export JAVAC := javac +export JAR := jar +export GIT := git +export CURL := curl +export INSTALL := install +export MD5SUM := md5sum + +# Echo in recipes is a bit tricky in a Windows Git Bash window in some cases. +# It does not work if make started under msysGit installed into a path with spaces. +ifneq ($(UNAME), Windows) + export ECHO := echo +else +# export ECHO := $(PYTHON) -c "import sys; print(' '.join(sys.argv[1:]))" + export ECHO := echo +endif + +# Test if quotes are needed for the echo command +ifeq ($(shell $(ECHO) "test"), test) + export QUOTE := ' +# This line is just to clear out the single quote above ' +else + export QUOTE := +endif + +# Command to extract version info data from the repository and source tree +export VERSION_INFO = $(PYTHON) $(ROOT_DIR)/make/scripts/version-info.py --path=$(ROOT_DIR) + ############################## # # Misc settings @@ -82,17 +138,21 @@ all_sdk_version: $(addsuffix _version,$(ALL_SDK_TARGETS)) ############################## # Define messages +MSG_VERIFYING = $(QUOTE) VERIFY $(QUOTE) MSG_DOWNLOADING = $(QUOTE) DOWNLOAD $(QUOTE) +MSG_CHECKSUMMING = $(QUOTE) MD5 $(QUOTE) MSG_EXTRACTING = $(QUOTE) EXTRACT $(QUOTE) MSG_INSTALLING = $(QUOTE) INSTALL $(QUOTE) +MSG_CONFIGURING = $(QUOTE) CONFIGURE $(QUOTE) MSG_CLEANING = $(QUOTE) CLEAN $(QUOTE) MSG_DISTCLEANING = $(QUOTE) DISTCLEAN $(QUOTE) +MSG_NOTICE = $(QUOTE) NOTE $(QUOTE) # Verbosity level ifeq ($(V), 1) CURL_OPTIONS := else -# CURL_OPTIONS := --silent + CURL_OPTIONS := --silent endif # MSYS tar workaround @@ -102,47 +162,70 @@ else TAR_OPTIONS := endif -# Disable parallel make for sdk install targets to ensure ordered dependences -# like 'arm_sdk_clean | $(DL_DIR) $(TOOLS_DIR)'. They may fail otherwise being -# run in parallel +# Print some useful notes for *_install targets ifneq ($(strip $(filter $(addsuffix _install,all_sdk $(ALL_SDK_TARGETS)),$(MAKECMDGOALS))),) -.NOTPARALLEL: - $(info $(EMPTY) NOTE Parallel make disabled by some of sdk install targets) - $(info $(EMPTY) NOTE If some of install/extract targets failed, try 'make *_distclean' first) - $(info $(EMPTY) NOTE Use all_sdk_version to check toolchain versions) + ifneq ($(shell $(CURL) --version >/dev/null 2>&1 && $(ECHO) "found"), found) + $(error Please install curl first ('apt-get install curl' or similar)) + endif + $(info $(EMPTY) NOTE Use 'make all_sdk_distclean' to remove installation files) + $(info $(EMPTY) NOTE Use 'make all_sdk_version' to check toolchain versions) + $(info $(EMPTY) NOTE Add 'V=1' to make command line to diagnose make problems) endif +############################## +# +# Common tool install template +# $(1) = tool name +# $(2) = tool install directory +# $(3) = tool distribution URL +# $(4) = tool distribution file +# $(5) = optional pre-fetch template +# $(6) = optional post-extract template +# +############################## + +define TOOL_INSTALL_TEMPLATE + +.PHONY: $(addprefix $(1)_, install clean distclean) + +$(1)_install: $(1)_clean | $(DL_DIR) $(TOOLS_DIR) + $(5) + + @$(ECHO) $(MSG_VERIFYING) $$(call toprel, $(DL_DIR)/$(4)) + $(V1) ( \ + cd "$(DL_DIR)" && \ + $(CURL) $(CURL_OPTIONS) -o "$(DL_DIR)/$(4).md5" "$(3).md5" && \ + if ! $(MD5SUM) -c --status "$(DL_DIR)/$(4).md5" 2>/dev/null; then \ + $(ECHO) $(MSG_DOWNLOADING) $(3) && \ + $(CURL) $(CURL_OPTIONS) -o "$(DL_DIR)/$(4)" "$(3)" && \ + $(ECHO) $(MSG_CHECKSUMMING) $$(call toprel, $(DL_DIR)/$(4)) && \ + $(MD5SUM) -c --status "$(DL_DIR)/$(4).md5" 2>/dev/null; \ + fi; \ + ) + + @$(ECHO) $(MSG_EXTRACTING) $$(call toprel, $(2)) + $(V1) $(TAR) $(TAR_OPTIONS) -C $$(call toprel, $(TOOLS_DIR)) -xjf $$(call toprel, $(DL_DIR)/$(4)) + + $(6) + +$(1)_clean: + @$(ECHO) $(MSG_CLEANING) $$(call toprel, $(2)) + $(V1) [ ! -d "$(2)" ] || $(RM) -rf "$(2)" + +$(1)_distclean: + @$(ECHO) $(MSG_DISTCLEANING) $$(call toprel, $$@) + $(V1) [ ! -f "$(DL_DIR)/$(4)" ] || $(RM) "$(DL_DIR)/$(4)" + $(V1) [ ! -f "$(DL_DIR)/$(4).md5" ] || $(RM) "$(DL_DIR)/$(4).md5" + +endef + ############################## # # ARM SDK # ############################## -ARM_SDK_FILE := $(notdir $(ARM_SDK_URL)) - -.PHONY: arm_sdk_install -arm_sdk_install: arm_sdk_clean | $(DL_DIR) $(TOOLS_DIR) - @$(ECHO) $(MSG_DOWNLOADING) $(call toprel, $(DL_DIR)/$(ARM_SDK_FILE)) - $(V1) $(CURL) $(CURL_OPTIONS) \ - $(if $(shell [ -f "$(DL_DIR)/$(ARM_SDK_FILE)" ] && $(ECHO) "exists"),-z "$(DL_DIR)/$(ARM_SDK_FILE)",) \ - -o "$(DL_DIR)/$(ARM_SDK_FILE)" \ - "$(ARM_SDK_URL)" - @$(ECHO) $(MSG_EXTRACTING) $(call toprel, $(ARM_SDK_DIR)) - $(V1) $(TAR) $(TAR_OPTIONS) -C $(call toprel, $(TOOLS_DIR)) -xjf $(call toprel, $(DL_DIR)/$(ARM_SDK_FILE)) - -.PHONY: arm_sdk_clean -arm_sdk_clean: - @$(ECHO) $(MSG_CLEANING) $(call toprel, $(ARM_SDK_DIR)) - $(V1) [ ! -d "$(ARM_SDK_DIR)" ] || $(RM) -r "$(ARM_SDK_DIR)" - -.PHONY: arm_sdk_distclean -arm_sdk_distclean: - @$(ECHO) $(MSG_DISTCLEANING) $(call toprel, $@) - $(V1) [ ! -f "$(DL_DIR)/$(ARM_SDK_FILE)" ] || $(RM) "$(DL_DIR)/$(ARM_SDK_FILE)" - -.PHONY: arm_sdk_version -arm_sdk_version: - $(V1) $(ARM_SDK_PREFIX)gcc --version | head -n1 +$(eval $(call TOOL_INSTALL_TEMPLATE,arm_sdk,$(ARM_SDK_DIR),$(ARM_SDK_URL),$(notdir $(ARM_SDK_URL)))) ifeq ($(shell [ -d "$(ARM_SDK_DIR)" ] && $(ECHO) "exists"), exists) export ARM_SDK_PREFIX := $(ARM_SDK_DIR)/bin/arm-none-eabi- @@ -152,50 +235,142 @@ else export ARM_SDK_PREFIX ?= arm-none-eabi- endif +.PHONY: arm_sdk_version +arm_sdk_version: + $(V1) $(ARM_SDK_PREFIX)gcc --version | head -n1 + +############################## +# +# Qt SDK +# +# Windows: native binary package has been provided +# Linux: user should install native Qt SDK package +# Mac OS X: user should install native Qt SDK package +# +############################## + +define QT_SDK_CONFIGURE_TEMPLATE + @$(ECHO) $(MSG_CONFIGURING) $(call toprel, $(QT_SDK_DIR)) + $(V1) $(ECHO) $(QUOTE)[Paths]$(QUOTE) > $(QT_SDK_DIR)/bin/qt.conf + $(V1) $(ECHO) $(QUOTE)Prefix = $(QT_SDK_DIR)$(QUOTE) >> $(QT_SDK_DIR)/bin/qt.conf +endef + +ifeq ($(UNAME), Windows) + + $(eval $(call TOOL_INSTALL_TEMPLATE,qt_sdk,$(QT_SDK_DIR),$(QT_SDK_URL),$(notdir $(QT_SDK_URL)),,$(QT_SDK_CONFIGURE_TEMPLATE))) + +else + +.PHONY: qt_sdk_install +qt_sdk_install: + @$(ECHO) $(MSG_NOTICE) -------------------------------------------------------- + @$(ECHO) $(MSG_NOTICE) Please install native Qt 4.8.x SDK using package manager + @$(ECHO) $(MSG_NOTICE) -------------------------------------------------------- + +.PHONY: qt_sdk_clean +qt_sdk_clean: + +.PHONY: qt_sdk_distclean +qt_sdk_distclean: + +endif + +ifeq ($(shell [ -d "$(QT_SDK_DIR)" ] && $(ECHO) "exists"), exists) + export QMAKE := $(QT_SDK_DIR)/bin/qmake + + # set Qt library search path + ifeq ($(UNAME), Windows) + export PATH := $(QT_SDK_DIR)/bin:$(PATH) + else + export LD_LIBRARY_PATH := $(QT_SDK_DIR)/lib:$(LD_LIBRARY_PATH) + endif +else + # not installed, hope it's in the path... + # $(info $(EMPTY) WARNING $(call toprel, $(QT_SDK_DIR)) not found (make qt_sdk_install), using system PATH) + QMAKE ?= qmake +endif + +.PHONY: qt_sdk_version +qt_sdk_version: + $(V1) $(QMAKE) --version | tail -1 + +############################## +# +# MinGW +# +############################## + +ifeq ($(UNAME), Windows) + +$(eval $(call TOOL_INSTALL_TEMPLATE,mingw,$(MINGW_DIR),$(MINGW_URL),$(notdir $(MINGW_URL)))) + +ifeq ($(shell [ -d "$(MINGW_DIR)" ] && $(ECHO) "exists"), exists) + # set MinGW binary and library paths (QTMINGW is used by qmake, do not rename) + export QTMINGW := $(MINGW_DIR)/bin + export PATH := $(QTMINGW):$(PATH) +else + # not installed, use host gcc compiler + # $(info $(EMPTY) WARNING $(call toprel, $(MINGW_DIR)) not found (make mingw_install), using system PATH) +endif + +.PHONY: mingw_version +mingw_version: + $(V1) gcc --version | head -n1 + +.PHONY: gcc_version +gcc_version: mingw_version + +else # Linux or Mac + +all_sdk_version: gcc_version + +.PHONY: gcc_version +gcc_version: + $(V1) gcc --version | head -n1 + +endif + +############################## +# +# Python +# +############################## + +ifeq ($(UNAME), Windows) + +$(eval $(call TOOL_INSTALL_TEMPLATE,python,$(PYTHON_DIR),$(PYTHON_URL),$(notdir $(PYTHON_URL)))) + +else # Linux or Mac + +all_sdk_version: python_version + +endif + +ifeq ($(shell [ -d "$(PYTHON_DIR)" ] && $(ECHO) "exists"), exists) + export PYTHON := $(PYTHON_DIR)/python + export PATH := $(PYTHON_DIR):$(PATH) +else + # not installed, hope it's in the path... + # $(info $(EMPTY) WARNING $(call toprel, $(PYTHON_DIR)) not found (make python_install), using system PATH) + export PYTHON := python +endif + +.PHONY: python_version +python_version: + $(V1) $(PYTHON) --version + + + + + + + ############################## # # TODO: code below is not revised yet # ############################## -# Set up QT toolchain -QT_SDK_DIR := $(TOOLS_DIR)/qtsdk-v1.2.1 - -.PHONY: qt_sdk_install -# Choose the appropriate installer based on host architecture -ifneq (,$(filter $(ARCH), x86_64 amd64)) -# 64-bit -QT_SDK_QMAKE_PATH := $(QT_SDK_DIR)/Desktop/Qt/4.8.1/gcc/bin/qmake -qt_sdk_install: QT_SDK_FILE := QtSdk-offline-linux-x86_64-v1.2.1.run -qt_sdk_install: QT_SDK_URL := http://www.developer.nokia.com/dp?uri=http://sw.nokia.com/id/14b2039c-0e1f-4774-a4f2-9aa60b6d5313/Qt_SDK_Lin64_offline -else -# 32-bit -QT_SDK_QMAKE_PATH := $(QT_SDK_DIR)/Desktop/Qt/4.8.1/gcc/bin/qmake -qt_sdk_install: QT_SDK_URL := http://www.developer.nokia.com/dp?uri=http://sw.nokia.com/id/8ea74da4-fec1-4277-8b26-c58cc82e204b/Qt_SDK_Lin32_offline -qt_sdk_install: QT_SDK_FILE := QtSdk-offline-linux-x86-v1.2.1.run -endif -# order-only prereq on directory existance: -qt_sdk_install : | $(DL_DIR) $(TOOLS_DIR) -qt_sdk_install: qt_sdk_clean - # download the source only if it's newer than what we already have - $(V1) $(WGET) -N --content-disposition -P "$(DL_DIR)" "$(QT_SDK_URL)" - # tell the user exactly which path they should select in the GUI - $(V1) echo "*** NOTE NOTE NOTE ***" - $(V1) echo "*" - $(V1) echo "* In the GUI, please use exactly this path as the installation path:" - $(V1) echo "* $(QT_SDK_DIR)" - $(V1) echo "*" - $(V1) echo "*** NOTE NOTE NOTE ***" - - #installer is an executable, make it executable and run it - $(V1) chmod u+x "$(DL_DIR)/$(QT_SDK_FILE)" - $(V1) "$(DL_DIR)/$(QT_SDK_FILE)" -style cleanlooks - -.PHONY: qt_sdk_clean -qt_sdk_clean: - $(V1) [ ! -d "$(QT_SDK_DIR)" ] || $(RM) -rf $(QT_SDK_DIR) - - # Set up openocd tools OPENOCD_DIR := $(TOOLS_DIR)/openocd OPENOCD_WIN_DIR := $(TOOLS_DIR)/openocd_win @@ -480,14 +655,6 @@ gtest_clean: # ############################## -# Set up paths to tools -ifeq ($(shell [ -d "$(QT_SDK_DIR)" ] && $(ECHO) "exists"), exists) - QMAKE := $(QT_SDK_QMAKE_PATH) -else - # not installed, hope it's in the path... - QMAKE ?= qmake -endif - ifeq ($(shell [ -d "$(OPENOCD_DIR)" ] && $(ECHO) "exists"), exists) export OPENOCD := $(OPENOCD_DIR)/bin/openocd else