'use strict';
var Packet = {
size: 1 + 1 + 1 + 1 + 1 + 64 * (2 + 2 + 2 + 2),
HSBK: {
toObject: function toObject(buf, offset) {
var hsbk = {};
hsbk.hue = buf.readUInt16LE(offset);
offset += 2;
hsbk.saturation = buf.readUInt16LE(offset);
offset += 2;
hsbk.brightness = buf.readUInt16LE(offset);
offset += 2;
hsbk.kelvin = buf.readUInt16LE(offset);
offset += 2;
return { offset, hsbk };
}
}
};
/**
* Converts packet specific data from a buffer to an object
* @param {Buffer} buf Buffer containing only packet specific data no header
* @return {Object} Information contained in packet
*/
Packet.toObject = function (buf) {
Iif (buf.length !== this.size) {
throw new Error(`Invalid length given for stateTileState64 LIFX packet:${buf.length}:${this.size}`);
}
var offset = 0;
var obj = {};
obj.tileIndex = buf.readUInt8(offset);
offset += 1;
obj.reserved = buf.readUInt8(offset);
offset += 1;
obj.x = buf.readUInt8(offset);
offset += 1;
obj.y = buf.readUInt8(offset);
offset += 1;
obj.width = buf.readUInt8(offset);
offset += 1;
obj.colors = new Array(64).fill(undefined).map(function () {
var ret = Packet.HSBK.toObject(buf, offset);
offset = ret.offset;
return ret.hsbk;
});
return obj;
};
module.exports = Packet; |