From 50ccd0bb5ae440cd565709da14fbb2aa21704bae Mon Sep 17 00:00:00 2001 From: sparks-alec Date: Tue, 23 May 2023 23:37:25 -0400 Subject: [PATCH] initial d&b commit --- plugins/dbaudio/icon.png | Bin 0 -> 3529 bytes plugins/dbaudio/info.html | 0 plugins/dbaudio/main.js | 439 ++++++++++++++++++++++++++++++ plugins/dbaudio/muteicon-mute.png | Bin 0 -> 2201 bytes plugins/dbaudio/muteicon-on.png | Bin 0 -> 2087 bytes plugins/dbaudio/muteicon.afdesign | Bin 0 -> 41700 bytes plugins/dbaudio/styles.css | 96 +++++++ plugins/dbaudio/template.ejs | 137 ++++++++++ 8 files changed, 672 insertions(+) create mode 100644 plugins/dbaudio/icon.png create mode 100644 plugins/dbaudio/info.html create mode 100644 plugins/dbaudio/main.js create mode 100644 plugins/dbaudio/muteicon-mute.png create mode 100644 plugins/dbaudio/muteicon-on.png create mode 100644 plugins/dbaudio/muteicon.afdesign create mode 100644 plugins/dbaudio/styles.css create mode 100644 plugins/dbaudio/template.ejs diff --git a/plugins/dbaudio/icon.png b/plugins/dbaudio/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8577e1e2a4bf1250ec726353347f054ca79bca8d GIT binary patch literal 3529 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 literal 0 HcmV?d00001 diff --git a/plugins/dbaudio/info.html b/plugins/dbaudio/info.html new file mode 100644 index 0000000..e69de29 diff --git a/plugins/dbaudio/main.js b/plugins/dbaudio/main.js new file mode 100644 index 0000000..df24740 --- /dev/null +++ b/plugins/dbaudio/main.js @@ -0,0 +1,439 @@ +exports.config = { + defaultName: 'd&b Amps', + connectionType: 'TCPsocket', + defaultPort: 30013, + mayChangePort: false, + heartbeatInterval: 1000, + heartbeatTimeout: 5000, + searchOptions: { + type: 'Bonjour', + bonjourName: 'oca', + }, +}; + +let ocaIDs = []; + +exports.ready = function ready(_device) { + const device = _device; + + device.data.oca = { + ModelDescription: { + target: 0x1000010d, + method: 0x00050001, + format: 'string', + }, + PwrOn: { + target: 0x10000100, + method: 0x00040001, + format: 'int16', + }, + SubNet: { + target: 0x10000109, + method: 0x00050001, + format: 'int32', + }, + DeviceId: { + target: 0x10000108, + method: 0x00050001, + format: 'int32', + }, + DeviceType: { + target: 0x10000034, + method: 0x00050001, + format: 'string', + }, + FirmwareRevision: { + target: 0x10000031, + method: 0x00050001, + format: 'string', + }, + ChannelNameA: { + target: 0x10008215, + method: 0x00050001, + format: 'string', + }, + ChannelNameB: { + target: 0x10010215, + method: 0x00050001, + format: 'string', + }, + ChannelNameC: { + target: 0x10018215, + method: 0x00050001, + format: 'string', + }, + ChannelNameD: { + target: 0x10020215, + method: 0x00050001, + format: 'string', + }, + DelayA: { + target: 0x10008207, + method: 0x00050001, + format: 'float', + }, + DelayB: { + target: 0x10010207, + method: 0x00050001, + format: 'float', + }, + DelayC: { + target: 0x10018207, + method: 0x00050001, + format: 'float', + }, + DelayD: { + target: 0x10020207, + method: 0x00050001, + format: 'float', + }, + InputEnable1A: { + target: 0x10008220, + method: 0x00040001, + format: 'int16', + }, + InputEnable2A: { + target: 0x10008221, + method: 0x00040001, + format: 'int16', + }, + InputEnable3A: { + target: 0x10008222, + method: 0x00040001, + format: 'int16', + }, + InputEnable4A: { + target: 0x10008223, + method: 0x00040001, + format: 'int16', + }, + InputEnable5A: { + target: 0x10008224, + method: 0x00040001, + format: 'int16', + }, + InputEnable6A: { + target: 0x10008225, + method: 0x00040001, + format: 'int16', + }, + InputEnable7A: { + target: 0x10008226, + method: 0x00040001, + format: 'int16', + }, + InputEnable8A: { + target: 0x10008227, + method: 0x00040001, + format: 'int16', + }, + InputEnable1B: { + target: 0x10010220, + method: 0x00040001, + format: 'int16', + }, + InputEnable2B: { + target: 0x10010221, + method: 0x00040001, + format: 'int16', + }, + InputEnable3B: { + target: 0x10010222, + method: 0x00040001, + format: 'int16', + }, + InputEnable4B: { + target: 0x10010223, + method: 0x00040001, + format: 'int16', + }, + InputEnable5B: { + target: 0x10010224, + method: 0x00040001, + format: 'int16', + }, + InputEnable6B: { + target: 0x10010225, + method: 0x00040001, + format: 'int16', + }, + InputEnable7B: { + target: 0x10010226, + method: 0x00040001, + format: 'int16', + }, + InputEnable8B: { + target: 0x10010227, + method: 0x00040001, + format: 'int16', + }, + InputEnable1C: { + target: 0x10018220, + method: 0x00040001, + format: 'int16', + }, + InputEnable2C: { + target: 0x10018221, + method: 0x00040001, + format: 'int16', + }, + InputEnable3C: { + target: 0x10018222, + method: 0x00040001, + format: 'int16', + }, + InputEnable4C: { + target: 0x10018223, + method: 0x00040001, + format: 'int16', + }, + InputEnable5C: { + target: 0x10018224, + method: 0x00040001, + format: 'int16', + }, + InputEnable6C: { + target: 0x10018225, + method: 0x00040001, + format: 'int16', + }, + InputEnable7C: { + target: 0x10018226, + method: 0x00040001, + format: 'int16', + }, + InputEnable8C: { + target: 0x10018227, + method: 0x00040001, + format: 'int16', + }, + InputEnable1D: { + target: 0x10020220, + method: 0x00040001, + format: 'int16', + }, + InputEnable2D: { + target: 0x10020221, + method: 0x00040001, + format: 'int16', + }, + InputEnable3D: { + target: 0x10020222, + method: 0x00040001, + format: 'int16', + }, + InputEnable4D: { + target: 0x10020223, + method: 0x00040001, + format: 'int16', + }, + InputEnable5D: { + target: 0x10020224, + method: 0x00040001, + format: 'int16', + }, + InputEnable6D: { + target: 0x10020225, + method: 0x00040001, + format: 'int16', + }, + InputEnable7D: { + target: 0x10020226, + method: 0x00040001, + format: 'int16', + }, + InputEnable8D: { + target: 0x10020227, + method: 0x00040001, + format: 'int16', + }, + InputGainA: { + target: 0x10008206, + method: 0x00040001, + format: 'float', + }, + InputGainB: { + target: 0x10010206, + method: 0x00040001, + format: 'float', + }, + InputGainC: { + target: 0x10018206, + method: 0x00040001, + format: 'float', + }, + InputGainD: { + target: 0x10020206, + method: 0x00040001, + format: 'float', + }, + SpeakerIDA: { + target: 0x10008214, + method: 0x00040001, + format: 'int16', + }, + SpeakerIDB: { + target: 0x10010214, + method: 0x00040001, + format: 'int16', + }, + SpeakerIDC: { + target: 0x10018214, + method: 0x00040001, + format: 'int16', + }, + SpeakerIDD: { + target: 0x10020214, + method: 0x00040001, + format: 'int16', + }, + SpeakerIDList: { + target: 0x10010214, + method: 0x00040005, + format: 'stringArray', + }, + OutputMode: { + target: 0x10000111, + method: 0x00040001, + format: 'int16', + }, + OutputModeList: { + target: 0x10000111, + method: 0x00040005, + format: 'stringArray', + }, + MuteA: { + target: 0x10008205, + method: 0x00040001, + format: 'int8', + }, + MuteB: { + target: 0x10010205, + method: 0x00040001, + format: 'int8', + }, + MuteC: { + target: 0x10018205, + method: 0x00040001, + format: 'int8', + }, + MuteD: { + target: 0x10020205, + method: 0x00040001, + format: 'int8', + }, + }; + + const ocaKeys = Object.keys(device.data.oca); + ocaIDs = []; + for (let i = 0; i < ocaKeys.length; i++) { + const key = device.data.oca[ocaKeys[i]]; + key.parameters = [0]; + ocaIDs[i] = key; + ocaCommandRequest(i, key.target, key.method, device); + ocaSubscriptionRequest(i, key.target, key.method, device); + } + console.log(device.data.oca); +}; + +exports.data = function data(_device, _buffer) { + if (_buffer[0] === 0x3b && _buffer[1] === 0 && _buffer[2] === 1) { + let start = 0; + while (start < _buffer.length - 3) { + const messageLength = _buffer.readInt32BE(start + 3) + 1; + const message = _buffer.slice(start, start + messageLength); + + const messageType = message[7]; + + if (messageType === 0x04) { + // keep-alive message + } else if (messageType === 0x02) { + // console.log('NOTIFICATION!!'); + console.log(message.slice(33)); + } else if (messageType === 0x03) { + const messageHandle = _buffer.readInt32BE(start + 14); + const paramCount = message[19]; + + if (paramCount) { + let paramsStart = 20; + + ocaIDs[messageHandle].parameters = []; + + while (paramsStart < message.length) { + let paramLength = 0; + let param; + + if ( + ocaIDs[messageHandle].format === 'int16' || + ocaIDs[messageHandle].format === 'float' || + ocaIDs[messageHandle].format === 'int32' + ) { + paramLength = 2; + param = message.slice(paramsStart, paramsStart + paramLength + 2); + } else if (ocaIDs[messageHandle].format === 'int8') { + paramLength = 1; + param = message.slice(paramsStart, paramsStart + paramLength); + } else if (ocaIDs[messageHandle].format === 'stringArray') { + const nextBreak = message.indexOf(0x00, paramsStart + 1); + + if (nextBreak < 0) { + break; + } + + paramLength = nextBreak - paramsStart + 1; + param = message.slice(paramsStart - 1, paramsStart + paramLength - 1).toString(); + } else { + paramLength = message.readInt16BE(20); + param = message.slice(paramsStart + 2, paramsStart + 2 + paramLength); + } + + if (ocaIDs[messageHandle].format === 'string') { + ocaIDs[messageHandle].parameters.push(param.toString()); + } else if (ocaIDs[messageHandle].format === 'stringArray') { + ocaIDs[messageHandle].parameters.push(param.toString()); + } else if (ocaIDs[messageHandle].format === 'float') { + ocaIDs[messageHandle].parameters.push(param.readFloatBE(0)); + } else if (ocaIDs[messageHandle].format === 'int16') { + ocaIDs[messageHandle].parameters.push(param.readInt16BE(0)); + } else if (ocaIDs[messageHandle].format === 'int8') { + ocaIDs[messageHandle].parameters.push(param.readInt8(0)); + } else if (ocaIDs[messageHandle].format === 'int32') { + ocaIDs[messageHandle].parameters.push(param.readInt32BE(0)); + } else { + ocaIDs[messageHandle].parameters.push(param); + } + + paramsStart += paramLength + 2; + } + } + } + + start += messageLength; + } + } +}; + +exports.heartbeat = function heartbeat(device) { + device.send(Buffer.from('3b00010000000b0400010001', 'hex')); + device.draw(); +}; + +function ocaCommandRequest(handle, target, method, device) { + const buf = Buffer.from('3b00010000001a01000100000011AAAAAAAABBBBBBBBCCCCCCCC00', 'hex'); + buf.writeInt32BE(handle, 14); // handle + buf.writeInt32BE(target, 18); // target + buf.writeInt32BE(method, 22); // method + device.send(buf); + return buf; +} + +function ocaSubscriptionRequest(handle, target, method, device) { + const buf = Buffer.from( + '3b00010000002f01000100000026000000ae00000004000300010510008205000100010000041f000100010000010000', + 'hex' + ); + buf.writeInt32BE(handle, 14); // handle + buf.writeInt32BE(target, 27); // target + device.send(buf); + return buf; +} diff --git a/plugins/dbaudio/muteicon-mute.png b/plugins/dbaudio/muteicon-mute.png new file mode 100644 index 0000000000000000000000000000000000000000..3846e112171c6ffce77f7c89890dd00f5ed016ae GIT binary patch literal 2201 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 literal 0 HcmV?d00001 diff --git a/plugins/dbaudio/muteicon.afdesign b/plugins/dbaudio/muteicon.afdesign new file mode 100644 index 0000000000000000000000000000000000000000..8cf3a9bfe0f7d59d9435c121b7bd33a3acec8a76 GIT binary patch literal 41700 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 literal 0 HcmV?d00001 diff --git a/plugins/dbaudio/styles.css b/plugins/dbaudio/styles.css new file mode 100644 index 0000000..40f71fe --- /dev/null +++ b/plugins/dbaudio/styles.css @@ -0,0 +1,96 @@ +table { + color: white; + background-color: #323232; + font-size: 14px; +} +.button { + padding: 4px; + height: 65px; + border-radius: 4px; + position: relative; + text-align: right; + margin: 2px; + box-sizing: border-box; + overflow: hidden; + white-space: nowrap; +} +.light-button { + background: linear-gradient(0deg, #484848, #737373); + outline: black 2px outset; + border-top: #8b8b8b 2px solid; + border-left: #8b8b8b 2px solid; +} +.dark-button { + background: linear-gradient(0deg, #0e0e0e, #282828); + outline: #737373 2px solid; + text-overflow: ellipsis; + white-space: nowrap; +} +.mute { + text-align: center; + background-image: url('muteicon-on.png'), linear-gradient(0deg, #484848, #737373); + background-position: 52px 13px, 0px 0px; + background-repeat: no-repeat; +} +.gain-box { + background-color: #272727; + height: 60px; + width: 65px; + margin: 2px; + border: #656565 2px solid; + outline: #111111 2px solid; + text-align: right; +} +.gain-head { + box-sizing: border-box; + height: 12px; + width: 100%; + background: #686868; + border: #1a1a1a 2px solid; + outline: #656565 2px solid; + margin-bottom: 27px; +} +.gain-box span { + padding: 4px; +} +h3 { + margin: 7px 0px 3px; + margin-left: 12px; + text-align: left; + font-weight: normal; + font-size: 22px; +} +h4 { + text-align: left; + font-size: 16px; + margin: 0px; +} + +.channel-input { + position: absolute; + left: 9px; + top: 27px; + border-right: white 1px solid; + padding-right: 40px; + text-align: left; + line-height: 14px; +} +.channel-delay { + position: absolute; + left: 170px; + top: 40px; +} +.power-1 { + background: linear-gradient(0deg, #5a8127, #789b50); + border: #506937 1px solid; +} +.indicate-1 { + background: #00ff00; + border: black 2px inset; +} + +.mute-1 { + border-top: #772b26 2px solid; + border-left: #772b26 2px solid; + background-image: url('muteicon-mute.png'), linear-gradient(0deg, #b52714, #c4473e); +} diff --git a/plugins/dbaudio/template.ejs b/plugins/dbaudio/template.ejs new file mode 100644 index 0000000..b3afd3a --- /dev/null +++ b/plugins/dbaudio/template.ejs @@ -0,0 +1,137 @@ +
+

<%= listName %>

+

<%= data.oca.FirmwareRevision.parameters[0] %>

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+

<%= data.oca.ModelDescription.parameters[0] %>


+ <%= data.oca.OutputModeList.parameters[data.oca.OutputMode.parameters[0]+1] %> +
+
+
+

ID


+ <%= data.oca.SubNet.parameters[0] %>.<%= data.oca.DeviceId.parameters[0].toString().padStart(2, '0') %> +
+

Power


On
+
+

<%= data.oca.ChannelNameA.parameters[0] %>

+
+ Input
+ <% if(data.oca.InputEnable1A.parameters[0]){ %> A1 <% } %> + <% if(data.oca.InputEnable2A.parameters[0]){ %> A2 <% } %> + <% if(data.oca.InputEnable3A.parameters[0]){ %> A3 <% } %> + <% if(data.oca.InputEnable4A.parameters[0]){ %> A4 <% } %> + <% if(data.oca.InputEnable5A.parameters[0]){ %> D1 <% } %> + <% if(data.oca.InputEnable6A.parameters[0]){ %> D2 <% } %> + <% if(data.oca.InputEnable7A.parameters[0]){ %> D3 <% } %> + <% if(data.oca.InputEnable8A.parameters[0]){ %> D4 <% } %> +
+
+ <%= data.oca.DelayA.parameters[0].toFixed(1) %>ms +
+
+
+
+ <%= data.oca.InputGainA.parameters[0].toFixed(1) %>db +
+

A

<%= data.oca.SpeakerIDList.parameters[data.oca.SpeakerIDA.parameters[0]] %>
+
+

<%= data.oca.ChannelNameB.parameters[0] %>

+
+ Input
+ <% if(data.oca.InputEnable1B.parameters[0]){ %> A1 <% } %> + <% if(data.oca.InputEnable2B.parameters[0]){ %> A2 <% } %> + <% if(data.oca.InputEnable3B.parameters[0]){ %> A3 <% } %> + <% if(data.oca.InputEnable4B.parameters[0]){ %> A4 <% } %> + <% if(data.oca.InputEnable5B.parameters[0]){ %> D1 <% } %> + <% if(data.oca.InputEnable6B.parameters[0]){ %> D2 <% } %> + <% if(data.oca.InputEnable7B.parameters[0]){ %> D3 <% } %> + <% if(data.oca.InputEnable8B.parameters[0]){ %> D4 <% } %> +
+
+ <%= data.oca.DelayB.parameters[0].toFixed(1) %>ms +
+
+
+
+ <%= data.oca.InputGainB.parameters[0].toFixed(1) %>db +
+

B

<%= data.oca.SpeakerIDList.parameters[data.oca.SpeakerIDB.parameters[0]] %>
+
+

<%= data.oca.ChannelNameC.parameters[0] %>

+
+ Input
+ <% if(data.oca.InputEnable1C.parameters[0]){ %> A1 <% } %> + <% if(data.oca.InputEnable2C.parameters[0]){ %> A2 <% } %> + <% if(data.oca.InputEnable3C.parameters[0]){ %> A3 <% } %> + <% if(data.oca.InputEnable4C.parameters[0]){ %> A4 <% } %> + <% if(data.oca.InputEnable5C.parameters[0]){ %> D1 <% } %> + <% if(data.oca.InputEnable6C.parameters[0]){ %> D2 <% } %> + <% if(data.oca.InputEnable7C.parameters[0]){ %> D3 <% } %> + <% if(data.oca.InputEnable8C.parameters[0]){ %> D4 <% } %> +
+
+ <%= data.oca.DelayC.parameters[0].toFixed(1) %>ms +
+
+
+
+ <%= data.oca.InputGainC.parameters[0].toFixed(1) %>db +
+

C

<%= data.oca.SpeakerIDList.parameters[data.oca.SpeakerIDC.parameters[0]] %>
+
+

<%= data.oca.ChannelNameD.parameters[0] %>

+
+ Input
+ <% if(data.oca.InputEnable1D.parameters[0]){ %> A1 <% } %> + <% if(data.oca.InputEnable2D.parameters[0]){ %> A2 <% } %> + <% if(data.oca.InputEnable3D.parameters[0]){ %> A3 <% } %> + <% if(data.oca.InputEnable4D.parameters[0]){ %> A4 <% } %> + <% if(data.oca.InputEnable5D.parameters[0]){ %> D1 <% } %> + <% if(data.oca.InputEnable6D.parameters[0]){ %> D2 <% } %> + <% if(data.oca.InputEnable7D.parameters[0]){ %> D3 <% } %> + <% if(data.oca.InputEnable8D.parameters[0]){ %> D4 <% } %> +
+
+ <%= data.oca.DelayD.parameters[0].toFixed(1) %>ms +
+
+
+
+ <%= data.oca.InputGainD.parameters[0].toFixed(1) %>db +
+

D

<%= data.oca.SpeakerIDList.parameters[data.oca.SpeakerIDD.parameters[0]] %>