htd-lync
Version:
This library is meant to be used to interact with an HTD Lync 12
255 lines (240 loc) • 6.55 kB
JavaScript
function zoneNameRcvd(msgData) {
var zone = msgData[2];
if (zone == "a") {
zone = 10;
} else if (zone == "b") {
zone = 11;
} else if (zone == "c") {
zone = 12;
} else {
zone = zone * 1;
}
//console.log("Zone Name for ", zone);
var str = '';
var n = 4;
if (zone > 9) {
//n = 3;
}
//needs to be 4 less to remove strange characters at end.
for (n; n < msgData.length - 4; n++) {
var hex = formatHexString(msgData[n]);
var isCharacter = isValid(String.fromCharCode(parseInt(hex, 16)))
if (isCharacter) {
str += (String.fromCharCode(parseInt(hex, 16)));
} else {
console.log("Bad character!")
break;
}
}
console.log("Zone name line 641:", zone, str);
//console.log(str);
str = str.replace(/[^\w\s]/gi, '');
if (!systems[systemIdx].zones) {
systems[systemIdx].zones = [];
}
if (!systems[systemIdx].zones[zone]) {
//zones[zone] = new Object();
systems[systemIdx].zones[zone] = {
name: "Zone " + zone,
appName: "Zone " + zone,
vol: 0,
source: 0,
powerOn: false,
muteOn: false,
dndOn: false,
bass: 0,
treble: 0,
balance: 0,
mp31: "",
mp32: "",
reportOn: false,
enabled: true,
enableDoorbell: true
}
}
systems[systemIdx].zones[zone].name = str;
if (systems[systemIdx].zones[zone].appName == "" || systems[systemIdx].zones[zone].appName == "Zone " + zone) {
systems[systemIdx].zones[zone].appName = str;
}
return;
//This is done after checking zone names
if (systems[systemIdx].system.model == "Lync12" && zone == 12) {
queryAll();
} else if (systems[systemIdx].system.model == "Lync6" && zone == 6) {
queryAll();
}
updateData();
updateGUI(zone);
}
function sourceNameRcvd(msgData) {
if (gettingSourcesForZone == true) {
sourceNameRcvdForZone(msgData);
return;
}
var source = msgData[15];
var hex = formatHexString(msgData) //force conversion
var str = '';
var n = 4;
switch (source) {
case "a":
source = 10;
break;
case "b":
source = 11;
break;
case "c":
source = 12;
break;
case "d":
source = 13;
break;
case "e":
source = 14;
break;
case "f":
source = 15;
break;
case "10":
source = 16;
break;
case "11":
source = 17;
break;
case "12":
source = 18;
break;
}
source = source * 1 + 1;
// console.log(zone);
console.log("Source#:" + source);
//hide intercom
if (source <= 18) {
for (n; n < msgData.length - 4; n++) {
var hex = formatHexString(msgData[n]);
//console.log(String.fromCharCode(parseInt(hex, 16)));
str += (String.fromCharCode(parseInt(hex, 16)));
}
if (!systems[systemIdx].sources) {
systems[systemIdx].sources = [];
}
if (!systems[systemIdx].sources[source]) {
if (systems[systemIdx].system.model == "Lync6" && source == 13) {
systems[systemIdx].sources[source] = {
name: "Intercom",
appName: "Intercom",
mp31: "",
mp32: "",
enabled: true
}
} else if (source <= 17) {
systems[systemIdx].sources[source] = {
name: "Source " + source,
appName: "Source " + source,
mp31: "",
mp32: "",
enabled: true
}
} else if (source == 18) {
systems[systemIdx].sources[source] = {
name: "MP3 Player",
appName: "MP3 Player",
mp31: "",
mp32: "",
enabled: true
}
} else if (source == 19) {
systems[systemIdx].sources[source] = {
name: "Intercom",
appName: "Intercom",
mp31: "",
mp32: "",
enabled: true
}
}
}
//str = str.replace(/\W/g, '')
//str = str.replace(/[^\w\s]/gi, '')
console.log("source #/name: " + source + "/" + str);
str = str.replace(/[^\w\s]/gi, '')
if (str.length < 13) {
systems[systemIdx].sources[source].name = str;
}
if (systems[systemIdx].sources[source].appName == "" || systems[systemIdx].sources[source].appName == "None" || systems[systemIdx].sources[source].appName == "Source " + source) {
//console.log(str.indexOf("None"))
if (str.indexOf("None") >= 0) {
//console.log("set source name appName to None");
systems[systemIdx].sources[source].appName = "Source " + source;
} else {
//console.log("set source name appName to ", str, sources[source].appName)
systems[systemIdx].sources[source].appName = str;
}
}
//console.log("END zone name")
console.log("final source #/name: " + source + "/" + systems[systemIdx].sources[source].name + "/" + systems[systemIdx].sources[source].appName)
updateGUI(1);
updateData();
}
return;
if (systems[systemIdx].system.model == "Lync12" && source == 18 && gotStatus == false) {
getAllZoneStatus(1);
gotStatus = true;
} else if (systems[systemIdx].system.model == "Lync6" && source == 12 && gotStatus == false) {
getAllZoneStatus(1);
gotStatus = true;
}
}
function sourceNameRcvdForZone(msgData) {
var source = msgData[15];
var hex = formatHexString(msgData) //force conversion
console.log("source Name for keypad ", source);
var str = '';
var n = 4;
// console.log(zone);
switch (source) {
case "a":
source = 10;
break;
case "b":
source = 11;
break;
case "c":
source = 12;
break;
case "d":
source = 13;
break;
case "e":
source = 14;
break;
case "f":
source = 15;
break;
case "10":
source = 16;
break;
case "11":
source = 17;
break;
case "12":
source = 18;
break;
}
source = source * 1 + 1;
// console.log(zone);
//hide intercom
if (source <= 18) {
for (n; n < msgData.length - 4; n++) {
var hex = formatHexString(msgData[n]);
//console.log(String.fromCharCode(parseInt(hex, 16)));
str += (String.fromCharCode(parseInt(hex, 16)));
}
str = str.replace(/[^\w\s]/gi, '')
addToSourceForKeypadList(str, source);
if (systems[systemIdx].system.model == "Lync6" && source == 12) {
gettingSourcesForZone = false;
} else if (systems[systemIdx].system.model == "Lync12" && source == 18) {
gettingSourcesForZone = false;
}
console.log("source name for keypad", str, source);
}
}