You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
204 lines
6.8 KiB
204 lines
6.8 KiB
10 years ago
|
import QtQuick 2.2
|
||
|
import QtQuick.Controls 1.2
|
||
|
import QtQuick.Controls.Styles 1.2
|
||
|
|
||
|
import QGroundControl.FactSystem 1.0
|
||
|
import QGroundControl.FactControls 1.0
|
||
|
import QGroundControl.Palette 1.0
|
||
|
import QGroundControl.Controls 1.0
|
||
|
|
||
|
Rectangle {
|
||
|
property QGCPalette qgcPal: QGCPalette { colorGroupEnabled: true }
|
||
|
|
||
|
readonly property int rotationColumnWidth: 200
|
||
|
readonly property var rotations: [
|
||
|
"ROTATION_NONE",
|
||
|
"ROTATION_YAW_45",
|
||
|
"ROTATION_YAW_90",
|
||
|
"ROTATION_YAW_135",
|
||
|
"ROTATION_YAW_180",
|
||
|
"ROTATION_YAW_225",
|
||
|
"ROTATION_YAW_270",
|
||
|
"ROTATION_YAW_315",
|
||
|
"ROTATION_ROLL_180",
|
||
|
"ROTATION_ROLL_180_YAW_45",
|
||
|
"ROTATION_ROLL_180_YAW_90",
|
||
|
"ROTATION_ROLL_180_YAW_135",
|
||
|
"ROTATION_PITCH_180",
|
||
|
"ROTATION_ROLL_180_YAW_225",
|
||
|
"ROTATION_ROLL_180_YAW_270",
|
||
|
"ROTATION_ROLL_180_YAW_315",
|
||
|
"ROTATION_ROLL_90",
|
||
|
"ROTATION_ROLL_90_YAW_45",
|
||
|
"ROTATION_ROLL_90_YAW_90",
|
||
|
"ROTATION_ROLL_90_YAW_135",
|
||
|
"ROTATION_ROLL_270",
|
||
|
"ROTATION_ROLL_270_YAW_45",
|
||
|
"ROTATION_ROLL_270_YAW_90",
|
||
|
"ROTATION_ROLL_270_YAW_135",
|
||
|
"ROTATION_PITCH_90",
|
||
|
"ROTATION_PITCH_270",
|
||
|
"ROTATION_ROLL_270_YAW_270"
|
||
|
]
|
||
|
|
||
|
width: 600
|
||
|
height: 600
|
||
|
color: qgcPal.window
|
||
|
|
||
|
// We use this bogus loader just so we can get an onLoaded signal to hook to in order to
|
||
|
// finish controller initialization.
|
||
|
Component {
|
||
|
id: loadSignal;
|
||
|
Item { }
|
||
|
}
|
||
|
Loader {
|
||
|
sourceComponent: loadSignal
|
||
|
onLoaded: controller.statusLog = statusTextArea
|
||
|
}
|
||
|
|
||
|
Column {
|
||
|
anchors.fill: parent
|
||
|
|
||
|
QGCLabel {
|
||
|
text: "SENSORS CONFIG"
|
||
|
font.pointSize: 20
|
||
|
}
|
||
|
|
||
|
Item { height: 20; width: 10 } // spacer
|
||
|
|
||
|
Item {
|
||
|
readonly property int calibrationAreaHeight: 300
|
||
|
|
||
|
width: parent.width
|
||
|
height: calibrationAreaHeight
|
||
|
|
||
|
TextArea {
|
||
|
id: statusTextArea
|
||
|
width: parent.width - rotationColumnWidth
|
||
|
height: parent.height
|
||
|
readOnly: true
|
||
|
frameVisible: false
|
||
|
text: qsTr("Sensor config is a work in progress which currently supports textual instructions only. Updated visuals coming soon.")
|
||
|
|
||
|
style: TextAreaStyle {
|
||
|
textColor: qgcPal.text
|
||
|
backgroundColor: qgcPal.windowShade
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Column {
|
||
|
// Compass rotation parameter < 0 indicates either internal compass, or no compass. So in
|
||
|
// both those cases we do not show a rotation combo.
|
||
|
property bool showCompass0: autopilot.parameters["CAL_MAG0_ROT"].value >= 0
|
||
|
property bool showCompass1: autopilot.parameters["CAL_MAG1_ROT"].value >= 0
|
||
|
property bool showCompass2: autopilot.parameters["CAL_MAG2_ROT"].value >= 0
|
||
|
|
||
|
x: parent.width - rotationColumnWidth
|
||
|
|
||
|
QGCLabel { text: "Autpilot Orientation" }
|
||
|
|
||
|
FactComboBox {
|
||
|
width: rotationColumnWidth;
|
||
|
model: rotations
|
||
|
fact: autopilot.parameters["SENS_BOARD_ROT"]
|
||
|
}
|
||
|
|
||
|
// Compass 0 rotation
|
||
|
Component {
|
||
|
id: compass0ComponentLabel
|
||
|
|
||
|
QGCLabel { text: "Compass Orientation" }
|
||
|
}
|
||
|
Component {
|
||
|
id: compass0ComponentCombo
|
||
|
|
||
|
FactComboBox {
|
||
|
width: rotationColumnWidth
|
||
|
model: rotations
|
||
|
fact: autopilot.parameters["CAL_MAG0_ROT"]
|
||
|
}
|
||
|
}
|
||
|
Loader { sourceComponent: parent.showCompass0 ? compass0ComponentLabel : null }
|
||
|
Loader { sourceComponent: parent.showCompass0 ? compass0ComponentCombo : null }
|
||
|
|
||
|
// Compass 1 rotation
|
||
|
Component {
|
||
|
id: compass1ComponentLabel
|
||
|
|
||
|
QGCLabel { text: "Compass 1 Orientation" }
|
||
|
}
|
||
|
Component {
|
||
|
id: compass1ComponentCombo
|
||
|
|
||
|
FactComboBox {
|
||
|
width: rotationColumnWidth
|
||
|
model: rotations
|
||
|
fact: autopilot.parameters["CAL_MAG1_ROT"]
|
||
|
}
|
||
|
}
|
||
|
Loader { sourceComponent: parent.showCompass1 ? compass1ComponentLabel : null }
|
||
|
Loader { sourceComponent: parent.showCompass1 ? compass1ComponentCombo : null }
|
||
|
|
||
|
// Compass 2 rotation
|
||
|
Component {
|
||
|
id: compass2ComponentLabel
|
||
|
|
||
|
QGCLabel { text: "Compass 2 Orientation" }
|
||
|
}
|
||
|
Component {
|
||
|
id: compass2ComponentCombo
|
||
|
|
||
|
FactComboBox {
|
||
|
width: rotationColumnWidth
|
||
|
model: rotations
|
||
|
fact: autopilot.parameters["CAL_MAG2_ROT"]
|
||
|
}
|
||
|
}
|
||
|
Loader { sourceComponent: parent.showCompass2 ? compass2ComponentLabel : null }
|
||
|
Loader { sourceComponent: parent.showCompass2 ? compass2ComponentCombo : null }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Item { height: 20; width: 10 } // spacer
|
||
|
|
||
|
Row {
|
||
|
readonly property int buttonWidth: 120
|
||
|
|
||
|
spacing: 20
|
||
|
|
||
|
QGCLabel { text: "Calibrate:"; anchors.baseline: firstButton.baseline }
|
||
|
|
||
|
IndicatorButton {
|
||
|
id: firstButton
|
||
|
width: parent.buttonWidth
|
||
|
text: "Compass"
|
||
|
indicatorGreen: autopilot.parameters["CAL_MAG0_ID"].value != 0
|
||
|
onClicked: controller.calibrateCompass()
|
||
|
}
|
||
|
|
||
|
IndicatorButton {
|
||
|
width: parent.buttonWidth
|
||
|
text: "Gyroscope"
|
||
|
indicatorGreen: autopilot.parameters["CAL_GYRO0_ID"].value != 0
|
||
|
onClicked: controller.calibrateGyro()
|
||
|
}
|
||
|
|
||
|
IndicatorButton {
|
||
|
width: parent.buttonWidth
|
||
|
text: "Acceleromter"
|
||
|
indicatorGreen: autopilot.parameters["CAL_ACC0_ID"].value != 0
|
||
|
onClicked: controller.calibrateAccel()
|
||
|
}
|
||
|
|
||
|
IndicatorButton {
|
||
|
width: parent.buttonWidth
|
||
|
text: "Airspeed"
|
||
|
visible: controller.fixedWing
|
||
|
indicatorGreen: autopilot.parameters["SENS_DPRES_OFF"].value != 0
|
||
|
onClicked: controller.calibrateAirspeed()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|