From 0210b5a438c76ac3aba8dff429658841fa2452ec Mon Sep 17 00:00:00 2001 From: liamcottle Date: Tue, 8 Apr 2025 12:36:42 +1200 Subject: [PATCH] tell device what protocol version we support when connected --- src/connection/ble_connection.js | 2 +- src/connection/connection.js | 14 ++++++++++++-- src/connection/nodejs_serial_connection.js | 4 ++-- src/connection/tcp_connection.js | 4 ++-- src/connection/web_serial_connection.js | 4 ++-- src/constants.js | 2 ++ 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/connection/ble_connection.js b/src/connection/ble_connection.js index fdc1ab1..4e8ae2c 100644 --- a/src/connection/ble_connection.js +++ b/src/connection/ble_connection.js @@ -72,7 +72,7 @@ class BleConnection extends Connection { }); // fire connected event - this.onConnected(); + await this.onConnected(); } diff --git a/src/connection/connection.js b/src/connection/connection.js index 0ac102c..da0ce90 100644 --- a/src/connection/connection.js +++ b/src/connection/connection.js @@ -8,8 +8,18 @@ import RandomUtils from "../random_utils.js"; class Connection extends EventEmitter { - onConnected() { + async onConnected() { + + // tell device what protocol version we support + try { + await this.deviceQuery(Constants.SupportedCompanionProtocolVersion); + } catch(e) { + // ignore + } + + // tell clients we are connected this.emit("connected"); + } onDisconnected() { @@ -319,7 +329,7 @@ class Connection extends EventEmitter { } else if(responseCode === Constants.PushCodes.TraceData){ this.onTraceDataPush(bufferReader); } else { - console.log("unhandled frame", frame); + console.log(`unhandled frame: code=${responseCode}`, frame); } } diff --git a/src/connection/nodejs_serial_connection.js b/src/connection/nodejs_serial_connection.js index b15d9a6..4bc519d 100644 --- a/src/connection/nodejs_serial_connection.js +++ b/src/connection/nodejs_serial_connection.js @@ -22,8 +22,8 @@ class NodeJSSerialConnection extends SerialConnection { baudRate: 115200, }); - this.serialPort.on("open", () => { - this.onConnected(); + this.serialPort.on("open", async () => { + await this.onConnected(); }); this.serialPort.on("close", () => { diff --git a/src/connection/tcp_connection.js b/src/connection/tcp_connection.js index a92d14f..eab0e16 100644 --- a/src/connection/tcp_connection.js +++ b/src/connection/tcp_connection.js @@ -36,8 +36,8 @@ class TCPConnection extends Connection { }); // connect to server - this.socket.connect(this.port, this.host, () => { - this.onConnected(); + this.socket.connect(this.port, this.host, async () => { + await this.onConnected(); }); } diff --git a/src/connection/web_serial_connection.js b/src/connection/web_serial_connection.js index c289c27..a9eae02 100644 --- a/src/connection/web_serial_connection.js +++ b/src/connection/web_serial_connection.js @@ -17,8 +17,8 @@ class WebSerialConnection extends SerialConnection { }); // fire connected callback after constructor has returned - setTimeout(() => { - this.onConnected(); + setTimeout(async () => { + await this.onConnected(); }, 0); } diff --git a/src/constants.js b/src/constants.js index 6eef5b9..ea8b1a0 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1,5 +1,7 @@ class Constants { + static SupportedCompanionProtocolVersion = 1; + static SerialFrameTypes = { Incoming: 0x3e, // ">" Outgoing: 0x3c, // "<"