UASParameterDataModel.cc 2.39 KB
Newer Older
1 2
#include "UASParameterDataModel.h"

3
#include <QDebug>
4 5 6 7 8 9 10
#include <QVariant>

UASParameterDataModel::UASParameterDataModel(QObject *parent) :
    QObject(parent)
{


11
}
12

13 14 15 16 17 18 19 20 21 22 23 24
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);
    }
}
25 26


27 28 29 30 31 32
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);
33 34
}

35
void UASParameterDataModel::setOnboardParameter(int componentId, QString& key,  QVariant& value)
36 37 38 39 40 41
{
    //ensure we have a placeholder map for this component
    addComponent(componentId);
    QMap<QString, QVariant> *params = getOnbardParametersForComponent(componentId);
    params->insert(key,value);
}
42

43
void UASParameterDataModel::addComponent(int componentId)
44
{
45 46 47 48 49
    if (!onboardParameters.contains(componentId)) {
        onboardParameters.insert(componentId, new QMap<QString, QVariant>());
    }
    if (!pendingParameters.contains(componentId)) {
        pendingParameters.insert(componentId, new QMap<QString, QVariant>());
50 51
    }
}
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72


void UASParameterDataModel::handleParameterUpdate(int componentId, QString& key, QVariant& value)
{
    //verify that the value requested by the user matches the set value
    //if it doesn't match, leave the pending parameter in the pending list!
    if (pendingParameters.contains(componentId)) {
        QMap<QString , QVariant> *pendingParams = pendingParameters.value(componentId);
        if ((NULL != pendingParams) && pendingParams->contains(key)) {
            QVariant reqVal = pendingParams->value(key);
            if (reqVal == value) {
                pendingParams->remove(key);
            }
            else {
                qDebug() << "Pending commit for " << key << " want: " << reqVal << " got: " << value;
            }
        }
    }

    setOnboardParameter(componentId,key, value);
}