0.0.2 • Published 11 years ago
hysteresis v0.0.2
hysteresis 
An implementation of hysteresis in JavaScript
Installation
$ npm install hysteresis$ bower install littlebits/hysteresisExample
There are a variety of use-cases for hysteresis. One use-case at littleBits is that we use it to avoid jittery event inference in the cloudBit's data stream.
Here is a naive example:
var Hysteresis = require('hysteresis')
var createServer = require('net').createServer
var server = createServer(9500, function(socket){
var check = Hysteresis([68,70])
socket.on('data', function(data){
var didCross = check(Number(data))
if (didCross) socket.emit(['release', 'ignite'][didCross - 1], data)
})
})API
Hysteresis
Hysteresis(threshold, config) -> (check(number) -> 0 | 1 | 2)`Instantiate a hysteresis instance. You must provide a threshold and may optionally provide a config object that tweaks behaviour.
config exposes the following options:
initialSide– May be1or0, defaults tonullcausingsidebootstrapping to be resolved using first receivednumberinitialBias– May be1or0, defaults to1initialIsChange– May beBoolean, defaults totruecheckType– May be'crosses'or'crossesOrMeets', defaults to'crossesOrMeets'
The constructor returns a check function that accepts number and returns one of the following codes:
check(number) -> 0 | 1 | 20– the number did not cross the threshold1– the number fell below the threshold2– the number rose above the threshold
For more details please read the annotated source code and review the tests.