Browse Source

Fix camera section showing on wrong commands

Update unit tests to catch this
QGC4.4
DonLakeFlyer 8 years ago
parent
commit
1d46da77cf
  1. 24
      src/MissionManager/MissionControllerTest.cc
  2. 5
      src/MissionManager/MissionControllerTest.h
  3. 1
      src/MissionManager/PlanMasterController.cc
  4. 13
      src/MissionManager/SimpleMissionItem.cc
  5. 119
      src/MissionManager/UnitTest/SectionTest.plan

24
src/MissionManager/MissionControllerTest.cc

@ -224,3 +224,27 @@ void MissionControllerTest::_testGimbalRecalc(void) @@ -224,3 +224,27 @@ void MissionControllerTest::_testGimbalRecalc(void)
QCOMPARE(visualItem->missionGimbalYaw(), 0.0);
}
}
void MissionControllerTest::_testLoadJsonSectionAvailable(void)
{
_initForFirmwareType(MAV_AUTOPILOT_PX4);
_masterController->loadFromFile(":/unittest/SectionTest.plan");
QmlObjectListModel* visualItems = _missionController->visualItems();
QVERIFY(visualItems);
QCOMPARE(visualItems->count(), 5);
// Check that only waypoint items have camera and speed sections
for (int i=1; i<visualItems->count(); i++) {
SimpleMissionItem* item = visualItems->value<SimpleMissionItem*>(i);
QVERIFY(item);
if ((int)item->command() == MAV_CMD_NAV_WAYPOINT) {
QCOMPARE(item->cameraSection()->available(), true);
QCOMPARE(item->speedSection()->available(), true);
} else {
QCOMPARE(item->cameraSection()->available(), false);
QCOMPARE(item->speedSection()->available(), false);
}
}
}

5
src/MissionManager/MissionControllerTest.h

@ -33,12 +33,13 @@ private slots: @@ -33,12 +33,13 @@ private slots:
void cleanup(void);
void _testGimbalRecalc(void);
private:
void _testLoadJsonSectionAvailable(void);
void _testEmptyVehicleAPM(void);
void _testEmptyVehiclePX4(void);
void _testAddWayppointAPM(void);
void _testAddWayppointPX4(void);
private:
#if 0
void _testOfflineToOnlineAPM(void);
void _testOfflineToOnlinePX4(void);

1
src/MissionManager/PlanMasterController.cc

@ -246,6 +246,7 @@ void PlanMasterController::loadFromFile(const QString& filename) @@ -246,6 +246,7 @@ void PlanMasterController::loadFromFile(const QString& filename)
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
errorString = file.errorString() + QStringLiteral(" ") + filename;
qgcApp()->showMessage(errorMessage.arg(errorString));
return;
}

13
src/MissionManager/SimpleMissionItem.cc

@ -278,12 +278,20 @@ void SimpleMissionItem::save(QJsonArray& missionItems) @@ -278,12 +278,20 @@ void SimpleMissionItem::save(QJsonArray& missionItems)
bool SimpleMissionItem::load(QTextStream &loadStream)
{
return _missionItem.load(loadStream);
bool success;
if ((success = _missionItem.load(loadStream))) {
_updateOptionalSections();
}
return success;
}
bool SimpleMissionItem::load(const QJsonObject& json, int sequenceNumber, QString& errorString)
{
return _missionItem.load(json, sequenceNumber, errorString);
bool success;
if ((success = _missionItem.load(json, sequenceNumber, errorString))) {
_updateOptionalSections();
}
return success;
}
bool SimpleMissionItem::isStandaloneCoordinate(void) const
@ -755,6 +763,7 @@ void SimpleMissionItem::_updateOptionalSections(void) @@ -755,6 +763,7 @@ void SimpleMissionItem::_updateOptionalSections(void)
emit cameraSectionChanged(_cameraSection);
emit speedSectionChanged(_speedSection);
emit lastSequenceNumberChanged(lastSequenceNumber());
}
int SimpleMissionItem::lastSequenceNumber(void) const

119
src/MissionManager/UnitTest/SectionTest.plan

@ -0,0 +1,119 @@ @@ -0,0 +1,119 @@
{
"fileType": "Plan",
"geoFence": {
"polygon": [
],
"version": 1
},
"groundStation": "QGroundControl",
"mission": {
"cruiseSpeed": 15,
"firmwareType": 12,
"hoverSpeed": 5,
"items": [
{
"autoContinue": true,
"command": 22,
"coordinate": [
47.63311996,
-122.090763,
20
],
"doJumpId": 1,
"frame": 3,
"params": [
0,
0,
0,
null
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"coordinate": [
47.63369112,
-122.08925023,
20
],
"doJumpId": 2,
"frame": 3,
"params": [
0,
0,
0,
null
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"coordinate": [
47.63345253,
-122.08725467,
20
],
"doJumpId": 3,
"frame": 3,
"params": [
0,
0,
0,
null
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 205,
"coordinate": [
0,
0,
2
],
"doJumpId": 4,
"frame": 2,
"params": [
0,
0,
0,
0
],
"type": "SimpleItem"
},
{
"autoContinue": true,
"command": 16,
"coordinate": [
47.63261386,
-122.08661094,
20
],
"doJumpId": 5,
"frame": 3,
"params": [
0,
0,
0,
null
],
"type": "SimpleItem"
}
],
"plannedHomePosition": [
47.633389756176875,
-122.09076300000001,
20
],
"vehicleType": 2,
"version": 2
},
"rallyPoints": {
"points": [
],
"version": 1
},
"version": 1
}
Loading…
Cancel
Save