Commit 83409be5 authored by tstellanova's avatar tstellanova

utility methods for data model

parent 0c739bc2
...@@ -7,20 +7,44 @@ UASParameterDataModel::UASParameterDataModel(QObject *parent) : ...@@ -7,20 +7,44 @@ UASParameterDataModel::UASParameterDataModel(QObject *parent) :
{ {
}
void UASParameterDataModel::addPendingIfParameterChanged(int componentId, QString& key, QVariant &value)
{
addComponent(componentId);
QMap<QString, QVariant> *existParams = getOnbardParametersForComponent(componentId);
QMap<QString, QVariant> *pendParams = getPendingParametersForComponent(componentId);
QVariant existValue = existParams->value(key);
QVariant pendValue = pendParams->value(key);
if (!(existValue == pendValue)) {
setPendingParameter(componentId,key,value);
}
}
void UASParameterDataModel::setPendingParameter(int componentId, QString& key, QVariant &value)
{
//ensure we have a placeholder map for this component
addComponent(componentId);
QMap<QString, QVariant> *params = getPendingParametersForComponent(componentId);
params->insert(key,value);
} }
void UASParameterDataModel::setOnboardParameter(int componentId, QString& key, QVariant &value)
{
//ensure we have a placeholder map for this component
addComponent(componentId);
QMap<QString, QVariant> *params = getOnbardParametersForComponent(componentId);
params->insert(key,value);
}
void UASParameterDataModel::setPendingParameter(int componentId, QString& key, QVariant &value) void UASParameterDataModel::addComponent(int componentId)
{ {
QMap<QString, QVariant> *compPendingParams = pendingParameters.value(componentId); if (!onboardParameters.contains(componentId)) {
//TODO insert blank map if necessary onboardParameters.insert(componentId, new QMap<QString, QVariant>());
if (NULL == compPendingParams) { }
pendingParameters.insert(componentId,new QMap<QString, QVariant>()); if (!pendingParameters.contains(componentId)) {
compPendingParams = pendingParameters.value(componentId); pendingParameters.insert(componentId, new QMap<QString, QVariant>());
} }
compPendingParams->insert(key,value);
} }
...@@ -12,8 +12,23 @@ public: ...@@ -12,8 +12,23 @@ public:
explicit UASParameterDataModel(QObject *parent = 0); explicit UASParameterDataModel(QObject *parent = 0);
virtual void addComponent(int componentId);
/** @brief Write a new pending parameter value that may be eventually sent to the UAS */ /** @brief Write a new pending parameter value that may be eventually sent to the UAS */
virtual void setPendingParameter(int componentId, QString& paramKey, QVariant& paramValue); virtual void setPendingParameter(int componentId, QString& paramKey, QVariant& paramValue);
virtual void setOnboardParameter(int componentId, QString& key, QVariant &value);
/** @brief add this parameter to pending list iff it has changed from onboard value */
virtual void addPendingIfParameterChanged(int componentId, QString& key, QVariant &value);
QMap<QString , QVariant>* getPendingParametersForComponent(int componentId) {
return pendingParameters.value(componentId);
}
QMap<QString , QVariant>* getOnbardParametersForComponent(int componentId) {
return onboardParameters.value(componentId);
}
QMap<int, QMap<QString, QVariant>* > getPendingParameters() { QMap<int, QMap<QString, QVariant>* > getPendingParameters() {
return pendingParameters; return pendingParameters;
......
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