barnowl-huawei
Version:
Collect ambient Bluetooth Low Energy packets from Huawei access points for real-time location and sensing. We believe in an open Internet of Things.
69 lines (56 loc) • 1.76 kB
JavaScript
/**
* Copyright reelyActive 2021
* We believe in an open Internet of Things
*/
const EventEmitter = require('events').EventEmitter;
const HuaweiDecoder = require('./huaweidecoder.js');
const UdpListener = require('./udplistener.js');
const TestListener = require('./testlistener.js');
/**
* BarnowlHuawei Class
* Converts Huawei AP radio decodings into standard raddec events.
* @param {Object} options The options as a JSON object.
*/
class BarnowlHuawei extends EventEmitter {
/**
* BarnowlHuawei constructor
* @param {Object} options The options as a JSON object.
* @constructor
*/
constructor(options) {
super();
options = options || {};
options.barnowl = this;
this.listeners = [];
this.huaweiDecoder = new HuaweiDecoder({ barnowl: this });
}
/**
* Add a listener to the given hardware interface.
* @param {Class} ListenerClass The (uninstantiated) listener class.
* @param {Object} options The options as a JSON object.
*/
addListener(ListenerClass, options) {
options = options || {};
options.decoder = this.huaweiDecoder;
let listener = new ListenerClass(options);
this.listeners.push(listener);
}
/**
* Handle and emit the given raddec.
* @param {Raddec} raddec The given Raddec instance.
*/
handleRaddec(raddec) {
// TODO: observe options to normalise raddec
this.emit("raddec", raddec);
}
/**
* Handle and emit the given infrastructure message.
* @param {Object} message The given infrastructure message.
*/
handleInfrastructureMessage(message) {
this.emit("infrastructureMessage", message);
}
}
module.exports = BarnowlHuawei;
module.exports.UdpListener = UdpListener;
module.exports.TestListener = TestListener;