Commit 50089289 authored by Don Gagne's avatar Don Gagne

Rover fixes

parent 53a49fdc
...@@ -22,13 +22,16 @@ QGCView { ...@@ -22,13 +22,16 @@ QGCView {
id: rootQGCView id: rootQGCView
viewPanel: panel viewPanel: panel
readonly property string _modeChannelParam: controller.modeChannelParam
readonly property string _modeParamPrefix: controller.modeParamPrefix
property real _margins: ScreenTools.defaultFontPixelHeight property real _margins: ScreenTools.defaultFontPixelHeight
property bool _channel7OptionsAvailable: controller.parameterExists(-1, "CH7_OPT") // Not available in all firmware types property bool _channel7OptionsAvailable: controller.parameterExists(-1, "CH7_OPT") // Not available in all firmware types
property bool _channel9OptionsAvailable: controller.parameterExists(-1, "CH9_OPT") // Not available in all firmware types property bool _channel9OptionsAvailable: controller.parameterExists(-1, "CH9_OPT") // Not available in all firmware types
property int _channelOptionCount: _channel7OptionsAvailable ? (_channel9OptionsAvailable ? 6 : 2) : 0 property int _channelOptionCount: _channel7OptionsAvailable ? (_channel9OptionsAvailable ? 6 : 2) : 0
property Fact _nullFact property Fact _nullFact
property bool _fltmodeChExists: controller.parameterExists(-1, "FLTMODE_CH") property bool _fltmodeChExists: controller.parameterExists(-1, _modeChannelParam)
property Fact _fltmodeCh: _fltmodeChExists ? controller.getParameterFact(-1, "FLTMODE_CH") : _nullFact property Fact _fltmodeCh: _fltmodeChExists ? controller.getParameterFact(-1, _modeChannelParam) : _nullFact
QGCPalette { id: qgcPal; colorGroupEnabled: panel.enabled } QGCPalette { id: qgcPal; colorGroupEnabled: panel.enabled }
...@@ -114,7 +117,7 @@ QGCView { ...@@ -114,7 +117,7 @@ QGCView {
FactComboBox { FactComboBox {
id: modeCombo id: modeCombo
width: ScreenTools.defaultFontPixelWidth * 15 width: ScreenTools.defaultFontPixelWidth * 15
fact: controller.getParameterFact(-1, "FLTMODE" + index) fact: controller.getParameterFact(-1, _modeParamPrefix + index)
indexModel: false indexModel: false
} }
......
...@@ -19,9 +19,13 @@ APMFlightModesComponentController::APMFlightModesComponentController(void) ...@@ -19,9 +19,13 @@ APMFlightModesComponentController::APMFlightModesComponentController(void)
: _activeFlightMode(0) : _activeFlightMode(0)
, _channelCount(Vehicle::cMaxRcChannels) , _channelCount(Vehicle::cMaxRcChannels)
{ {
_modeParamPrefix = _vehicle->rover() ? "MODE" : "FLTMODE";
_modeChannelParam = _vehicle->rover() ? "MODE_CH" : "FLTMODE_CH";
QStringList usedParams; QStringList usedParams;
usedParams << QStringLiteral("FLTMODE1") << QStringLiteral("FLTMODE2") << QStringLiteral("FLTMODE3") for (int i=1; i<7; i++) {
<< QStringLiteral("FLTMODE4") << QStringLiteral("FLTMODE5") << QStringLiteral("FLTMODE6"); usedParams << QStringLiteral("%1%2").arg(_modeParamPrefix).arg(i);
}
if (!_allParametersExists(FactSystem::defaultComponentId, usedParams)) { if (!_allParametersExists(FactSystem::defaultComponentId, usedParams)) {
return; return;
} }
...@@ -36,8 +40,8 @@ void APMFlightModesComponentController::_rcChannelsChanged(int channelCount, int ...@@ -36,8 +40,8 @@ void APMFlightModesComponentController::_rcChannelsChanged(int channelCount, int
{ {
int flightModeChannel = 4; int flightModeChannel = 4;
if (parameterExists(FactSystem::defaultComponentId, QStringLiteral("FLTMODE_CH"))) { if (parameterExists(FactSystem::defaultComponentId, _modeChannelParam)) {
flightModeChannel = getParameterFact(FactSystem::defaultComponentId, QStringLiteral("FLTMODE_CH"))->rawValue().toInt() - 1; flightModeChannel = getParameterFact(FactSystem::defaultComponentId, _modeChannelParam)->rawValue().toInt() - 1;
} }
if (flightModeChannel >= channelCount) { if (flightModeChannel >= channelCount) {
......
...@@ -29,6 +29,8 @@ class APMFlightModesComponentController : public FactPanelController ...@@ -29,6 +29,8 @@ class APMFlightModesComponentController : public FactPanelController
public: public:
APMFlightModesComponentController(void); APMFlightModesComponentController(void);
Q_PROPERTY(QString modeParamPrefix MEMBER _modeParamPrefix CONSTANT)
Q_PROPERTY(QString modeChannelParam MEMBER _modeChannelParam CONSTANT)
Q_PROPERTY(int activeFlightMode READ activeFlightMode NOTIFY activeFlightModeChanged) Q_PROPERTY(int activeFlightMode READ activeFlightMode NOTIFY activeFlightModeChanged)
Q_PROPERTY(int channelCount MEMBER _channelCount CONSTANT) Q_PROPERTY(int channelCount MEMBER _channelCount CONSTANT)
Q_PROPERTY(QVariantList channelOptionEnabled READ channelOptionEnabled NOTIFY channelOptionEnabledChanged) Q_PROPERTY(QVariantList channelOptionEnabled READ channelOptionEnabled NOTIFY channelOptionEnabledChanged)
...@@ -44,6 +46,8 @@ private slots: ...@@ -44,6 +46,8 @@ private slots:
void _rcChannelsChanged(int channelCount, int pwmValues[Vehicle::cMaxRcChannels]); void _rcChannelsChanged(int channelCount, int pwmValues[Vehicle::cMaxRcChannels]);
private: private:
QString _modeParamPrefix;
QString _modeChannelParam;
int _activeFlightMode; int _activeFlightMode;
int _channelCount; int _channelCount;
QVariantList _rgChannelOptionEnabled; QVariantList _rgChannelOptionEnabled;
......
...@@ -14,12 +14,14 @@ FactPanel { ...@@ -14,12 +14,14 @@ FactPanel {
QGCPalette { id: qgcPal; colorGroupEnabled: enabled } QGCPalette { id: qgcPal; colorGroupEnabled: enabled }
FactPanelController { id: controller; factPanel: panel } FactPanelController { id: controller; factPanel: panel }
property Fact flightMode1: controller.getParameterFact(-1, "FLTMODE1") property var _vehicle: controller.vehicle
property Fact flightMode2: controller.getParameterFact(-1, "FLTMODE2")
property Fact flightMode3: controller.getParameterFact(-1, "FLTMODE3") property Fact flightMode1: controller.getParameterFact(-1, _vehicle.rover ? "MODE1" : "FLTMODE1")
property Fact flightMode4: controller.getParameterFact(-1, "FLTMODE4") property Fact flightMode2: controller.getParameterFact(-1, _vehicle.rover ? "MODE2" : "FLTMODE2")
property Fact flightMode5: controller.getParameterFact(-1, "FLTMODE5") property Fact flightMode3: controller.getParameterFact(-1, _vehicle.rover ? "MODE3" : "FLTMODE3")
property Fact flightMode6: controller.getParameterFact(-1, "FLTMODE6") property Fact flightMode4: controller.getParameterFact(-1, _vehicle.rover ? "MODE4" : "FLTMODE4")
property Fact flightMode5: controller.getParameterFact(-1, _vehicle.rover ? "MODE5" : "FLTMODE5")
property Fact flightMode6: controller.getParameterFact(-1, _vehicle.rover ? "MODE6" : "FLTMODE6")
Column { Column {
anchors.fill: parent anchors.fill: parent
......
...@@ -117,13 +117,23 @@ bool APMSensorsComponent::compassSetupNeeded(void) const ...@@ -117,13 +117,23 @@ bool APMSensorsComponent::compassSetupNeeded(void) const
bool APMSensorsComponent::accelSetupNeeded(void) const bool APMSensorsComponent::accelSetupNeeded(void) const
{ {
QStringList offsets; const size_t cAccel = 3;
const size_t cOffset = 3;
offsets << QStringLiteral("INS_ACCOFFS_X") << QStringLiteral("INS_ACCOFFS_Y") << QStringLiteral("INS_ACCOFFS_Z"); QStringList rgUse;
QStringList rgOffsets[cAccel];
foreach(const QString& offset, offsets) {
if (_autopilot->getParameterFact(FactSystem::defaultComponentId, offset)->rawValue().toFloat() == 0.0f) { rgUse << QStringLiteral("INS_USE") << QStringLiteral("INS_USE2") << QStringLiteral("INS_USE3");
return true; rgOffsets[0] << QStringLiteral("INS_ACCOFFS_X") << QStringLiteral("INS_ACCOFFS_Y") << QStringLiteral("INS_ACCOFFS_Z");
rgOffsets[1] << QStringLiteral("INS_ACC2OFFS_X") << QStringLiteral("INS_ACC2OFFS_Y") << QStringLiteral("INS_ACC2OFFS_Z");
rgOffsets[2] << QStringLiteral("INS_ACC3OFFS_X") << QStringLiteral("INS_ACC3OFFS_Y") << QStringLiteral("INS_ACC3OFFS_Z");
for (size_t i=0; i<cAccel; i++) {
if (_autopilot->getParameterFact(FactSystem::defaultComponentId, rgUse[i])->rawValue().toInt() != 0) {
for (size_t j=0; j<cOffset; j++) {
if (_autopilot->getParameterFact(FactSystem::defaultComponentId, rgOffsets[i][j])->rawValue().toFloat() == 0.0f) {
return true;
}
}
} }
} }
......
...@@ -88,7 +88,7 @@ QString APMParameterMetaData::mavTypeToString(MAV_TYPE vehicleTypeEnum) ...@@ -88,7 +88,7 @@ QString APMParameterMetaData::mavTypeToString(MAV_TYPE vehicleTypeEnum)
break; break;
case MAV_TYPE_GROUND_ROVER: case MAV_TYPE_GROUND_ROVER:
case MAV_TYPE_SURFACE_BOAT: case MAV_TYPE_SURFACE_BOAT:
vehicleName = "ArduRover"; vehicleName = "APMrover2";
break; break;
case MAV_TYPE_SUBMARINE: case MAV_TYPE_SUBMARINE:
vehicleName = "ArduSub"; vehicleName = "ArduSub";
......
...@@ -1405,6 +1405,11 @@ bool Vehicle::fixedWing(void) const ...@@ -1405,6 +1405,11 @@ bool Vehicle::fixedWing(void) const
return vehicleType() == MAV_TYPE_FIXED_WING; return vehicleType() == MAV_TYPE_FIXED_WING;
} }
bool Vehicle::rover(void) const
{
return vehicleType() == MAV_TYPE_GROUND_ROVER;
}
bool Vehicle::multiRotor(void) const bool Vehicle::multiRotor(void) const
{ {
switch (vehicleType()) { switch (vehicleType()) {
......
...@@ -273,6 +273,7 @@ public: ...@@ -273,6 +273,7 @@ public:
Q_PROPERTY(bool fixedWing READ fixedWing CONSTANT) Q_PROPERTY(bool fixedWing READ fixedWing CONSTANT)
Q_PROPERTY(bool multiRotor READ multiRotor CONSTANT) Q_PROPERTY(bool multiRotor READ multiRotor CONSTANT)
Q_PROPERTY(bool vtol READ vtol CONSTANT) Q_PROPERTY(bool vtol READ vtol CONSTANT)
Q_PROPERTY(bool rover READ rover CONSTANT)
Q_PROPERTY(bool autoDisconnect MEMBER _autoDisconnect NOTIFY autoDisconnectChanged) Q_PROPERTY(bool autoDisconnect MEMBER _autoDisconnect NOTIFY autoDisconnectChanged)
Q_PROPERTY(QString prearmError READ prearmError WRITE setPrearmError NOTIFY prearmErrorChanged) Q_PROPERTY(QString prearmError READ prearmError WRITE setPrearmError NOTIFY prearmErrorChanged)
...@@ -443,6 +444,7 @@ public: ...@@ -443,6 +444,7 @@ public:
bool fixedWing(void) const; bool fixedWing(void) const;
bool multiRotor(void) const; bool multiRotor(void) const;
bool vtol(void) const; bool vtol(void) const;
bool rover(void) const;
void setFlying(bool flying); void setFlying(bool flying);
void setGuidedMode(bool guidedMode); void setGuidedMode(bool guidedMode);
......
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