diff --git a/index.js b/index.js index 954cf88..b6b99c9 100644 --- a/index.js +++ b/index.js @@ -127,6 +127,10 @@ class UnitConnection extends EventEmitter { this.client.write(new messages.SLVersionMessage().toBuffer()); } + setCircuitState(controllerId, circuitId, circuitState) { + this.client.write(new messages.SLSetCircuitStateMessage(controllerId, circuitId, circuitState).toBuffer()); + } + onClientMessage(msg) { //console.log('received message of length ' + msg.length); if (msg.length < 4) { @@ -163,6 +167,10 @@ class UnitConnection extends EventEmitter { //console.log(" it's version"); this.emit('version', new messages.SLVersionMessage(msg)); break; + case messages.SLSetCircuitStateMessage.getResponseId(): + //console.log(" it's circuit toggle ack"); + this.emit('circuitStateChanged', new messages.SLSetCircuitStateMessage()); + break; default: //console.log(" it's unknown. type: " + msgType); break; diff --git a/messages/SLMessage.js b/messages/SLMessage.js old mode 100755 new mode 100644 index 48d2ab3..2d5b0b6 --- a/messages/SLMessage.js +++ b/messages/SLMessage.js @@ -10,6 +10,8 @@ exports.SLMessage = class SLMessage extends SmartBuffer { } toBuffer() { + this.encode(); + if (this._wroteSize === false) { this.insertInt32LE(this.length - 4, 4); this._wroteSize = true; @@ -54,4 +56,8 @@ exports.SLMessage = class SLMessage extends SmartBuffer { this.messageId = this.readUInt16LE(); this.dataLength = this.readInt32LE(); } + + encode() { + + } } diff --git a/messages/SLSetCircuitStateMessage.js b/messages/SLSetCircuitStateMessage.js new file mode 100644 index 0000000..80361fb --- /dev/null +++ b/messages/SLSetCircuitStateMessage.js @@ -0,0 +1,25 @@ +const SLMessage = require('./SLMessage.js').SLMessage; + +const MSG_ID = 12530; + +exports.SLSetCircuitStateMessage = class SLSetCircuitStateMessage extends SLMessage { + constructor(controllerId, circuitId, circuitState) { + super(0, MSG_ID); + + this.controllerId = controllerId; + this.circuitId = circuitId; + this.circuitState = circuitState; + } + + encode() { + this.writeInt32LE(this.controllerId || 0); + this.writeInt32LE(this.circuitId || 0); + this.writeInt32LE(this.circuitState || 0); + + super.encode(); + } + + static getResponseId() { + return MSG_ID + 1; + } +} diff --git a/messages/index.js b/messages/index.js old mode 100755 new mode 100644 index d7d7377..5337d18 --- a/messages/index.js +++ b/messages/index.js @@ -5,3 +5,4 @@ exports.SLLoginMessage = require("./SLLoginMessage.js").SLLoginMessage; exports.SLChemDataMessage = require("./SLChemDataMessage.js").SLChemDataMessage; exports.SLSaltCellConfigMessage = require("./SLSaltCellConfigMessage.js").SLSaltCellConfigMessage; exports.SLVersionMessage = require("./SLVersionMessage.js").SLVersionMessage; +exports.SLSetCircuitStateMessage = require("./SLSetCircuitStateMessage.js").SLSetCircuitStateMessage;