Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
01ff99bf
Commit
01ff99bf
authored
Dec 19, 2015
by
Don Gagne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
APM Power Config
parent
08223436
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
715 additions
and
5 deletions
+715
-5
qgroundcontrol.pro
qgroundcontrol.pro
+4
-2
qgroundcontrol.qrc
qgroundcontrol.qrc
+2
-0
APMAutoPilotPlugin.cc
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc
+10
-0
APMAutoPilotPlugin.h
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h
+3
-0
APMPowerComponent.cc
src/AutoPilotPlugins/APM/APMPowerComponent.cc
+86
-0
APMPowerComponent.h
src/AutoPilotPlugins/APM/APMPowerComponent.h
+54
-0
APMPowerComponent.qml
src/AutoPilotPlugins/APM/APMPowerComponent.qml
+251
-0
APMPowerComponentController.cc
src/AutoPilotPlugins/APM/APMPowerComponentController.cc
+174
-0
APMPowerComponentController.h
src/AutoPilotPlugins/APM/APMPowerComponentController.h
+70
-0
APMPowerComponentSummary.qml
src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml
+57
-0
SafetyComponent.cc
src/AutoPilotPlugins/PX4/SafetyComponent.cc
+0
-1
FactTextField.qml
src/FactSystem/FactControls/FactTextField.qml
+4
-2
No files found.
qgroundcontrol.pro
View file @
01ff99bf
...
...
@@ -559,9 +559,10 @@ HEADERS+= \
src
/
AutoPilotPlugins
/
APM
/
APMAirframeComponentController
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMAirframeComponentAirframes
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMComponent
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMRadioComponent
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMFlightModesComponent
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMFlightModesComponentController
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMPowerComponent
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMRadioComponent
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMSafetyComponent
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMSensorsComponent
.
h
\
src
/
AutoPilotPlugins
/
APM
/
APMSensorsComponentController
.
h
\
...
...
@@ -611,9 +612,10 @@ SOURCES += \
src
/
AutoPilotPlugins
/
APM
/
APMAirframeComponent
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMAirframeComponentController
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMComponent
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMRadioComponent
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMFlightModesComponent
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMFlightModesComponentController
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMPowerComponent
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMRadioComponent
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMSafetyComponent
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMSensorsComponent
.
cc
\
src
/
AutoPilotPlugins
/
APM
/
APMSensorsComponentController
.
cc
\
...
...
qgroundcontrol.qrc
View file @
01ff99bf
...
...
@@ -106,6 +106,8 @@
<file alias="RadioComponent.qml">src/AutoPilotPlugins/Common/RadioComponent.qml</file>
<file alias="PX4RadioComponentSummary.qml">src/AutoPilotPlugins/PX4/PX4RadioComponentSummary.qml</file>
<file alias="APMNotSupported.qml">src/AutoPilotPlugins/APM/APMNotSupported.qml</file>
<file alias="APMPowerComponent.qml">src/AutoPilotPlugins/APM/APMPowerComponent.qml</file>
<file alias="APMPowerComponentSummary.qml">src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml</file>
<file alias="APMRadioComponentSummary.qml">src/AutoPilotPlugins/APM/APMRadioComponentSummary.qml</file>
<file alias="APMSafetyComponentCopter.qml">src/AutoPilotPlugins/APM/APMSafetyComponentCopter.qml</file>
<file alias="APMSafetyComponentPlane.qml">src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml</file>
...
...
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc
View file @
01ff99bf
...
...
@@ -38,6 +38,7 @@
#include "APMSafetyComponent.h"
#include "APMTuningComponent.h"
#include "APMSensorsComponent.h"
#include "APMPowerComponent.h"
/// This is the AutoPilotPlugin implementatin for the MAV_AUTOPILOT_ARDUPILOT type.
APMAutoPilotPlugin
::
APMAutoPilotPlugin
(
Vehicle
*
vehicle
,
QObject
*
parent
)
...
...
@@ -45,6 +46,7 @@ APMAutoPilotPlugin::APMAutoPilotPlugin(Vehicle* vehicle, QObject* parent)
,
_incorrectParameterVersion
(
false
)
,
_airframeComponent
(
NULL
)
,
_flightModesComponent
(
NULL
)
,
_powerComponent
(
NULL
)
,
_radioComponent
(
NULL
)
,
_safetyComponent
(
NULL
)
,
_sensorsComponent
(
NULL
)
...
...
@@ -83,6 +85,14 @@ const QVariantList& APMAutoPilotPlugin::vehicleComponents(void)
qWarning
()
<<
"new APMFlightModesComponent failed"
;
}
_powerComponent
=
new
APMPowerComponent
(
_vehicle
,
this
);
if
(
_powerComponent
)
{
_powerComponent
->
setupTriggerSignals
();
_components
.
append
(
QVariant
::
fromValue
((
VehicleComponent
*
)
_powerComponent
));
}
else
{
qWarning
()
<<
"new APMPowerComponent failed"
;
}
_radioComponent
=
new
APMRadioComponent
(
_vehicle
,
this
);
if
(
_radioComponent
)
{
_radioComponent
->
setupTriggerSignals
();
...
...
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h
View file @
01ff99bf
...
...
@@ -34,6 +34,7 @@ class APMRadioComponent;
class
APMTuningComponent
;
class
APMSafetyComponent
;
class
APMSensorsComponent
;
class
APMPowerComponent
;
/// This is the APM specific implementation of the AutoPilot class.
class
APMAutoPilotPlugin
:
public
AutoPilotPlugin
...
...
@@ -49,6 +50,7 @@ public:
APMAirframeComponent
*
airframeComponent
(
void
)
{
return
_airframeComponent
;
}
APMFlightModesComponent
*
flightModesComponent
(
void
)
{
return
_flightModesComponent
;
}
APMPowerComponent
*
powerComponent
(
void
)
{
return
_powerComponent
;
}
APMRadioComponent
*
radioComponent
(
void
)
{
return
_radioComponent
;
}
APMSafetyComponent
*
safetyComponent
(
void
)
{
return
_safetyComponent
;
}
APMSensorsComponent
*
sensorsComponent
(
void
)
{
return
_sensorsComponent
;
}
...
...
@@ -64,6 +66,7 @@ private:
APMAirframeComponent
*
_airframeComponent
;
APMFlightModesComponent
*
_flightModesComponent
;
APMPowerComponent
*
_powerComponent
;
APMRadioComponent
*
_radioComponent
;
APMSafetyComponent
*
_safetyComponent
;
APMSensorsComponent
*
_sensorsComponent
;
...
...
src/AutoPilotPlugins/APM/APMPowerComponent.cc
0 → 100644
View file @
01ff99bf
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
#include "APMPowerComponent.h"
#include "APMAutoPilotPlugin.h"
#include "APMAirframeComponent.h"
APMPowerComponent
::
APMPowerComponent
(
Vehicle
*
vehicle
,
AutoPilotPlugin
*
autopilot
,
QObject
*
parent
)
:
APMComponent
(
vehicle
,
autopilot
,
parent
),
_name
(
"Power"
)
{
}
QString
APMPowerComponent
::
name
(
void
)
const
{
return
_name
;
}
QString
APMPowerComponent
::
description
(
void
)
const
{
return
tr
(
"The Power Component is used to setup battery parameters."
);
}
QString
APMPowerComponent
::
iconResource
(
void
)
const
{
return
"/qmlimages/PowerComponentIcon.png"
;
}
bool
APMPowerComponent
::
requiresSetup
(
void
)
const
{
return
true
;
}
bool
APMPowerComponent
::
setupComplete
(
void
)
const
{
return
_autopilot
->
getParameterFact
(
FactSystem
::
defaultComponentId
,
"BATT_CAPACITY"
)
->
rawValue
().
toInt
()
!=
0
;
}
QStringList
APMPowerComponent
::
setupCompleteChangedTriggerList
(
void
)
const
{
QStringList
list
;
list
<<
"BATT_CAPACITY"
;
return
list
;
}
QUrl
APMPowerComponent
::
setupSource
(
void
)
const
{
return
QUrl
::
fromUserInput
(
"qrc:/qml/APMPowerComponent.qml"
);
}
QUrl
APMPowerComponent
::
summaryQmlSource
(
void
)
const
{
return
QUrl
::
fromUserInput
(
"qrc:/qml/APMPowerComponentSummary.qml"
);
}
QString
APMPowerComponent
::
prerequisiteSetup
(
void
)
const
{
APMAutoPilotPlugin
*
plugin
=
dynamic_cast
<
APMAutoPilotPlugin
*>
(
_autopilot
);
Q_ASSERT
(
plugin
);
if
(
!
plugin
->
airframeComponent
()
->
setupComplete
())
{
return
plugin
->
airframeComponent
()
->
name
();
}
return
QString
();
}
src/AutoPilotPlugins/APM/APMPowerComponent.h
0 → 100644
View file @
01ff99bf
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
#ifndef APMPowerComponent_H
#define APMPowerComponent_H
#include "APMComponent.h"
class
APMPowerComponent
:
public
APMComponent
{
Q_OBJECT
public:
APMPowerComponent
(
Vehicle
*
vehicle
,
AutoPilotPlugin
*
autopilot
,
QObject
*
parent
=
NULL
);
// Virtuals from PX4Component
virtual
QStringList
setupCompleteChangedTriggerList
(
void
)
const
;
// Virtuals from VehicleComponent
virtual
QString
name
(
void
)
const
;
virtual
QString
description
(
void
)
const
;
virtual
QString
iconResource
(
void
)
const
;
virtual
bool
requiresSetup
(
void
)
const
;
virtual
bool
setupComplete
(
void
)
const
;
virtual
QUrl
setupSource
(
void
)
const
;
virtual
QUrl
summaryQmlSource
(
void
)
const
;
virtual
QString
prerequisiteSetup
(
void
)
const
;
private:
const
QString
_name
;
QVariantList
_summaryItems
;
};
#endif
src/AutoPilotPlugins/APM/APMPowerComponent.qml
0 → 100644
View file @
01ff99bf
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QGroundControl
.
FactSystem
1.0
import
QGroundControl
.
FactControls
1.0
import
QGroundControl
.
Palette
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
ScreenTools
1.0
QGCView
{
id
:
rootQGCView
viewPanel
:
panel
property
Fact
battAmpPerVolt
:
controller
.
getParameterFact
(
-
1
,
"
BATT_AMP_PERVOLT
"
)
property
Fact
battCapacity
:
controller
.
getParameterFact
(
-
1
,
"
BATT_CAPACITY
"
)
property
Fact
battCurrPin
:
controller
.
getParameterFact
(
-
1
,
"
BATT_CURR_PIN
"
)
property
Fact
battMonitor
:
controller
.
getParameterFact
(
-
1
,
"
BATT_MONITOR
"
)
property
Fact
battVoltMult
:
controller
.
getParameterFact
(
-
1
,
"
BATT_VOLT_MULT
"
)
property
Fact
battVoltPin
:
controller
.
getParameterFact
(
-
1
,
"
BATT_VOLT_PIN
"
)
property
real
_margins
:
ScreenTools
.
defaultFontPixelHeight
property
bool
_showAdvanced
:
sensorCombo
.
currentIndex
==
sensorModel
.
count
-
1
Component.onCompleted
:
calcSensor
()
function
calcSensor
()
{
for
(
var
i
=
0
;
i
<
sensorModel
.
count
-
1
;
i
++
)
{
if
(
sensorModel
.
get
(
i
).
voltPin
==
battVoltPin
.
value
&&
sensorModel
.
get
(
i
).
currPin
==
battCurrPin
.
value
&&
Math
.
abs
(
sensorModel
.
get
(
i
).
voltMult
-
battVoltMult
.
value
)
<
0.001
&&
Math
.
abs
(
sensorModel
.
get
(
i
).
ampPerVolt
-
battAmpPerVolt
.
value
)
<
0.0001
)
{
sensorCombo
.
currentIndex
=
i
return
}
}
sensorCombo
.
currentIndex
=
sensorModel
.
count
-
1
}
QGCPalette
{
id
:
palette
;
colorGroupEnabled
:
panel
.
enabled
}
FactPanelController
{
id
:
controller
;
factPanel
:
panel
}
ListModel
{
id
:
sensorModel
ListElement
{
text
:
"
Power Module 90A
"
voltPin
:
2
currPin
:
3
voltMult
:
10.1
ampPerVolt
:
17.0
}
ListElement
{
text
:
"
Power Module HV
"
voltPin
:
2
currPin
:
3
voltMult
:
12.02
ampPerVolt
:
39.877
}
ListElement
{
text
:
"
3DR Iris
"
voltPin
:
2
currPin
:
3
voltMult
:
12.02
ampPerVolt
:
17.0
}
ListElement
{
text
:
"
Other
"
}
}
QGCViewPanel
{
id
:
panel
anchors.fill
:
parent
Flickable
{
anchors.fill
:
parent
clip
:
true
contentWidth
:
capacityField
.
x
+
capacityField
.
width
+
_margins
contentHeight
:
(
_showAdvanced
?
ampPerVoltField
.
y
+
ampPerVoltField
.
height
:
sensorCombo
.
y
+
sensorCombo
.
height
)
+
_margins
QGCLabel
{
id
:
monitorLabel
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.baseline
:
monitorCombo
.
baseline
text
:
"
Battery monitor:
"
}
FactComboBox
{
id
:
monitorCombo
anchors.topMargin
:
_margins
anchors.top
:
parent
.
top
anchors.left
:
capacityField
.
left
width
:
capacityField
.
width
fact
:
battMonitor
indexModel
:
false
}
QGCLabel
{
id
:
capacityLabel
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.baseline
:
capacityField
.
baseline
text
:
"
Battery capacity:
"
}
FactTextField
{
id
:
capacityField
anchors.leftMargin
:
_margins
anchors.topMargin
:
_margins
/
2
anchors.top
:
monitorCombo
.
bottom
anchors.left
:
capacityLabel
.
right
width
:
ScreenTools
.
defaultFontPixelWidth
*
25
fact
:
battCapacity
}
QGCLabel
{
id
:
sensorLabel
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.baseline
:
sensorCombo
.
baseline
text
:
"
Power sensor:
"
}
QGCComboBox
{
id
:
sensorCombo
anchors.topMargin
:
_margins
anchors.top
:
capacityField
.
bottom
anchors.left
:
capacityField
.
left
width
:
capacityField
.
width
model
:
sensorModel
onActivated
:
{
if
(
index
<
sensorModel
.
count
-
1
)
{
battVoltPin
.
value
=
sensorModel
.
get
(
index
).
voltPin
battCurrPin
.
value
=
sensorModel
.
get
(
index
).
currPin
battVoltMult
.
value
=
sensorModel
.
get
(
index
).
voltMult
battAmpPerVolt
.
value
=
sensorModel
.
get
(
index
).
ampPerVolt
}
else
{
}
}
}
QGCLabel
{
id
:
currPinLabel
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.baseline
:
currPinCombo
.
baseline
text
:
"
Current pin:
"
visible
:
_showAdvanced
}
FactComboBox
{
id
:
currPinCombo
anchors.topMargin
:
_margins
anchors.top
:
sensorCombo
.
bottom
anchors.left
:
capacityField
.
left
width
:
capacityField
.
width
fact
:
battCurrPin
indexModel
:
false
visible
:
_showAdvanced
}
QGCLabel
{
id
:
voltPinLabel
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.baseline
:
voltPinCombo
.
baseline
text
:
"
Voltage pin:
"
visible
:
_showAdvanced
}
FactComboBox
{
id
:
voltPinCombo
anchors.topMargin
:
_margins
/
2
anchors.top
:
currPinCombo
.
bottom
anchors.left
:
capacityField
.
left
width
:
capacityField
.
width
fact
:
battVoltPin
indexModel
:
false
visible
:
_showAdvanced
}
QGCLabel
{
id
:
voltMultLabel
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.baseline
:
voltMultField
.
baseline
text
:
"
Voltage multiplier:
"
visible
:
_showAdvanced
}
FactTextField
{
id
:
voltMultField
anchors.topMargin
:
_margins
/
2
anchors.top
:
voltPinCombo
.
bottom
anchors.left
:
capacityField
.
left
width
:
capacityField
.
width
fact
:
battVoltMult
visible
:
_showAdvanced
}
QGCLabel
{
id
:
ampPerVoltLabel
anchors.margins
:
_margins
anchors.left
:
parent
.
left
anchors.baseline
:
ampPerVoltField
.
baseline
text
:
"
Amps per volt:
"
visible
:
_showAdvanced
}
FactTextField
{
id
:
ampPerVoltField
anchors.topMargin
:
_margins
/
2
anchors.top
:
voltMultField
.
bottom
anchors.left
:
capacityField
.
left
width
:
capacityField
.
width
fact
:
battAmpPerVolt
visible
:
_showAdvanced
}
}
// Flickable
}
// QGCViewPanel
}
// QGCView
src/AutoPilotPlugins/APM/APMPowerComponentController.cc
0 → 100644
View file @
01ff99bf
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009, 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/// @file
/// @author Don Gagne <don@thegagnes.com>
#include "PowerComponentController.h"
#include "QGCMAVLink.h"
#include "UAS.h"
#include <QVariant>
#include <QQmlProperty>
PowerComponentController
::
PowerComponentController
(
void
)
{
}
PowerComponentController
::~
PowerComponentController
()
{
_stopCalibration
();
}
void
PowerComponentController
::
calibrateEsc
(
void
)
{
_warningMessages
.
clear
();
connect
(
_uas
,
&
UASInterface
::
textMessageReceived
,
this
,
&
PowerComponentController
::
_handleUASTextMessage
);
_uas
->
startCalibration
(
UASInterface
::
StartCalibrationEsc
);
}
void
PowerComponentController
::
busConfigureActuators
(
void
)
{
_warningMessages
.
clear
();
connect
(
_uas
,
&
UASInterface
::
textMessageReceived
,
this
,
&
PowerComponentController
::
_handleUASTextMessage
);
_uas
->
startBusConfig
(
UASInterface
::
StartBusConfigActuators
);
}
void
PowerComponentController
::
stopBusConfigureActuators
(
void
)
{
disconnect
(
_uas
,
&
UASInterface
::
textMessageReceived
,
this
,
&
PowerComponentController
::
_handleUASTextMessage
);
_uas
->
startBusConfig
(
UASInterface
::
EndBusConfigActuators
);
}
void
PowerComponentController
::
_stopCalibration
(
void
)
{
disconnect
(
_uas
,
&
UASInterface
::
textMessageReceived
,
this
,
&
PowerComponentController
::
_handleUASTextMessage
);
}
void
PowerComponentController
::
_stopBusConfig
(
void
)
{
_stopCalibration
();
}
void
PowerComponentController
::
_handleUASTextMessage
(
int
uasId
,
int
compId
,
int
severity
,
QString
text
)
{
Q_UNUSED
(
compId
);
Q_UNUSED
(
severity
);
UASInterface
*
uas
=
_autopilot
->
vehicle
()
->
uas
();
Q_ASSERT
(
uas
);
if
(
uasId
!=
uas
->
getUASID
())
{
return
;
}
// All calibration messages start with [cal]
QString
calPrefix
(
"[cal] "
);
if
(
!
text
.
startsWith
(
calPrefix
))
{
return
;
}
text
=
text
.
right
(
text
.
length
()
-
calPrefix
.
length
());
// Make sure we can understand this firmware rev
QString
calStartPrefix
(
"calibration started: "
);
if
(
text
.
startsWith
(
calStartPrefix
))
{
text
=
text
.
right
(
text
.
length
()
-
calStartPrefix
.
length
());
// Split version number and cal type
QStringList
parts
=
text
.
split
(
" "
);
if
(
parts
.
count
()
!=
2
)
{
emit
incorrectFirmwareRevReporting
();
return
;
}
#if 0
// FIXME: Cal version check is not working. Needs to be able to cancel, calibration
int firmwareRev = parts[0].toInt();
if (firmwareRev < _neededFirmwareRev) {
emit oldFirmware();
return;
}
if (firmwareRev > _neededFirmwareRev) {
emit newerFirmware();
return;
}
#endif
}
if
(
text
==
"Connect battery now"
)
{
emit
connectBattery
();
return
;
}
if
(
text
==
"Battery connected"
)
{
emit
batteryConnected
();
return
;
}
QString
failedPrefix
(
"calibration failed: "
);
if
(
text
.
startsWith
(
failedPrefix
))
{
QString
failureText
=
text
.
right
(
text
.
length
()
-
failedPrefix
.
length
());
if
(
failureText
.
startsWith
(
"Disconnect battery"
))
{
emit
disconnectBattery
();
return
;
}
_stopCalibration
();
emit
calibrationFailed
(
text
.
right
(
text
.
length
()
-
failedPrefix
.
length
()));
return
;
}
QString
calCompletePrefix
(
"calibration done:"
);
if
(
text
.
startsWith
(
calCompletePrefix
))
{
_stopCalibration
();
emit
calibrationSuccess
(
_warningMessages
);
return
;
}
QString
warningPrefix
(
"config warning: "
);
if
(
text
.
startsWith
(
warningPrefix
))
{
_warningMessages
<<
text
.
right
(
text
.
length
()
-
warningPrefix
.
length
());
}
QString
busFailedPrefix
(
"bus conf fail:"
);
if
(
text
.
startsWith
(
busFailedPrefix
))
{
_stopBusConfig
();
emit
calibrationFailed
(
text
.
right
(
text
.
length
()
-
failedPrefix
.
length
()));
return
;
}
QString
busCompletePrefix
(
"bus conf done:"
);
if
(
text
.
startsWith
(
calCompletePrefix
))
{
_stopBusConfig
();
emit
calibrationSuccess
(
_warningMessages
);
return
;
}
QString
busWarningPrefix
(
"bus conf warn: "
);
if
(
text
.
startsWith
(
busWarningPrefix
))
{
_warningMessages
<<
text
.
right
(
text
.
length
()
-
warningPrefix
.
length
());
}
}
src/AutoPilotPlugins/APM/APMPowerComponentController.h
0 → 100644
View file @
01ff99bf
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009, 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/// @file
/// @author Don Gagne <don@thegagnes.com>
#ifndef PowerComponentController_H
#define PowerComponentController_H
#include <QObject>
#include <QQuickItem>
#include "UASInterface.h"
#include "FactPanelController.h"
/// Power Component MVC Controller for PowerComponent.qml.
class
PowerComponentController
:
public
FactPanelController
{
Q_OBJECT
public:
PowerComponentController
(
void
);
~
PowerComponentController
();
Q_INVOKABLE
void
calibrateEsc
(
void
);
Q_INVOKABLE
void
busConfigureActuators
(
void
);
Q_INVOKABLE
void
stopBusConfigureActuators
(
void
);
signals:
void
oldFirmware
(
void
);
void
newerFirmware
(
void
);
void
incorrectFirmwareRevReporting
(
void
);
void
connectBattery
(
void
);
void
disconnectBattery
(
void
);
void
batteryConnected
(
void
);
void
calibrationFailed
(
const
QString
&
errorMessage
);
void
calibrationSuccess
(
const
QStringList
&
warningMessages
);
private
slots
:
void
_handleUASTextMessage
(
int
uasId
,
int
compId
,
int
severity
,
QString
text
);
private:
void
_stopCalibration
(
void
);
void
_stopBusConfig
(
void
);
QStringList
_warningMessages
;
static
const
int
_neededFirmwareRev
=
1
;
};
#endif
src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml
0 → 100644
View file @
01ff99bf
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
import
QtQuick
2.5
import
QtQuick
.
Controls
1.2
import
QGroundControl
.
FactSystem
1.0
import
QGroundControl
.
FactControls
1.0
import
QGroundControl
.
Controls
1.0
import
QGroundControl
.
Palette
1.0
FactPanel
{
id
:
panel
anchors.fill
:
parent
color
:
qgcPal
.
windowShadeDark
QGCPalette
{
id
:
qgcPal
;
colorGroupEnabled
:
enabled
}
FactPanelController
{
id
:
controller
;
factPanel
:
panel
}
property
Fact
battCapacity
:
controller
.
getParameterFact
(
-
1
,
"
BATT_CAPACITY
"
)
property
Fact
battMonitor
:
controller
.
getParameterFact
(
-
1
,
"
BATT_MONITOR
"
)
Column
{
anchors.fill
:
parent
anchors.margins
:
8
VehicleSummaryRow
{
labelText
:
"
Battery monitor:
"
valueText
:
battMonitor
.
enumStringValue
}
VehicleSummaryRow
{
labelText
:
"
Battery capacity:
"
valueText
:
battCapacity
.
valueString
}
}
}
src/AutoPilotPlugins/PX4/SafetyComponent.cc
View file @
01ff99bf
...
...
@@ -25,7 +25,6 @@
/// @author Don Gagne <don@thegagnes.com>
#include "SafetyComponent.h"
#include "QGCQmlWidgetHolder.h"
#include "PX4AutoPilotPlugin.h"
SafetyComponent
::
SafetyComponent
(
Vehicle
*
vehicle
,
AutoPilotPlugin
*
autopilot
,
QObject
*
parent
)
:
...
...
src/FactSystem/FactControls/FactTextField.qml
View file @
01ff99bf
...
...
@@ -11,11 +11,13 @@ import QGroundControl.Controls 1.0
QGCTextField
{
id
:
_textField
text
:
fact
.
valueString
unitsLabel
:
fact
.
units
showUnits
:
true
property
Fact
fact
:
null
property
string
_validateString
text
:
fact
.
valueString
unitsLabel
:
fact
.
units
// At this point all Facts are numeric
inputMethodHints
:
Qt
.
ImhFormattedNumbersOnly
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment