From 634632de64c1cd8d37dfc48a8752795202dee923 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Mon, 11 Sep 2023 00:01:58 -0500 Subject: [PATCH] groundwork for posistagenet protocol --- package-lock.json | 30 ++++++++++++++++++ package.json | 1 + plugins/posistagenet/icon.png | Bin 0 -> 19711 bytes plugins/posistagenet/info.html | 1 + plugins/posistagenet/main.js | 51 ++++++++++++++++++++++++++++++ plugins/posistagenet/styles.css | 3 ++ plugins/posistagenet/template.ejs | 16 ++++++++++ 7 files changed, 102 insertions(+) create mode 100644 plugins/posistagenet/icon.png create mode 100644 plugins/posistagenet/info.html create mode 100644 plugins/posistagenet/main.js create mode 100644 plugins/posistagenet/styles.css create mode 100644 plugins/posistagenet/template.ejs diff --git a/package-lock.json b/package-lock.json index aaa32d8..9c89545 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.1", "license": "CC BY-SA 4.0", "dependencies": { + "@jwetzell/posistagenet": "^0.0.1", "atem-connection": "^3.3.0", "bonjour": "^3.5.0", "electron-updater": "^6.1.1", @@ -307,6 +308,14 @@ "node": ">=14.15" } }, + "node_modules/@jwetzell/posistagenet": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@jwetzell/posistagenet/-/posistagenet-0.0.1.tgz", + "integrity": "sha512-fYghe5oNVZo1cXcH4ifvsUV56YCiEcxNWYTOna+1rs9HN5xEiqzFLZWnVKhJ9FQFxIHNsdiiZoD7G4oZ61DrGg==", + "dependencies": { + "binary-parser": "^2.2.1" + } + }, "node_modules/@malept/cross-spawn-promise": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", @@ -1129,6 +1138,14 @@ } ] }, + "node_modules/binary-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/binary-parser/-/binary-parser-2.2.1.tgz", + "integrity": "sha512-5ATpz/uPDgq5GgEDxTB4ouXCde7q2lqAQlSdBRQVl/AJnxmQmhIfyxJx+0MGu//D5rHQifkfGbWWlaysG0o9NA==", + "engines": { + "node": ">=12" + } + }, "node_modules/bitdepth": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/bitdepth/-/bitdepth-7.0.2.tgz", @@ -5348,6 +5365,14 @@ "pkg-prebuilds": "^0.2.1" } }, + "@jwetzell/posistagenet": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@jwetzell/posistagenet/-/posistagenet-0.0.1.tgz", + "integrity": "sha512-fYghe5oNVZo1cXcH4ifvsUV56YCiEcxNWYTOna+1rs9HN5xEiqzFLZWnVKhJ9FQFxIHNsdiiZoD7G4oZ61DrGg==", + "requires": { + "binary-parser": "^2.2.1" + } + }, "@malept/cross-spawn-promise": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", @@ -5943,6 +5968,11 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, + "binary-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/binary-parser/-/binary-parser-2.2.1.tgz", + "integrity": "sha512-5ATpz/uPDgq5GgEDxTB4ouXCde7q2lqAQlSdBRQVl/AJnxmQmhIfyxJx+0MGu//D5rHQifkfGbWWlaysG0o9NA==" + }, "bitdepth": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/bitdepth/-/bitdepth-7.0.2.tgz", diff --git a/package.json b/package.json index 793e742..e716a30 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "prettier": "^3.0.2" }, "dependencies": { + "@jwetzell/posistagenet": "^0.0.1", "atem-connection": "^3.3.0", "bonjour": "^3.5.0", "electron-updater": "^6.1.1", diff --git a/plugins/posistagenet/icon.png b/plugins/posistagenet/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6b45f097dcd907842bc930eeafe2ac73264e316d GIT binary patch literal 19711 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 requires no configuration.

diff --git a/plugins/posistagenet/main.js b/plugins/posistagenet/main.js new file mode 100644 index 0000000..7c55407 --- /dev/null +++ b/plugins/posistagenet/main.js @@ -0,0 +1,51 @@ +const { Decoder } = require('@jwetzell/posistagenet'); + +exports.config = { + defaultName: 'PosiStageNet', + connectionType: 'multicast', + port: 56565, + remotePort: 56565, + mayChangePorts: false, + heartbeatInterval: 5000, + heartbeatTimeout: 15000, + searchOptions: { + type: 'multicast', + address: getMulticastGroup(1), + port: 56565, + validateResponse(msg, info) { + return true; + }, + }, +}; + +exports.ready = function ready(_device) { + console.log('posistagenet is ready'); + const device = _device; + device.psn = new Decoder(); + + const networkInterfaces = device.getNetworkInterfaces(); + + Object.keys(networkInterfaces).forEach((networkInterfaceID) => { + const networkInterface = networkInterfaces[networkInterfaceID]; + device.connection.addMembership(getMulticastGroup(1), networkInterface[0].address); + }); +}; + +exports.data = function data(_device, buf) { + const device = _device; + if (device.psn) { + device.psn.decode(buf); + device.data = { + data: device.psn.data, + info: device.psn.info, + }; + } +}; + +exports.heartbeat = function heartbeat(device) {}; + +exports.update = function update(_device, doc, updateType, updateData) {}; + +function getMulticastGroup(universe) { + return `236.10.10.10`; +} diff --git a/plugins/posistagenet/styles.css b/plugins/posistagenet/styles.css new file mode 100644 index 0000000..60ef375 --- /dev/null +++ b/plugins/posistagenet/styles.css @@ -0,0 +1,3 @@ +[id^='tracker-'] { + color: white; +} diff --git a/plugins/posistagenet/template.ejs b/plugins/posistagenet/template.ejs new file mode 100644 index 0000000..0e8684e --- /dev/null +++ b/plugins/posistagenet/template.ejs @@ -0,0 +1,16 @@ +
+

<%= data.info.system_name ? data.info.system_name : '' %> PosiStageNet

+
+ +
+

Tracker Count: <%= Object.keys(data.data.trackers).length %>

+ <% Object.entries(data.info.trackers).forEach(([trackerId,trackerInfo]) => { + + %> + +
+ <%= trackerInfo.name %> +
+ + <% }); %> +
\ No newline at end of file