PX4GeoFenceManager.cc 2.1 KB
Newer Older
Don Gagne's avatar
Don Gagne committed
1 2 3 4 5 6 7 8 9 10 11 12
/****************************************************************************
 *
 *   (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

#include "PX4GeoFenceManager.h"
#include "Vehicle.h"
#include "FirmwarePlugin.h"
13
#include "ParameterManager.h"
Don Gagne's avatar
Don Gagne committed
14 15 16 17 18 19

PX4GeoFenceManager::PX4GeoFenceManager(Vehicle* vehicle)
    : GeoFenceManager(vehicle)
    , _firstParamLoadComplete(false)
    , _circleRadiusFact(NULL)
{
20
    connect(_vehicle->parameterManager(), &ParameterManager::parametersReadyChanged, this, &PX4GeoFenceManager::_parametersReady);
21

22
    if (_vehicle->parameterManager()->parametersReady()) {
23 24
        _parametersReady();
    }
Don Gagne's avatar
Don Gagne committed
25 26 27 28 29 30 31 32 33 34 35 36
}

PX4GeoFenceManager::~PX4GeoFenceManager()
{

}

void PX4GeoFenceManager::_parametersReady(void)
{
    if (!_firstParamLoadComplete) {
        _firstParamLoadComplete = true;

37
        _circleRadiusFact = _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, QStringLiteral("GF_MAX_HOR_DIST"));
38
        emit circleRadiusFactChanged(_circleRadiusFact);
Don Gagne's avatar
Don Gagne committed
39 40 41 42 43

        QStringList paramNames;
        QStringList paramLabels;

        paramNames << QStringLiteral("GF_ACTION") << QStringLiteral("GF_MAX_HOR_DIST") << QStringLiteral("GF_MAX_VER_DIST");
44
        paramLabels << QStringLiteral("Breach Action:") << QStringLiteral("Radius:") << QStringLiteral("Max Altitude:");
Don Gagne's avatar
Don Gagne committed
45 46 47 48 49

        _params.clear();
        _paramLabels.clear();
        for (int i=0; i<paramNames.count(); i++) {
            QString paramName = paramNames[i];
50 51
            if (_vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, paramName)) {
                Fact* paramFact = _vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, paramName);
Don Gagne's avatar
Don Gagne committed
52 53 54 55
                _params << QVariant::fromValue(paramFact);
                _paramLabels << paramLabels[i];
            }
        }
56

Don Gagne's avatar
Don Gagne committed
57 58 59 60
        emit paramsChanged(_params);
        emit paramLabelsChanged(_paramLabels);
    }
}