Comparing version 0.0.1 to 0.0.2
95
index.js
var events = require('events'); | ||
var util = require('util'); | ||
var bindings = require('./build/Release/binding.node'); | ||
var Noble = bindings.Noble; | ||
var NobleBindings = bindings.Noble; | ||
inherits(Noble, events.EventEmitter); | ||
inherits(NobleBindings, events.EventEmitter); | ||
module.exports = new Noble(); | ||
// extend prototype | ||
function inherits(target, source) { | ||
for (var k in source.prototype) | ||
for (var k in source.prototype) { | ||
target.prototype[k] = source.prototype[k]; | ||
} | ||
} | ||
function Noble() { | ||
this._bindings = new NobleBindings(); | ||
this._peripherals = {}; | ||
var self = this; | ||
this._bindings.on('stateChange', function(state) { | ||
self.emit('stateChange', state); | ||
}); | ||
this._bindings.on('scanStart', function(state) { | ||
self.emit('scanStart'); | ||
}); | ||
this._bindings.on('scanStop', function(state) { | ||
self.emit('scanStop'); | ||
}); | ||
this._bindings.on('peripheralDiscover', function(uuid, localName, services, rssi) { | ||
var peripheral = self._peripherals[uuid] = new NoblePeripheral(uuid, localName, services, rssi); | ||
self.emit('peripheralDiscover', peripheral); | ||
}); | ||
this._bindings.on('peripheralConnect', function(uuid) { | ||
var peripheral = self._peripherals[uuid]; | ||
self.emit('peripheralConnect', peripheral); | ||
peripheral.emit('connect'); | ||
}); | ||
this._bindings.on('peripheralConnectFailure', function(uuid, reason) { | ||
var peripheral = self._peripherals[uuid]; | ||
self.emit('peripheralConnectFailure', peripheral, reason); | ||
peripheral.emit('connectFailure', reason); | ||
}); | ||
this._bindings.on('peripheralDisonnect', function(uuid) { | ||
var peripheral = self._peripherals[uuid]; | ||
self.emit('peripheralDisconnect', peripheral); | ||
peripheral.emit('disconnect'); | ||
}); | ||
} | ||
util.inherits(Noble, events.EventEmitter); | ||
Noble.prototype.startScanning = function(serviceUUIDs, allowDuplicates) { | ||
this._bindings.startScanning(serviceUUIDs, allowDuplicates); | ||
}; | ||
Noble.prototype.stopScanning = function(serviceUUIDs, allowDuplicates) { | ||
this._bindings.stopScanning(); | ||
}; | ||
Noble.prototype.connectPeripheral = function(uuid) { | ||
this._bindings.connectPeripheral(uuid); | ||
}; | ||
Noble.prototype.disconnectPeripheral = function(uuid) { | ||
this._bindings.disconnectPeripheral(uuid); | ||
}; | ||
var noble = new Noble(); | ||
module.exports = noble; | ||
function NoblePeripheral(uuid, localName, services, rssi) { | ||
this.uuid = uuid; | ||
this.localName = localName; | ||
this.services = services; | ||
this.rssi = rssi; | ||
} | ||
util.inherits(NoblePeripheral, events.EventEmitter); | ||
NoblePeripheral.prototype.connect = function() { | ||
noble.connectPeripheral(this.uuid); | ||
}; | ||
NoblePeripheral.prototype.disconnect = function() { | ||
noble.disconnectPeripheral(this.uuid); | ||
}; | ||
@@ -5,3 +5,3 @@ { | ||
"description": "A node.js BLE (Bluetooth low energy) library.", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"repository": { | ||
@@ -8,0 +8,0 @@ "type": "git", |
@@ -21,5 +21,14 @@ noble | ||
Start scanning: | ||
noble.startScanning(); // any service UUID, no duplicates | ||
noble.startScanning(); | ||
noble.startScanning([], true); // any service UUID, allow duplicates | ||
var serviceUUIDs = ["<service UUID 1>", ...]; // default: [] => all | ||
var allowDuplicates = <false|true>; // default: false | ||
noble.startScanning(serviceUUIDs, allowDuplicates); // particular UUID's | ||
Stop scanning: | ||
@@ -29,2 +38,10 @@ | ||
Peripheral connect: | ||
peripheral.connect(); | ||
Peripheral disconnect or cancel pending connection: | ||
peripheral.disconnect(); | ||
__Events__ | ||
@@ -49,2 +66,3 @@ | ||
peripheral = { | ||
uuid: "<uuid>", | ||
localName: "<name>", | ||
@@ -55,4 +73,23 @@ services: ["<service UUID>", ...], | ||
noble.on('peripheralDiscovered', callback(peripheral)); | ||
noble.on('peripheralDiscover', callback(peripheral)); | ||
Peripheral connected: | ||
noble.on('peripheralConnect', callback(peripheral)); | ||
peripheral.on('connect', callback); | ||
Peripheral connect failure: | ||
noble.on('peripheralConnectFailure', callback(peripheral, reason)); | ||
peripheral.on('connectFailure', callback(reason)); | ||
Peripheral disconnected: | ||
noble.on('peripheralDisonnect', callback(peripheral)); | ||
peripheral.on('disconnect', callback); | ||
Roadmap (TODO) | ||
@@ -63,12 +100,11 @@ -------------- | ||
* ~~Adapter state (unknown | reseting | unsupported | unauthorized | off | on)~~ | ||
* Scan | ||
* ~~Scan~~ | ||
* ~~startScanning~~ | ||
* service UUID's | ||
* allow duplicates | ||
* ~~service UUID's~~ | ||
* ~~allow duplicates~~ | ||
* ~~stopScanning~~ | ||
* Peripheral (local name, service UUID's, RSSI) | ||
* Peripheral (uuid, local name, service UUID's, RSSI) | ||
* ~~discovered~~ | ||
* connect | ||
* cancel | ||
* disconnect | ||
* ~~connect~~ | ||
* ~~disconnect/cancel connect~~ | ||
* discover services | ||
@@ -75,0 +111,0 @@ * read |
36
test.js
@@ -22,10 +22,42 @@ var noble = require('./index'); | ||
noble.on('peripheralDiscovered', function(peripheral) { | ||
console.log('on -> peripheralDiscovered: '); | ||
noble.on('peripheralDiscover', function(peripheral) { | ||
console.log('on -> peripheralDiscover: '); | ||
console.log(peripheral); | ||
noble.stopScanning(); | ||
peripheral.on('connect', function() { | ||
console.log('on -> peripheral connect'); | ||
this.disconnect(); | ||
}); | ||
peripheral.on('connectFailure', function(reason) { | ||
console.log('on -> peripheral connect failure'); | ||
console.log(reason); | ||
}); | ||
peripheral.on('disconnect', function() { | ||
console.log('on -> peripheral diconnect'); | ||
}); | ||
peripheral.connect(); | ||
}); | ||
noble.on('peripheralConnect', function(peripheral) { | ||
console.log('on -> peripheralConnect: '); | ||
console.log(peripheral); | ||
}); | ||
noble.on('peripheralConnectFailure', function(peripheral, reason) { | ||
console.log('on -> peripheralConnectFailure: '); | ||
console.log(peripheral); | ||
console.log(reason); | ||
}); | ||
noble.on('peripheralDisconnect', function(peripheral) { | ||
console.log('on -> peripheralDisonnect: '); | ||
console.log(peripheral); | ||
}); | ||
noble.startScanning(); | ||
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
28181
16
117
122