dmx-flok/drivers/artnet.js

66 lines
1.3 KiB
JavaScript
Raw Normal View History

"use strict"
var dgram = require('dgram')
function EnttecODE(device_id, options) {
var self = this
self.header = new Buffer([65, 114, 116, 45, 78, 101, 116, 0, 0, 80, 0, 14])
self.sequence = self.physical = new Buffer([0])
self.length = new Buffer([0x02,0x00])
this.universe = new Buffer(512)
this.universe.fill(0)
self.sleepTime = 24
options = options || {}
self.host = device_id || '127.0.0.1'
self.port = options.port || 6454
self.dev = dgram.createSocket('udp4')
self.start()
}
EnttecODE.prototype.send_universe = function() {
var pkg = Buffer.concat([
this.header,
this.sequence,
this.physical,
this.length,
this.universe
])
this.dev.send(pkg, 0, pkg.length, self.port, self.host)
}
EnttecODE.prototype.start = function() {
this.timeout = setInterval(this.send_universe.bind(this), this.sleepTime)
}
EnttecODE.prototype.stop = function() {
clearInterval(this.timeout)
}
EnttecODE.prototype.close = function(cb) {
this.stop()
cb(null)
}
EnttecODE.prototype.update = function(u) {
for (var c in u) {
this.universe[c] = u[c]
}
}
EnttecODE.prototype.updateAll = function(v) {
for (var i = 0; i < 512; i++) {
this.universe[i] = v
}
}
EnttecODE.prototype.get = function(c) {
return this.universe[c]
}
module.exports = EnttecODE