Added board firmware update functionality
This commit is contained in:
126
qml/Screens/FirmwareUpdateScreen.qml
Normal file
126
qml/Screens/FirmwareUpdateScreen.qml
Normal file
@@ -0,0 +1,126 @@
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
import QtQuick.Dialogs 1.2
|
||||
import Qt.labs.settings 1.1
|
||||
|
||||
import Controls 1.0 as Controls
|
||||
import Cubo 1.0
|
||||
|
||||
ColumnLayout {
|
||||
spacing: 20
|
||||
|
||||
Controls.Frame {
|
||||
padding: 35
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
spacing: 20
|
||||
|
||||
Controls.TitleLabel {
|
||||
text: qsTr("Board information")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
|
||||
Controls.ContentLabel {
|
||||
text: qsTr("Firmware")
|
||||
}
|
||||
|
||||
Controls.DotSeparator {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Controls.ContentLabel {
|
||||
id: firmwareLabel
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
|
||||
Controls.ContentLabel {
|
||||
text: qsTr("Hardware")
|
||||
}
|
||||
|
||||
Controls.DotSeparator {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Controls.ContentLabel {
|
||||
id: hardwareLabel
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
|
||||
Controls.ContentLabel {
|
||||
text: qsTr("UUID")
|
||||
}
|
||||
|
||||
Controls.DotSeparator {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Controls.ContentLabel {
|
||||
id: uuidLabel
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Controls.Button {
|
||||
text: qsTr("Upload firmware")
|
||||
onClicked: firmwareFileDialog.open()
|
||||
|
||||
FileDialog {
|
||||
id: firmwareFileDialog
|
||||
title: qsTr("Select firmware file")
|
||||
folder: shortcuts.documents
|
||||
nameFilters: [ qsTr("Firmware files (*.bin)"), qsTr("All files (*)") ]
|
||||
onAccepted: {
|
||||
if (BmsInterface.isPortConnected()) {
|
||||
updateHelper.uploadFirmware(firmwareFileDialog.fileUrl.toString().replace(/^(file:\/{3})/, ""), BmsInterface)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Settings {
|
||||
category: "firmwareUpdate"
|
||||
property alias folder: firmwareFileDialog.folder
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
FirmwareUpdateHelper {
|
||||
id: updateHelper
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: BmsInterface.commands()
|
||||
onFwVersionReceived: {
|
||||
firmwareLabel.text = major + "." + minor
|
||||
hardwareLabel.text = hw
|
||||
uuidLabel.text = bufferToHex(uuid)
|
||||
}
|
||||
}
|
||||
|
||||
function bufferToHex(buffer) {
|
||||
return [...new Uint8Array(buffer)]
|
||||
.map(b => b.toString(16).padStart(2, "0"))
|
||||
.join("").toUpperCase();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user