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
9b1006ce
Commit
9b1006ce
authored
Oct 14, 2015
by
Nate Weibley
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master' into qt-pch-compiletime
parents
4b3783fb
1f3100cf
Changes
51
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
51 changed files
with
714 additions
and
366 deletions
+714
-366
QGCApplication.pro
QGCApplication.pro
+2
-2
Fact.cc
src/FactSystem/Fact.cc
+12
-12
Fact.h
src/FactSystem/Fact.h
+13
-13
FactMetaData.cc
src/FactSystem/FactMetaData.cc
+3
-3
FactMetaData.h
src/FactSystem/FactMetaData.h
+24
-24
ParameterLoader.cc
src/FactSystem/ParameterLoader.cc
+99
-4
ParameterLoader.h
src/FactSystem/ParameterLoader.h
+12
-4
FlightDisplayView.cc
src/FlightDisplay/FlightDisplayView.cc
+1
-1
FlightDisplayWidget.cc
src/FlightDisplay/FlightDisplayWidget.cc
+4
-2
FlightDisplayWidget.h
src/FlightDisplay/FlightDisplayWidget.h
+1
-1
FlightMap.qml
src/FlightMap/FlightMap.qml
+9
-2
MissionEditor.cc
src/MissionEditor/MissionEditor.cc
+40
-2
MissionEditor.h
src/MissionEditor/MissionEditor.h
+18
-5
MissionEditor.qml
src/MissionEditor/MissionEditor.qml
+131
-34
QGC.cc
src/QGC.cc
+44
-0
QGC.h
src/QGC.h
+2
-0
QGCDockWidget.cc
src/QGCDockWidget.cc
+40
-13
QGCDockWidget.h
src/QGCDockWidget.h
+10
-9
QGCQmlWidgetHolder.cpp
src/QGCQmlWidgetHolder.cpp
+6
-2
QGCQmlWidgetHolder.h
src/QGCQmlWidgetHolder.h
+8
-4
QmlTestWidget.cc
src/QmlControls/QmlTestWidget.cc
+1
-0
ScreenToolsController.cc
src/QmlControls/ScreenToolsController.cc
+1
-1
Vehicle.cc
src/Vehicle/Vehicle.cc
+1
-5
Bootloader.cc
src/VehicleSetup/Bootloader.cc
+2
-46
SetupView.cc
src/VehicleSetup/SetupView.cc
+1
-1
CustomCommandWidget.cc
src/ViewWidgets/CustomCommandWidget.cc
+6
-2
CustomCommandWidget.h
src/ViewWidgets/CustomCommandWidget.h
+1
-1
MockLink.cc
src/comm/MockLink.cc
+45
-3
MockLink.h
src/comm/MockLink.h
+1
-0
PX4RCCalibrationTest.cc
src/qgcunittest/PX4RCCalibrationTest.cc
+1
-1
CameraView.cc
src/ui/CameraView.cc
+19
-6
HILDockWidget.cc
src/ui/HILDockWidget.cc
+4
-2
HILDockWidget.h
src/ui/HILDockWidget.h
+1
-1
MainWindow.cc
src/ui/MainWindow.cc
+94
-121
MainWindow.h
src/ui/MainWindow.h
+13
-9
MultiVehicleDockWidget.cc
src/ui/MultiVehicleDockWidget.cc
+4
-2
MultiVehicleDockWidget.h
src/ui/MultiVehicleDockWidget.h
+3
-3
QGCHilConfiguration.ui
src/ui/QGCHilConfiguration.ui
+1
-1
QGCMAVLinkInspector.cc
src/ui/QGCMAVLinkInspector.cc
+4
-2
QGCMAVLinkInspector.h
src/ui/QGCMAVLinkInspector.h
+3
-3
QGCMAVLinkInspector.ui
src/ui/QGCMAVLinkInspector.ui
+1
-1
QGCTabbedInfoView.cpp
src/ui/QGCTabbedInfoView.cpp
+4
-1
QGCTabbedInfoView.h
src/ui/QGCTabbedInfoView.h
+6
-4
QGCTabbedInfoView.ui
src/ui/QGCTabbedInfoView.ui
+1
-1
QGCUASFileViewMulti.cc
src/ui/QGCUASFileViewMulti.cc
+4
-2
QGCUASFileViewMulti.h
src/ui/QGCUASFileViewMulti.h
+3
-3
QGCUASFileViewMulti.ui
src/ui/QGCUASFileViewMulti.ui
+1
-1
UASInfo.ui
src/ui/UASInfo.ui
+1
-1
MainToolBar.cc
src/ui/toolbar/MainToolBar.cc
+1
-1
UASInfoWidget.cc
src/ui/uas/UASInfoWidget.cc
+4
-1
UASInfoWidget.h
src/ui/uas/UASInfoWidget.h
+3
-3
No files found.
QGCApplication.pro
View file @
9b1006ce
...
...
@@ -230,6 +230,7 @@ HEADERS += \
src
/
QGCApplication
.
h
\
src
/
QGCComboBox
.
h
\
src
/
QGCConfig
.
h
\
src
/
QGCDockWidget
.
h
\
src
/
QGCFileDialog
.
h
\
src
/
QGCGeo
.
h
\
src
/
QGCLoggingCategory
.
h
\
...
...
@@ -295,7 +296,6 @@ HEADERS += \
src
/
comm
/
QGCHilLink
.
h
\
src
/
comm
/
QGCJSBSimLink
.
h
\
src
/
comm
/
QGCXPlaneLink
.
h
\
src
/
QGCDockWidget
.
h
\
src
/
ui
/
CameraView
.
h
\
src
/
ui
/
HILDockWidget
.
h
\
src
/
ui
/
MultiVehicleDockWidget
.
h
\
...
...
@@ -346,6 +346,7 @@ SOURCES += \
src
/
QGC
.
cc
\
src
/
QGCApplication
.
cc
\
src
/
QGCComboBox
.
cc
\
src
/
QGCDockWidget
.
cc
\
src
/
QGCFileDialog
.
cc
\
src
/
QGCLoggingCategory
.
cc
\
src
/
QGCPalette
.
cc
\
...
...
@@ -399,7 +400,6 @@ SOURCES += \
src
/
comm
/
QGCFlightGearLink
.
cc
\
src
/
comm
/
QGCJSBSimLink
.
cc
\
src
/
comm
/
QGCXPlaneLink
.
cc
\
src
/
QGCDockWidget
.
cc
\
src
/
ui
/
CameraView
.
cc
\
src
/
ui
/
HILDockWidget
.
cc
\
src
/
ui
/
MultiVehicleDockWidget
.
cc
\
...
...
src/FactSystem/Fact.cc
View file @
9b1006ce
...
...
@@ -134,7 +134,7 @@ QString Fact::valueString(void) const
return
_value
.
toString
();
}
QVariant
Fact
::
defaultValue
(
void
)
QVariant
Fact
::
defaultValue
(
void
)
const
{
if
(
_metaData
)
{
if
(
!
_metaData
->
defaultValueAvailable
())
{
...
...
@@ -147,12 +147,12 @@ QVariant Fact::defaultValue(void)
}
}
FactMetaData
::
ValueType_t
Fact
::
type
(
void
)
FactMetaData
::
ValueType_t
Fact
::
type
(
void
)
const
{
return
_type
;
}
QString
Fact
::
shortDescription
(
void
)
QString
Fact
::
shortDescription
(
void
)
const
{
if
(
_metaData
)
{
return
_metaData
->
shortDescription
();
...
...
@@ -162,7 +162,7 @@ QString Fact::shortDescription(void)
}
}
QString
Fact
::
longDescription
(
void
)
QString
Fact
::
longDescription
(
void
)
const
{
if
(
_metaData
)
{
return
_metaData
->
longDescription
();
...
...
@@ -172,7 +172,7 @@ QString Fact::longDescription(void)
}
}
QString
Fact
::
units
(
void
)
QString
Fact
::
units
(
void
)
const
{
if
(
_metaData
)
{
return
_metaData
->
units
();
...
...
@@ -182,7 +182,7 @@ QString Fact::units(void)
}
}
QVariant
Fact
::
min
(
void
)
QVariant
Fact
::
min
(
void
)
const
{
if
(
_metaData
)
{
return
_metaData
->
min
();
...
...
@@ -192,7 +192,7 @@ QVariant Fact::min(void)
}
}
QVariant
Fact
::
max
(
void
)
QVariant
Fact
::
max
(
void
)
const
{
if
(
_metaData
)
{
return
_metaData
->
max
();
...
...
@@ -202,7 +202,7 @@ QVariant Fact::max(void)
}
}
bool
Fact
::
minIsDefaultForType
(
void
)
bool
Fact
::
minIsDefaultForType
(
void
)
const
{
if
(
_metaData
)
{
return
_metaData
->
minIsDefaultForType
();
...
...
@@ -212,7 +212,7 @@ bool Fact::minIsDefaultForType(void)
}
}
bool
Fact
::
maxIsDefaultForType
(
void
)
bool
Fact
::
maxIsDefaultForType
(
void
)
const
{
if
(
_metaData
)
{
return
_metaData
->
maxIsDefaultForType
();
...
...
@@ -222,7 +222,7 @@ bool Fact::maxIsDefaultForType(void)
}
}
QString
Fact
::
group
(
void
)
QString
Fact
::
group
(
void
)
const
{
if
(
_metaData
)
{
return
_metaData
->
group
();
...
...
@@ -237,7 +237,7 @@ void Fact::setMetaData(FactMetaData* metaData)
_metaData
=
metaData
;
}
bool
Fact
::
valueEqualsDefault
(
void
)
bool
Fact
::
valueEqualsDefault
(
void
)
const
{
if
(
_metaData
)
{
if
(
_metaData
->
defaultValueAvailable
())
{
...
...
@@ -251,7 +251,7 @@ bool Fact::valueEqualsDefault(void)
}
}
bool
Fact
::
defaultValueAvailable
(
void
)
bool
Fact
::
defaultValueAvailable
(
void
)
const
{
if
(
_metaData
)
{
return
_metaData
->
defaultValueAvailable
();
...
...
src/FactSystem/Fact.h
View file @
9b1006ce
...
...
@@ -74,18 +74,18 @@ public:
QVariant
value
(
void
)
const
;
QString
valueString
(
void
)
const
;
void
setValue
(
const
QVariant
&
value
);
QVariant
defaultValue
(
void
);
bool
defaultValueAvailable
(
void
);
bool
valueEqualsDefault
(
void
);
FactMetaData
::
ValueType_t
type
(
void
);
QString
shortDescription
(
void
);
QString
longDescription
(
void
);
QString
units
(
void
);
QVariant
min
(
void
);
bool
minIsDefaultForType
(
void
);
QVariant
max
(
void
)
;
bool
maxIsDefaultForType
(
void
);
QString
group
(
void
);
QVariant
defaultValue
(
void
)
const
;
bool
defaultValueAvailable
(
void
)
const
;
bool
valueEqualsDefault
(
void
)
const
;
FactMetaData
::
ValueType_t
type
(
void
)
const
;
QString
shortDescription
(
void
)
const
;
QString
longDescription
(
void
)
const
;
QString
units
(
void
)
const
;
QVariant
min
(
void
)
const
;
bool
minIsDefaultForType
(
void
)
const
;
QVariant
max
(
void
)
const
;
bool
maxIsDefaultForType
(
void
)
const
;
QString
group
(
void
)
const
;
/// Sets and sends new value to vehicle even if value is the same
void
forceSetValue
(
const
QVariant
&
value
);
...
...
@@ -120,4 +120,4 @@ private:
FactMetaData
*
_metaData
;
};
#endif
\ No newline at end of file
#endif
src/FactSystem/FactMetaData.cc
View file @
9b1006ce
...
...
@@ -80,7 +80,7 @@ const FactMetaData& FactMetaData::operator=(const FactMetaData& other)
return
*
this
;
}
QVariant
FactMetaData
::
defaultValue
(
void
)
QVariant
FactMetaData
::
defaultValue
(
void
)
const
{
if
(
_defaultValueAvailable
)
{
return
_defaultValue
;
...
...
@@ -122,7 +122,7 @@ void FactMetaData::setMax(const QVariant& max)
}
}
QVariant
FactMetaData
::
_minForType
(
void
)
QVariant
FactMetaData
::
_minForType
(
void
)
const
{
switch
(
_type
)
{
case
valueTypeUint8
:
...
...
@@ -147,7 +147,7 @@ QVariant FactMetaData::_minForType(void)
return
QVariant
();
}
QVariant
FactMetaData
::
_maxForType
(
void
)
QVariant
FactMetaData
::
_maxForType
(
void
)
const
{
switch
(
_type
)
{
case
valueTypeUint8
:
...
...
src/FactSystem/FactMetaData.h
View file @
9b1006ce
...
...
@@ -57,28 +57,28 @@ public:
FactMetaData
(
const
FactMetaData
&
other
,
QObject
*
parent
=
NULL
);
const
FactMetaData
&
operator
=
(
const
FactMetaData
&
other
);
// Property accessors
QString
name
(
void
)
{
return
_name
;
}
QString
group
(
void
)
{
return
_group
;
}
ValueType_t
type
(
void
)
{
return
_type
;
}
QVariant
defaultValue
(
void
)
;
bool
defaultValueAvailable
(
void
)
{
return
_defaultValueAvailable
;
}
QString
shortDescription
(
void
)
{
return
_shortDescription
;
}
QString
longDescription
(
void
)
{
return
_longDescription
;}
QString
units
(
void
)
{
return
_units
;
}
QVariant
min
(
void
)
{
return
_min
;
}
QVariant
max
(
void
)
{
return
_max
;
}
bool
minIsDefaultForType
(
void
)
{
return
_minIsDefaultForType
;
}
bool
maxIsDefaultForType
(
void
)
{
return
_maxIsDefaultForType
;
}
// Property setters
// Property accessors
QString
name
(
void
)
const
{
return
_name
;
}
QString
group
(
void
)
const
{
return
_group
;
}
ValueType_t
type
(
void
)
const
{
return
_type
;
}
QVariant
defaultValue
(
void
)
const
;
bool
defaultValueAvailable
(
void
)
const
{
return
_defaultValueAvailable
;
}
QString
shortDescription
(
void
)
const
{
return
_shortDescription
;
}
QString
longDescription
(
void
)
const
{
return
_longDescription
;}
QString
units
(
void
)
const
{
return
_units
;
}
QVariant
min
(
void
)
const
{
return
_min
;
}
QVariant
max
(
void
)
const
{
return
_max
;
}
bool
minIsDefaultForType
(
void
)
const
{
return
_minIsDefaultForType
;
}
bool
maxIsDefaultForType
(
void
)
const
{
return
_maxIsDefaultForType
;
}
// Property setters
void
setName
(
const
QString
&
name
)
{
_name
=
name
;
}
void
setGroup
(
const
QString
&
group
)
{
_group
=
group
;
}
void
setDefaultValue
(
const
QVariant
&
defaultValue
);
void
setShortDescription
(
const
QString
&
shortDescription
)
{
_shortDescription
=
shortDescription
;
}
void
setLongDescription
(
const
QString
&
longDescription
)
{
_longDescription
=
longDescription
;}
void
setUnits
(
const
QString
&
units
)
{
_units
=
units
;
}
void
setGroup
(
const
QString
&
group
)
{
_group
=
group
;
}
void
setDefaultValue
(
const
QVariant
&
defaultValue
);
void
setShortDescription
(
const
QString
&
shortDescription
)
{
_shortDescription
=
shortDescription
;
}
void
setLongDescription
(
const
QString
&
longDescription
)
{
_longDescription
=
longDescription
;}
void
setUnits
(
const
QString
&
units
)
{
_units
=
units
;
}
void
setMin
(
const
QVariant
&
max
);
void
setMax
(
const
QVariant
&
max
);
...
...
@@ -91,8 +91,8 @@ public:
bool
convertAndValidate
(
const
QVariant
&
value
,
bool
convertOnly
,
QVariant
&
typedValue
,
QString
&
errorString
);
private:
QVariant
_minForType
(
void
);
QVariant
_maxForType
(
void
);
QVariant
_minForType
(
void
)
const
;
QVariant
_maxForType
(
void
)
const
;
QString
_name
;
QString
_group
;
...
...
@@ -108,4 +108,4 @@ private:
bool
_maxIsDefaultForType
;
};
#endif
\ No newline at end of file
#endif
src/FactSystem/ParameterLoader.cc
View file @
9b1006ce
...
...
@@ -36,6 +36,11 @@
#include <QFile>
#include <QDebug>
/* types for local parameter cache */
typedef
QPair
<
int
,
QVariant
>
ParamTypeVal
;
typedef
QPair
<
QString
,
ParamTypeVal
>
NamedParam
;
typedef
QMap
<
int
,
NamedParam
>
MapID2NamedParam
;
QGC_LOGGING_CATEGORY
(
ParameterLoaderLog
,
"ParameterLoaderLog"
)
QGC_LOGGING_CATEGORY
(
ParameterLoaderVerboseLog
,
"ParameterLoaderVerboseLog"
)
...
...
@@ -61,12 +66,16 @@ ParameterLoader::ParameterLoader(AutoPilotPlugin* autopilot, Vehicle* vehicle, Q
_waitingParamTimeoutTimer
.
setSingleShot
(
true
);
_waitingParamTimeoutTimer
.
setInterval
(
1000
);
connect
(
&
_waitingParamTimeoutTimer
,
&
QTimer
::
timeout
,
this
,
&
ParameterLoader
::
_waitingParamTimeout
);
_cacheTimeoutTimer
.
setSingleShot
(
true
);
_cacheTimeoutTimer
.
setInterval
(
2500
);
connect
(
&
_cacheTimeoutTimer
,
&
QTimer
::
timeout
,
this
,
&
ParameterLoader
::
refreshAllParameters
);
// FIXME: Why not direct connect?
connect
(
_vehicle
->
uas
(),
SIGNAL
(
parameterUpdate
(
int
,
int
,
QString
,
int
,
int
,
int
,
QVariant
)),
this
,
SLOT
(
_parameterUpdate
(
int
,
int
,
QString
,
int
,
int
,
int
,
QVariant
)));
/
/ Request full param list
refreshAllParameters
();
/
* Initially attempt a local cache load, refresh over the link if it fails */
_tryCacheLookup
();
}
ParameterLoader
::~
ParameterLoader
()
...
...
@@ -101,7 +110,13 @@ void ParameterLoader::_parameterUpdate(int uasId, int componentId, QString param
return;
}
#endif
if
(
parameterName
==
"_HASH_CHECK"
)
{
/* we received a cache hash, potentially load from cache */
_cacheTimeoutTimer
.
stop
();
_tryCacheHashLoad
(
uasId
,
value
);
return
;
}
_dataMutex
.
lock
();
// Restart our waiting for param timer
...
...
@@ -112,6 +127,8 @@ void ParameterLoader::_parameterUpdate(int uasId, int componentId, QString param
_paramCountMap
[
componentId
]
=
parameterCount
;
_totalParamCount
+=
parameterCount
;
}
_mapParameterId2Name
[
componentId
][
parameterId
]
=
parameterName
;
// If we've never seen this component id before, setup the wait lists.
if
(
!
_waitingReadParamIndexMap
.
contains
(
componentId
))
{
...
...
@@ -246,6 +263,7 @@ void ParameterLoader::_parameterUpdate(int uasId, int componentId, QString param
if
(
waitingParamCount
==
0
)
{
// Now that we know vehicle is up to date persist
_saveToEEPROM
();
_writeLocalParamCache
();
}
_checkInitialLoadComplete
();
...
...
@@ -484,6 +502,19 @@ Out:
}
}
void
ParameterLoader
::
_tryCacheLookup
()
{
/* Start waiting for 2.5 seconds to get a cache hit and avoid loading all params over the radio */
_cacheTimeoutTimer
.
start
();
MAVLinkProtocol
*
mavlink
=
MAVLinkProtocol
::
instance
();
Q_ASSERT
(
mavlink
);
mavlink_message_t
msg
;
mavlink_msg_param_request_read_pack
(
mavlink
->
getSystemId
(),
mavlink
->
getComponentId
(),
&
msg
,
_vehicle
->
id
(),
MAV_COMP_ID_ALL
,
"_HASH_CHECK"
,
-
1
);
_vehicle
->
sendMessage
(
msg
);
}
void
ParameterLoader
::
_readParameterRaw
(
int
componentId
,
const
QString
&
paramName
,
int
paramIndex
)
{
mavlink_message_t
msg
;
...
...
@@ -553,6 +584,70 @@ void ParameterLoader::_writeParameterRaw(int componentId, const QString& paramNa
_vehicle
->
sendMessage
(
msg
);
}
void
ParameterLoader
::
_writeLocalParamCache
()
{
QMap
<
int
,
MapID2NamedParam
>
cache_map
;
foreach
(
int
component
,
_mapParameterId2Name
.
keys
())
{
foreach
(
int
id
,
_mapParameterId2Name
[
component
].
keys
())
{
const
QString
name
(
_mapParameterId2Name
[
component
][
id
]);
const
Fact
*
fact
=
_mapParameterName2Variant
[
component
][
name
].
value
<
Fact
*>
();
cache_map
[
component
][
id
]
=
NamedParam
(
name
,
ParamTypeVal
(
fact
->
type
(),
fact
->
value
()));
}
}
QFile
cache_file
(
QFileInfo
(
QSettings
().
fileName
()).
path
()
+
QDir
::
separator
()
+
"param_cache"
);
cache_file
.
open
(
QIODevice
::
WriteOnly
|
QIODevice
::
Truncate
);
QDataStream
ds
(
&
cache_file
);
ds
<<
cache_map
;
}
void
ParameterLoader
::
_tryCacheHashLoad
(
int
uasId
,
QVariant
hash_value
)
{
uint32_t
crc32_value
=
0
;
/* The datastructure of the cache table */
QMap
<
int
,
MapID2NamedParam
>
cache_map
;
const
QDir
settingsDir
(
QFileInfo
(
QSettings
().
fileName
()).
dir
());
QFile
cache_file
(
settingsDir
.
filePath
(
"param_cache"
));
if
(
!
cache_file
.
exists
())
{
/* no local cache, immediately refresh all params */
refreshAllParameters
();
return
;
}
cache_file
.
open
(
QIODevice
::
ReadOnly
);
/* Deserialize the parameter cache table */
QDataStream
ds
(
&
cache_file
);
ds
>>
cache_map
;
/* compute the crc of the local cache to check against the remote */
foreach
(
int
component
,
cache_map
.
keys
())
{
foreach
(
int
id
,
cache_map
[
component
].
keys
())
{
const
QString
name
(
cache_map
[
component
][
id
].
first
);
const
void
*
vdat
=
cache_map
[
component
][
id
].
second
.
second
.
constData
();
crc32_value
=
QGC
::
crc32
((
const
uint8_t
*
)
qPrintable
(
name
),
name
.
length
(),
crc32_value
);
crc32_value
=
QGC
::
crc32
((
const
uint8_t
*
)
vdat
,
sizeof
(
uint32_t
),
crc32_value
);
}
}
if
(
crc32_value
==
hash_value
.
toUInt
())
{
/* if the two param set hashes match, just load from the disk */
foreach
(
int
component
,
cache_map
.
keys
())
{
int
count
=
cache_map
[
component
].
count
();
foreach
(
int
id
,
cache_map
[
component
].
keys
())
{
const
QString
&
name
=
cache_map
[
component
][
id
].
first
;
const
QVariant
&
value
=
cache_map
[
component
][
id
].
second
.
second
;
const
int
mavType
=
_factTypeToMavType
(
static_cast
<
FactMetaData
::
ValueType_t
>
(
cache_map
[
component
][
id
].
second
.
first
));
_parameterUpdate
(
uasId
,
component
,
name
,
count
,
id
,
mavType
,
value
);
}
}
}
else
{
/* cache and remote hashes differ. Immediately request all params */
refreshAllParameters
();
}
}
void
ParameterLoader
::
_saveToEEPROM
(
void
)
{
if
(
_vehicle
->
firmwarePlugin
()
->
isCapable
(
FirmwarePlugin
::
MavCmdPreflightStorageCapability
))
{
...
...
src/FactSystem/ParameterLoader.h
View file @
9b1006ce
...
...
@@ -55,10 +55,12 @@ public:
/// Returns true if the full set of facts are ready
bool
parametersAreReady
(
void
)
{
return
_parametersReady
;
}
public
slots
:
/// Re-request the full set of parameters from the autopilot
void
refreshAllParameters
(
void
);
public:
/// Request a refresh on the specific parameter
void
refreshParameter
(
int
componentId
,
const
QString
&
name
);
...
...
@@ -109,6 +111,7 @@ private slots:
void
_valueUpdated
(
const
QVariant
&
value
);
void
_restartWaitingParamTimer
(
void
);
void
_waitingParamTimeout
(
void
);
void
_tryCacheLookup
(
void
);
private:
static
QVariant
_stringToTypedVariant
(
const
QString
&
string
,
FactMetaData
::
ValueType_t
type
,
bool
failOk
=
false
);
...
...
@@ -117,6 +120,9 @@ private:
void
_setupGroupMap
(
void
);
void
_readParameterRaw
(
int
componentId
,
const
QString
&
paramName
,
int
paramIndex
);
void
_writeParameterRaw
(
int
componentId
,
const
QString
&
paramName
,
const
QVariant
&
value
);
void
_writeLocalParamCache
();
void
_tryCacheHashLoad
(
int
uasId
,
QVariant
hash_value
);
MAV_PARAM_TYPE
_factTypeToMavType
(
FactMetaData
::
ValueType_t
factType
);
FactMetaData
::
ValueType_t
_mavTypeToFactType
(
MAV_PARAM_TYPE
mavType
);
void
_saveToEEPROM
(
void
);
...
...
@@ -128,7 +134,8 @@ private:
/// First mapping is by component id
/// Second mapping is parameter name, to Fact* in QVariant
QMap
<
int
,
QVariantMap
>
_mapParameterName2Variant
;
QMap
<
int
,
QVariantMap
>
_mapParameterName2Variant
;
QMap
<
int
,
QMap
<
int
,
QString
>
>
_mapParameterId2Name
;
/// First mapping is by component id
/// Second mapping is group name, to Fact
...
...
@@ -150,10 +157,11 @@ private:
int
_totalParamCount
;
///< Number of parameters across all components
QTimer
_waitingParamTimeoutTimer
;
QTimer
_cacheTimeoutTimer
;
QMutex
_dataMutex
;
static
Fact
_defaultFact
;
///< Used to return default fact, when parameter not found
};
#endif
\ No newline at end of file
#endif
src/FlightDisplay/FlightDisplayView.cc
View file @
9b1006ce
...
...
@@ -35,7 +35,7 @@ This file is part of the QGROUNDCONTROL project
const
char
*
kMainFlightDisplayViewGroup
=
"FlightDisplayView"
;
FlightDisplayView
::
FlightDisplayView
(
QWidget
*
parent
)
:
QGCQmlWidgetHolder
(
parent
)
:
QGCQmlWidgetHolder
(
QString
(),
NULL
,
parent
)
{
setSizePolicy
(
QSizePolicy
::
MinimumExpanding
,
QSizePolicy
::
MinimumExpanding
);
setObjectName
(
"FlightDisplayView"
);
...
...
src/FlightDisplay/FlightDisplayWidget.cc
View file @
9b1006ce
...
...
@@ -34,8 +34,8 @@ This file is part of the QGROUNDCONTROL project
const
char
*
kMainFlightDisplayWidgetGroup
=
"FlightDisplayWidget"
;
FlightDisplayWidget
::
FlightDisplayWidget
(
QWidget
*
parent
)
:
QGCQmlWidgetHolder
(
parent
)
FlightDisplayWidget
::
FlightDisplayWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
)
:
QGCQmlWidgetHolder
(
title
,
action
,
parent
)
{
setSizePolicy
(
QSizePolicy
::
MinimumExpanding
,
QSizePolicy
::
MinimumExpanding
);
setObjectName
(
"FlightDisplayWidget"
);
...
...
@@ -86,6 +86,8 @@ FlightDisplayWidget::FlightDisplayWidget(QWidget *parent)
setSource
(
QUrl
::
fromUserInput
(
"qrc:/qml/FlightDisplayWidget.qml"
));
setVisible
(
true
);
loadSettings
();
}
FlightDisplayWidget
::~
FlightDisplayWidget
()
...
...
src/FlightDisplay/FlightDisplayWidget.h
View file @
9b1006ce
...
...
@@ -30,7 +30,7 @@ class FlightDisplayWidget : public QGCQmlWidgetHolder
{
Q_OBJECT
public:
FlightDisplayWidget
(
QWidget
*
parent
=
NULL
);
FlightDisplayWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
NULL
);
~
FlightDisplayWidget
();
/// @brief Invokes the Flight Display Options menu
...
...
src/FlightMap/FlightMap.qml
View file @
9b1006ce
...
...
@@ -50,8 +50,8 @@ Map {
property
string
mapName
:
'
defaultMap
'
property
string
mapType
:
QGroundControl
.
flightMapSettings
.
mapTypeForMapName
(
mapName
)
property
alias
mapWidgets
:
controlWidgets
property
bool
isSatelliteMap
:
false
property
bool
isSatelliteMap
:
mapType
==
"
Satellite Map
"
||
mapType
==
"
Hybrid Map
"
property
real
lon
:
(
longitude
>=
-
180
&&
longitude
<=
180
)
?
longitude
:
0
property
real
lat
:
(
latitude
>=
-
90
&&
latitude
<=
90
)
?
latitude
:
0
...
...
@@ -289,4 +289,11 @@ Map {
}
}
*/
MouseArea
{
//-- TODO: Check if this is still needed when we switch to 5.5.1
//-- Workaround for QTBUG-46388 (Pinch zoom doesn't work without it on mobile)
anchors.fill
:
parent
}
}
// Map
src/MissionEditor/MissionEditor.cc
View file @
9b1006ce
...
...
@@ -35,9 +35,11 @@ This file is part of the QGROUNDCONTROL project
const
char
*
MissionEditor
::
_settingsGroup
=
"MissionEditor"
;
MissionEditor
::
MissionEditor
(
QWidget
*
parent
)
:
QGCQmlWidgetHolder
(
parent
)
:
QGCQmlWidgetHolder
(
QString
(),
NULL
,
parent
)
,
_missionItems
(
NULL
)
,
_canEdit
(
true
)
,
_activeVehicle
(
NULL
)
,
_liveHomePositionAvailable
(
false
)
{
// Get rid of layout default margins
QLayout
*
pl
=
layout
();
...
...
@@ -45,11 +47,16 @@ MissionEditor::MissionEditor(QWidget *parent)
pl
->
setContentsMargins
(
0
,
0
,
0
,
0
);
}
Vehicle
*
activeVehicle
=
MultiVehicleManager
::
instance
()
->
activeVehicle
();
MultiVehicleManager
*
multiVehicleMgr
=
MultiVehicleManager
::
instance
();
connect
(
multiVehicleMgr
,
&
MultiVehicleManager
::
activeVehicleChanged
,
this
,
&
MissionEditor
::
_activeVehicleChanged
);
Vehicle
*
activeVehicle
=
multiVehicleMgr
->
activeVehicle
();
if
(
activeVehicle
)
{
MissionManager
*
missionManager
=
activeVehicle
->
missionManager
();
connect
(
missionManager
,
&
MissionManager
::
newMissionItemsAvailable
,
this
,
&
MissionEditor
::
_newMissionItemsAvailable
);
_newMissionItemsAvailable
();
_activeVehicleChanged
(
activeVehicle
);
}
else
{
_missionItems
=
new
QmlObjectListModel
(
this
);
_initAllMissionItems
();
...
...
@@ -389,3 +396,34 @@ void MissionEditor::_itemCommandChanged(MavlinkQmlSingleton::Qml_MAV_CMD command
_recalcChildItems
();
_recalcWaypointLines
();
}
void
MissionEditor
::
_activeVehicleChanged
(
Vehicle
*
activeVehicle
)
{
if
(
_activeVehicle
)
{
disconnect
(
_activeVehicle
,
&
Vehicle
::
homePositionAvailableChanged
,
this
,
&
MissionEditor
::
_activeVehicleHomePositionAvailableChanged
);
disconnect
(
_activeVehicle
,
&
Vehicle
::
homePositionChanged
,
this
,
&
MissionEditor
::
_activeVehicleHomePositionChanged
);
_activeVehicle
=
NULL
;
_activeVehicleHomePositionAvailableChanged
(
false
);
}
_activeVehicle
=
activeVehicle
;
if
(
_activeVehicle
)
{
connect
(
_activeVehicle
,
&
Vehicle
::
homePositionAvailableChanged
,
this
,
&
MissionEditor
::
_activeVehicleHomePositionAvailableChanged
);
connect
(
_activeVehicle
,
&
Vehicle
::
homePositionChanged
,
this
,
&
MissionEditor
::
_activeVehicleHomePositionChanged
);
_activeVehicleHomePositionChanged
(
_activeVehicle
->
homePosition
());
_activeVehicleHomePositionAvailableChanged
(
_activeVehicle
->
homePositionAvailable
());
}
}
void
MissionEditor
::
_activeVehicleHomePositionAvailableChanged
(
bool
homePositionAvailable
)
{
_liveHomePositionAvailable
=
homePositionAvailable
;
emit
liveHomePositionAvailableChanged
(
_liveHomePositionAvailable
);
}
void
MissionEditor
::
_activeVehicleHomePositionChanged
(
const
QGeoCoordinate
&
homePosition
)
{
_liveHomePosition
=
homePosition
;
emit
liveHomePositionChanged
(
_liveHomePosition
);
}
src/MissionEditor/MissionEditor.h
View file @
9b1006ce
...
...
@@ -26,6 +26,7 @@ This file is part of the QGROUNDCONTROL project
#include "QGCQmlWidgetHolder.h"
#include "QmlObjectListModel.h"
#include "Vehicle.h"
class
MissionEditor
:
public
QGCQmlWidgetHolder
{
...
...
@@ -35,9 +36,11 @@ public:
MissionEditor
(
QWidget
*
parent
=
NULL
);
~
MissionEditor
();
Q_PROPERTY
(
QmlObjectListModel
*
missionItems
READ
missionItems
NOTIFY
missionItemsChanged
)
Q_PROPERTY
(
QmlObjectListModel
*
waypointLines
READ
waypointLines
NOTIFY
waypointLinesChanged
)
Q_PROPERTY
(
bool
canEdit
READ
canEdit
NOTIFY
canEditChanged
)
Q_PROPERTY
(
QmlObjectListModel
*
missionItems
READ
missionItems
NOTIFY
missionItemsChanged
)
Q_PROPERTY
(
QmlObjectListModel
*
waypointLines
READ
waypointLines
NOTIFY
waypointLinesChanged
)
Q_PROPERTY
(
bool
canEdit
READ
canEdit
NOTIFY
canEditChanged
)
Q_PROPERTY
(
bool
liveHomePositionAvailable
READ
liveHomePositionAvailable
NOTIFY
liveHomePositionAvailableChanged
)
Q_PROPERTY
(
QGeoCoordinate
liveHomePosition
READ
liveHomePosition
NOTIFY
liveHomePositionChanged
)
Q_INVOKABLE
int
addMissionItem
(
QGeoCoordinate
coordinate
);
Q_INVOKABLE
void
getMissionItems
(
void
);
...
...
@@ -53,16 +56,23 @@ public:
QmlObjectListModel
*
missionItems
(
void
)
{
return
_missionItems
;
}
QmlObjectListModel
*
waypointLines
(
void
)
{
return
&
_waypointLines
;
}
bool
canEdit
(
void
)
{
return
_canEdit
;
}
bool
liveHomePositionAvailable
(
void
)
{
return
_liveHomePositionAvailable
;
}
QGeoCoordinate
liveHomePosition
(
void
)
{
return
_liveHomePosition
;
}
signals:
void
missionItemsChanged
(
void
);
void
canEditChanged
(
bool
canEdit
);
void
waypointLinesChanged
(
void
);
void
liveHomePositionAvailableChanged
(
bool
homePositionAvailable
);
void
liveHomePositionChanged
(
const
QGeoCoordinate
&
homePosition
);
private
slots
:
void
_newMissionItemsAvailable
();
void
_itemCoordinateChanged
(
const
QGeoCoordinate
&
coordinate
);
void
_itemCommandChanged
(
MavlinkQmlSingleton
::
Qml_MAV_CMD
command
);
void
_activeVehicleChanged
(
Vehicle
*
activeVehicle
);
void
_activeVehicleHomePositionAvailableChanged
(
bool
homePositionAvailable
);
void
_activeVehicleHomePositionChanged
(
const
QGeoCoordinate
&
homePosition
);
private:
void
_recalcSequence
(
void
);
...
...
@@ -78,7 +88,10 @@ private:
QmlObjectListModel
*
_missionItems
;
QmlObjectListModel
_waypointLines
;
bool
_canEdit
;
///< true: UI can edit these items, false: can't edit, can only send to vehicle or save
Vehicle
*
_activeVehicle
;
bool
_liveHomePositionAvailable
;
QGeoCoordinate
_liveHomePosition
;
static
const
char
*
_settingsGroup
;
};
...
...
src/MissionEditor/MissionEditor.qml
View file @
9b1006ce
This diff is collapsed.
Click to expand it.
src/QGC.cc
View file @
9b1006ce
...
...
@@ -94,4 +94,48 @@ double limitAngleToPMPId(double angle)
return
angle
;
}
static
const
quint32
crctab
[]
=
{
0x00000000
,
0x77073096
,
0xee0e612c
,
0x990951ba
,
0x076dc419
,
0x706af48f
,
0xe963a535
,
0x9e6495a3
,
0x0edb8832
,
0x79dcb8a4
,
0xe0d5e91e
,
0x97d2d988
,
0x09b64c2b
,
0x7eb17cbd
,
0xe7b82d07
,
0x90bf1d91
,
0x1db71064
,
0x6ab020f2
,
0xf3b97148
,
0x84be41de
,
0x1adad47d
,
0x6ddde4eb
,
0xf4d4b551
,
0x83d385c7
,
0x136c9856
,
0x646ba8c0
,
0xfd62f97a
,
0x8a65c9ec
,
0x14015c4f
,
0x63066cd9
,
0xfa0f3d63
,
0x8d080df5
,
0x3b6e20c8
,
0x4c69105e
,
0xd56041e4
,
0xa2677172
,
0x3c03e4d1
,
0x4b04d447
,
0xd20d85fd
,
0xa50ab56b
,
0x35b5a8fa
,
0x42b2986c
,
0xdbbbc9d6
,
0xacbcf940
,
0x32d86ce3
,
0x45df5c75
,
0xdcd60dcf
,
0xabd13d59
,
0x26d930ac
,
0x51de003a
,
0xc8d75180
,
0xbfd06116
,
0x21b4f4b5
,
0x56b3c423
,
0xcfba9599
,
0xb8bda50f
,
0x2802b89e
,
0x5f058808
,
0xc60cd9b2
,
0xb10be924
,
0x2f6f7c87
,
0x58684c11
,
0xc1611dab
,
0xb6662d3d
,
0x76dc4190
,
0x01db7106
,
0x98d220bc
,
0xefd5102a
,
0x71b18589
,
0x06b6b51f
,
0x9fbfe4a5
,
0xe8b8d433
,
0x7807c9a2
,
0x0f00f934
,
0x9609a88e
,
0xe10e9818
,
0x7f6a0dbb
,
0x086d3d2d
,
0x91646c97
,
0xe6635c01
,
0x6b6b51f4
,
0x1c6c6162
,
0x856530d8
,
0xf262004e
,
0x6c0695ed
,
0x1b01a57b
,
0x8208f4c1
,
0xf50fc457
,
0x65b0d9c6
,
0x12b7e950
,
0x8bbeb8ea
,
0xfcb9887c
,
0x62dd1ddf
,
0x15da2d49
,
0x8cd37cf3
,
0xfbd44c65
,
0x4db26158
,
0x3ab551ce
,
0xa3bc0074
,
0xd4bb30e2
,
0x4adfa541
,
0x3dd895d7
,
0xa4d1c46d
,
0xd3d6f4fb
,
0x4369e96a
,
0x346ed9fc
,
0xad678846
,
0xda60b8d0
,
0x44042d73
,
0x33031de5
,
0xaa0a4c5f
,
0xdd0d7cc9
,
0x5005713c
,
0x270241aa
,
0xbe0b1010
,
0xc90c2086
,
0x5768b525
,
0x206f85b3
,
0xb966d409
,
0xce61e49f
,
0x5edef90e
,
0x29d9c998
,
0xb0d09822
,
0xc7d7a8b4
,
0x59b33d17
,
0x2eb40d81
,
0xb7bd5c3b
,
0xc0ba6cad
,
0xedb88320
,
0x9abfb3b6
,
0x03b6e20c
,
0x74b1d29a
,
0xead54739
,
0x9dd277af
,
0x04db2615
,
0x73dc1683
,
0xe3630b12
,
0x94643b84
,
0x0d6d6a3e
,
0x7a6a5aa8
,
0xe40ecf0b
,
0x9309ff9d
,
0x0a00ae27
,
0x7d079eb1
,
0xf00f9344
,
0x8708a3d2
,
0x1e01f268
,
0x6906c2fe
,
0xf762575d
,
0x806567cb
,
0x196c3671
,
0x6e6b06e7
,
0xfed41b76
,
0x89d32be0
,
0x10da7a5a
,
0x67dd4acc
,
0xf9b9df6f
,
0x8ebeeff9
,
0x17b7be43
,
0x60b08ed5
,
0xd6d6a3e8
,
0xa1d1937e
,
0x38d8c2c4
,
0x4fdff252
,
0xd1bb67f1
,
0xa6bc5767
,
0x3fb506dd
,
0x48b2364b
,
0xd80d2bda
,
0xaf0a1b4c
,
0x36034af6
,
0x41047a60
,
0xdf60efc3
,
0xa867df55
,
0x316e8eef
,
0x4669be79
,
0xcb61b38c
,
0xbc66831a
,
0x256fd2a0
,
0x5268e236
,
0xcc0c7795
,
0xbb0b4703
,
0x220216b9
,
0x5505262f
,
0xc5ba3bbe
,
0xb2bd0b28
,
0x2bb45a92
,
0x5cb36a04
,
0xc2d7ffa7
,
0xb5d0cf31
,
0x2cd99e8b
,
0x5bdeae1d
,
0x9b64c2b0
,
0xec63f226
,
0x756aa39c
,
0x026d930a
,
0x9c0906a9
,
0xeb0e363f
,
0x72076785
,
0x05005713
,
0x95bf4a82
,
0xe2b87a14
,
0x7bb12bae
,
0x0cb61b38
,
0x92d28e9b
,
0xe5d5be0d
,
0x7cdcefb7
,
0x0bdbdf21
,
0x86d3d2d4
,
0xf1d4e242
,
0x68ddb3f8
,
0x1fda836e
,
0x81be16cd
,
0xf6b9265b
,
0x6fb077e1
,
0x18b74777
,
0x88085ae6
,
0xff0f6a70
,
0x66063bca
,
0x11010b5c
,
0x8f659eff
,
0xf862ae69
,
0x616bffd3
,
0x166ccf45
,
0xa00ae278
,
0xd70dd2ee
,
0x4e048354
,
0x3903b3c2
,
0xa7672661
,
0xd06016f7
,
0x4969474d
,
0x3e6e77db
,
0xaed16a4a
,
0xd9d65adc
,
0x40df0b66
,
0x37d83bf0
,
0xa9bcae53
,
0xdebb9ec5
,
0x47b2cf7f
,
0x30b5ffe9
,
0xbdbdf21c
,
0xcabac28a
,
0x53b39330
,
0x24b4a3a6
,
0xbad03605
,
0xcdd70693
,
0x54de5729
,
0x23d967bf
,
0xb3667a2e
,
0xc4614ab8
,
0x5d681b02
,
0x2a6f2b94
,
0xb40bbe37
,
0xc30c8ea1
,
0x5a05df1b
,
0x2d02ef8d
};
quint32
crc32
(
const
quint8
*
src
,
unsigned
len
,
unsigned
state
)
{
for
(
unsigned
i
=
0
;
i
<
len
;
i
++
)
{
state
=
crctab
[(
state
^
src
[
i
])
&
0xff
]
^
(
state
>>
8
);
}
return
state
;
}
}
src/QGC.h
View file @
9b1006ce
...
...
@@ -125,6 +125,8 @@ public:
}
};
quint32
crc32
(
const
quint8
*
src
,
unsigned
len
,
unsigned
state
);
}
#define QGC_EVENTLOOP_DEBUG 0
...
...
src/QGCDockWidget.cc
View file @
9b1006ce
...
...
@@ -24,24 +24,51 @@
#include "QGCDockWidget.h"
#include <QCloseEvent>
#include <QSettings>
QGCDockWidget
::
QGCDockWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
,
Qt
::
WindowFlags
flags
)
:
QDockWidget
(
title
,
parent
,
flags
),
_action
(
action
)
const
char
*
QGCDockWidget
::
_settingsGroup
=
"DockWidgets"
;
QGCDockWidget
::
QGCDockWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
)
:
QWidget
(
parent
)
,
_title
(
title
)
,
_action
(
action
)
{
QDockWidget
::
DockWidgetFeatures
features
=
QDockWidget
::
DockWidgetMovable
;
if
(
action
)
{
features
|=
QDockWidget
::
DockWidgetClosable
;
}
setFeatures
(
features
);
if
(
action
)
{
setWindowTitle
(
title
);
setWindowFlags
(
Qt
::
Tool
);
loadSettings
();
}
}
// Instead of destroying the widget just hide it
void
QGCDockWidget
::
closeEvent
(
QCloseEvent
*
event
)
{
Q_ASSERT
(
_action
);
event
->
ignore
();
_action
->
trigger
();
if
(
_action
)
{
saveSettings
();
event
->
ignore
();
_action
->
trigger
();
}
}
void
QGCDockWidget
::
loadSettings
(
void
)
{
if
(
_action
)
{
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
if
(
settings
.
contains
(
_title
))
{
restoreGeometry
(
settings
.
value
(
_title
).
toByteArray
());
}
}
}
void
QGCDockWidget
::
saveSettings
(
void
)
{
if
(
_action
)
{
QSettings
settings
;
settings
.
beginGroup
(
_settingsGroup
);
settings
.
setValue
(
_title
,
saveGeometry
());
}
}
src/QGCDockWidget.h
View file @
9b1006ce
...
...
@@ -27,21 +27,22 @@
#include <QDockWidget>
#include <QAction>
/// @file
/// @brief Subclass of QDockWidget so we can intercept the closeEvent.
///
/// @author Don Gagne <don@thegagnes.com>
class
QGCDockWidget
:
public
QDockWidget
{
class
QGCDockWidget
:
public
QWidget
{
Q_OBJECT
public:
QGCDockWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
0
,
Qt
::
WindowFlags
flags
=
0
);
/// Pass in title = QString() and action = NULL when just using as a regular widget
QGCDockWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
0
);
void
loadSettings
(
void
);
void
saveSettings
(
void
);
void
closeEvent
(
QCloseEvent
*
event
);
private:
QAction
*
_action
;
protected:
QString
_title
;
QAction
*
_action
;
static
const
char
*
_settingsGroup
;
};
...
...
src/QGCQmlWidgetHolder.cpp
View file @
9b1006ce
...
...
@@ -26,10 +26,14 @@
#include "QGCQmlWidgetHolder.h"
QGCQmlWidgetHolder
::
QGCQmlWidgetHolder
(
QWidget
*
parent
)
:
Q
Widget
(
parent
)
QGCQmlWidgetHolder
::
QGCQmlWidgetHolder
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
)
:
Q
GCDockWidget
(
title
,
action
,
parent
)
{
_ui
.
setupUi
(
this
);
if
(
action
)
{
setWindowTitle
(
title
);
}
setResizeMode
(
QQuickWidget
::
SizeRootObjectToView
);
}
...
...
src/QGCQmlWidgetHolder.h
View file @
9b1006ce
...
...
@@ -27,10 +27,10 @@
/// @file
/// @author Don Gagne <don@thegagnes.com>
#include <QWidget>
#include "QGCDockWidget.h"
#include "AutoPilotPlugin.h"
#include "ui_QGCQmlWidgetHolder.h"
#include "AutoPilotPlugin.h"
namespace
Ui
{
class
QGCQmlWidgetHolder
;
...
...
@@ -38,12 +38,16 @@ class QGCQmlWidgetHolder;
/// This is used to create widgets which are implemented in QML.
class
QGCQmlWidgetHolder
:
public
QWidget
class
QGCQmlWidgetHolder
:
public
Q
GCDock
Widget
{
Q_OBJECT
public:
explicit
QGCQmlWidgetHolder
(
QWidget
*
parent
=
0
);
// This has a title and action since the base class is QGCDockWidget. In order to use this
// control as a normal QWidget, not a doc widget just pass in:
// title = QString()
// action = NULL
explicit
QGCQmlWidgetHolder
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
0
);
~
QGCQmlWidgetHolder
();
/// Sets the UAS into the widget which in turn will load facts into the context
...
...
src/QmlControls/QmlTestWidget.cc
View file @
9b1006ce
...
...
@@ -27,6 +27,7 @@
#include "QmlTestWidget.h"
QmlTestWidget
::
QmlTestWidget
(
void
)
:
QGCQmlWidgetHolder
(
QString
(),
NULL
,
NULL
)
{
setAttribute
(
Qt
::
WA_DeleteOnClose
);
resize
(
900
,
500
);
...
...
src/QmlControls/ScreenToolsController.cc
View file @
9b1006ce
...
...
@@ -55,7 +55,7 @@ void ScreenToolsController::_updateCanvas()
double
ScreenToolsController
::
getQmlDefaultFontPixelSize
(
void
)
{
if
(
_qmlDefaultFontPixelSize
==
-
1
)
{
QGCQmlWidgetHolder
qmlWidgetHolder
;
QGCQmlWidgetHolder
qmlWidgetHolder
(
QString
(),
NULL
)
;
qmlWidgetHolder
.
setSource
(
QUrl
::
fromUserInput
(
"qrc:/qml/ScreenToolsFontQuery.qml"
));
}
...
...
src/Vehicle/Vehicle.cc
View file @
9b1006ce
...
...
@@ -227,8 +227,8 @@ void Vehicle::_handleHomePosition(mavlink_message_t& message)
_homePosition
.
setAltitude
(
homePos
.
altitude
/
1000.0
);
_homePositionAvailable
=
true
;
emit
homePositionAvailableChanged
(
true
);
emit
homePositionChanged
(
_homePosition
);
emit
homePositionAvailableChanged
(
true
);
}
void
Vehicle
::
_handleHeartbeat
(
mavlink_message_t
&
message
)
...
...
@@ -963,10 +963,6 @@ bool Vehicle::homePositionAvailable(void)
QGeoCoordinate
Vehicle
::
homePosition
(
void
)
{
if
(
!
_homePositionAvailable
)
{
qWarning
()
<<
"Call to homePosition while _homePositionAvailable == false"
;
}
return
_homePosition
;
}
...
...
src/VehicleSetup/Bootloader.cc
View file @
9b1006ce
...
...
@@ -35,50 +35,6 @@
#include "QGC.h"
static
const
quint32
crctab
[]
=
{
0x00000000
,
0x77073096
,
0xee0e612c
,
0x990951ba
,
0x076dc419
,
0x706af48f
,
0xe963a535
,
0x9e6495a3
,
0x0edb8832
,
0x79dcb8a4
,
0xe0d5e91e
,
0x97d2d988
,
0x09b64c2b
,
0x7eb17cbd
,
0xe7b82d07
,
0x90bf1d91
,
0x1db71064
,
0x6ab020f2
,
0xf3b97148
,
0x84be41de
,
0x1adad47d
,
0x6ddde4eb
,
0xf4d4b551
,
0x83d385c7
,
0x136c9856
,
0x646ba8c0
,
0xfd62f97a
,
0x8a65c9ec
,
0x14015c4f
,
0x63066cd9
,
0xfa0f3d63
,
0x8d080df5
,
0x3b6e20c8
,
0x4c69105e
,
0xd56041e4
,
0xa2677172
,
0x3c03e4d1
,
0x4b04d447
,
0xd20d85fd
,
0xa50ab56b
,
0x35b5a8fa
,
0x42b2986c
,
0xdbbbc9d6
,
0xacbcf940
,
0x32d86ce3
,
0x45df5c75
,
0xdcd60dcf
,
0xabd13d59
,
0x26d930ac
,
0x51de003a
,
0xc8d75180
,
0xbfd06116
,
0x21b4f4b5
,
0x56b3c423
,
0xcfba9599
,
0xb8bda50f
,
0x2802b89e
,
0x5f058808
,
0xc60cd9b2
,
0xb10be924
,
0x2f6f7c87
,
0x58684c11
,
0xc1611dab
,
0xb6662d3d
,
0x76dc4190
,
0x01db7106
,
0x98d220bc
,
0xefd5102a
,
0x71b18589
,
0x06b6b51f
,
0x9fbfe4a5
,
0xe8b8d433
,
0x7807c9a2
,
0x0f00f934
,
0x9609a88e
,
0xe10e9818
,
0x7f6a0dbb
,
0x086d3d2d
,
0x91646c97
,
0xe6635c01
,
0x6b6b51f4
,
0x1c6c6162
,
0x856530d8
,
0xf262004e
,
0x6c0695ed
,
0x1b01a57b
,
0x8208f4c1
,
0xf50fc457
,
0x65b0d9c6
,
0x12b7e950
,
0x8bbeb8ea
,
0xfcb9887c
,
0x62dd1ddf
,
0x15da2d49
,
0x8cd37cf3
,
0xfbd44c65
,
0x4db26158
,
0x3ab551ce
,
0xa3bc0074
,
0xd4bb30e2
,
0x4adfa541
,
0x3dd895d7
,
0xa4d1c46d
,
0xd3d6f4fb
,
0x4369e96a
,
0x346ed9fc
,
0xad678846
,
0xda60b8d0
,
0x44042d73
,
0x33031de5
,
0xaa0a4c5f
,
0xdd0d7cc9
,
0x5005713c
,
0x270241aa
,
0xbe0b1010
,
0xc90c2086
,
0x5768b525
,
0x206f85b3
,
0xb966d409
,
0xce61e49f
,
0x5edef90e
,
0x29d9c998
,
0xb0d09822
,
0xc7d7a8b4
,
0x59b33d17
,
0x2eb40d81
,
0xb7bd5c3b
,
0xc0ba6cad
,
0xedb88320
,
0x9abfb3b6
,
0x03b6e20c
,
0x74b1d29a
,
0xead54739
,
0x9dd277af
,
0x04db2615
,
0x73dc1683
,
0xe3630b12
,
0x94643b84
,
0x0d6d6a3e
,
0x7a6a5aa8
,
0xe40ecf0b
,
0x9309ff9d
,
0x0a00ae27
,
0x7d079eb1
,
0xf00f9344
,
0x8708a3d2
,
0x1e01f268
,
0x6906c2fe
,
0xf762575d
,
0x806567cb
,
0x196c3671
,
0x6e6b06e7
,
0xfed41b76
,
0x89d32be0
,
0x10da7a5a
,
0x67dd4acc
,
0xf9b9df6f
,
0x8ebeeff9
,
0x17b7be43
,
0x60b08ed5
,
0xd6d6a3e8
,
0xa1d1937e
,
0x38d8c2c4
,
0x4fdff252
,
0xd1bb67f1
,
0xa6bc5767
,
0x3fb506dd
,
0x48b2364b
,
0xd80d2bda
,
0xaf0a1b4c
,
0x36034af6
,
0x41047a60
,
0xdf60efc3
,
0xa867df55
,
0x316e8eef
,
0x4669be79
,
0xcb61b38c
,
0xbc66831a
,
0x256fd2a0
,
0x5268e236
,
0xcc0c7795
,
0xbb0b4703
,
0x220216b9
,
0x5505262f
,
0xc5ba3bbe
,
0xb2bd0b28
,
0x2bb45a92
,
0x5cb36a04
,
0xc2d7ffa7
,
0xb5d0cf31
,
0x2cd99e8b
,
0x5bdeae1d
,
0x9b64c2b0
,
0xec63f226
,
0x756aa39c
,
0x026d930a
,
0x9c0906a9
,
0xeb0e363f
,
0x72076785
,
0x05005713
,
0x95bf4a82
,
0xe2b87a14
,
0x7bb12bae
,
0x0cb61b38
,
0x92d28e9b
,
0xe5d5be0d
,
0x7cdcefb7
,
0x0bdbdf21
,
0x86d3d2d4
,
0xf1d4e242
,
0x68ddb3f8
,
0x1fda836e
,
0x81be16cd
,
0xf6b9265b
,
0x6fb077e1
,
0x18b74777
,
0x88085ae6
,
0xff0f6a70
,
0x66063bca
,
0x11010b5c
,
0x8f659eff
,
0xf862ae69
,
0x616bffd3
,
0x166ccf45
,
0xa00ae278
,
0xd70dd2ee
,
0x4e048354
,
0x3903b3c2
,
0xa7672661
,
0xd06016f7
,
0x4969474d
,
0x3e6e77db
,
0xaed16a4a
,
0xd9d65adc
,
0x40df0b66
,
0x37d83bf0
,
0xa9bcae53
,
0xdebb9ec5
,
0x47b2cf7f
,
0x30b5ffe9
,
0xbdbdf21c
,
0xcabac28a
,
0x53b39330
,
0x24b4a3a6
,
0xbad03605
,
0xcdd70693
,
0x54de5729
,
0x23d967bf
,
0xb3667a2e
,
0xc4614ab8
,
0x5d681b02
,
0x2a6f2b94
,
0xb40bbe37
,
0xc30c8ea1
,
0x5a05df1b
,
0x2d02ef8d
};
static
quint32
crc32
(
const
uint8_t
*
src
,
unsigned
len
,
unsigned
state
)
{
for
(
unsigned
i
=
0
;
i
<
len
;
i
++
)
{
state
=
crctab
[(
state
^
src
[
i
])
&
0xff
]
^
(
state
>>
8
);
}
return
state
;
}
Bootloader
::
Bootloader
(
QObject
*
parent
)
:
QObject
(
parent
)
{
...
...
@@ -286,7 +242,7 @@ bool Bootloader::_binProgram(QextSerialPort* port, const FirmwareImage* image)
bytesSent
+=
bytesToSend
;
// Calculate the CRC now so we can test it after the board is flashed.
_imageCRC
=
crc32
((
uint8_t
*
)
imageBuf
,
bytesToSend
,
_imageCRC
);
_imageCRC
=
QGC
::
crc32
((
uint8_t
*
)
imageBuf
,
bytesToSend
,
_imageCRC
);
emit
updateProgress
(
bytesSent
,
imageSize
);
}
...
...
@@ -295,7 +251,7 @@ bool Bootloader::_binProgram(QextSerialPort* port, const FirmwareImage* image)
// We calculate the CRC using the entire flash size, filling the remainder with 0xFF.
while
(
bytesSent
<
_boardFlashSize
)
{
const
uint8_t
fill
=
0xFF
;
_imageCRC
=
crc32
(
&
fill
,
1
,
_imageCRC
);
_imageCRC
=
QGC
::
crc32
(
&
fill
,
1
,
_imageCRC
);
bytesSent
++
;
}
...
...
src/VehicleSetup/SetupView.cc
View file @
9b1006ce
...
...
@@ -41,7 +41,7 @@
#include <QDebug>
SetupView
::
SetupView
(
QWidget
*
parent
)
:
QGCQmlWidgetHolder
(
parent
)
QGCQmlWidgetHolder
(
QString
(),
NULL
,
parent
)
{
setSource
(
QUrl
::
fromUserInput
(
"qrc:/qml/SetupView.qml"
));
}
...
...
src/ViewWidgets/CustomCommandWidget.cc
View file @
9b1006ce
...
...
@@ -23,8 +23,12 @@ This file is part of the QGROUNDCONTROL project
#include "CustomCommandWidget.h"
CustomCommandWidget
::
CustomCommandWidget
(
QWidget
*
parent
)
:
QGCQmlWidgetHolder
(
parent
)
CustomCommandWidget
::
CustomCommandWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
)
:
QGCQmlWidgetHolder
(
title
,
action
,
parent
)
{
Q_UNUSED
(
title
);
Q_UNUSED
(
action
);
setSource
(
QUrl
::
fromUserInput
(
"qrc:/qml/CustomCommandWidget.qml"
));
loadSettings
();
}
src/ViewWidgets/CustomCommandWidget.h
View file @
9b1006ce
...
...
@@ -34,7 +34,7 @@ class CustomCommandWidget : public QGCQmlWidgetHolder
Q_OBJECT
public:
CustomCommandWidget
(
QWidget
*
parent
=
0
);
CustomCommandWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
0
);
};
#endif
src/comm/MockLink.cc
View file @
9b1006ce
...
...
@@ -157,6 +157,7 @@ void MockLink::_run1HzTasks(void)
{
if
(
_mavlinkStarted
&&
_connected
)
{
_sendHeartBeat
();
_sendHomePosition
();
}
}
...
...
@@ -571,10 +572,31 @@ void MockLink::_handleParamSet(const mavlink_message_t& msg)
void
MockLink
::
_handleParamRequestRead
(
const
mavlink_message_t
&
msg
)
{
mavlink_message_t
responseMsg
;
mavlink_param_request_read_t
request
;
mavlink_msg_param_request_read_decode
(
&
msg
,
&
request
);
const
QString
param_name
(
QString
::
fromLocal8Bit
(
request
.
param_id
,
strnlen
(
request
.
param_id
,
MAVLINK_MSG_PARAM_REQUEST_READ_FIELD_PARAM_ID_LEN
)));
int
componentId
=
request
.
target_component
;
// special case for magic _HASH_CHECK value
if
(
request
.
target_component
==
MAV_COMP_ID_ALL
&&
param_name
==
"_HASH_CHECK"
)
{
mavlink_param_union_t
valueUnion
;
valueUnion
.
type
=
MAV_PARAM_TYPE_UINT32
;
valueUnion
.
param_uint32
=
0
;
// Special case of magic hash check value
mavlink_msg_param_value_pack
(
_vehicleSystemId
,
componentId
,
&
responseMsg
,
request
.
param_id
,
valueUnion
.
param_float
,
MAV_PARAM_TYPE_UINT32
,
0
,
-
1
);
respondWithMavlinkMessage
(
responseMsg
);
return
;
}
Q_ASSERT
(
_mapParamName2Value
.
contains
(
componentId
));
char
paramId
[
MAVLINK_MSG_PARAM_REQUEST_READ_FIELD_PARAM_ID_LEN
+
1
];
...
...
@@ -598,8 +620,6 @@ void MockLink::_handleParamRequestRead(const mavlink_message_t& msg)
Q_ASSERT
(
_mapParamName2Value
[
componentId
].
contains
(
paramId
));
Q_ASSERT
(
_mapParamName2MavParamType
.
contains
(
paramId
));
mavlink_message_t
responseMsg
;
mavlink_msg_param_value_pack
(
_vehicleSystemId
,
componentId
,
// component id
&
responseMsg
,
// Outgoing message
...
...
@@ -673,3 +693,25 @@ void MockLink::setMissionItemFailureMode(MockLinkMissionItemHandler::FailureMode
{
_missionItemHandler
.
setMissionItemFailureMode
(
failureMode
,
firstTimeOnly
);
}
void
MockLink
::
_sendHomePosition
(
void
)
{
mavlink_message_t
msg
;
float
bogus
[
4
];
bogus
[
0
]
=
0.0
f
;
bogus
[
1
]
=
0.0
f
;
bogus
[
2
]
=
0.0
f
;
bogus
[
3
]
=
0.0
f
;
mavlink_msg_home_position_pack
(
_vehicleSystemId
,
_vehicleComponentId
,
&
msg
,
(
int32_t
)(
47.633033
f
*
1E7
),
(
int32_t
)(
-
122.08794
f
*
1E7
),
(
int32_t
)(
2.0
f
*
1000
),
0.0
f
,
0.0
f
,
0.0
f
,
&
bogus
[
0
],
0.0
f
,
0.0
f
,
0.0
f
);
respondWithMavlinkMessage
(
msg
);
}
src/comm/MockLink.h
View file @
9b1006ce
...
...
@@ -143,6 +143,7 @@ private:
void
_handleCommandLong
(
const
mavlink_message_t
&
msg
);
float
_floatUnionForParam
(
int
componentId
,
const
QString
&
paramName
);
void
_setParamFloatUnionIntoMap
(
int
componentId
,
const
QString
&
paramName
,
float
paramFloat
);
void
_sendHomePosition
(
void
);
MockLinkMissionItemHandler
_missionItemHandler
;
...
...
src/qgcunittest/PX4RCCalibrationTest.cc
View file @
9b1006ce
...
...
@@ -164,7 +164,7 @@ void RadioConfigTest::init(void)
Q_ASSERT
(
_autopilot
);
// This will instatiate the widget with an active uas with ready parameters
_calWidget
=
new
QGCQmlWidgetHolder
();
_calWidget
=
new
QGCQmlWidgetHolder
(
QString
(),
NULL
);
_calWidget
->
resize
(
600
,
600
);
Q_CHECK_PTR
(
_calWidget
);
_calWidget
->
setAutoPilot
(
_autopilot
);
...
...
src/ui/CameraView.cc
View file @
9b1006ce
...
...
@@ -31,6 +31,7 @@ This file is part of the QGROUNDCONTROL project
#include "CameraView.h"
#include <QDebug>
#include <QtOpenGL>
#include <QOpenGLFunctions_2_0>
CameraView
::
CameraView
(
int
width
,
int
height
,
int
depth
,
int
channels
,
QWidget
*
parent
)
:
QGLWidget
(
parent
)
{
...
...
@@ -237,14 +238,26 @@ void CameraView::setPixels(int imgid, const unsigned char* imageData, int length
void
CameraView
::
paintGL
()
{
glDrawPixels
(
glImage
.
width
(),
glImage
.
height
(),
GL_RGBA
,
GL_UNSIGNED_BYTE
,
glImage
.
bits
());
Q_ASSERT
(
QOpenGLContext
::
currentContext
());
QOpenGLFunctions_2_0
*
funcs
=
QOpenGLContext
::
currentContext
()
->
versionFunctions
<
QOpenGLFunctions_2_0
>
();
if
(
!
funcs
)
{
qWarning
()
<<
"OpenGL 2.0 not available on this platform. CameraView will not function"
;
return
;
}
funcs
->
glDrawPixels
(
glImage
.
width
(),
glImage
.
height
(),
GL_RGBA
,
GL_UNSIGNED_BYTE
,
glImage
.
bits
());
}
void
CameraView
::
resizeGL
(
int
w
,
int
h
)
{
glViewport
(
0
,
0
,
w
,
h
);
glMatrixMode
(
GL_PROJECTION
);
glLoadIdentity
();
glOrtho
(
0
,
w
,
0
,
h
,
-
1
,
1
);
glMatrixMode
(
GL_MODELVIEW
);
Q_ASSERT
(
QOpenGLContext
::
currentContext
());
QOpenGLFunctions_2_0
*
funcs
=
QOpenGLContext
::
currentContext
()
->
versionFunctions
<
QOpenGLFunctions_2_0
>
();
if
(
!
funcs
)
{
// paintGL warning should suffice
return
;
}
funcs
->
glViewport
(
0
,
0
,
w
,
h
);
funcs
->
glMatrixMode
(
GL_PROJECTION
);
funcs
->
glLoadIdentity
();
funcs
->
glOrtho
(
0
,
w
,
0
,
h
,
-
1
,
1
);
funcs
->
glMatrixMode
(
GL_MODELVIEW
);
}
src/ui/HILDockWidget.cc
View file @
9b1006ce
...
...
@@ -24,10 +24,12 @@
#include "HILDockWidget.h"
#include "QGCHilConfiguration.h"
HILDockWidget
::
HILDockWidget
(
QWidget
*
parent
)
:
MultiVehicleDockWidget
(
parent
)
HILDockWidget
::
HILDockWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
)
:
MultiVehicleDockWidget
(
title
,
action
,
parent
)
{
init
();
loadSettings
();
}
HILDockWidget
::~
HILDockWidget
()
...
...
src/ui/HILDockWidget.h
View file @
9b1006ce
...
...
@@ -31,7 +31,7 @@ class HILDockWidget : public MultiVehicleDockWidget
Q_OBJECT
public:
explicit
HILDockWidget
(
QWidget
*
parent
=
0
);
explicit
HILDockWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
0
);
~
HILDockWidget
();
protected:
...
...
src/ui/MainWindow.cc
View file @
9b1006ce
This diff is collapsed.
Click to expand it.
src/ui/MainWindow.h
View file @
9b1006ce
...
...
@@ -35,24 +35,26 @@ This file is part of the QGROUNDCONTROL project
#include <QStatusBar>
#include <QStackedWidget>
#include <QSettings>
#include <
qlist.h
>
#include <
QList
>
#include "ui_MainWindow.h"
#include "LinkManager.h"
#include "LinkInterface.h"
#include "UASInterface.h"
#include "CameraView.h"
#if (defined QGC_MOUSE_ENABLED_WIN) | (defined QGC_MOUSE_ENABLED_LINUX)
#include "Mouse6dofInput.h"
#endif // QGC_MOUSE_ENABLED_WIN
#include "MainToolBar.h"
#include "LogCompressor.h"
#include "FlightDisplayView.h"
#include "QGCMAVLinkInspector.h"
#include "QGCMAVLinkLogPlayer.h"
#include "MAVLinkDecoder.h"
#include "Vehicle.h"
#include "QGCDockWidget.h"
#if (defined QGC_MOUSE_ENABLED_WIN) | (defined QGC_MOUSE_ENABLED_LINUX)
#include "Mouse6dofInput.h"
#endif // QGC_MOUSE_ENABLED_WIN
class
QGCFirmwareUpdate
;
class
QSplashScreen
;
...
...
@@ -270,13 +272,12 @@ private:
static
const
char
*
_customCommandWidgetName
;
static
const
char
*
_filesDockWidgetName
;
static
const
char
*
_uasStatusDetailsDockWidgetName
;
static
const
char
*
_mapViewDockWidgetName
;
static
const
char
*
_pfdDockWidgetName
;
static
const
char
*
_uasInfoViewDockWidgetName
;
static
const
char
*
_hilDockWidgetName
;
QMap
<
QString
,
Q
DockWidget
*>
_mapName2DockWidget
;
QMap
<
Q
DockWidget
*
,
QAction
*>
_mapDockWidget
2Action
;
QMap
<
QString
,
Q
GCDockWidget
*>
_mapName2DockWidget
;
QMap
<
Q
String
,
QAction
*>
_mapName
2Action
;
#endif
void
_buildPlanView
(
void
);
...
...
@@ -290,11 +291,14 @@ private:
void
_loadCurrentViewState
(
void
);
#ifndef __mobile__
void
_createDockWidget
(
const
QString
&
title
,
const
QString
&
name
,
Qt
::
DockWidgetArea
area
,
QWidget
*
innerWidget
);
void
_createInnerDockWidget
(
const
QString
&
widgetName
);
void
_buildCommonWidgets
(
void
);
void
_hideAllDockWidgets
(
void
);
void
_showDockWidget
(
const
QString
&
name
,
bool
show
);
void
_loadVisibleWidgetsSettings
(
void
);
void
_storeVisibleWidgetsSettings
(
void
);
static
const
char
*
_visibleWidgetsKey
;
#endif
bool
_autoReconnect
;
...
...
src/ui/MultiVehicleDockWidget.cc
View file @
9b1006ce
...
...
@@ -25,12 +25,14 @@
#include "ui_MultiVehicleDockWidget.h"
#include "MultiVehicleManager.h"
MultiVehicleDockWidget
::
MultiVehicleDockWidget
(
QWidget
*
parent
)
:
Q
Widget
(
parent
)
MultiVehicleDockWidget
::
MultiVehicleDockWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
)
:
Q
GCDockWidget
(
title
,
action
,
parent
)
,
_ui
(
new
Ui
::
MultiVehicleDockWidget
)
{
_ui
->
setupUi
(
this
);
setWindowTitle
(
title
);
connect
(
MultiVehicleManager
::
instance
(),
&
MultiVehicleManager
::
activeVehicleChanged
,
this
,
&
MultiVehicleDockWidget
::
_activeVehicleChanged
);
connect
(
MultiVehicleManager
::
instance
(),
&
MultiVehicleManager
::
vehicleAdded
,
this
,
&
MultiVehicleDockWidget
::
_vehicleAdded
);
connect
(
MultiVehicleManager
::
instance
(),
&
MultiVehicleManager
::
vehicleRemoved
,
this
,
&
MultiVehicleDockWidget
::
_vehicleRemoved
);
...
...
src/ui/MultiVehicleDockWidget.h
View file @
9b1006ce
...
...
@@ -24,9 +24,9 @@
#ifndef MultiVehicleDockWidget_H
#define MultiVehicleDockWidget_H
#include <QWidget>
#include <QMap>
#include "QGCDockWidget.h"
#include "Vehicle.h"
namespace
Ui
...
...
@@ -37,12 +37,12 @@ namespace Ui
/// Provides a base class for a dock widget which automatically handles
/// Vehicles coming and going. It does this by using a stacked widget which
/// holds individual Vehicle specific widgets.
class
MultiVehicleDockWidget
:
public
QWidget
class
MultiVehicleDockWidget
:
public
Q
GCDock
Widget
{
Q_OBJECT
public:
explicit
MultiVehicleDockWidget
(
QWidget
*
parent
=
0
);
explicit
MultiVehicleDockWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
0
);
~
MultiVehicleDockWidget
();
/// Must be called in the derived class contructor to initialize the base class
...
...
src/ui/QGCHilConfiguration.ui
View file @
9b1006ce
...
...
@@ -17,7 +17,7 @@
</sizepolicy>
</property>
<property
name=
"windowTitle"
>
<string>
Form
</string>
<string>
HIL Config
</string>
</property>
<layout
class=
"QGridLayout"
name=
"gridLayout"
rowstretch=
"1,100,1"
columnstretch=
"40,0"
>
<item
row=
"0"
column=
"0"
>
...
...
src/ui/QGCMAVLinkInspector.cc
View file @
9b1006ce
...
...
@@ -12,8 +12,8 @@
const
float
QGCMAVLinkInspector
::
updateHzLowpass
=
0.2
f
;
const
unsigned
int
QGCMAVLinkInspector
::
updateInterval
=
1000U
;
QGCMAVLinkInspector
::
QGCMAVLinkInspector
(
MAVLinkProtocol
*
protocol
,
QWidget
*
parent
)
:
Q
Widget
(
parent
),
QGCMAVLinkInspector
::
QGCMAVLinkInspector
(
const
QString
&
title
,
QAction
*
action
,
MAVLinkProtocol
*
protocol
,
QWidget
*
parent
)
:
Q
GCDockWidget
(
title
,
action
,
parent
),
_protocol
(
protocol
),
selectedSystemID
(
0
),
selectedComponentID
(
0
),
...
...
@@ -58,6 +58,8 @@ QGCMAVLinkInspector::QGCMAVLinkInspector(MAVLinkProtocol* protocol, QWidget *par
// Attach the UI's refresh rate to a timer.
connect
(
&
updateTimer
,
SIGNAL
(
timeout
()),
this
,
SLOT
(
refreshView
()));
updateTimer
.
start
(
updateInterval
);
loadSettings
();
}
void
QGCMAVLinkInspector
::
_vehicleAdded
(
Vehicle
*
vehicle
)
...
...
src/ui/QGCMAVLinkInspector.h
View file @
9b1006ce
#ifndef QGCMAVLINKINSPECTOR_H
#define QGCMAVLINKINSPECTOR_H
#include <QWidget>
#include <QMap>
#include <QTimer>
#include "QGCDockWidget.h"
#include "MAVLinkProtocol.h"
#include "Vehicle.h"
...
...
@@ -15,12 +15,12 @@ namespace Ui {
class
QTreeWidgetItem
;
class
UASInterface
;
class
QGCMAVLinkInspector
:
public
QWidget
class
QGCMAVLinkInspector
:
public
Q
GCDock
Widget
{
Q_OBJECT
public:
explicit
QGCMAVLinkInspector
(
MAVLinkProtocol
*
protocol
,
QWidget
*
parent
=
0
);
explicit
QGCMAVLinkInspector
(
const
QString
&
title
,
QAction
*
action
,
MAVLinkProtocol
*
protocol
,
QWidget
*
parent
=
0
);
~
QGCMAVLinkInspector
();
public
slots
:
...
...
src/ui/QGCMAVLinkInspector.ui
View file @
9b1006ce
...
...
@@ -11,7 +11,7 @@
</rect>
</property>
<property
name=
"windowTitle"
>
<string>
Form
</string>
<string>
MAVLink Inspector
</string>
</property>
<layout
class=
"QGridLayout"
name=
"gridLayout"
columnstretch=
"2,8,2,8,3"
>
<property
name=
"leftMargin"
>
...
...
src/ui/QGCTabbedInfoView.cpp
View file @
9b1006ce
#include "QGCTabbedInfoView.h"
QGCTabbedInfoView
::
QGCTabbedInfoView
(
QWidget
*
parent
)
:
QWidget
(
parent
)
QGCTabbedInfoView
::
QGCTabbedInfoView
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
)
:
QGCDockWidget
(
title
,
action
,
parent
)
{
ui
.
setupUi
(
this
);
messageView
=
new
UASMessageViewWidget
(
this
);
...
...
@@ -11,6 +12,8 @@ QGCTabbedInfoView::QGCTabbedInfoView(QWidget *parent) : QWidget(parent)
//ui.tabWidget->addTab(actionsWidget,"Actions");
//ui.tabWidget->addTab(rawView,"Status");
ui
.
tabWidget
->
addTab
(
messageView
,
"Messages"
);
loadSettings
();
}
void
QGCTabbedInfoView
::
addSource
(
MAVLinkDecoder
*
decoder
)
{
...
...
src/ui/QGCTabbedInfoView.h
View file @
9b1006ce
#ifndef QGCTABBEDINFOVIEW_H
#define QGCTABBEDINFOVIEW_H
#include <QWidget>
#include "ui_QGCTabbedInfoView.h"
#include "QGCDockWidget.h"
#include "MAVLinkDecoder.h"
#include "UASMessageView.h"
#include "UASQuickView.h"
#include "UASRawStatusView.h"
class
QGCTabbedInfoView
:
public
QWidget
#include "ui_QGCTabbedInfoView.h"
class
QGCTabbedInfoView
:
public
QGCDockWidget
{
Q_OBJECT
public:
explicit
QGCTabbedInfoView
(
QWidget
*
parent
=
0
);
explicit
QGCTabbedInfoView
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
0
);
~
QGCTabbedInfoView
();
void
addSource
(
MAVLinkDecoder
*
decoder
);
private:
...
...
src/ui/QGCTabbedInfoView.ui
View file @
9b1006ce
...
...
@@ -11,7 +11,7 @@
</rect>
</property>
<property
name=
"windowTitle"
>
<string>
Form
</string>
<string>
Info View
</string>
</property>
<layout
class=
"QVBoxLayout"
name=
"verticalLayout"
>
<item>
...
...
src/ui/QGCUASFileViewMulti.cc
View file @
9b1006ce
...
...
@@ -4,8 +4,8 @@
#include "MultiVehicleManager.h"
#include "QGCUASFileView.h"
QGCUASFileViewMulti
::
QGCUASFileViewMulti
(
QWidget
*
parent
)
:
Q
Widget
(
parent
),
QGCUASFileViewMulti
::
QGCUASFileViewMulti
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
)
:
Q
GCDockWidget
(
title
,
action
,
parent
),
ui
(
new
Ui
::
QGCUASFileViewMulti
)
{
ui
->
setupUi
(
this
);
...
...
@@ -18,6 +18,8 @@ QGCUASFileViewMulti::QGCUASFileViewMulti(QWidget *parent) :
_vehicleAdded
(
MultiVehicleManager
::
instance
()
->
activeVehicle
());
_activeVehicleChanged
(
MultiVehicleManager
::
instance
()
->
activeVehicle
());
}
loadSettings
();
}
void
QGCUASFileViewMulti
::
_vehicleRemoved
(
Vehicle
*
vehicle
)
...
...
src/ui/QGCUASFileViewMulti.h
View file @
9b1006ce
#ifndef QGCUASFILEVIEWMULTI_H
#define QGCUASFILEVIEWMULTI_H
#include <QWidget>
#include <QMap>
#include "QGCDockWidget.h"
#include "QGCUASFileView.h"
#include "UAS.h"
...
...
@@ -12,12 +12,12 @@ namespace Ui
class
QGCUASFileViewMulti
;
}
class
QGCUASFileViewMulti
:
public
QWidget
class
QGCUASFileViewMulti
:
public
Q
GCDock
Widget
{
Q_OBJECT
public:
explicit
QGCUASFileViewMulti
(
QWidget
*
parent
=
0
);
explicit
QGCUASFileViewMulti
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
0
);
~
QGCUASFileViewMulti
();
protected:
...
...
src/ui/QGCUASFileViewMulti.ui
View file @
9b1006ce
...
...
@@ -11,7 +11,7 @@
</rect>
</property>
<property
name=
"windowTitle"
>
<string>
Form
</string>
<string>
Onboard Files
</string>
</property>
<layout
class=
"QHBoxLayout"
name=
"horizontalLayout"
>
<property
name=
"margin"
>
...
...
src/ui/UASInfo.ui
View file @
9b1006ce
...
...
@@ -11,7 +11,7 @@
</rect>
</property>
<property
name=
"windowTitle"
>
<string>
Form
</string>
<string>
Status Details
</string>
</property>
<property
name=
"styleSheet"
>
<string
notr=
"true"
/>
...
...
src/ui/toolbar/MainToolBar.cc
View file @
9b1006ce
...
...
@@ -41,7 +41,7 @@ This file is part of the QGROUNDCONTROL project
#include "UAS.h"
MainToolBar
::
MainToolBar
(
QWidget
*
parent
)
:
QGCQmlWidgetHolder
(
parent
)
:
QGCQmlWidgetHolder
(
QString
(),
NULL
,
parent
)
,
_vehicle
(
NULL
)
,
_mav
(
NULL
)
,
_toolBar
(
NULL
)
...
...
src/ui/uas/UASInfoWidget.cc
View file @
9b1006ce
...
...
@@ -43,7 +43,8 @@ This file is part of the PIXHAWK project
#include "QGC.h"
#include "UAS.h"
UASInfoWidget
::
UASInfoWidget
(
QWidget
*
parent
,
QString
name
)
:
QWidget
(
parent
)
UASInfoWidget
::
UASInfoWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
,
QString
name
)
:
QGCDockWidget
(
title
,
action
,
parent
)
{
ui
.
setupUi
(
this
);
this
->
name
=
name
;
...
...
@@ -72,6 +73,8 @@ UASInfoWidget::UASInfoWidget(QWidget *parent, QString name) : QWidget(parent)
updateTimer
->
start
(
updateInterval
);
this
->
setVisible
(
false
);
loadSettings
();
}
UASInfoWidget
::~
UASInfoWidget
()
...
...
src/ui/uas/UASInfoWidget.h
View file @
9b1006ce
...
...
@@ -32,10 +32,10 @@ This file is part of the QGROUNDCONTROL project
#ifndef _UASINFOWIDGET_H_
#define _UASINFOWIDGET_H_
#include <QWidget>
#include <QTimer>
#include <QMap>
#include "QGCDockWidget.h"
#include "UASInterface.h"
#include "ui_UASInfo.h"
#include "Vehicle.h"
...
...
@@ -44,11 +44,11 @@ This file is part of the QGROUNDCONTROL project
* @brief Info indicator for the currently active UAS
*
**/
class
UASInfoWidget
:
public
QWidget
class
UASInfoWidget
:
public
Q
GCDock
Widget
{
Q_OBJECT
public:
UASInfoWidget
(
QWidget
*
parent
=
0
,
QString
name
=
""
);
UASInfoWidget
(
const
QString
&
title
,
QAction
*
action
,
QWidget
*
parent
=
0
,
QString
name
=
""
);
~
UASInfoWidget
();
public
slots
:
...
...
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