Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
b0fcbe05
Commit
b0fcbe05
authored
Aug 21, 2017
by
Beat Küng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
AirMapManager: handle dynamic setting changes
parent
a6becbdd
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
65 additions
and
0 deletions
+65
-0
AirMapManager.cc
src/MissionManager/AirMapManager.cc
+47
-0
AirMapManager.h
src/MissionManager/AirMapManager.h
+18
-0
No files found.
src/MissionManager/AirMapManager.cc
View file @
b0fcbe05
...
...
@@ -177,6 +177,7 @@ void AirMapNetworking::post(QUrl url, const QByteArray& postData, bool isJsonDat
}
connect
(
networkReply
,
&
QNetworkReply
::
finished
,
this
,
&
AirMapNetworking
::
_requestFinished
);
_currentNetworkReply
=
networkReply
;
}
void
AirMapNetworking
::
_loginSuccess
()
...
...
@@ -198,6 +199,16 @@ void AirMapNetworking::_loginFailure(QNetworkReply::NetworkError networkError, c
emit
error
(
networkError
,
errorString
,
serverErrorMessage
);
}
void
AirMapNetworking
::
abort
()
{
if
(
_currentNetworkReply
)
{
disconnect
(
_currentNetworkReply
,
&
QNetworkReply
::
finished
,
this
,
&
AirMapNetworking
::
_requestFinished
);
_currentNetworkReply
->
abort
();
_currentNetworkReply
=
nullptr
;
}
_pendingRequest
.
type
=
RequestType
::
None
;
}
void
AirMapNetworking
::
get
(
QUrl
url
,
bool
requiresLogin
)
{
QNetworkRequest
request
(
url
);
...
...
@@ -230,11 +241,13 @@ void AirMapNetworking::get(QUrl url, bool requiresLogin)
}
connect
(
networkReply
,
&
QNetworkReply
::
finished
,
this
,
&
AirMapNetworking
::
_requestFinished
);
_currentNetworkReply
=
networkReply
;
}
void
AirMapNetworking
::
_requestFinished
(
void
)
{
QNetworkReply
*
reply
=
qobject_cast
<
QNetworkReply
*>
(
QObject
::
sender
());
_currentNetworkReply
=
nullptr
;
// When an error occurs we still end up here
if
(
reply
->
error
()
!=
QNetworkReply
::
NoError
)
{
...
...
@@ -622,6 +635,14 @@ void AirMapFlightManager::endFlight()
emit
flightPermitStatusChanged
();
}
void
AirMapFlightManager
::
abort
()
{
_state
=
State
::
Idle
;
_networking
.
abort
();
_flightPermitStatus
=
AirspaceAuthorization
::
PermitUnknown
;
emit
flightPermitStatusChanged
();
}
void
AirMapFlightManager
::
_endFlight
(
const
QString
&
flightID
)
{
qCDebug
(
AirMapManagerLog
)
<<
"ending flight"
<<
flightID
;
...
...
@@ -1001,6 +1022,7 @@ void AirMapTelemetry::_parseJson(QJsonParseError parseError, QJsonDocument doc)
delete
_socket
;
_socket
=
nullptr
;
}
_key
=
""
;
_state
=
State
::
Idle
;
break
;
default:
...
...
@@ -1202,6 +1224,31 @@ void AirMapManager::setToolbox(QGCToolbox* toolbox)
_networkingData
.
login
.
setCredentials
(
ap
->
clientID
()
->
rawValueString
(),
ap
->
userName
()
->
rawValueString
(),
ap
->
password
()
->
rawValueString
());
_flightManager
.
setSitaPilotRegistrationId
(
ap
->
sitaUserReg
()
->
rawValueString
());
_flightManager
.
setSitaUavRegistrationId
(
ap
->
sitaUavReg
()
->
rawValueString
());
connect
(
ap
->
apiKey
(),
&
Fact
::
rawValueChanged
,
this
,
&
AirMapManager
::
_settingsChanged
);
connect
(
ap
->
clientID
(),
&
Fact
::
rawValueChanged
,
this
,
&
AirMapManager
::
_settingsChanged
);
connect
(
ap
->
userName
(),
&
Fact
::
rawValueChanged
,
this
,
&
AirMapManager
::
_settingsChanged
);
connect
(
ap
->
password
(),
&
Fact
::
rawValueChanged
,
this
,
&
AirMapManager
::
_settingsChanged
);
connect
(
ap
->
sitaUserReg
(),
&
Fact
::
rawValueChanged
,
this
,
&
AirMapManager
::
_settingsChanged
);
connect
(
ap
->
sitaUavReg
(),
&
Fact
::
rawValueChanged
,
this
,
&
AirMapManager
::
_settingsChanged
);
}
void
AirMapManager
::
_settingsChanged
()
{
qCDebug
(
AirMapManagerLog
)
<<
"AirMap settings changed"
;
// reset the states
_flightManager
.
abort
();
_flightManager
.
endFlight
();
_telemetry
.
stopTelemetryStream
();
_trafficAlerts
.
disconnectFromHost
();
AirMapSettings
*
ap
=
_toolbox
->
settingsManager
()
->
airMapSettings
();
_networkingData
.
airmapAPIKey
=
ap
->
apiKey
()
->
rawValueString
();
_networkingData
.
login
.
setCredentials
(
ap
->
clientID
()
->
rawValueString
(),
ap
->
userName
()
->
rawValueString
(),
ap
->
password
()
->
rawValueString
());
_flightManager
.
setSitaPilotRegistrationId
(
ap
->
sitaUserReg
()
->
rawValueString
());
_flightManager
.
setSitaUavRegistrationId
(
ap
->
sitaUavReg
()
->
rawValueString
());
}
void
AirMapManager
::
setROI
(
QGeoCoordinate
&
center
,
double
radiusMeters
)
...
...
src/MissionManager/AirMapManager.h
View file @
b0fcbe05
...
...
@@ -119,6 +119,11 @@ private:
QString
_password
;
};
/**
* @class AirMapNetworking
* Handles networking requests (GET & POST), with login if required.
* There can only be one active request per object instance.
*/
class
AirMapNetworking
:
public
QObject
{
Q_OBJECT
...
...
@@ -155,6 +160,11 @@ public:
const
AirMapLogin
&
getLogin
()
const
{
return
_networkingData
.
login
;
}
/**
* abort the current request (_requestFinished() or _requestError() will not be emitted)
*/
void
abort
();
signals:
/// signal when the request finished (get or post). All requests are assumed to return JSON.
void
finished
(
QJsonParseError
parseError
,
QJsonDocument
document
);
...
...
@@ -180,6 +190,8 @@ private:
bool
requiresLogin
;
};
PendingRequest
_pendingRequest
;
QNetworkReply
*
_currentNetworkReply
=
nullptr
;
};
...
...
@@ -252,6 +264,11 @@ public:
_sitaPilotRegistrationId
=
sitaPilotRegistrationId
;
}
/**
* abort the current operation
*/
void
abort
();
public
slots
:
void
endFlight
();
...
...
@@ -441,6 +458,7 @@ private slots:
void
_flightPermitStatusChanged
();
void
_settingsChanged
();
private:
bool
_hasAPIKey
()
const
{
return
_networkingData
.
airmapAPIKey
!=
""
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment