UNPKG

lifxlan

Version:

TypeScript library for controlling LIFX products over LAN

65 lines 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NOOP = void 0; exports.PromiseWithResolvers = PromiseWithResolvers; exports.getRssiStatus = getRssiStatus; exports.convertSignalToRssi = convertSignalToRssi; exports.convertTargetToSerialNumber = convertTargetToSerialNumber; exports.convertSerialNumberToTarget = convertSerialNumberToTarget; const NOOP = (_value) => { }; exports.NOOP = NOOP; function PromiseWithResolvers() { let resolve = exports.NOOP; let reject = exports.NOOP; const promise = new Promise((res, rej) => { resolve = res; reject = rej; }); return { resolve, reject, promise }; } function getRssiStatus(rssi) { if (rssi === 200) return 'none'; if (rssi < -80 || rssi === 4 || rssi === 5 || rssi === 6) { return 'very bad'; } if (rssi < -70 || (rssi >= 7 && rssi <= 11)) { return 'somewhat bad'; } if (rssi < -60 || (rssi >= 12 && rssi <= 16)) { return 'alright'; } if (rssi < 0 || rssi > 16) { return 'good'; } return 'none'; } function convertSignalToRssi(signal) { return Math.floor(10 * Math.log10(signal) + 0.5); } function convertTargetToSerialNumber(slice) { let str = ''; const { length } = slice; for (let i = 0; i < length; i++) { const chunk = slice[i].toString(16); if (chunk.length < 2) { str += '0' + chunk; } else { str += chunk; } } return str; } function convertSerialNumberToTarget(serialNumber) { if (serialNumber.length !== 12) { throw new Error('Invalid serial number'); } const target = new Uint8Array(6); for (let i = 0; i < 6; i++) { const offset = 2 * i; target[i] = parseInt(serialNumber.slice(offset, offset + 2), 16); } return target; } //# sourceMappingURL=core.js.map