Commit 698a3e35 authored by Don Gagne's avatar Don Gagne

Move acceptance radius to friendly edit

Both altitude and acceptance radius will track last value
parent 1adde9d5
......@@ -25,6 +25,12 @@
"units": "seconds",
"default": 0,
"decimalPlaces": 0
},
"param2": {
"label": "Accept radius:",
"units": "meters",
"default": 3.0,
"decimalPlaces": 2
}
},
{
......
......@@ -169,7 +169,14 @@ int MissionController::addMissionItem(QGeoCoordinate coordinate)
}
newItem->setDefaultsForCommand();
if ((MAV_CMD)newItem->command() == MAV_CMD_NAV_WAYPOINT) {
newItem->setParam7(_findLastAltitude());
double lastValue;
if (_findLastAcceptanceRadius(&lastValue)) {
newItem->setParam2(lastValue);
}
if (_findLastAltitude(&lastValue)) {
newItem->setParam7(lastValue);
}
}
_missionItems->append(newItem);
......@@ -611,17 +618,44 @@ QmlObjectListModel* MissionController::missionItems(void)
return _missionItems;
}
double MissionController::_findLastAltitude(void)
bool MissionController::_findLastAltitude(double* lastAltitude)
{
double lastAltitude = MissionItem::defaultAltitude;
bool found = false;
double foundAltitude;
for (int i=0; i<_missionItems->count(); i++) {
MissionItem* item = qobject_cast<MissionItem*>(_missionItems->get(i));
if (item->specifiesCoordinate()) {
lastAltitude = item->param7();
foundAltitude = item->param7();
found = true;
}
}
return lastAltitude;
if (found) {
*lastAltitude = foundAltitude;
}
return found;
}
bool MissionController::_findLastAcceptanceRadius(double* lastAcceptanceRadius)
{
bool found = false;
double foundAcceptanceRadius;
for (int i=0; i<_missionItems->count(); i++) {
MissionItem* item = qobject_cast<MissionItem*>(_missionItems->get(i));
if ((MAV_CMD)item->command() == MAV_CMD_NAV_WAYPOINT) {
foundAcceptanceRadius = item->param2();
found = true;
}
}
if (found) {
*lastAcceptanceRadius = foundAcceptanceRadius;
}
return found;
}
......@@ -95,7 +95,8 @@ private:
void _setupMissionItems(bool loadFromVehicle, bool forceLoad);
void _setupActiveVehicle(Vehicle* activeVehicle, bool forceLoadFromVehicle);
void _calcPrevWaypointValues(bool homePositionValid, double homeAlt, MissionItem* item1, MissionItem* item2, double* azimuth, double* distance);
double _findLastAltitude(void);
bool _findLastAltitude(double* lastAltitude);
bool _findLastAcceptanceRadius(double* lastAcceptanceRadius);
private:
bool _editMode;
......
......@@ -29,12 +29,7 @@ This file is part of the QGROUNDCONTROL project
QGC_LOGGING_CATEGORY(MissionItemLog, "MissionItemLog")
const double MissionItem::defaultTakeoffPitch = 15.0;
const double MissionItem::defaultHeading = 0.0;
const double MissionItem::defaultAltitude = 25.0;
const double MissionItem::defaultAcceptanceRadius = 3.0;
const double MissionItem::defaultLoiterOrbitRadius = 10.0;
const double MissionItem::defaultLoiterTurns = 1.0;
FactMetaData* MissionItem::_altitudeMetaData = NULL;
FactMetaData* MissionItem::_commandMetaData = NULL;
......@@ -122,6 +117,7 @@ MissionItem::MissionItem(QObject* parent)
_connectSignals();
setAutoContinue(true);
setDefaultsForCommand();
}
MissionItem::MissionItem(int sequenceNumber,
......@@ -770,13 +766,15 @@ void MissionItem::_syncCommandToSupportedCommand(const QVariant& value)
void MissionItem::setDefaultsForCommand(void)
{
// We set these global defaults first, then if there are param defaults they will get reset
setParam7(defaultAltitude);
foreach (const MavCmdParamInfo* paramInfo, _mavCmdInfoMap[(MAV_CMD)command()]->paramInfoMap()) {
Fact* rgParamFacts[7] = { &_param1Fact, &_param2Fact, &_param3Fact, &_param4Fact, &_param5Fact, &_param6Fact, &_param7Fact };
rgParamFacts[paramInfo->param()-1]->setRawValue(paramInfo->defaultValue());
}
setParam7(defaultAltitude);
setAutoContinue(true);
setFrame(specifiesCoordinate() ? MAV_FRAME_GLOBAL_RELATIVE_ALT : MAV_FRAME_MISSION);
setRawEdit(false);
......
......@@ -167,12 +167,7 @@ public:
bool relativeAltitude(void) { return frame() == MAV_FRAME_GLOBAL_RELATIVE_ALT; }
static const double defaultTakeoffPitch;
static const double defaultHeading;
static const double defaultAltitude;
static const double defaultAcceptanceRadius;
static const double defaultLoiterOrbitRadius;
static const double defaultLoiterTurns;
public slots:
void setDefaultsForCommand(void);
......
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