UNPKG

node-enocean

Version:

full implementation of the enocean protocol (ESP3 + EEP2.6)

96 lines (95 loc) 2.48 kB
module.exports = { extractByteValue : function(ByteNr,minByte,maxByte,minValue,maxValue,data){ var rawVal = 0 var rawByte = parseInt(data,16) switch(ByteNr){ case 1 : rawVal = (rawByte & 0xff00) >>> 8 break case 2 : rawVal = (rawByte & 0xff0000) >>> 16 break case 3 : rawVal = (rawByte & 0xff000000) >>> 24 break } return ((maxValue-minValue)/(maxByte-minByte))*(rawVal-minByte)+minValue }, extract10BitValue : function(ByteBase,minByte,maxByte,minValue,maxValue,data){ var rawVal = 0 var rawByte = parseInt(data,16) switch(ByteBase){ case 1 : rawVal = (rawByte & 0x3ff00) >>> 8 break case 2 : rawVal = (rawByte & 0x3ff0000) >>> 16 break } return ((maxValue-minValue)/(maxByte-minByte))*(rawVal-minByte)+minValue }, extract10BitValueReverse : function(ByteBase,minByte,maxByte,minValue,maxValue,data){ var rawVal = 0 var rawByte = parseInt(data,16) switch(ByteBase){ case 1 : rawVal = (rawByte & parseInt("1111111111000000",2)) >>> 6 break case 2 : rawVal = (rawByte & parseInt("111111111100000000000000",2)) >>> 14 //rawVal = (rawByte & 0x3ff0000) >>> 16 break case 3 : rawVal = (rawByte & parseInt("11111111110000000000000000000000",2)) >>> 22 //rawVal = (rawByte & 0x3ff0000) >>> 16 break } return ((maxValue-minValue)/(maxByte-minByte))*(rawVal-minByte)+minValue }, extractBitValue : function(ByteNr,BitStart,BitLength,data){ var rawVal = 0 var rawByte = parseInt(data,16) switch(ByteNr){ case 0 : rawVal = (rawByte & 0xff) break case 1 : rawVal = (rawByte & 0xff00) >>> 8 break case 2 : rawVal = (rawByte & 0xff0000) >>> 16 break case 3 : rawVal = (rawByte & 0xff000000) >>> 24 break } finalValue = Math.pow(2,BitStart) for(var i=1;i<BitLength;i++){ finalValue+=Math.pow(2,BitStart+i) } return ((rawByte & finalValue) >>> BitStart) }, extractBitEnum : function(ByteNr,BitStart,BitLength,data,ENUM){ var rawVal = 0 var rawByte = parseInt(data,16) switch(ByteNr){ case 0 : rawVal = (rawByte & 0xff) break case 1 : rawVal = (rawByte & 0xff00) >>> 8 break case 2 : rawVal = (rawByte & 0xff0000) >>> 16 break case 3 : rawVal = (rawByte & 0xff000000) >>> 24 break } finalValue = Math.pow(2,BitStart) for(var i=1;i<BitLength;i++){ finalValue+=Math.pow(2,BitStart+i) } return ENUM[((rawByte & finalValue) >>> BitStart)] } }