diff --git a/.appveyor.yml b/.appveyor.yml index 57050f41ceb2a3b58c59bd36502e178673aab38d..8440d7a5a3d3cc0b4be873c9056a49030620bab7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -50,23 +50,11 @@ build_script: test_script: - if "%CONFIG%" EQU "debug" ( %SHADOW_BUILD_DIR%\debug\qgroundcontrol --unittest ) -for: -- - branches: - only: - - master - artifacts: +artifacts: - path: QGroundControl-installer.exe name: qgcinstaller -- - branches: - only: - - Stable_V3.5 - artifacts: - - path: QGroundControl-installer.exe - name: qgcinstaller - - path: symbols\**\*.*_ - name: symbols + - path: build_windows_install\release\qgroundcontrol.pdb + name: pdb deploy: # deploy continuous builds to s3 @@ -101,19 +89,19 @@ deploy: # appveyor_repo_tag: false # deploy release symbols to s3 - - provider: S3 - access_key_id: - secure: IGAojLMqokL+76DbdulmWDA3MTsxEBBi3ReVVSqTy9c= - secret_access_key: - secure: RiYqaR+3T2PMNz2j5ur8LCA6H/Zfd4jTX33CZE5iBxm+zaz4QLs25p0B7prpaoNN - bucket: qgroundcontrol - region: us-west-2 - set_public: true - folder: releasesyms - artifact: symbols - on: - CONFIG: installer - appveyor_repo_tag: true +# - provider: S3 +# access_key_id: +# secure: IGAojLMqokL+76DbdulmWDA3MTsxEBBi3ReVVSqTy9c= +# secret_access_key: +# secure: RiYqaR+3T2PMNz2j5ur8LCA6H/Zfd4jTX33CZE5iBxm+zaz4QLs25p0B7prpaoNN +# bucket: qgroundcontrol +# region: us-west-2 +# set_public: true +# folder: releasesyms +# artifact: symbols +# on: +# CONFIG: installer +# appveyor_repo_tag: true # deploy tagged releases to Github releases - provider: GitHub @@ -155,3 +143,18 @@ deploy: on: CONFIG: installer appveyor_repo_tag: true + +# deploy pdb for tagged releases to s3 latest folder + - provider: S3 + access_key_id: + secure: IGAojLMqokL+76DbdulmWDA3MTsxEBBi3ReVVSqTy9c= + secret_access_key: + secure: RiYqaR+3T2PMNz2j5ur8LCA6H/Zfd4jTX33CZE5iBxm+zaz4QLs25p0B7prpaoNN + bucket: qgroundcontrol + region: us-west-2 + set_public: true + folder: latest + artifact: pdb + on: + CONFIG: installer + appveyor_repo_tag: true diff --git a/ChangeLog.md b/ChangeLog.md index 30bc629c8c795a523022102bf7dde3904e383a64..b76079bbc799135c4e2220713104c2166a9c4467 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -14,6 +14,7 @@ Note: This file only contains high level features or important fixes. * Major rewrite and bug fix pass through Structure Scan. Previous version had such bad problems that it can no longer be supported. Plans with Structure Scan will need to be recreated. New QGC will not load old Structure Scan plans. ### 3.5.1 - Not yet released +* Add ArduPilot CubeBlack Service Bulletin check * Fix visibility of PX4/ArduPilot logo in toolbar * Fix tile set count but in OfflineMaps which would cause image and elevation tile set to have incorrect counts and be incorrectly marked as download incomplete. diff --git a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc index 22543319485a3391bfc5b5361c7b4a3df55181fb..abc156e12726412c5ccdcdf9ad2c8cb1a187b4d7 100644 --- a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc +++ b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc @@ -29,6 +29,11 @@ #include "APMSubFrameComponent.h" #include "ESP8266Component.h" #include "APMHeliComponent.h" +#include "QGCApplication.h" + +#if !defined(NO_SERIAL_LINK) && !defined(__android__) +#include +#endif /// This is the AutoPilotPlugin implementatin for the MAV_AUTOPILOT_ARDUPILOT type. APMAutoPilotPlugin::APMAutoPilotPlugin(Vehicle* vehicle, QObject* parent) @@ -50,6 +55,10 @@ APMAutoPilotPlugin::APMAutoPilotPlugin(Vehicle* vehicle, QObject* parent) , _heliComponent (NULL) { APMAirframeLoader::loadAirframeFactMetaData(); + +#if !defined(NO_SERIAL_LINK) && !defined(__android__) + connect(vehicle->parameterManager(), &ParameterManager::parametersReadyChanged, this, &APMAutoPilotPlugin::_checkForBadCubeBlack); +#endif } APMAutoPilotPlugin::~APMAutoPilotPlugin() @@ -170,3 +179,34 @@ QString APMAutoPilotPlugin::prerequisiteSetup(VehicleComponent* component) const return QString(); } + +#if !defined(NO_SERIAL_LINK) && !defined(__android__) +/// The following code is executed when the Vehicle is parameter ready. It checks for the service bulletin against Cube Blacks. +void APMAutoPilotPlugin::_checkForBadCubeBlack(void) +{ + bool cubeBlackFound = false; + for (const QVariant& varLink: _vehicle->links()) { + SerialLink* serialLink = varLink.value(); + if (serialLink && QSerialPortInfo(*serialLink->_hackAccessToPort()).description().contains(QStringLiteral("CubeBlack"))) { + cubeBlackFound = true; + } + + } + if (!cubeBlackFound) { + return; + } + + ParameterManager* paramMgr = _vehicle->parameterManager(); + + QString paramAcc3("INS_ACC3_ID"); + QString paramGyr3("INS_GYR3_ID"); + QString paramEnableMask("INS_ENABLE_MASK"); + + if (paramMgr->parameterExists(-1, paramAcc3) && paramMgr->getParameter(-1, paramAcc3)->rawValue().toInt() == 0 && + paramMgr->parameterExists(-1, paramGyr3) && paramMgr->getParameter(-1, paramGyr3)->rawValue().toInt() == 0 && + paramMgr->parameterExists(-1, paramEnableMask) && paramMgr->getParameter(-1, paramEnableMask)->rawValue().toInt() >= 7) { + qgcApp()->showMessage(tr("WARNING: The flight board you are using has a critical service bulletin against ti which advise against flying. https://discuss.cubepilot.org/t/sb-0000002-critical-service-bulletin-for-cubes-purchased-between-january-2019-to-present-do-not-fly/406")); + + } +} +#endif diff --git a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h index 09bb7c24f2480eafadae16c93fc134ef3a6b007a..5c6a5acc4cbaecfd23c19025dc6eb60d545d55d3 100644 --- a/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h +++ b/src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h @@ -59,6 +59,11 @@ protected: ESP8266Component* _esp8266Component; APMHeliComponent* _heliComponent; +#if !defined(NO_SERIAL_LINK) && !defined(__android__) +private slots: + void _checkForBadCubeBlack(void); +#endif + private: QVariantList _components; }; diff --git a/src/comm/SerialLink.h b/src/comm/SerialLink.h index 3d02197c93c3776322c69932561a59043c0fa78d..5dd0074a1d6472a86bf50a41f7c0761d8f58f04d 100644 --- a/src/comm/SerialLink.h +++ b/src/comm/SerialLink.h @@ -145,6 +145,9 @@ public: bool connect(void); bool disconnect(void); + /// Don't even think of calling this method! + QSerialPort* _hackAccessToPort(void) { return _port; } + private slots: /** * @brief Write a number of bytes to the interface.