UNPKG

lifxlan

Version:

TypeScript library for controlling LIFX products over LAN

59 lines 1.59 kB
export const NOOP = (_value) => { }; export function PromiseWithResolvers() { let resolve = NOOP; let reject = NOOP; const promise = new Promise((res, rej) => { resolve = res; reject = rej; }); return { resolve, reject, promise }; } export 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'; } export function convertSignalToRssi(signal) { return Math.floor(10 * Math.log10(signal) + 0.5); } export function convertTargetToSerialNumber(slice) { if (slice.toHex) { return slice.toHex(); } 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; } export 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