From 93a1369e8488be4f4b1558c9f3aecec46858b53a Mon Sep 17 00:00:00 2001 From: Nathan Kellenicki Date: Sun, 8 Dec 2019 18:07:46 -0800 Subject: [PATCH] Basic code for passing messages through to the device --- src/colordistancesensor.ts | 4 ++++ src/device.ts | 12 +++++++++--- src/lpf2hub.ts | 9 ++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/colordistancesensor.ts b/src/colordistancesensor.ts index 5506677..e1633be 100644 --- a/src/colordistancesensor.ts +++ b/src/colordistancesensor.ts @@ -23,4 +23,8 @@ export class ColorDistanceSensor extends Device { } + public receive (message: Buffer) { + // NK TODO + } + } diff --git a/src/device.ts b/src/device.ts index 4ed700e..1579c74 100644 --- a/src/device.ts +++ b/src/device.ts @@ -19,12 +19,14 @@ export class Device extends EventEmitter { this._hub = hub; this._portId = portId; this._type = type; - this.hub.on("detach", (device) => { - if (device === this) { + const detachListener = (device: Device) => { + if (device.portId === this.portId) { this._connected = false; + this.hub.removeListener("detach", detachListener); this.emit("detach"); } - }); + }; + this.hub.on("detach", detachListener); } public get connected () { @@ -58,4 +60,8 @@ export class Device extends EventEmitter { this.send(Buffer.from([0x41, this.portId, mode, 0x01, 0x00, 0x00, 0x00, 0x01])); } + public receive (message: Buffer) { + this.emit("receive", message); + } + } diff --git a/src/lpf2hub.ts b/src/lpf2hub.ts index 7adcc86..d945222 100644 --- a/src/lpf2hub.ts +++ b/src/lpf2hub.ts @@ -450,7 +450,14 @@ export class LPF2Hub extends Hub { } - private _parseSensorMessage (data: Buffer) { + private _parseSensorMessage (message: Buffer) { + + const portId = message[3]; + const device = this._getDeviceByPortId(portId); + + if (device) { + device.receive(message); + } // if (data[3] === this._voltagePort) { // const voltageRaw = data.readUInt16LE(4);