advlib-ble-manufacturers
Version:
Wireless advertising packet decoding library for Bluetooth Low Energy manufacturer-specific data. We believe in an open Internet of Things.
71 lines (61 loc) • 2.15 kB
JavaScript
/**
* Copyright reelyActive 2015-2025
* We believe in an open Internet of Things
*/
const apple = require('./apple');
const codeBlueCommunications = require('./codebluecommunications');
const efento = require('./efento');
const elaInnovation = require('./elainnovation');
const enocean = require('./enocean');
const lairdConnectivity = require('./lairdconnectivity');
const minew = require('./minew');
const mokotechnology = require('./mokotechnology');
const nordicsemiconductor = require('./nordicsemiconductor');
const pur3ltd = require('./pur3ltd');
const ruuvi = require('./ruuvi');
const smartSensorDevices = require('./smartsensordevices');
const utils = require('./utils');
const wiliot = require('./wiliot');
/**
* Process Bluetooth Low Energy advertising manufacturer-specific data.
* @param {Integer} companyCode The Bluetooth-assigned company code.
* @param {Object} data The manufacturer data as a hexadecimal-string or Buffer.
* @return {Object} The processed manufacturer-specific data as JSON.
*/
function processManufacturerSpecificData(companyCode, data) {
let buf = utils.convertToBuffer(data);
let isValidCompanyCode = (Number.isInteger(companyCode) && (companyCode > 0));
if(!isValidCompanyCode || (buf === null)) {
return null;
}
switch(companyCode) {
case 0x004c:
return apple.process(data);
case 0x0059:
return nordicsemiconductor.process(data);
case 0x0077:
return lairdConnectivity.process(data);
case 0x026c:
return efento.process(data);
case 0x03da:
return enocean.process(data);
case 0x0499:
return ruuvi.process(data);
case 0x0500:
return wiliot.process(data);
case 0x0583:
return codeBlueCommunications.process(data);
case 0x0590:
return pur3ltd.process(data);
case 0x0639:
return minew.process(data);
case 0x0757:
return elaInnovation.process(data);
case 0x075b:
return smartSensorDevices.process(data);
case 0x0a62:
return mokotechnology.process(data);
}
return null;
}
module.exports.processManufacturerSpecificData = processManufacturerSpecificData;