Comparing version 0.1.1 to 1.0.0
@@ -21,12 +21,14 @@ /*jslint node: true, vars: true, nomen: true */ | ||
function Milight(configuration) { | ||
Zone.call(this, this, 0); | ||
Zone.call(this, this, 0); | ||
configuration = configuration || {}; | ||
configuration = configuration || {}; | ||
this._host = configuration.host || DEFAULT_HOST; | ||
this._port = configuration.port || DEFAULT_PORT; | ||
this._broadcastMode = configuration.broadcast || (this._host === DEFAULT_HOST); | ||
this._delayBetweenMessages = configuration.delayBetweenMessages || DEFAULT_DELAY_BETWEEN_MESSAGES; | ||
this._host = configuration.host || DEFAULT_HOST; | ||
this._port = configuration.port || DEFAULT_PORT; | ||
this._broadcastMode = configuration.broadcast || | ||
(this._host === DEFAULT_HOST); | ||
this._delayBetweenMessages = configuration.delayBetweenMessages || | ||
DEFAULT_DELAY_BETWEEN_MESSAGES; | ||
this._socketSem = semaphore(1); | ||
this._socketSem = semaphore(1); | ||
} | ||
@@ -39,22 +41,22 @@ | ||
Milight.prototype.zone = function(ids) { | ||
if (ids === 0) { | ||
return this; | ||
} | ||
return new Zone(this, ids); | ||
if (ids === 0) { | ||
return this; | ||
} | ||
return new Zone(this, ids); | ||
}; | ||
Milight.prototype.allZones = function() { | ||
return this; | ||
return this; | ||
}; | ||
Milight.prototype._sync = function(func, callback) { | ||
var sem = this._socketSem; | ||
sem.take(function() { | ||
func(function(error) { | ||
var sem = this._socketSem; | ||
sem.take(function() { | ||
func(function(error) { | ||
sem.leave(); | ||
sem.leave(); | ||
return callback.apply(this, arguments); | ||
}); | ||
}); | ||
return callback.apply(this, arguments); | ||
}); | ||
}); | ||
}; | ||
@@ -64,84 +66,85 @@ | ||
if (typeof (callback) !== "function") { | ||
throw new Error("Illegal callback argument '" + callback + "'"); | ||
} | ||
if (typeof (callback) !== "function") { | ||
throw new Error("Illegal callback argument '" + callback + "'"); | ||
} | ||
var buffer = new Buffer(array); | ||
var buffer = new Buffer(array); | ||
if (debug.enabled) { | ||
debug("_send ", buffer); | ||
} | ||
if (debug.enabled) { | ||
debug("_send ", buffer); | ||
} | ||
var self = this; | ||
var self = this; | ||
this._init(function(error, socket) { | ||
if (error) { | ||
return callback(error); | ||
} | ||
this._init(function(error, socket) { | ||
if (error) { | ||
return callback(error); | ||
} | ||
function send() { | ||
if (debug.enabled) { | ||
debug("Send at " + Date.now()); | ||
} | ||
function send() { | ||
if (debug.enabled) { | ||
debug("Send at", Date.now()); | ||
} | ||
socket.send(buffer, 0, buffer.length, self._port, self._host, function(error, bytes) { | ||
self._lastSend = Date.now(); | ||
socket.send(buffer, 0, buffer.length, self._port, self._host, function( | ||
error, bytes) { | ||
self._lastSend = Date.now(); | ||
if (debug.enabled) { | ||
debug("Sent at ", Date.now(), "error=", error, "bytes=", bytes); | ||
} | ||
if (debug.enabled) { | ||
debug("Sent at", Date.now(), "error=", error, "bytes=", bytes); | ||
} | ||
if (error) { | ||
if (!callback) { | ||
console.error(error); | ||
return; | ||
} | ||
return callback(error); | ||
} | ||
if (error) { | ||
if (!callback) { | ||
console.error(error); | ||
return; | ||
} | ||
return callback(error); | ||
} | ||
if (!callback) { | ||
return; | ||
} | ||
if (!callback) { | ||
return; | ||
} | ||
callback(); | ||
}); | ||
} | ||
callback(); | ||
}); | ||
} | ||
var dt = self._lastSend + self._delayBetweenMessages - Date.now(); | ||
if (!self._lastSend || dt < 0) { | ||
return send(); | ||
} | ||
var dt = self._lastSend + self._delayBetweenMessages - Date.now(); | ||
if (!self._lastSend || dt < 0) { | ||
return send(); | ||
} | ||
if (debug.enabled) { | ||
debug("Wait " + dt + "ms"); | ||
} | ||
setTimeout(function() { | ||
send(); | ||
}, dt); | ||
}); | ||
if (debug.enabled) { | ||
debug("Wait " + dt + "ms"); | ||
} | ||
setTimeout(function() { | ||
send(); | ||
}, dt); | ||
}); | ||
}; | ||
Milight.prototype._init = function(callback) { | ||
var socket = this._socket; | ||
if (socket) { | ||
return callback(null, socket); | ||
} | ||
var socket = this._socket; | ||
if (socket) { | ||
return callback(null, socket); | ||
} | ||
var self = this; | ||
socket = dgram.createSocket('udp4'); | ||
socket.on("listening", function(error) { | ||
if (error) { | ||
return callback(error); | ||
} | ||
var self = this; | ||
socket = dgram.createSocket('udp4'); | ||
socket.on("listening", function(error) { | ||
if (error) { | ||
return callback(error); | ||
} | ||
if (self._broadcastMode) { | ||
socket.setBroadcast(true); | ||
} | ||
if (self._broadcastMode) { | ||
socket.setBroadcast(true); | ||
} | ||
self._socket = socket; | ||
self._socket = socket; | ||
callback(null, socket); | ||
}); | ||
callback(null, socket); | ||
}); | ||
socket.bind(); | ||
socket.bind(); | ||
}; | ||
@@ -151,3 +154,3 @@ | ||
this._on(zoneId, false, callback); | ||
this._on(zoneId, false, callback); | ||
}; | ||
@@ -157,52 +160,52 @@ | ||
if (typeof (callback) !== "function") { | ||
throw new Error("Illegal callback argument '" + callback + "'"); | ||
} | ||
if (typeof (callback) !== "function") { | ||
throw new Error("Illegal callback argument '" + callback + "'"); | ||
} | ||
if (isNaN(zoneId) || zoneId < 0 || zoneId >= onKeys.lenght) { | ||
var error = new Error("_on: Invalid zoneId (" + zoneId + ")"); | ||
return callback(error); | ||
} | ||
if (isNaN(zoneId) || zoneId < 0 || zoneId >= onKeys.lenght) { | ||
var error = new Error("_on: Invalid zoneId (" + zoneId + ")"); | ||
return callback(error); | ||
} | ||
if (!force && this._currentZone === zoneId) { | ||
// console.log("Zone already specified ", zoneId); | ||
return callback(null); | ||
} | ||
if (!force && this._currentZone === zoneId) { | ||
debug("Zone already specified ", zoneId); | ||
return callback(null); | ||
} | ||
var buffer = [ onKeys[zoneId], 0x00, 0x55 ]; | ||
var buffer = [ onKeys[zoneId], 0x00, 0x55 ]; | ||
var self = this; | ||
this._send(buffer, function(error) { | ||
var self = this; | ||
this._send(buffer, function(error) { | ||
// console.log("ON zone " + zoneId + " terminated ", error); | ||
debug("ON zone", zoneId, "terminated ", error); | ||
if (error) { | ||
return callback(error); | ||
} | ||
if (error) { | ||
return callback(error); | ||
} | ||
self._currentZone = zoneId; | ||
self._currentZone = zoneId; | ||
callback(); | ||
}); | ||
callback(); | ||
}); | ||
}; | ||
Milight.prototype._off = function(zoneId, callback) { | ||
if (isNaN(zoneId) || zoneId < 0 || zoneId >= onKeys.lenght) { | ||
var error = new Error("_off: Invalid zoneId (" + zoneId + ")"); | ||
if (isNaN(zoneId) || zoneId < 0 || zoneId >= onKeys.lenght) { | ||
var error = new Error("_off: Invalid zoneId (" + zoneId + ")"); | ||
return callback(error); | ||
} | ||
return callback(error); | ||
} | ||
var buffer = [ offKeys[zoneId], 0x00, 0x55 ]; | ||
var buffer = [ offKeys[zoneId], 0x00, 0x55 ]; | ||
var self = this; | ||
this._send(buffer, function(error) { | ||
if (error) { | ||
return callback(error); | ||
} | ||
var self = this; | ||
this._send(buffer, function(error) { | ||
if (error) { | ||
return callback(error); | ||
} | ||
self._currentZone = undefined; | ||
self._currentZone = undefined; | ||
callback(); | ||
}); | ||
}); | ||
}; |
@@ -303,3 +303,3 @@ /*jslint node: true, vars: true, nomen: true */ | ||
*/ | ||
function brightness(milight, v, callback) { | ||
function setBrightness(milight, v, callback) { | ||
if (isNaN(v)) { | ||
@@ -364,3 +364,3 @@ return callback(); | ||
if (h === undefined) { | ||
return brightness(milight, v, callback); | ||
return setBrightness(milight, v, callback); | ||
} | ||
@@ -377,3 +377,3 @@ | ||
brightness(milight, v, callback); | ||
setBrightness(milight, v, callback); | ||
}); | ||
@@ -399,2 +399,6 @@ }); | ||
if (callback === undefined) { | ||
callback = function() {}; | ||
} | ||
if (isNaN(brightness)) { | ||
@@ -428,3 +432,3 @@ brightness = 100; | ||
brightness(milight, brightness, callback); | ||
setBrightness(milight, brightness, callback); | ||
}); | ||
@@ -431,0 +435,0 @@ }); |
@@ -10,8 +10,8 @@ { | ||
], | ||
"version": "0.1.1", | ||
"version": "1.0.0", | ||
"author": "Olivier Oeuillot", | ||
"dependencies": { | ||
"semaphore": "1.0", | ||
"async": "1.3", | ||
"debug": "2.2" | ||
"semaphore": "~1.0", | ||
"async": "~1.3", | ||
"debug": "~2.2" | ||
}, | ||
@@ -18,0 +18,0 @@ "repository": { |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
16504
571
1
Updatedasync@~1.3
Updateddebug@~2.2
Updatedsemaphore@~1.0