3#include <QtCore/QJsonArray>
9FactGroup::
FactGroup(
int updateRateMsecs, const QString &metaDataFile, QObject *parent,
bool ignoreCamelCase)
11 , _updateRateMSecs(updateRateMsecs)
12 , _ignoreCamelCase(ignoreCamelCase)
21 , _updateRateMSecs(updateRateMsecs)
22 , _ignoreCamelCase(ignoreCamelCase)
35 QMap<QString, QString> defineMap;
39void FactGroup::_setupTimer()
43 _updateTimer.setSingleShot(
false);
51 if (name.contains(
".")) {
52 const QStringList parts = name.split(
".");
53 if (parts.count() != 2) {
54 qCWarning(FactGroupLog) <<
"Only single level of hierarchy supported";
60 qCWarning(FactGroupLog) <<
"Unknown FactGroup" << parts[0];
67 const QString camelCaseName = _ignoreCamelCase ? name : _camelCase(name);
74 if (name.contains(
".")) {
75 const QStringList parts = name.split(
".");
76 if (parts.count() != 2) {
77 qCWarning(FactGroupLog) <<
"Only single level of hierarchy supported";
83 qCWarning(FactGroupLog) <<
"Unknown FactGroup" << parts[0];
87 return factGroup->
getFact(parts[1]);
91 const QString camelCaseName = _ignoreCamelCase ? name : _camelCase(name);
96 qCWarning(FactGroupLog) <<
"Unknown Fact" << camelCaseName;
105 const QString camelCaseName = _ignoreCamelCase ? name : _camelCase(name);
110 qCWarning(FactGroupLog) <<
"Unknown FactGroup" << camelCaseName;
119 qCWarning(FactGroupLog) <<
"Duplicate Fact" << name;
136 qCWarning(FactGroupLog) <<
"Duplicate FactGroup" << name;
148 fact->sendDeferredValueChangedSignal();
154 if (_updateTimer.interval() == 0) {
161 _updateTimer.start();
165 fact->setSendValueChangedSignals(liveUpdates);
170QString FactGroup::_camelCase(
const QString &text)
172 return (text[0].toLower() + text.right(text.length() - 1));
#define QGC_LOGGING_CATEGORY(name, categoryStr)
Used to group Facts together into an object hierarachy.
QMap< QString, Fact * > _nameToFactMap
void telemetryAvailableChanged(bool telemetryAvailable)
QMap< QString, FactMetaData * > _nameToFactMetaDataMap
virtual void _updateAllValues()
void _setTelemetryAvailable(bool telemetryAvailable)
Q_INVOKABLE Fact * getFact(const QString &name) const
void factGroupNamesChanged()
FactGroup(int updateRateMsecs, const QString &metaDataFile, QObject *parent=nullptr, bool ignoreCamelCase=false)
< false: No telemetry for these values has been received
void _addFactGroup(FactGroup *factGroup, const QString &name)
Q_INVOKABLE bool factExists(const QString &name) const
@ return true: if the fact exists in the group
QMap< QString, FactGroup * > _nameToFactGroupMap
void _addFact(Fact *fact, const QString &name)
Q_INVOKABLE FactGroup * getFactGroup(const QString &name) const
Q_INVOKABLE void setLiveUpdates(bool liveUpdates)
Turning on live updates will allow value changes to flow through as they are received.
bool telemetryAvailable() const
const int _updateRateMSecs
Update rate for Fact::valueChanged signals, 0: immediate update.
void _loadFromJsonArray(const QJsonArray &jsonArray)
A Fact is used to hold a single value within the system.
void setMetaData(FactMetaData *metaData, bool setDefaultFromMetaData=false)
void setSendValueChangedSignals(bool sendValueChangedSignals)