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
8e3f1375
Commit
8e3f1375
authored
Dec 23, 2014
by
Don Gagne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More work on Fact meta data
parent
d7aa3a1f
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
88 additions
and
9 deletions
+88
-9
PX4ParameterFacts.cc
src/AutoPilotPlugins/PX4/PX4ParameterFacts.cc
+12
-1
PX4ParameterFacts.h
src/AutoPilotPlugins/PX4/PX4ParameterFacts.h
+4
-0
Fact.cc
src/FactSystem/Fact.cc
+5
-3
Fact.h
src/FactSystem/Fact.h
+6
-1
FactLoader.cc
src/FactSystem/FactLoader.cc
+44
-3
FactLoader.h
src/FactSystem/FactLoader.h
+5
-0
FactMetaData.cc
src/FactSystem/FactMetaData.cc
+7
-0
FactMetaData.h
src/FactSystem/FactMetaData.h
+5
-1
No files found.
src/AutoPilotPlugins/PX4/PX4ParameterFacts.cc
View file @
8e3f1375
...
...
@@ -263,4 +263,15 @@ void PX4ParameterFacts::clearStaticData(void)
}
_mapParameterName2FactMetaData
.
clear
();
_parameterMetaDataLoaded
=
false
;
}
\ No newline at end of file
}
/// Override from FactLoad which connects the meta data to the fact
void
PX4ParameterFacts
::
_addMetaDataToFact
(
Fact
*
fact
)
{
if
(
_mapParameterName2FactMetaData
.
contains
(
fact
->
name
()))
{
fact
->
setMetaData
(
_mapParameterName2FactMetaData
[
fact
->
name
()]);
}
else
{
// Use generic meta data
FactLoader
::
_addMetaDataToFact
(
fact
);
}
}
src/AutoPilotPlugins/PX4/PX4ParameterFacts.h
View file @
8e3f1375
...
...
@@ -52,6 +52,10 @@ public:
static
void
clearStaticData
(
void
);
private:
// Overrides from FactLoader
virtual
void
_addMetaDataToFact
(
Fact
*
fact
);
// Class methods
static
FactMetaData
*
_parseParameter
(
QXmlStreamReader
&
xml
,
const
QString
&
group
);
static
void
_initMetaData
(
FactMetaData
*
metaData
);
static
QVariant
_stringToTypedVariant
(
const
QString
&
string
,
FactMetaData
::
ValueType_t
type
,
bool
failOk
=
false
);
...
...
src/FactSystem/Fact.cc
View file @
8e3f1375
...
...
@@ -28,10 +28,12 @@
#include <QtQml>
Fact
::
Fact
(
QObject
*
parent
)
:
QObject
(
parent
)
Fact
::
Fact
(
QString
name
,
QObject
*
parent
)
:
QObject
(
parent
),
_name
(
name
),
_metaData
(
NULL
)
{
_value
=
""
;
}
void
Fact
::
setValue
(
const
QVariant
&
value
)
...
...
src/FactSystem/Fact.h
View file @
8e3f1375
...
...
@@ -42,6 +42,7 @@ class Fact : public QObject
{
Q_OBJECT
Q_PROPERTY
(
QString
name
READ
name
CONSTANT
)
Q_PROPERTY
(
QVariant
value
READ
value
WRITE
setValue
NOTIFY
valueChanged
USER
true
)
Q_PROPERTY
(
QVariant
defaultValue
READ
defaultValue
CONSTANT
)
Q_PROPERTY
(
FactMetaData
::
ValueType_t
type
READ
type
CONSTANT
)
...
...
@@ -54,10 +55,13 @@ class Fact : public QObject
Q_ENUMS
(
FactMetaData
::
ValueType_t
)
public:
Fact
(
QObject
*
parent
=
NULL
);
Fact
(
Q
String
name
=
""
,
Q
Object
*
parent
=
NULL
);
// Property system methods
/// Read accessor or name property
QString
name
(
void
)
const
{
return
_name
;
}
/// Read accessor for value property
QVariant
value
(
void
)
const
{
return
_value
;
}
...
...
@@ -102,6 +106,7 @@ signals:
void
_containerValueChanged
(
QVariant
&
value
);
private:
QString
_name
;
///< Fact name
QVariant
_value
;
///< Fact value
FactMetaData
*
_metaData
;
///< FactMetaData object for Fact
};
...
...
src/FactSystem/FactLoader.cc
View file @
8e3f1375
...
...
@@ -83,7 +83,9 @@ void FactLoader::_parameterChanged(int uas, int component, QString parameterName
}
if
(
!
_mapParameterName2Variant
.
contains
(
parameterName
))
{
Fact
*
fact
=
new
Fact
(
this
);
qCDebug
(
FactLoaderLog
)
<<
"Adding new fact"
<<
parameterName
;
Fact
*
fact
=
new
Fact
(
parameterName
,
this
);
_mapParameterName2Variant
[
parameterName
]
=
QVariant
::
fromValue
(
fact
);
_mapFact2ParameterName
[
fact
]
=
parameterName
;
...
...
@@ -91,7 +93,7 @@ void FactLoader::_parameterChanged(int uas, int component, QString parameterName
// We need to know when the fact changes from QML so that we can send the new value to the parameter manager
connect
(
fact
,
&
Fact
::
_containerValueChanged
,
this
,
&
FactLoader
::
_valueUpdated
);
qCDebug
(
FactLoaderLog
)
<<
"Adding new fact"
<<
parameterName
;
_addMetaDataToFact
(
fact
)
;
}
Q_ASSERT
(
_mapParameterName2Variant
.
contains
(
parameterName
));
...
...
@@ -105,7 +107,7 @@ void FactLoader::_parameterChanged(int uas, int component, QString parameterName
/// Connected to Fact::valueUpdated
///
/// Sets the new value into the Parameter Manager. Paramter is persisted after send.
/// Sets the new value into the Parameter Manager. Param
e
ter is persisted after send.
void
FactLoader
::
_valueUpdated
(
QVariant
value
)
{
Fact
*
fact
=
qobject_cast
<
Fact
*>
(
sender
());
...
...
@@ -157,3 +159,42 @@ void FactLoader::_paramMgrParameterListUpToDate(void)
emit
factsReady
();
}
}
void
FactLoader
::
_addMetaDataToFact
(
Fact
*
fact
)
{
// Create generic meta data based on value variant type
FactMetaData
::
ValueType_t
factType
=
FactMetaData
::
valueTypeInt32
;
// init to in32 to silence compiler warning
switch
((
QMetaType
::
Type
)
fact
->
value
().
type
())
{
case
QMetaType
:
:
Int
:
factType
=
FactMetaData
::
valueTypeInt32
;
break
;
case
QMetaType
:
:
UInt
:
factType
=
FactMetaData
::
valueTypeUint32
;
break
;
case
QMetaType
:
:
Double
:
factType
=
FactMetaData
::
valueTypeDouble
;
case
QMetaType
:
:
Short
:
factType
=
FactMetaData
::
valueTypeInt16
;
break
;
case
QMetaType
:
:
UShort
:
factType
=
FactMetaData
::
valueTypeUint16
;
break
;
case
QMetaType
:
:
Float
:
factType
=
FactMetaData
::
valueTypeFloat
;
break
;
default:
qCWarning
(
FactLoaderLog
)
<<
"Invalid variant type"
<<
fact
->
value
().
type
();
break
;
}
FactMetaData
*
metaData
=
new
FactMetaData
(
this
);
metaData
->
initFromTypeOnly
(
factType
);
}
src/FactSystem/FactLoader.h
View file @
8e3f1375
...
...
@@ -66,6 +66,11 @@ signals:
/// Signalled when the full set of facts are ready
void
factsReady
(
void
);
protected:
/// Base implementation adds generic meta data based on variant type. Derived class can override to provide
/// more details meta data.
virtual
void
_addMetaDataToFact
(
Fact
*
fact
);
private
slots
:
void
_parameterChanged
(
int
uas
,
int
component
,
QString
parameterName
,
QVariant
value
);
void
_valueUpdated
(
QVariant
value
);
...
...
src/FactSystem/FactMetaData.cc
View file @
8e3f1375
...
...
@@ -31,5 +31,12 @@
FactMetaData
::
FactMetaData
(
QObject
*
parent
)
:
QObject
(
parent
)
{
initFromTypeOnly
(
valueTypeInt32
);
}
void
FactMetaData
::
initFromTypeOnly
(
ValueType_t
initType
)
{
type
=
initType
;
// FIXME: NYI
}
src/FactSystem/FactMetaData.h
View file @
8e3f1375
...
...
@@ -54,8 +54,12 @@ public:
valueTypeDouble
}
ValueType_t
;
QVariant
defaultValue
;
/// Initialize the meta data given only the type.
void
initFromTypeOnly
(
ValueType_t
initType
);
// FIXME: This needs to switch over to Q_PROPERTY mechanism
ValueType_t
type
;
QVariant
defaultValue
;
QString
shortDescription
;
QString
longDescription
;
QString
units
;
...
...
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