From 41608b4b308d0ede98623a50b2382920662f7bae Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Tue, 12 Jul 2022 17:34:40 +0300 Subject: [PATCH] feat: add basic communication via the serial port --- .../extensions/watchonly/static/js/index.js | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/lnbits/extensions/watchonly/static/js/index.js b/lnbits/extensions/watchonly/static/js/index.js index 70c3ae16..c7938f56 100644 --- a/lnbits/extensions/watchonly/static/js/index.js +++ b/lnbits/extensions/watchonly/static/js/index.js @@ -501,7 +501,43 @@ new Vue({ } }, sharePsbtOnSerialPort: async function () { - console.log('### sharePsbtOnSerialPort') + console.log('### sharePsbtOnSerialPort', navigator.serial, navigator) + if (!navigator.serial) { + this.$q.notify({ + type: 'warning', + message: 'Serial port communication not supported!', + caption: + 'Make sure your browser supports Serial Port and that you are using HTTPS.', + timeout: 10000 + }) + return + } + navigator.serial.addEventListener('connect', event => { + console.log('### navigator.serial event: connected!', event) + }) + + navigator.serial.addEventListener('disconnect', event => { + console.log('### navigator.serial event: disconnected!', event) + }) + // const ports = await navigator.serial.getPorts(); + const port = await navigator.serial.requestPort() + console.log('### port', port) + + // Wait for the serial port to open. + await port.open({baudRate: 9600}) + + const writer = port.writable.getWriter() + + const psbtByteArray = Uint8Array.from(atob(this.payment.psbtBase64), c => + c.charCodeAt(0) + ) + await writer.write(psbtByteArray) + + // Allow the serial port to be closed later. + writer.releaseLock() + + await port.close() + console.log('### sharePsbtOnSerialPort done') }, sharePsbtWithAnimatedQRCode: async function () { console.log('### sharePsbtWithAnimatedQRCode')