diff --git a/js/port_handler.js b/js/port_handler.js old mode 100644 new mode 100755 index e37d0d76..fe2e9610 --- a/js/port_handler.js +++ b/js/port_handler.js @@ -1,12 +1,10 @@ 'use strict'; var PortHandler = new function () { - this.main_timeout_reference; this.initial_ports = false; - this.port_detected_callbacks = []; this.port_removed_callbacks = []; -} +}; PortHandler.initialize = function () { // start listening, check after 250ms @@ -137,7 +135,7 @@ PortHandler.check = function () { check_usb_devices(); } - self.main_timeout_reference = setTimeout(function () { + setTimeout(function () { self.check(); }, 250); }); @@ -161,13 +159,11 @@ PortHandler.check = function () { PortHandler.update_port_select = function (ports) { $('div#port-picker #port').html(''); // drop previous one - if (ports.length > 0) { - for (var i = 0; i < ports.length; i++) { - $('div#port-picker #port').append($("", {value: ports[i], text: ports[i]})); - } - } else { - $('div#port-picker #port').append($("", {value: 0, text: 'No Ports'})); + for (var i = 0; i < ports.length; i++) { + $('div#port-picker #port').append($("", {value: ports[i], text: ports[i], data: {isManual: false}})); } + + $('div#port-picker #port').append($("", {value: 'manual', text: 'Manual Selection', data: {isManual: true}})); }; PortHandler.port_detected = function(name, code, timeout, ignore_timeout) { diff --git a/js/serial_backend.js b/js/serial_backend.js index b145232b..014189d8 100755 --- a/js/serial_backend.js +++ b/js/serial_backend.js @@ -1,11 +1,34 @@ 'use strict'; $(document).ready(function () { + + $('#port-override-option').hide(); + + $('#port-override').change(function () { + chrome.storage.local.set({'portOverride': $('#port-override').val()}); + }); + + chrome.storage.local.get('portOverride', function (data) { + $('#port-override').val(data.portOverride); + }); + + $('div#port-picker #port').change(function (target) { + if ($('div#port-picker #port option:selected').data().isManual) { + $('#port-override-option').show(); + } + else { + $('#port-override-option').hide(); + } + }); + $('div#port-picker a.connect').click(function () { if (GUI.connect_lock != true) { // GUI control overrides the user control - var clicks = $(this).data('clicks'), - selected_port = String($('div#port-picker #port').val()), - selected_baud = parseInt($('div#port-picker #baud').val()); + + var clicks = $(this).data('clicks'); + var selected_baud = parseInt($('div#port-picker #baud').val()); + var selected_port = $('div#port-picker #port option:selected').data().isManual ? + $('#port-override').val() : + String($('div#port-picker #port').val()); if (selected_port != '0' && selected_port != 'DFU') { if (!clicks) { diff --git a/main.css b/main.css index ba274571..b720658d 100755 --- a/main.css +++ b/main.css @@ -95,6 +95,14 @@ input[type="number"]::-webkit-inner-spin-button { #port-picker #delay { width: 60px; } +#port-picker #port-override{ + height: 20px; + line-height: 20px; + margin-right: 5px; + width: 120px; + padding: 0; +} + #port-picker a { float: left; diff --git a/main.html b/main.html index 25ee86e4..52982f1f 100755 --- a/main.html +++ b/main.html @@ -83,6 +83,7 @@