Removed debug logging

Added verification of broadcast response message size
Added clearer handling of message types

I'm sure there's a better way to do debug logging, but I don't really feel like adding a dependency on another module just for that.
This commit is contained in:
Parnic
2018-03-30 20:35:24 -05:00
parent ce41d6b009
commit 0bbae0446b
8 changed files with 114 additions and 57 deletions

115
index.js
View File

@ -11,7 +11,7 @@ class FindUnits extends EventEmitter {
this.finder.on('message', function (message, remote) {
_this.foundServer(message, remote);
}).on('close', function() {
console.log('finder closed');
//console.log('finder closed');
});
}
@ -25,19 +25,21 @@ class FindUnits extends EventEmitter {
}
foundServer(message, remote) {
console.log('Found something');
var server = {
address: remote.address,
type: message.readInt32LE(0),
port: message.readInt16LE(8),
gatewayType: message.readUInt8(10),
gatewaySubtype: message.readUInt8(11),
gatewayName: message.toString('utf8', 12, 28)
};
//console.log('Found something');
if (message.length >= 40) {
var server = {
address: remote.address,
type: message.readInt32LE(0),
port: message.readInt16LE(8),
gatewayType: message.readUInt8(10),
gatewaySubtype: message.readUInt8(11),
gatewayName: message.toString('utf8', 12, 28)
};
console.log(' type: ' + server.type + ', host: ' + server.address + ':' + server.port + ', identified as ' + server.gatewayName);
if (server.type === 2) {
this.emit('serverFound', server);
//console.log(' type: ' + server.type + ', host: ' + server.address + ':' + server.port + ', identified as ' + server.gatewayName);
if (server.type === 2) {
this.emit('serverFound', server);
}
}
}
@ -45,7 +47,7 @@ class FindUnits extends EventEmitter {
var message = new Uint8Array(8);
message[0] = 1;
this.finder.send(message, 0, message.length, 1444, "255.255.255.255");
console.log("Looking for ScreenLogic hosts...");
//console.log("Looking for ScreenLogic hosts...");
}
close() {
@ -63,7 +65,7 @@ class UnitConnection extends EventEmitter {
this.client.on('data', function(msg) {
_this.onClientMessage(msg);
}).on('close', function(had_error) {
console.log('unit connection closed');
//console.log('unit connection closed');
});
}
@ -72,7 +74,7 @@ class UnitConnection extends EventEmitter {
}
connect() {
console.log("connecting...");
//console.log("connecting...");
var _this = this;
this.client.connect(this.server.port, this.server.address, function() {
_this.onConnected();
@ -80,78 +82,91 @@ class UnitConnection extends EventEmitter {
}
onConnected() {
console.log('connected');
//console.log('connected');
console.log('sending init message...');
//console.log('sending init message...');
this.client.write('CONNECTSERVERHOST\r\n\r\n');
console.log('sending challenge message...');
//console.log('sending challenge message...');
this.client.write(new messages.SLChallengeMessage().toBuffer());
}
login() {
console.log('sending login message...');
//console.log('sending login message...');
this.client.write(new messages.SLLoginMessage().toBuffer());
}
getPoolStatus() {
console.log('sending pool status query...');
//console.log('sending pool status query...');
this.client.write(new messages.SLPoolStatusMessage().toBuffer());
}
getControllerConfig() {
console.log('sending controller config query...');
//console.log('sending controller config query...');
this.client.write(new messages.SLControllerConfigMessage().toBuffer());
}
getChemicalData() {
console.log('sending chemical data query...');
//console.log('sending chemical data query...');
this.client.write(new messages.SLChemDataMessage().toBuffer());
}
getSaltCellConfig() {
console.log('sending salt cell config query...');
//console.log('sending salt cell config query...');
this.client.write(new messages.SLSaltCellConfigMessage().toBuffer());
}
getVersion() {
console.log('sending version query...');
//console.log('sending version query...');
this.client.write(new messages.SLVersionMessage().toBuffer());
}
onClientMessage(msg) {
console.log('received message of length ' + msg.length);
//console.log('received message of length ' + msg.length);
if (msg.length < 4) {
return;
}
var msgType = msg.readInt16LE(2);
if (msgType === 15) {
console.log(" it's a challenge response");
this.login();
} else if (msgType === 28) {
console.log(" it's a login response");
this.emit('loggedIn');
} else if (msgType === 12527) {
console.log(" it's pool status");
this.emit('poolStatus', new messages.SLPoolStatusMessage(msg));
} else if (msgType === 12533) {
console.log(" it's controller configuration");
this.emit('controllerConfig', new messages.SLControllerConfigMessage(msg));
} else if (msgType === 12593) {
console.log(" it's chem data");
this.emit('chemicalData', new messages.SLChemDataMessage(msg));
} else if (msgType === 12573) {
console.log(" it's salt cell config");
this.emit('saltCellConfig', new messages.SLSaltCellConfigMessage(msg));
} else if (msgType === 8121) {
console.log(" it's version");
this.emit('version', new messages.SLVersionMessage(msg));
} else {
console.log(" it's unknown. type: " + msgType);
switch (msgType) {
case messages.SLChallengeMessage.getResponseId():
//console.log(" it's a challenge response");
this.login();
break;
case messages.SLLoginMessage.getResponseId():
//console.log(" it's a login response");
this.emit('loggedIn');
break;
case messages.SLPoolStatusMessage.getResponseId():
//console.log(" it's pool status");
this.emit('poolStatus', new messages.SLPoolStatusMessage(msg));
break;
case messages.SLControllerConfigMessage.getResponseId():
//console.log(" it's controller configuration");
this.emit('controllerConfig', new messages.SLControllerConfigMessage(msg));
break;
case messages.SLChemDataMessage.getResponseId():
//console.log(" it's chem data");
this.emit('chemicalData', new messages.SLChemDataMessage(msg));
break;
case messages.SLSaltCellConfigMessage.getResponseId():
//console.log(" it's salt cell config");
this.emit('saltCellConfig', new messages.SLSaltCellConfigMessage(msg));
break;
case messages.SLVersionMessage.getResponseId():
//console.log(" it's version");
this.emit('version', new messages.SLVersionMessage(msg));
break;
default:
//console.log(" it's unknown. type: " + msgType);
break;
}
}
}
/* debug print full buffer contents:
for (const value of buf.values()) {
console.log(value.toString(16));
//console.log(value.toString(16));
}
*/