Commit 2a777cc8 authored by Gus Grubba's avatar Gus Grubba

Merge branch 'Stable_V3.2' of https://github.com/mavlink/qgroundcontrol into cameraControl

parents aa490d2c bd287607
...@@ -104,8 +104,9 @@ QGCView { ...@@ -104,8 +104,9 @@ QGCView {
} }
Connections { Connections {
target: _missionController target: _missionController
onResumeMissionReady: guidedActionsController.confirmAction(guidedActionsController.actionResumeMissionReady) onResumeMissionReady: guidedActionsController.confirmAction(guidedActionsController.actionResumeMissionReady)
onResumeMissionUploadFail: guidedActionsController.confirmAction(guidedActionsController.actionResumeMissionUploadFail)
} }
MessageDialog { MessageDialog {
......
...@@ -32,55 +32,58 @@ Item { ...@@ -32,55 +32,58 @@ Item {
property var actionList property var actionList
property var altitudeSlider property var altitudeSlider
readonly property string emergencyStopTitle: qsTr("Emergency Stop") readonly property string emergencyStopTitle: qsTr("Emergency Stop")
readonly property string armTitle: qsTr("Arm") readonly property string armTitle: qsTr("Arm")
readonly property string disarmTitle: qsTr("Disarm") readonly property string disarmTitle: qsTr("Disarm")
readonly property string rtlTitle: qsTr("RTL") readonly property string rtlTitle: qsTr("RTL")
readonly property string takeoffTitle: qsTr("Takeoff") readonly property string takeoffTitle: qsTr("Takeoff")
readonly property string landTitle: qsTr("Land") readonly property string landTitle: qsTr("Land")
readonly property string startMissionTitle: qsTr("Start Mission") readonly property string startMissionTitle: qsTr("Start Mission")
readonly property string continueMissionTitle: qsTr("Continue Mission") readonly property string continueMissionTitle: qsTr("Continue Mission")
readonly property string resumeMissionTitle: qsTr("Resume Mission") readonly property string resumeMissionTitle: qsTr("Resume Mission")
readonly property string pauseTitle: qsTr("Pause") readonly property string resumeMissionUploadFailTitle: qsTr("Resume FAILED")
readonly property string changeAltTitle: qsTr("Change Altitude") readonly property string pauseTitle: qsTr("Pause")
readonly property string orbitTitle: qsTr("Orbit") readonly property string changeAltTitle: qsTr("Change Altitude")
readonly property string landAbortTitle: qsTr("Land Abort") readonly property string orbitTitle: qsTr("Orbit")
readonly property string setWaypointTitle: qsTr("Set Waypoint") readonly property string landAbortTitle: qsTr("Land Abort")
readonly property string gotoTitle: qsTr("Goto Location") readonly property string setWaypointTitle: qsTr("Set Waypoint")
readonly property string gotoTitle: qsTr("Goto Location")
readonly property string armMessage: qsTr("Arm the vehicle.") readonly property string armMessage: qsTr("Arm the vehicle.")
readonly property string disarmMessage: qsTr("Disarm the vehicle") readonly property string disarmMessage: qsTr("Disarm the vehicle")
readonly property string emergencyStopMessage: qsTr("WARNING: This will stop all motors. If vehicle is currently in air it will crash.") readonly property string emergencyStopMessage: qsTr("WARNING: This will stop all motors. If vehicle is currently in air it will crash.")
readonly property string takeoffMessage: qsTr("Takeoff from ground and hold position.") readonly property string takeoffMessage: qsTr("Takeoff from ground and hold position.")
readonly property string startMissionMessage: qsTr("Takeoff from ground and start the current mission.") readonly property string startMissionMessage: qsTr("Takeoff from ground and start the current mission.")
readonly property string continueMissionMessage: qsTr("Continue the mission from the current waypoint.") readonly property string continueMissionMessage: qsTr("Continue the mission from the current waypoint.")
property string resumeMissionMessage: qsTr("Resume the current mission. This will re-generate the mission from waypoint %1, takeoff and continue the mission.").arg(_resumeMissionIndex) property string resumeMissionMessage: qsTr("Resume the current mission. This will re-generate the mission from waypoint %1, takeoff and continue the mission.").arg(_resumeMissionIndex)
readonly property string resumeMissionReadyMessage: qsTr("Review the modified mission. Confirm if you want to takeoff and begin mission.") property string resumeMissionUploadFailMessage: qsTr("Upload of resume mission failed. Confirm to retry upload")
readonly property string landMessage: qsTr("Land the vehicle at the current position.") readonly property string resumeMissionReadyMessage: qsTr("Review the modified mission. Confirm if you want to takeoff and begin mission.")
readonly property string rtlMessage: qsTr("Return to the home position of the vehicle.") readonly property string landMessage: qsTr("Land the vehicle at the current position.")
readonly property string changeAltMessage: qsTr("Change the altitude of the vehicle up or down.") readonly property string rtlMessage: qsTr("Return to the home position of the vehicle.")
readonly property string gotoMessage: qsTr("Move the vehicle to the location clicked on the map.") readonly property string changeAltMessage: qsTr("Change the altitude of the vehicle up or down.")
property string setWaypointMessage: qsTr("Adjust current waypoint to %1.").arg(_actionData) readonly property string gotoMessage: qsTr("Move the vehicle to the location clicked on the map.")
readonly property string orbitMessage: qsTr("Orbit the vehicle around the current location.") property string setWaypointMessage: qsTr("Adjust current waypoint to %1.").arg(_actionData)
readonly property string landAbortMessage: qsTr("Abort the landing sequence.") readonly property string orbitMessage: qsTr("Orbit the vehicle around the current location.")
readonly property string pauseMessage: qsTr("Pause the vehicle at it's current position.") readonly property string landAbortMessage: qsTr("Abort the landing sequence.")
readonly property string pauseMessage: qsTr("Pause the vehicle at it's current position.")
readonly property int actionRTL: 1 readonly property int actionRTL: 1
readonly property int actionLand: 2 readonly property int actionLand: 2
readonly property int actionTakeoff: 3 readonly property int actionTakeoff: 3
readonly property int actionArm: 4 readonly property int actionArm: 4
readonly property int actionDisarm: 5 readonly property int actionDisarm: 5
readonly property int actionEmergencyStop: 6 readonly property int actionEmergencyStop: 6
readonly property int actionChangeAlt: 7 readonly property int actionChangeAlt: 7
readonly property int actionGoto: 8 readonly property int actionGoto: 8
readonly property int actionSetWaypoint: 9 readonly property int actionSetWaypoint: 9
readonly property int actionOrbit: 10 readonly property int actionOrbit: 10
readonly property int actionLandAbort: 11 readonly property int actionLandAbort: 11
readonly property int actionStartMission: 12 readonly property int actionStartMission: 12
readonly property int actionContinueMission: 13 readonly property int actionContinueMission: 13
readonly property int actionResumeMission: 14 readonly property int actionResumeMission: 14
readonly property int actionResumeMissionReady: 15 readonly property int actionResumeMissionReady: 15
readonly property int actionPause: 16 readonly property int actionResumeMissionUploadFail: 16
readonly property int actionPause: 17
property bool showEmergenyStop: !_hideEmergenyStop && _activeVehicle && _vehicleArmed && _vehicleFlying property bool showEmergenyStop: !_hideEmergenyStop && _activeVehicle && _vehicleArmed && _vehicleFlying
property bool showArm: _activeVehicle && !_vehicleArmed property bool showArm: _activeVehicle && !_vehicleArmed
...@@ -205,6 +208,11 @@ Item { ...@@ -205,6 +208,11 @@ Item {
confirmDialog.message = resumeMissionMessage confirmDialog.message = resumeMissionMessage
confirmDialog.hideTrigger = Qt.binding(function() { return !showResumeMission }) confirmDialog.hideTrigger = Qt.binding(function() { return !showResumeMission })
break; break;
case actionResumeMissionUploadFail:
confirmDialog.title = resumeMissionUploadFailTitle
confirmDialog.message = resumeMissionUploadFailMessage
confirmDialog.hideTrigger = Qt.binding(function() { return !showResumeMission })
break;
case actionResumeMissionReady: case actionResumeMissionReady:
confirmDialog.title = resumeMissionTitle confirmDialog.title = resumeMissionTitle
confirmDialog.message = resumeMissionReadyMessage confirmDialog.message = resumeMissionReadyMessage
...@@ -271,6 +279,7 @@ Item { ...@@ -271,6 +279,7 @@ Item {
_activeVehicle.guidedModeTakeoff() _activeVehicle.guidedModeTakeoff()
break break
case actionResumeMission: case actionResumeMission:
case actionResumeMissionUploadFail:
missionController.resumeMission(missionController.resumeMissionIndex) missionController.resumeMission(missionController.resumeMissionIndex)
break break
case actionResumeMissionReady: case actionResumeMissionReady:
......
...@@ -1476,6 +1476,7 @@ void MissionController::managerVehicleChanged(Vehicle* managerVehicle) ...@@ -1476,6 +1476,7 @@ void MissionController::managerVehicleChanged(Vehicle* managerVehicle)
connect(_missionManager, &MissionManager::currentIndexChanged, this, &MissionController::_currentMissionIndexChanged); connect(_missionManager, &MissionManager::currentIndexChanged, this, &MissionController::_currentMissionIndexChanged);
connect(_missionManager, &MissionManager::lastCurrentIndexChanged, this, &MissionController::resumeMissionIndexChanged); connect(_missionManager, &MissionManager::lastCurrentIndexChanged, this, &MissionController::resumeMissionIndexChanged);
connect(_missionManager, &MissionManager::resumeMissionReady, this, &MissionController::resumeMissionReady); connect(_missionManager, &MissionManager::resumeMissionReady, this, &MissionController::resumeMissionReady);
connect(_missionManager, &MissionManager::resumeMissionUploadFail, this, &MissionController::resumeMissionUploadFail);
connect(_managerVehicle, &Vehicle::homePositionChanged, this, &MissionController::_managerVehicleHomePositionChanged); connect(_managerVehicle, &Vehicle::homePositionChanged, this, &MissionController::_managerVehicleHomePositionChanged);
connect(_managerVehicle, &Vehicle::defaultCruiseSpeedChanged, this, &MissionController::_recalcMissionFlightStatus); connect(_managerVehicle, &Vehicle::defaultCruiseSpeedChanged, this, &MissionController::_recalcMissionFlightStatus);
connect(_managerVehicle, &Vehicle::defaultHoverSpeedChanged, this, &MissionController::_recalcMissionFlightStatus); connect(_managerVehicle, &Vehicle::defaultHoverSpeedChanged, this, &MissionController::_recalcMissionFlightStatus);
......
...@@ -160,6 +160,7 @@ signals: ...@@ -160,6 +160,7 @@ signals:
void complexMissionItemNamesChanged(void); void complexMissionItemNamesChanged(void);
void resumeMissionIndexChanged(void); void resumeMissionIndexChanged(void);
void resumeMissionReady(void); void resumeMissionReady(void);
void resumeMissionUploadFail(void);
void batteryChangePointChanged(int batteryChangePoint); void batteryChangePointChanged(int batteryChangePoint);
void batteriesRequiredChanged(int batteriesRequired); void batteriesRequiredChanged(int batteriesRequired);
void plannedHomePositionChanged(QGeoCoordinate plannedHomePosition); void plannedHomePositionChanged(QGeoCoordinate plannedHomePosition);
......
...@@ -55,6 +55,7 @@ void MissionManager::_writeMissionItemsWorker(void) ...@@ -55,6 +55,7 @@ void MissionManager::_writeMissionItemsWorker(void)
qCDebug(MissionManagerLog) << "writeMissionItems count:" << _writeMissionItems.count(); qCDebug(MissionManagerLog) << "writeMissionItems count:" << _writeMissionItems.count();
// Prime write list // Prime write list
_itemIndicesToWrite.clear();
for (int i=0; i<_writeMissionItems.count(); i++) { for (int i=0; i<_writeMissionItems.count(); i++) {
_itemIndicesToWrite << i; _itemIndicesToWrite << i;
} }
...@@ -63,11 +64,6 @@ void MissionManager::_writeMissionItemsWorker(void) ...@@ -63,11 +64,6 @@ void MissionManager::_writeMissionItemsWorker(void)
_retryCount = 0; _retryCount = 0;
emit inProgressChanged(true); emit inProgressChanged(true);
_writeMissionCount(); _writeMissionCount();
_currentMissionIndex = -1;
_lastCurrentIndex = -1;
emit currentIndexChanged(-1);
emit lastCurrentIndexChanged(-1);
} }
...@@ -874,7 +870,11 @@ void MissionManager::_finishTransaction(bool success) ...@@ -874,7 +870,11 @@ void MissionManager::_finishTransaction(bool success)
break; break;
case TransactionWrite: case TransactionWrite:
if (success) { if (success) {
// Write succeeded, update internal list to be current // Write succeeded, update internal list to be current
_currentMissionIndex = -1;
_lastCurrentIndex = -1;
emit currentIndexChanged(-1);
emit lastCurrentIndexChanged(-1);
_clearAndDeleteMissionItems(); _clearAndDeleteMissionItems();
for (int i=0; i<_writeMissionItems.count(); i++) { for (int i=0; i<_writeMissionItems.count(); i++) {
_missionItems.append(_writeMissionItems[i]); _missionItems.append(_writeMissionItems[i]);
...@@ -895,7 +895,11 @@ void MissionManager::_finishTransaction(bool success) ...@@ -895,7 +895,11 @@ void MissionManager::_finishTransaction(bool success)
if (_resumeMission) { if (_resumeMission) {
_resumeMission = false; _resumeMission = false;
emit resumeMissionReady(); if (success) {
emit resumeMissionReady();
} else {
emit resumeMissionUploadFail();
}
} }
} }
......
...@@ -88,6 +88,7 @@ signals: ...@@ -88,6 +88,7 @@ signals:
void currentIndexChanged(int currentIndex); void currentIndexChanged(int currentIndex);
void lastCurrentIndexChanged(int lastCurrentIndex); void lastCurrentIndexChanged(int lastCurrentIndex);
void resumeMissionReady(void); void resumeMissionReady(void);
void resumeMissionUploadFail(void);
void progressPct(double progressPercentPct); void progressPct(double progressPercentPct);
void removeAllComplete (bool error); void removeAllComplete (bool error);
void sendComplete (bool error); void sendComplete (bool error);
......
...@@ -671,3 +671,8 @@ void QGCApplication::qmlAttemptWindowClose(void) ...@@ -671,3 +671,8 @@ void QGCApplication::qmlAttemptWindowClose(void)
{ {
QMetaObject::invokeMethod(_rootQmlObject(), "attemptWindowClose"); QMetaObject::invokeMethod(_rootQmlObject(), "attemptWindowClose");
} }
bool QGCApplication::isInternetAvailable()
{
return getQGCMapEngine()->isInternetActive();
}
...@@ -92,6 +92,9 @@ public: ...@@ -92,6 +92,9 @@ public:
/// Do we have Bluetooth Support? /// Do we have Bluetooth Support?
bool isBluetoothAvailable() { return _bluetoothAvailable; } bool isBluetoothAvailable() { return _bluetoothAvailable; }
/// Is Internet available?
bool isInternetAvailable();
public slots: public slots:
/// You can connect to this slot to show an information message box from a different thread. /// You can connect to this slot to show an information message box from a different thread.
void informationMessageBoxOnMainThread(const QString& title, const QString& msg); void informationMessageBoxOnMainThread(const QString& title, const QString& msg);
......
...@@ -1056,7 +1056,7 @@ void ...@@ -1056,7 +1056,7 @@ void
QGCCacheWorker::_testInternet() QGCCacheWorker::_testInternet()
{ {
QTcpSocket socket; QTcpSocket socket;
socket.connectToHost("8.8.8.8", 53); socket.connectToHost("www.github.com", 80);
if (socket.waitForConnected(2500)) { if (socket.waitForConnected(2500)) {
qCDebug(QGCTileCacheLog) << "Yes Internet Access"; qCDebug(QGCTileCacheLog) << "Yes Internet Access";
emit internetStatus(true); emit internetStatus(true);
......
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