From 865ca127ac5ec9d29335e47aefaf5f1775330c7c Mon Sep 17 00:00:00 2001 From: liamcottle Date: Tue, 11 Feb 2025 22:51:18 +1300 Subject: [PATCH] fix reading and writing lat lon --- src/buffer_reader.js | 6 ++++++ src/buffer_writer.js | 7 +++++++ src/connection/connection.js | 8 ++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/buffer_reader.js b/src/buffer_reader.js index ef638d6..8ed5dd3 100644 --- a/src/buffer_reader.js +++ b/src/buffer_reader.js @@ -48,6 +48,12 @@ class BufferReader { return view.getUint32(0, true); } + readInt32LE() { + const bytes = this.readBytes(4); + const view = new DataView(bytes.buffer); + return view.getInt32(0, true); + } + } export default BufferReader; diff --git a/src/buffer_writer.js b/src/buffer_writer.js index a8874d1..a12cb2d 100644 --- a/src/buffer_writer.js +++ b/src/buffer_writer.js @@ -35,6 +35,13 @@ class BufferWriter { this.writeBytes(bytes); } + writeInt32LE(num) { + const bytes = new Uint8Array(4); + const view = new DataView(bytes.buffer); + view.setInt32(0, num, true); + this.writeBytes(bytes); + } + writeString(string) { this.writeBytes(new TextEncoder().encode(string)); } diff --git a/src/connection/connection.js b/src/connection/connection.js index f34977e..2bb0b5f 100644 --- a/src/connection/connection.js +++ b/src/connection/connection.js @@ -117,8 +117,8 @@ class Connection extends EventEmitter { async sendCommandSetAdvertLatLon(lat, lon) { const data = new BufferWriter(); data.writeByte(Constants.CommandCodes.SetAdvertLatLon); - data.writeUInt32LE(lat); - data.writeUInt32LE(lon); + data.writeInt32LE(lat); + data.writeInt32LE(lon); await this.sendToRadioFrame(data.toBytes()); } @@ -223,8 +223,8 @@ class Connection extends EventEmitter { txPower: bufferReader.readByte(), maxTxPower: bufferReader.readByte(), publicKey: bufferReader.readBytes(32), - advLat: bufferReader.readUInt32LE(), - advLon: bufferReader.readUInt32LE(), + advLat: bufferReader.readInt32LE(), + advLon: bufferReader.readInt32LE(), reserved: bufferReader.readBytes(4), radioFreq: bufferReader.readUInt32LE(), radioBw: bufferReader.readUInt32LE(),