diff --git a/boosthub.js b/boosthub.js index 6a5fd3a..89116de 100644 --- a/boosthub.js +++ b/boosthub.js @@ -96,6 +96,31 @@ class BoostHub extends Hub { } + _getPortForPortNumber (num) { + + let port = null; + + if (num === 1) { + port = this.ports["C"]; + } else if (num === 2) { + port = this.ports["D"]; + } else if (num === 55) { + port = this.ports["A"]; + } else if (num === 56) { + port = this.ports["B"]; + } else if (num === 57) { + port = this.ports["AB"]; + } else if (num === 58) { + port = this.ports["TILT"]; + } else { + return false; + } + + return port; + + } + + _parseMessage (data) { switch (data[2]) { @@ -114,6 +139,10 @@ class BoostHub extends Hub { this._parseSensorMessage(data); break; } + case 0x82: + { + this._parsePortAction(data); + } } } @@ -135,21 +164,9 @@ class BoostHub extends Hub { _parsePortMessage (data) { - let port = null; + let port = this._getPortForPortNumber(data[3]); - if (data[3] === 1) { - port = this.ports["C"]; - } else if (data[3] === 2) { - port = this.ports["D"]; - } else if (data[3] === 55) { - port = this.ports["A"]; - } else if (data[3] === 56) { - port = this.ports["B"]; - } else if (data[3] === 57) { - port = this.ports["AB"]; - } else if (data[3] === 58) { - port = this.ports["TILT"]; - } else { + if (!port) { return; } @@ -215,6 +232,19 @@ class BoostHub extends Hub { } + _parsePortAction (data) { + + let port = this._getPortForPortNumber(data[3]); + + if (!port) { + return; + } + + // NK: Handle callbacks when port finished here. + + } + + _activatePortDevice (port, type, mode, format, callback) { const characteristic = this._characteristics[Consts.BLE.Characteristics.Boost.ALL]; if (characteristic) { @@ -225,21 +255,9 @@ class BoostHub extends Hub { _parseSensorMessage (data) { - let port = null; + let port = this._getPortForPortNumber(data[3]); - if (data[3] === 1) { - port = this.ports["C"]; - } else if (data[3] === 2) { - port = this.ports["D"]; - } else if (data[3] === 55) { - port = this.ports["A"]; - } else if (data[3] === 56) { - port = this.ports["B"]; - } else if (data[3] === 57) { - port = this.ports["AB"]; - } else if (data[3] === 58) { - port = this.ports["TILT"]; - } else { + if (!port) { return; } diff --git a/wedo2hub.js b/wedo2hub.js index ea98c5e..bf1e20c 100644 --- a/wedo2hub.js +++ b/wedo2hub.js @@ -77,18 +77,31 @@ class WeDo2Hub extends Hub { } - _parsePortMessage (data) { + _getPortForPortNumber (num) { let port = null; - if (data[0] === 1) { + if (num === 1) { port = this.ports["A"]; - } else if (data[0] === 2) { + } else if (num === 2) { port = this.ports["B"]; } else { return; } + return port; + + } + + + _parsePortMessage (data) { + + let port = this._getPortForPortNumber(data[0]); + + if (!port) { + return; + } + port.connected = data[1] === 1 ? true : false; if (port.connected) { @@ -164,13 +177,9 @@ class WeDo2Hub extends Hub { return; } - let port = null; + let port = this._getPortForPortNumber(data[1]); - if (data[1] === 1) { - port = this.ports["A"]; - } else if (data[1] === 2) { - port = this.ports["B"]; - } else { + if (!port) { return; }