Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/betaflight/betaflight-configurator.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Haslinghuis <mark@numloq.nl>2022-02-28 06:02:02 +0300
committerMark Haslinghuis <mark@numloq.nl>2022-02-28 17:51:14 +0300
commitf8371afca29dbf8fcfb1814be378733f39fb98b6 (patch)
tree65c857a2d86281245a92905d06be127a3595505a
parent989816a2e121702aafd0092ed7e2a94ce7b218f1 (diff)
Make connection timeout dynamic
-rw-r--r--src/js/port_handler.js10
-rw-r--r--src/js/serial_backend.js36
-rw-r--r--src/js/tabs/options.js13
-rw-r--r--src/tabs/options.html11
4 files changed, 23 insertions, 47 deletions
diff --git a/src/js/port_handler.js b/src/js/port_handler.js
index ee01a1f5..d73b00b6 100644
--- a/src/js/port_handler.js
+++ b/src/js/port_handler.js
@@ -190,15 +190,7 @@ PortHandler.detectPort = function(currentPorts) {
if (GUI.auto_connect && !GUI.connecting_to && !GUI.connected_to) {
// start connect procedure. We need firmware flasher protection over here
if (GUI.active_tab !== 'firmware_flasher') {
- let connectionTimeout = 100;
- ConfigStorage.get('connectionTimeout', function (result) {
- if (result.connectionTimeout) {
- connectionTimeout = result.connectionTimeout;
- }
- GUI.timeout_add('auto-connect_timeout', function () {
- $('div#header_btns a.connect').click();
- }, connectionTimeout); // timeout so bus have time to initialize after being detected by the system
- });
+ $('div#header_btns a.connect').click();
}
}
// trigger callbacks
diff --git a/src/js/serial_backend.js b/src/js/serial_backend.js
index da8e48ed..5fa6680b 100644
--- a/src/js/serial_backend.js
+++ b/src/js/serial_backend.js
@@ -830,6 +830,8 @@ function update_dataflash_global() {
function reinitializeConnection(originatorTab, callback) {
// Close connection gracefully if it still exists.
+ const previousTimeStamp = connectionTimestamp;
+
if (serial.connectionId) {
if (GUI.connected_to || GUI.connecting_to) {
$('a.connect').trigger('click');
@@ -840,19 +842,25 @@ function reinitializeConnection(originatorTab, callback) {
GUI.log(i18n.getMessage('deviceRebooting'));
- let connectionTimeout = 200;
- const result = ConfigStorage.get('connectionTimeout');
-
- if (result.connectionTimeout) {
- connectionTimeout = result.connectionTimeout;
+ let attempts = 0;
+ const reconnect = setInterval(waitforSerial, 100);
+
+ function waitforSerial() {
+ if (connectionTimestamp !== previousTimeStamp && CONFIGURATOR.connectionValid) {
+ console.log(`Serial connection available after ${attempts / 10} seconds`);
+ clearInterval(reconnect);
+ MSP.promise(MSPCodes.MSP_STATUS).then(() => {
+ GUI.log(i18n.getMessage('deviceReady'));
+ originatorTab.initialize(false, $('#content').scrollTop());
+ callback?.();
+ });
+ } else {
+ attempts++;
+ if (attempts > 100) {
+ clearInterval(reconnect);
+ console.log(`failed to get serial connection, gave up after 10 seconds`);
+ GUI.log(i18n.getMessage('serialPortOpenFail'));
+ }
+ }
}
-
- setTimeout(() => {
- MSP.send_message(MSPCodes.MSP_STATUS, false, false, () => {
- GUI.log(i18n.getMessage('deviceReady'));
- originatorTab.initialize(false, $('#content').scrollTop());
- });
-
- callback?.();
- }, connectionTimeout);
}
diff --git a/src/js/tabs/options.js b/src/js/tabs/options.js
index 62d852bb..6f14089f 100644
--- a/src/js/tabs/options.js
+++ b/src/js/tabs/options.js
@@ -14,7 +14,6 @@ options.initialize = function (callback) {
TABS.options.initCheckForConfiguratorUnstableVersions();
TABS.options.initAnalyticsOptOut();
TABS.options.initCliAutoComplete();
- TABS.options.initAutoConnectConnectionTimeout();
TABS.options.initShowAllSerialDevices();
TABS.options.initShowVirtualMode();
TABS.options.initCordovaForceComputerUI();
@@ -123,18 +122,6 @@ options.initCliAutoComplete = function () {
}).change();
};
-options.initAutoConnectConnectionTimeout = function () {
- ConfigStorage.get('connectionTimeout', function (result) {
- if (result.connectionTimeout) {
- $('#connectionTimeoutSelect').val(result.connectionTimeout);
- }
- $('#connectionTimeoutSelect').on('change', function () {
- const value = parseInt($(this).val());
- ConfigStorage.set({'connectionTimeout': value});
- });
- });
-};
-
options.initShowAllSerialDevices = function() {
const showAllSerialDevicesElement = $('div.showAllSerialDevices input');
ConfigStorage.get('showAllSerialDevices', result => {
diff --git a/src/tabs/options.html b/src/tabs/options.html
index 8d901cd3..b00548ea 100644
--- a/src/tabs/options.html
+++ b/src/tabs/options.html
@@ -35,17 +35,6 @@
</div>
<span class="freelabel" i18n="cliAutoComplete"></span>
</div>
- <div class="connectionTimeout margin-bottom">
- <select id="connectionTimeoutSelect">
- <option value="100">100</option>
- <option value="500">500</option>
- <option value="1000">1000</option>
- <option value="1500">1500</option>
- <option value="2500">2500</option>
- <option value="5000">5000</option>
- </select>
- <span class="freelabel" i18n="connectionTimeout"></span>
- </div>
<div class="showAllSerialDevices margin-bottom">
<div>
<input type="checkbox" class="toggle" />