From 34f0cb81fe8f6133c5d6d5c26af69486aa6d24ef Mon Sep 17 00:00:00 2001 From: dodoradio Date: Wed, 12 Jul 2023 20:28:18 +0100 Subject: Fix inverted altimeter behaviour and allow negative altimeter calibrations The altimeter was erroneously made to add to the sea level air pressure instead of subtracting from it, which resulted in inverted behaviour. This has now been fixed. This also allows setting a negative altimeter offset --- src/Altimeter.qml | 4 ++-- src/SettingsPage.qml | 30 ++++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/Altimeter.qml b/src/Altimeter.qml index ae71493..3ee11ac 100644 --- a/src/Altimeter.qml +++ b/src/Altimeter.qml @@ -44,13 +44,13 @@ Item { id: pressureText anchors.centerIn: parent horizontalAlignment: Text.AlignHCenter - text: Math.round(pressureSensor.reading.pressure/12 + altimeterOffset.value) + text: Math.round(-pressureSensor.reading.pressure/12 + altimeterOffset.value) font.pixelSize: parent.height / 4 } ConfigurationValue { id: altimeterOffset key: "/org/asteroidos/sensors/altimeter-offset" - defaultValue: -8443 + defaultValue: 8443 } Label { anchors.horizontalCenter: parent.horizontalCenter diff --git a/src/SettingsPage.qml b/src/SettingsPage.qml index 4d36e7f..a0744a1 100644 --- a/src/SettingsPage.qml +++ b/src/SettingsPage.qml @@ -63,7 +63,7 @@ Item { ConfigurationValue { id: altimeterOffset key: "/org/asteroidos/sensors/altimeter-offset" - defaultValue: -8443 + defaultValue: 8443 } Component { id: barometerAdjustDialog @@ -162,10 +162,18 @@ Item { } height: parent.height*0.6 + CircularSpinner { + id: signSelector + height: parent.height + width: parent.width/5 + model: 2 + showSeparator: false + delegate: SpinnerDelegate { text: index ? "-" : "+" } + } CircularSpinner { id: thousandsSelector height: parent.height - width: parent.width/3 + width: parent.width/5 model: 10 showSeparator: false delegate: SpinnerDelegate { text: index } @@ -173,7 +181,7 @@ Item { CircularSpinner { id: hundredsSelector height: parent.height - width: parent.width/4 + width: parent.width/5 model: 10 showSeparator: false delegate: SpinnerDelegate { text: index } @@ -181,23 +189,26 @@ Item { CircularSpinner { id: tensSelector height: parent.height - width: parent.width/4 + width: parent.width/5 model: 10 delegate: SpinnerDelegate { text: index } } CircularSpinner { id: onesSelector height: parent.height - width: parent.width/4 + width: parent.width/5 model: 10 - showSeparator: true delegate: SpinnerDelegate { text: index } } } Component.onCompleted: { - var currValue = Math.round(altimeterOffset.value + pressureSensor.reading.pressure/12); + var currValue = Math.round(altimeterOffset.value - pressureSensor.reading.pressure/12); console.log(currValue) + if (currValue < 0) { + currValue = -currValue + signSelector.currentIndex = 1 + } thousandsSelector.currentIndex = Math.floor((currValue/1000)) hundredsSelector.currentIndex = Math.floor((currValue/100)%10) tensSelector.currentIndex = Math.floor((currValue/10)%10) @@ -214,7 +225,10 @@ Item { onClicked: { var newValue = thousandsSelector.currentIndex*1000 + hundredsSelector.currentIndex*100 + tensSelector.currentIndex*10 + onesSelector.currentIndex - altimeterOffset.value = newValue - Math.round(pressureSensor.reading.pressure/12) + if (signSelector.currentIndex) { + newValue = -newValue + } + altimeterOffset.value = Math.round(pressureSensor.reading.pressure/12) + newValue pageStack.pop(pageStack.currentLayer) } } -- cgit v1.2.3-70-g09d2