UNPKG

sniffypedia

Version:

An open, collaborative lookup of radio-identifiable (sniffable) things, represented as structured data. We believe in an open Internet of Things.

315 lines (301 loc) 12.8 kB
/* * This Sniffypedia is made available under the Open Database License: * http://opendatacommons.org/licenses/odbl/1.0/. * Any rights in individual contents of the database are licensed under * Creative Commons Attribution-ShareAlike 4.0 International: * https://creativecommons.org/licenses/by-sa/4.0/ */ const uri = require('./uri'); const utils = require('./utils'); // Reference: // https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers const COMPANY_IDENTIFIERS = { "0001": "/Organization/Nokia/", "0003": "/Organization/IBM_Corporation/", "0004": "/Organization/Toshiba_Corporation/", "0006": "/Organization/Microsoft/", "000a": "/Organization/CSR/", "0044": "/Organization/Socket_Mobile/", "004c": "/Organization/Apple_Inc/", "0057": "/Organization/HARMAN_International/", "0059": "/Organization/Nordic_Semiconductor_ASA/", "005f": "/Organization/Wicentric_Inc/", "0065": "/Organization/HP_Inc/", "006b": "/Organization/Polar_Electro_Oy/", "0075": "/Organization/Samsung/", "0077": "/Organization/Laird_Connectivity/", "0078": "/Organization/Nike_Inc/", "0087": "/Organization/Garmin_International/", "008a": "/Organization/Jawbone/", "008c": "/Organization/Gimbal_Inc/", "009e": "/Organization/Bose_Corporation/", "00b5": "/Organization/Swirl_Networks_Inc/", "00bd": "/Organization/Aplix_Corporation/", "00c4": "/Organization/LG_Electronics/", "00c7": "/Organization/Quuppa_Oy/", "00cc": "/Organization/Beats_Electronics/", "00cd": "/Organization/Microchip_Technology_Inc/", "00d2": "/Organization/Dialog_Semiconductor_BV/", "00df": "/Organization/Misfit_Inc/", "00e0": "/Organization/Google/", "00f0": "/Organization/PayPal_Inc/", "0104": "/Organization/PLUS_Location_Systems/", "011b": "/Organization/Aruba_Networks/", "012d": "/Organization/Sony_Corporation/", "0131": "/Organization/Cypress_Semiconductor_Corporation/", "0136": "/Organization/Seed_Labs_Inc/", "013a": "/Organization/Tencent_Holdings_Limited/", "0147": "/Organization/Mighty_Cast_Inc/", "0154": "/Organization/Pebble_Technology_Corporation/", "0157": "/Organization/Zepp_Inc/", "015d": "/Organization/Estimote_Inc/", "015e": "/Organization/UniKey_Technologies_Inc/", "0171": "/Organization/Amazon_com_Services_Inc/", "0180": "/Organization/Gigaset_Communications_GmbH/", "0195": "/Organization/Zuli_Inc/", "0199": "/Organization/Salto_Systems/", "01ab": "/Organization/Facebook_Inc/", "01b5": "/Organization/Nest_Labs/", "01d1": "/Organization/August_Home_Inc/", "01da": "/Organization/Logitech_International_SA/", "0211": "/Organization/Telink_Semiconductor_Co_Ltd/", "0225": "/Organization/Nestle_Nespresso_SA/", "026c": "/Organization/Efento_Sp_zoo/", "027d": "/Organization/Huawei_Technologies_Co_Ltd/", "02b2": "/Product/OURA_Ring/", "02d3": "/Organization/Powercast_Corporation/", "02f2": "/Organization/GoPro_Inc/", "0309": "/https://www.dolby.com/", "038f": "/Organization/Xiaomi/", "0397": "/Organization/LEGO_System/", "0399": "/Organization/Nikon_Corporation/", "03c2": "/Organization/Snapchat_Inc/", "03da": "/Organization/EnOcean_GmbH/", "0409": "/Organization/RYSE_Inc/", "0499": "/Organization/Ruuvi_Innovations_Ltd/", "0500": "/Organization/Wiliot_Ltd/", "0505": "/Organization/InPlay_Inc/", "0528": "/Organization/Lunera_Inc/", "0553": "/Organization/Nintendo/", "0583": "/Organization/Code_Blue_Communications_Inc/", "0590": "/Organization/Pur3_Ltd/", "05a7": "/Organization/Sonos_Inc/", "060f": "/Organization/Signify/", "0618": "/Organization/Audio-Technica/", "0639": "/Organization/Shenzhen_Minew_Technologies_Co_Ltd/", "0757": "/Organization/ELA_Innovation_SA/", "075b": "/Organization/Smart_Sensor_Devices_AB/", "0819": "/Organization/Hunter_Douglas/", "0a62": "/Organization/MOKO_Technology_Ltd/", "0adb": "/Organization/Reelables_Inc/", "1040": "/Organization/Raspberry_Pi/" }; // Reference: // https://www.bluetooth.com/specifications/assigned-numbers/16-bit-uuids-for-members const UUID16 = { "fefd": "/Organization/Gimbal_Inc/", "fefc": "/Organization/Gimbal_Inc/", "fefa": "/Organization/PayPal_Inc/", "fef9": "/Organization/PayPal_Inc/", "fef8": "/Organization/Aplix_Corporation/", "fef7": "/Organization/Aplix_Corporation/", "fef6": "/Organization/Wicentric_Inc/", "fef5": "/Organization/Dialog_Semiconductor_BV/", "fef4": "/Organization/Google/", "fef3": "/Organization/Google/", "fef2": "/Organization/CSR/", "fef1": "/Organization/CSR/", "feef": "/Organization/Polar_Electro_Oy/", "feee": "/Organization/Polar_Electro_Oy/", "feed": "/Product/Tile_Tile/", "feec": "/Product/Tile_Tile/", "feeb": "/Organization/Swirl_Networks_Inc/", "feea": "/Organization/Swirl_Networks_Inc/", "fee7": "/Organization/Tencent_Holdings_Limited/", "fee6": "/Organization/Seed_Labs_Inc/", "fee5": "/Organization/Nordic_Semiconductor_ASA/", "fee4": "/Organization/Nordic_Semiconductor_ASA/", "fee1": "/Organization/Zepp_Inc/", "fee0": "/Organization/Zepp_Inc/", "fedd": "/Organization/Jawbone/", "fedc": "/Organization/Jawbone/", "fed9": "/Organization/Pebble_Technology_Corporation/", "fed4": "/Organization/Apple_Inc/", "fed3": "/Organization/Apple_Inc/", "fed2": "/Organization/Apple_Inc/", "fed1": "/Organization/Apple_Inc/", "fed0": "/Organization/Apple_Inc/", "fecf": "/Organization/Apple_Inc/", "fece": "/Organization/Apple_Inc/", "fecd": "/Organization/Apple_Inc/", "fecc": "/Organization/Apple_Inc/", "fecb": "/Organization/Apple_Inc/", "feca": "/Organization/Apple_Inc/", "fec9": "/Organization/Apple_Inc/", "fec8": "/Organization/Apple_Inc/", "fec7": "/Organization/Apple_Inc/", "fec4": "/Organization/PLUS_Location_Systems/", "febe": "/Organization/Bose_Corporation/", "feba": "/Organization/Tencent_Holdings_Limited/", "feb9": "/Organization/LG_Electronics/", "feb8": "/Organization/Facebook_Inc/", "feb7": "/Organization/Facebook_Inc/", "feb2": "/Organization/Microsoft/", "feb0": "/Organization/Nest_Labs/", "feaf": "/Organization/Nest_Labs/", "feae": "/Organization/Nokia/", "fead": "/Organization/Nokia/", "feac": "/Organization/Nokia/", "feab": "/Organization/Nokia/", "feaa": "/Product/Google_Eddystone/", "fea6": "/Organization/GoPro_Inc/", "fea5": "/Organization/GoPro_Inc/", "fea0": "/Product/Google_Chromecast/", "fe9f": "/Product/Google_Chromecast/", "fe9e": "/Organization/Dialog_Semiconductor_BV/", "fe9a": "/Organization/Estimote_Inc/", "fe95": "/Organization/Xiaomi/", "fe8f": "/Organization/CSR/", "fe8b": "/Organization/Apple_Inc/", "fe8a": "/Organization/Apple_Inc/", "fe88": "/Organization/Salto_Systems/", "fe86": "/Organization/Huawei_Technologies_Co_Ltd/", "fe78": "/Organization/HP_Inc/", "fe77": "/Organization/HP_Inc/", "fe65": "/Organization/CHIPOLO/", "fe61": "/Organization/Logitech_International_SA/", "fe59": "/Organization/Nordic_Semiconductor_ASA/", "fe58": "/Organization/Nordic_Semiconductor_ASA/", "fe56": "/Organization/Google/", "fe55": "/Organization/Google/", "fe50": "/Organization/Google/", "fe4b": "/Organization/Signify/", "fe3b": "https://www.dolby.com/", "fe36": "/Organization/Huawei_Technologies_Co_Ltd/", "fe35": "/Organization/Huawei_Technologies_Co_Ltd/", "fe33": "/Organization/CHIPOLO/", "fe2c": "/Organization/Google/", "fe27": "/Organization/Google/", "fe26": "/Organization/Google/", "fe25": "/Organization/Apple_Inc/", "fe24": "/Organization/August_Home_Inc/", "fe21": "/Organization/Bose_Corporation/", "fe1f": "/Organization/Garmin_International/", "fe19": "/Organization/Google/", "fe15": "/Organization/Amazon_com_Services_Inc/", "fe13": "/Organization/Apple_Inc/", "fe0f": "/Organization/Signify/", "fe08": "/Organization/Microsoft/", "fe07": "/Organization/Sonos_Inc/", "fe03": "/Organization/Amazon_com_Services_Inc/", "fe00": "/Organization/Amazon_com_Services_Inc/", "fdf7": "/Organization/HP_Inc/", "fdf0": "/Organization/Google/", "fdee": "/Organization/Huawei_Technologies_Co_Ltd/", "fde2": "/Organization/Google/", "fddf": "/Organization/HARMAN_International/", "fddb": "/Organization/Samsung/", "fdd2": "/Organization/Bose_Corporation/", "fdd1": "/Organization/Huawei_Technologies_Co_Ltd/", "fdd0": "/Organization/Huawei_Technologies_Co_Ltd/", "fdc1": "/Organization/Hunter_Douglas/", "fdc0": "/Organization/Hunter_Douglas/", "fdb4": "/Organization/HP_Inc/", "fdaf": "/Organization/Wiliot_Ltd/", "fdab": "/Organization/Xiaomi/", "fdaa": "/Organization/Xiaomi/", "fd9c": "/Organization/Huawei_Technologies_Co_Ltd/", "fd9b": "/Organization/Huawei_Technologies_Co_Ltd/", "fd9a": "/Organization/Huawei_Technologies_Co_Ltd/", "fd96": "/Organization/Google/", "fd8c": "/Organization/Google/", "fd8a": "/Organization/Signify/", "fd87": "/Organization/Google/", "fd84": "/Product/Tile_Tile/", "fd82": "/Organization/Sony_Corporation/", "fd7e": "/Organization/Samsung/", "fd7c": "/Organization/Toshiba_Corporation/", "fd72": "/Organization/Logitech_International_SA/", "fd6f": "/Service/Contact_Tracing/", "fd6c": "/Organization/Samsung/", "fd69": "/Organization/Samsung/", "fd63": "/Product/Fitbit_Wearable/", "fd62": "/Product/Fitbit_Wearable/", "fd5a": "/Organization/Samsung/", "fd59": "/Organization/Samsung/", "fd4b": "/Organization/Samsung/", "fd44": "/Organization/Apple_Inc/", "fd43": "/Organization/Apple_Inc/", "fd36": "/Organization/Google/", "fd31": "/Organization/LG_Electronics/", "fd2d": "/Organization/Xiaomi/", "fd2a": "/Organization/Sony_Corporation/", "fd22": "/Organization/Huawei_Technologies_Co_Ltd/", "fd21": "/Organization/Huawei_Technologies_Co_Ltd/", "fd1d": "/Organization/Samsung/", "fd03": "/Organization/Quuppa_Oy/", "fd02": "/Organization/LEGO_System/", "fcf1": "/Organization/Google/", "fce1": "/Organization/Sony_Corporation/", "fcdc": "/Organization/Amazon_com_Services_Inc/", "fcd2": "/Service/BTHome/", "fccf": "/Organization/Google/", "fcc6": "/Organization/Wiliot_Ltd/", "fcc3": "/Organization/HP_Inc/", "fcc0": "/Organization/Xiaomi/", "fcbd": "/Organization/Toshiba_Corporation/", "fcb2": "/Organization/Apple_Inc/", "fcb1": "/Organization/Google/", "fca4": "/Organization/HP_Inc/", "fca0": "/Organization/Apple_Inc/", "fc98": "/Organization/Ruuvi_Innovations_Ltd/", "fc96": "/Organization/LEGO_System/", "fc94": "/Organization/Apple_Inc/", "fc91": "/Organization/Samsung/", "fc90": "/Organization/Wiliot_Ltd/", "fc8f": "/Organization/Bose_Corporation/", "fc7e": "/Organization/HARMAN_International/", "fc79": "/Organization/LG_Electronics/", "fc75": "/Organization/Xiaomi/", "fc73": "/Organization/Google/", "fc6b": "/Organization/Sonos_Inc/", "fc6a": "/Organization/Sonos_Inc/", "fc69": "/Organization/HARMAN_International/", "fc66": "/Organization/Xiaomi/", "fc58": "/Organization/Shenzhen_Minew_Technologies_Co_Ltd/", "fc56": "/Organization/Google/", "fc52": "/Organization/LG_Electronics/", "fc4c": "/Organization/HP_Inc/", "fc49": "/Organization/Golioth_Inc/", "fc46": "/Organization/Xiaomi/", "fc3d": "/Organization/Reelables_Inc/", "fc39": "/Organization/HARMAN_International/" }; /** * Lookup the given id with the given options to return a URI. * @param {String} id The identifier as a hexadecimal string. * @param {Object} options The lookup options, if any. * @return {String} The URI or null if unable to look up. */ function lookup(id, options) { options = options || {}; if(!id) { return null; } let hexId; let isSpecificType = options.hasOwnProperty('type'); if(isSpecificType) { switch(options.type) { case 'uuid16': hexId = utils.convertToHexString(id, 2); return uri.construct(UUID16[hexId], options.origin); case 'companyIdentifier': hexId = utils.convertToHexString(id, 2); return uri.construct(COMPANY_IDENTIFIERS[hexId], options.origin); } } return null; } module.exports.COMPANY_IDENTIFIERS = COMPANY_IDENTIFIERS; module.exports.UUID16 = UUID16; module.exports.lookup = lookup;