bbc-microbit
Version:
Control a BBC micro:bit from Node.js using BLE
70 lines (57 loc) • 2.06 kB
JavaScript
var NobleDevice = require('noble-device');
var AccelerometerService = require('./accelerometer-service');
var ButtonService = require('./button-service');
var IoPinService = require('./io-pin-service');
var LedService = require('./led-service');
var MagnetometerService = require('./magnetometer-service');
var TemperatureService = require('./temperature-service');
var UartService = require('./uart-service');
var EventService = require('./event-service');
function BBCMicrobit() {
}
var BBCMicrobit = function(peripheral) {
NobleDevice.call(this, peripheral);
};
BBCMicrobit.is = function(peripheral) {
var localName = peripheral.advertisement.localName;
return (localName !== undefined) && (localName.indexOf('BBC micro:bit') !== -1);
};
NobleDevice.Util.inherits(BBCMicrobit, NobleDevice);
NobleDevice.Util.mixin(BBCMicrobit, NobleDevice.DeviceInformationService);
NobleDevice.Util.mixin(BBCMicrobit, AccelerometerService);
NobleDevice.Util.mixin(BBCMicrobit, ButtonService);
NobleDevice.Util.mixin(BBCMicrobit, IoPinService);
NobleDevice.Util.mixin(BBCMicrobit, LedService);
NobleDevice.Util.mixin(BBCMicrobit, MagnetometerService);
NobleDevice.Util.mixin(BBCMicrobit, TemperatureService);
NobleDevice.Util.mixin(BBCMicrobit, UartService);
NobleDevice.Util.mixin(BBCMicrobit, EventService);
BBCMicrobit.prototype.toString = function() {
return JSON.stringify({
id: this.id,
address: this.address
});
};
BBCMicrobit.prototype.connectAndSetUp = function(callback) {
BBCMicrobit.super_.prototype.connectAndSetUp.call(this, function(error) {
if (error) {
return callback(error);
}
if (this.hasIoPinService()) {
this.readPinAdConfiguration(function(error) {
if (error) {
return callback(error);
}
this.readPinIoConfiguration(function(error) {
if (error) {
return callback(error);
}
callback();
}.bind(this));
}.bind(this));
} else {
callback();
}
}.bind(this));
};
module.exports = BBCMicrobit;