citysys-terminal-server/decodeValue.js

746 lines
28 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const bit = require('./bit.js');
function numberToMonth(num)
{
let month = "january";
if (num == 2)
month = "february";
else if (num == 3)
month = "march";
else if (num == 4)
month = "april";
else if (num == 5)
month = "may";
else if (num == 6)
month = "june";
else if (num == 7)
month = "july";
else if (num == 8)
month = "august";
else if (num == 9)
month = "september";
else if (num == 10)
month = "october";
else if (num == 11)
month = "november";
else
month = "december";
}
function numberToDay(num)
{
let day = "monday";
if (num == 2)
day = "tuesday";
else if (num == 3)
day = "wednessday";
else if (num == 4)
day = "thursday";
else if (num == 5)
day = "friday";
else if (num == 6)
day = "saturday";
else
day = "sunday";
return day
}
function decodeValue(add, cmd, a, b, c, d){
var cmd_pure = bit.band(cmd, 0x7FFF)
var response = [];
console.log("inside decodeValue", add, cmd, cmd_pure, a, b, c, d);
if (cmd_pure == 0) { // Status
if (add == 0) { // Master
if (bit.band(d,1)>0) {
response.push( {type: "ERROR", message: "Comunication error"});
} if (bit.band(d,2)>0) {
response.push( {type: "ERROR", message: "Init mode active"});
} if (bit.band(d,4)>0) {
response.push( {type: "ERROR", message: "Hit detected by accelerometer"});
}
}else{ // Slave
if (bit.band(a,1)>0) {
response.push( {type: "ERROR", message: "Unread critical event"});
} if (bit.band(a,2)>0) {
response.push( {type: "ERROR", message: "Unread non-critical event"});
} if (bit.band(a,4)>0) {
response.push( {type: "ERROR", message: "Event memory full"});
}
if (bit.band(b,1)>0) {
response.push( {type: "ERROR", message: "Power meter error"});
} if (bit.band(b,2)>0) {
response.push( {type: "ERROR", message: "Load status error"});
} if (bit.band(b,4)>0) {
response.push( {type: "ERROR", message: "Inclination error"});
} if (bit.band(b,8)>0) {
response.push( {type: "ERROR", message: "Time error"});
} if (bit.band(b,16)>0) {
response.push( {type: "ERROR", message: "Hit detected"});
} if (bit.band(b,32)>0) {
response.push( {type: "ERROR", message: "Max power cycle exceeded (input)"});
} if (bit.band(b,64)>0) {
response.push( {type: "ERROR", message: "Max power cycle exceeded (relay)"});
} if (bit.band(b,128)>0) {
response.push( {type: "ERROR", message: "Temperature error"});
}
if (bit.band(c,1)>0) {
response.push( {type: "ERROR", message: "No driver connection"});
} if (bit.band(c,2)>0) {
response.push( {type: "ERROR", message: "Driver error"});
} if (bit.band(c,4)>0) {
response.push( {type: "ERROR", message: "No external device connected"});
} if (bit.band(c,8)>0) {
response.push( {type: "ERROR", message: "External device error"});
} if (bit.band(c,16)>0) {
response.push( {type: "ERROR", message: "No external sensor connected"});
} if (bit.band(c,32)>0) {
response.push( {type: "ERROR", message: "External sensor error"});
} if (bit.band(c,64)>0) {
response.push( {type: "ERROR", message: "Dev. count exceeded"});
} if (bit.band(c,128)>0) {
response.push( {type: "ERROR", message: "DALI short circuit"});
}
if (bit.band(d,1)>0) {
response.push( {type: "ERROR", message: "Node error"});
} if (bit.band(d,2)>0) {
response.push( {type: "ERROR", message: "Node not init."});
} if (bit.band(d,4)>0) {
response.push( {type: "ERROR", message: "Bootloader active"});
} if (bit.band(d,8)>0) {
response.push( {type: "ERROR", message: "Lifetime exceeded"});
} if (bit.band(d,16)>0) {
response.push( {type: "ERROR", message: "Hold reinit active"});
} if (bit.band(d,32)>0) {
response.push( {type: "ERROR", message: "Dimming changed"});
} if (bit.band(d,128)>0) {
response.push( {type: "ERROR", message: "LM marks node as innactive"});
}
if (response.length == 0) {
response.push( "No errors recognized");
}else{
//<font style='color: red !important;'>
//response.push( "<font style='color: red !important;'>" + response + "</font>");
//response.push({type: "ERROR", message: });
}
}
}else if (cmd_pure == 1) {
if (add == 0) { // Master
if (bit.band(d,1)>0) {
response.push( "Init mode enabled");
}else{
response.push( "Init mode disabled");
}
}else{ // Slave
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}
}else if (cmd_pure == 2) {
if (add == 0) { // Master
if (d == 0) {
response.push( "PLC Master node");
}else if (d == 1) {
response.push( "RF Master node");
}else if (d == 2) {
response.push( "Mixed Master node");
}else{
response.push( "Unknown Master node (" + String(d) + ")");
}
}else{ // Slave
var nodetype = "Luminaire 1 channel";
if (d == 1) {
nodetype = "Luminaire 2 channels";
}else if (d==2) {
nodetype = "Luminaire 3 channels";
}else if (d==3) {
nodetype = "Luminaire 4 channels";
}else if (d==4) {
nodetype = "Sensor node";
}else{
nodetype = "Unknown type";
}
response.push( "External sensor DT : ");
response.push( "External device DT : " + String(b) );
response.push( "Main driver DT : " + String(c) );
response.push( "Node : " + nodetype );
}
}else if (cmd_pure == 3) {
if (add == 0) { // Master
response.push( String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) );
}else{ // Slave
response.push( "Group addresses : {" + String(a) + ", " + String(b) + ", " + String(c) + ", " + String(d) + "}");
}
}else if (cmd_pure == 4) {
if (add == 0) { // Master
if (d < 255) {
var yearcount = Math.floor(d / 12);
var monthcount = (d - yearcount) + 1;
var month = numberToMonth(monthcount);
response.push( "HW Version : " + String(a) );
response.push( "FW Version : " + String(b) + "." + String(c) );
response.push( "Last update : " + month + " " + String(2018+yearcount) );
}else{
response.push( "HW Version : " + String(a) );
response.push( "FW Version : " + String(b) + "." + String(c));
response.push( "Last update : NEVER" );
}
}else{ // Slave
response.push( "Group addresses : {" + String(a) + ", " + String(b) + ", " + String(c) + ", " + String(d) + "}");
}
}else if (cmd_pure == 5) {
if (add == 0) { // Master
response.push( "Batch no. : " + String(bit.bor(bit.lshift(a,8), b)) );
response.push( "Production date : " + numberToMonth(c) + " " + String(2000+d));
}else{ // Slave
response.push( String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) );
}
}else if (cmd_pure == 6) {
if (add == 0) { // Master
response.push( String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) );
}else{ // Slave
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}
}else if (cmd_pure == 7) {
if (add == 0) { // Master
response.push( "RS232 param : " + String(a) + ", " + String(b) );
response.push( "Baudrate : " + String(bit.bor(bit.lshift(c,8), d)*100));
}else{ // Slave
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}
}else if (cmd_pure == 8) {
if (add == 0) { // Master
var x = bit.band(b,0x7F)
var y = bit.band(c,0x7F)
var z = bit.band(d,0x7F)
if (bit.band(b,0x80) > 0) {
x = x * -1;
}
if (bit.band(c,0x80) > 0) {
y = y * -1;
}
if (bit.band(d,0x80) > 0) {
z = z * -1;
}
response.push( "Temperature : " + String(a) );
response.push( "X tilt : " + String(x) );
response.push( "Y tilt : " + String(y) );
response.push( "Z tilt : " + String(z) );
}else{ // Slave
if (bit.band(a,1)>0) {
response.push( "Standard register behaviour");
} if (bit.band(a,2)>0) {
response.push( "TS activated without changing other settings");
} if (bit.band(a,4)>0) {
response.push( "TS deactivated without changing other settings ");
}
if (bit.band(b,1)>0) {
response.push( "DUSK control active");
} if (bit.band(b,2)>0) {
response.push( "DAWN control active");
} if (bit.band(b,4)>0) {
response.push( "Lux level source: in lamp");
}else{
response.push( "Lux level source: cabinet");
}
if (bit.band(c,1)>0) {
response.push( "movement control active");
}
if (bit.band(d,2)>0) {
response.push( "Default table: TS2");
}else{
response.push( "Default table: TS1");
} if (bit.band(d,4)>0) {
response.push( "Active table: TS2");
}else{
response.push( "Active table: TS1");
}
if (bit.band(d,16)>0) {
response.push( "Twilight mode active");
}else{
response.push( "Twilight mode inactive");
} if (bit.band(d,32)>0) {
response.push( "TS1 was resseted");
} if (bit.band(d,64)>0) {
response.push( "TS2 was resseted");
}
if (bit.band(d,1)>0) {
response.push( "Timer ACTIVE");
}else{
response.push( "Timer INACTIVE");
}
}
}else if (cmd_pure == 9) {
if (add == 0) { // Master
response.push( "Version : " + String(d) + "." + String(c) + "." + String(b) + "." + String(a) );
}else{ // Slave
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}
}else if (cmd_pure == 10) {
if (add == 0) { // Master
response.push( "MAC_0: " + String(c) );
response.push( "MAC_1: " + String(d) );
}else{ // Slave
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}
}else if (cmd_pure == 11) {
if (add == 0) { // Master
response.push( "MAC_2: " + String(a) );
response.push( "MAC_3: " + String(b) );
response.push( "MAC_4: " + String(c) );
response.push( "MAC_5: " + String(d) );
}else{ // Slave
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}
}else if (cmd_pure == 12) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 13) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 14) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 15) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 16) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 17) {
}else if (cmd_pure == 18) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 19) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 20) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 21) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 22) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 23) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 24) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 25) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 26) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 27) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 28) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 29) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 30) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 31) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 32) {
if (add == 0) { // Master
response.push( "");
}else{ // Slave
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}
}else if (cmd_pure == 33) {
if (addd == 0) { // Master
response.push( "");
}else{ // Slave
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}
}else if (cmd_pure == 34) {
if (add == 0) { // Master
response.push( "");
}else{ // Slave
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}
}else if (cmd_pure == 35) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 36) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 37) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 38) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 39) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 40) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 41) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 42) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 43) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 44) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 45) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 46) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 47) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 48) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 49) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 50) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 51) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 52) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 53) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 54) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 55) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 56) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 57) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 58) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 59) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 60) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 61) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 62) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 63) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 64) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 65) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 66) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 67) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 68) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 69) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 70) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 71) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 72) {
if (bit.band(d,0x80) > 0) {
response.push( "Relay : ON");
}else{
response.push( "Relay : OFF");
}
response.push( "Dimming : " + String(bit.band(d,0x7F)) + " %");
}else if (cmd_pure == 73) {
response.push( "");
}else if (cmd_pure == 74) {
response.push( (String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) / 10) + " V");
}else if (cmd_pure == 75) {
response.push( String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) + " mA");
}else if (cmd_pure == 76) {
response.push( (String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) / 10) + " W");
}else if (cmd_pure == 77) {
var v = bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)/10
response.push( String(Math.cos(math.rad(v))) );
}else if (cmd_pure == 78) {
response.push( (String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) / 10) + " Hz");
}else if (cmd_pure == 79) {
response.push( String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) + " Wh");
}else if (cmd_pure == 80) {
var mins = bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)
var hours = Math.floor(mins/60)
var rest_min = mins - (hours*60)
response.push( String(hours) + ":" + String(rest_min) );
}else if (cmd_pure == 81) {
response.push( String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) );
}else if (cmd_pure == 82) {
response.push( String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) );
}else if (cmd_pure == 83) {
var mins = bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)
var hours = Math.floor(mins/60);
var rest_min = mins - (hours*60);
response.push( String(hours) + ":" + String(rest_min) );
}else if (cmd_pure == 84) {
var x = bit.band(b,0x7F);
var y = bit.band(c,0x7F);
var z = bit.band(d,0x7F);
if (bit.band(b,0x80) > 0) {
x = x * -1;
}
if (bit.band(c,0x80) > 0) {
y = y * -1;
}
if (bit.band(d,0x80) > 0) {
z = z * -1;
}
response.push( "Temperature : " + String(a) );
response.push( "X tilt : " + String(x) );
response.push( "Y tilt : " + String(y) );
response.push( "Z tilt : " + String(z) );
}else if (cmd_pure == 85) {
if (a > 0) {
response.push( "-");
}
response.push( response + String(b) + "° " + String(c) + " " + String(d) + "");
}else if (cmd_pure == 86) {
if (a > 0) {
response.push( "-");
}
response.push( response + String(b) + "° " + String(c) + " " + String(d) + "");
}else if (cmd_pure == 87) {
response.push( String(a) + ":" + String(b) + ":" + String(c) );
}else if (cmd_pure == 88) {
response.push( numberToDay(a) + " " + String(b) + "." + String(c) + ". " + String(2000+d) );
}else if (cmd_pure == 89) {
if (d < 255) {
var yearcount = Math.floor(d / 12);
var monthcount = (d - yearcount) + 1;
var month = numberToMonth(monthcount);
response.push( "HW Version : " + String(a) );
response.push( "FW Version : " + String(b) + "." + String(c) );
response.push( "Last update : " + month + " " + String(2018+yearcount) );
}else{
response.push( "HW Version : " + String(a) );
response.push( "FW Version : " + String(b) + "." + String(c) );
response.push( "Last update : NEVER" );
}
}else if (cmd_pure == 90) {
response.push( "Batch no. : " + String(bit.bor(bit.lshift(a,8), b)) );
response.push( "Production date : " + numberToMonth(c) + " " + String(2000+d) );
}else if (cmd_pure == 91) {
response.push( String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) );
}else if (cmd_pure == 92) {
response.push( "");
}else if (cmd_pure == 93) {
response.push( "");
}else if (cmd_pure == 94) {
response.push( "");
}else if (cmd_pure == 95) {
response.push( String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) );
}else if (cmd_pure == 96) {
response.push( "Dusk : " + String(bit.bor(bit.lshift(a,8),b)) );
response.push( "Dawn : " + String(bit.bor(bit.lshift(c,8),d)) );
}else if (cmd_pure == 97) {
response.push( "Dusk : " + String(bit.bor(bit.lshift(a,8),b)) );
response.push( "Dawn : " + String(bit.bor(bit.lshift(c,8),d)) );
}else if (cmd_pure == 98) {
response.push( "Dusk : " + String(c) );
response.push( "Dawn : " + String(d) );
}else if (cmd_pure == 99) {
response.push( "CCT max: " + String(bit.bor(bit.lshift(a,8), b)) );
response.push( "CCT min: " + String(bit.bor(bit.lshift(c,8), d)) );
}else if (cmd_pure == 100) {
var resid = "unknown (" + String(a) + ")";
if (a == 0x80) {
resid = "OK";
}else if (a == 0x81) {
resid = "timeout";
}else if (a == 0x83) {
resid = "error";
}
response.push( "Resp ID: " + resid );
response.push( "Add: " + String(b) );
response.push( "CMD: " + String(c) );
response.push( "Resp: " + String(d) );
}else if (cmd_pure == 101) {
response.push( "Version : " + String(d) + "." + String(c) + "." + String(b) + "." + String(a) );
}else if (cmd_pure == 102) {
response.push( "MAC_0: " + String(c) );
response.push( "MAC_1: " + String(d) );
}else if (cmd_pure == 103) {
response.push( "MAC_2: " + String(a) );
response.push( "MAC_3: " + String(b) );
response.push( "MAC_4: " + String(c) );
response.push( "MAC_5: " + String(d) );
}else if (cmd_pure == 122) {
response.push( "");
}else if (cmd_pure == 123) {
response.push( "");
}else if (cmd_pure == 124) {
response.push( "");
}else if ((cmd_pure > 127) && (cmd_pure < 0x100)) {
if (add == 0) {
response.push( "Serial nb. : " + String(bit.bor(bit.lshift(a,24),bit.lshift(b,16),bit.lshift(c,8),d)) );
}
}
return response;
}
module.exports = decodeValue