diff --git a/src/lib/device.ts b/src/lib/device.ts index 8ea8e002a195d932122c6d7be7a076344e198a15..186bfe48b4a0ef347b132522d2633443227117d1 100644 --- a/src/lib/device.ts +++ b/src/lib/device.ts @@ -323,8 +323,6 @@ export default abstract class Device extends js.global.EventEmitter { // Hot eats, cool treats private dequeue(): void { - if (this.queueEvent > -1) return; - const buf = this.queue.shift(); if (buf === undefined) return; this.sendToDevice(buf); @@ -345,7 +343,9 @@ export default abstract class Device extends js.global.EventEmitter { const header = [START1, START2, (data.length>>8)&0xFF, data.length&0xFF]; const buffer = new Uint8Array([...header, ...data]); this.queue.push(buffer); - this.dequeue(); + if (this.queueEvent < 0) { + this.queueEvent = js.setTimeout(this.dequeue, Math.max(200, 1000 - (Date.now() - this.lastWrite)), this); + } } /** Assembles a [MeshPacket](https://buf.build/meshtastic/protobufs/docs/main:meshtastic#meshtastic.MeshPacket) based on your parameters and writes it to the device. */