Skip to content

Commit

Permalink
feat: Add sACN lock
Browse files Browse the repository at this point in the history
Issue #2
  • Loading branch information
schw4rzlicht committed Jun 10, 2020
1 parent 626430d commit c3a08c5
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions src/lib/permissions/SACNPermission.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import {RuntimeInformation} from "../RuntimeInformation";
import {Config} from "../Config";
import {Receiver, Packet} from "sacn";

import _ = require("lodash");

export default class SACNPermission implements PermissionInstance {

private readonly universeData: Map<number, Array<number>>;
Expand All @@ -12,25 +14,30 @@ export default class SACNPermission implements PermissionInstance {
this.universeData = new Map();

for (const command of config.commands) {
if(command.sacn) {
if (command.sacn) {
this.universeData.set(command.sacn.universe, null);
}
for (const parameter of command.parameters) {
if(parameter.sacn) {
if (parameter.sacn) {
this.universeData.set(parameter.sacn.universe, null);
}
}
}

if(this.universeData.size > 0) {
if (this.universeData.size > 0) {
this.sACNReceiver = new Receiver({
universes: Array.from(this.universeData.keys()),
reuseAddr: true
});

this.sACNReceiver.on("packet", (packet: Packet) => {
let i = 0;
// this.universeData.set(packet.universe, packet.slotsData)

let data = new Array(512).fill(0);
packet.slotsData.forEach((value, channel) => {
data[channel] = value;
});

this.universeData.set(packet.universe, data);
});
}
}
Expand All @@ -41,21 +48,20 @@ export default class SACNPermission implements PermissionInstance {

let sacn = runtimeInformation.instructions.sacn;

if(sacn) {
if (sacn) {
let universeData = this.universeData.get(sacn.universe);
// if(universeData && universeData[sacn.channel] < 100) {
if(true) {
if(_.isInteger(universeData[sacn.channel - 1]) && universeData[sacn.channel - 1] < 255) {
permissionCollector.denyPermission("sacn",
`@${runtimeInformation.userName}, ${runtimeInformation.config.lockMessage}`);
}
}
}

stop(): void {
if(this.sACNReceiver) {
if (this.sACNReceiver) {
try {
this.sACNReceiver.close();
} catch(ignored) {
} catch (ignored) {
}
}
}
Expand Down

0 comments on commit c3a08c5

Please sign in to comment.