diff --git a/Software/WebConfig/js/config.js b/Software/WebConfig/js/config.js index bd0f609..b8f3e6e 100644 --- a/Software/WebConfig/js/config.js +++ b/Software/WebConfig/js/config.js @@ -4,7 +4,6 @@ // could be monim, could be pretending var vids = [0x16D0, 0x1CCF]; var pids = [0x0A6D, 0x1014]; -var UsbWrapper = window.UsbWrapper; var device; @@ -197,7 +196,7 @@ class Config { } connectNew() { - return UsbWrapper.connect(vids, pids) + return window.UsbWrapper.connect(vids, pids) .then(selectedDevice => { if(!selectedDevice) { return Promise.reject('No device selected'); diff --git a/Software/WebConfig/js/usbWrapper.js b/Software/WebConfig/js/usbWrapper.js index 03bfde5..60fe02f 100644 --- a/Software/WebConfig/js/usbWrapper.js +++ b/Software/WebConfig/js/usbWrapper.js @@ -4,27 +4,34 @@ (function(window, document, navigator) { "use strict"; -var UsbWrapper = new function() { - this.hasUSB = navigator && navigator.usb; - - if(!this.hasUSB) - return; - - // returns a promise - this.connect = (vids, pids) => { - var filters = []; - for(let i = 0; i < vids.length; i++) { - filters.push({ vendorId: vids[i], productId: pids[i] }); - } - return navigator.usb.requestDevice({filters: filters}) - .catch(error => { - console.log(error); - return null; - }); +// otherwise race condition +var UsbWrapper_init = function() { + + var UsbWrapper = new function() { + this.hasUSB = navigator && navigator.usb; + + if(!this.hasUSB) + return; + + // returns a promise + this.connect = (vids, pids) => { + var filters = []; + for(let i = 0; i < vids.length; i++) { + filters.push({ vendorId: vids[i], productId: pids[i] }); + } + return navigator.usb.requestDevice({filters: filters}) + .catch(error => { + console.log(error); + return null; + }); + }; + + this.usb = navigator.usb; }; - - this.usb = navigator.usb; -}; + + window.UsbWrapper = UsbWrapper; +} + +window.UsbWrapper_init = UsbWrapper_init; -window.UsbWrapper = UsbWrapper; })(window, document, navigator); \ No newline at end of file