1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-24 00:35:26 +03:00

Make port_handler work with PWA (#3958)

* Make port_handler work with PWA

* Modify the port_handler more the Vue way

* Fixes after review

* Fix request permission option not being deselected

* Hide baud selection in port picker if virtual port

* Added port override option for manual

* Fix virtual port state when loading the page

* Fix request permission adds the same device several times

* Fix automatic selection of device under Linux
This commit is contained in:
Míguel Ángel Mulero Martínez 2024-05-17 10:24:44 +02:00 committed by GitHub
parent b91698d0f4
commit fce0c8305b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 246 additions and 166 deletions

View file

@ -26,6 +26,7 @@ import BuildApi from "./BuildApi";
import { isWeb } from "./utils/isWeb";
import { serialShim } from "./serial_shim.js";
import { EventBus } from "../components/eventBus";
let serial = serialShim();
@ -73,19 +74,16 @@ export function initializeSerialBackend() {
$('#port-override').val(data.portOverride);
}
$('div#port-picker #port').change(function (target) {
GUI.updateManualPortVisibility();
});
EventBus.$on('ports-input:change', () => GUI.updateManualPortVisibility());
$("div.connect_controls a.connect").on('click', function () {
const selectedPort = $('#port').val();
const selectedPort = PortHandler.portPicker.selectedPort;
let portName;
if (selectedPort === 'manual') {
portName = $('#port-override').val();
} else {
portName = String($('div#port-picker #port').val());
portName = selectedPort;
}
if (!GUI.connect_lock && selectedPort !== 'none') {
@ -93,8 +91,8 @@ export function initializeSerialBackend() {
GUI.configuration_loaded = false;
const selected_baud = parseInt($('div#port-picker #baud').val());
const selectedPort = $('#port').val();
const selected_baud = PortHandler.portPicker.selectedBauds;
const selectedPort = portName;
if (selectedPort === 'DFU') {
$('select#baud').hide();
@ -106,10 +104,10 @@ export function initializeSerialBackend() {
GUI.connecting_to = portName;
// lock port select & baud while we are connecting / connected
$('div#port-picker #port, div#port-picker #baud, div#port-picker #delay').prop('disabled', true);
PortHandler.portPickerDisabled = true;
$('div.connect_controls div.connect_state').text(i18n.getMessage('connecting'));
const baudRate = parseInt($('#baud').val());
const baudRate = selected_baud;
if (selectedPort === 'virtual') {
CONFIGURATOR.virtualMode = true;
CONFIGURATOR.virtualApiVersion = $('#firmware-version-dropdown').val();
@ -117,7 +115,7 @@ export function initializeSerialBackend() {
// Hack to get virtual working on the web
serial = serialShim();
serial.connect('virtual', {}, onOpenVirtual);
} else if (isWeb()) {
} else {
CONFIGURATOR.virtualMode = false;
serial = serialShim();
// Explicitly disconnect the event listeners before attaching the new ones.
@ -127,10 +125,7 @@ export function initializeSerialBackend() {
serial.removeEventListener('disconnect', disconnectHandler);
serial.addEventListener('disconnect', disconnectHandler);
serial.connect({ baudRate });
} else {
serial.connect(portName, { bitrate: selected_baud }, onOpen);
toggleStatus();
serial.connect(portName, { baudRate });
}
} else {
@ -230,8 +225,7 @@ function finishClose(finishedCallback) {
$('#dialogReportProblems-closebtn').click();
// unlock port select & baud
$('div#port-picker #port').prop('disabled', false);
if (!GUI.auto_connect) $('div#port-picker #baud').prop('disabled', false);
PortHandler.portPickerDisabled = false;
// reset connect / disconnect button
$('div.connect_controls a.connect').removeClass('active');
@ -275,7 +269,7 @@ function abortConnection() {
$('div#connectbutton a.connect').removeClass('active');
// unlock port select & baud
$('div#port-picker #port, div#port-picker #baud, div#port-picker #delay').prop('disabled', false);
PortHandler.portPickerDisabled = false;
// reset data
isConnected = false;