Browse Source

Merge pull request #7378 from DonLakeFlyer/CubeBlackCheckStable

ArduPilot: Cube black service bulletin check
QGC4.4
Don Gagne 6 years ago committed by GitHub
parent
commit
604a4b59e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      ChangeLog.md
  2. 40
      src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc
  3. 5
      src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h
  4. 3
      src/comm/SerialLink.h

1
ChangeLog.md

@ -9,6 +9,7 @@ Note: This file only contains high level features or important fixes. @@ -9,6 +9,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.

40
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc

@ -29,6 +29,11 @@ @@ -29,6 +29,11 @@
#include "APMSubFrameComponent.h"
#include "ESP8266Component.h"
#include "APMHeliComponent.h"
#include "QGCApplication.h"
#if !defined(NO_SERIAL_LINK) && !defined(__android__)
#include <QSerialPortInfo>
#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) @@ -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 @@ -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<SerialLink*>();
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

5
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h

@ -59,6 +59,11 @@ protected: @@ -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;
};

3
src/comm/SerialLink.h

@ -145,6 +145,9 @@ public: @@ -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.

Loading…
Cancel
Save