UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

54 lines 4.01 kB
import { NumberConverter } from './number-converter'; function swapMap(val) { var ret = {}; for (var key in val) { ret[val[key]] = key; } return ret; } export class MultipleMaskConverter { // protected static _instance: UniqMaskDecoder; constructor(mapping) { this._mapping = mapping; // this._mapping[0x00] = (null as any as OutputType); // this._mapping[0x01] = (null as any as OutputType); } decode(body) { return MultipleMaskConverter.decodeAll(body, this._mapping); } /** * TODO check that not use more than the first 7 bits * @param types */ encode(types) { return MultipleMaskConverter.encodeAll(types, this._mapping); } static encodeAll(values, mapping) { var _reverseMapping = swapMap(mapping); var result = 0x0; for (var type of values) { if (type in _reverseMapping) { var mask = parseInt(_reverseMapping[type]); result = result | mask; } } return Uint8Array.from([result & 0xff]); } static decodeAll(value, mapping) { var results = []; if (typeof value !== 'number') { value = NumberConverter.fromOpaqueMsb(value, Math.min(value.length * 8, 32)); } for (var key in mapping) { var mask = parseInt(key); if (mask == 0 && value == 0) { results.push(mapping[mask]); } else if ((mask & value) != 0) { results.push(mapping[mask]); } } return results; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwbGUtbWFzay1kZWNvZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vY2xpZW50L2ltcGwvc3JjL2xpYi9jb252ZXJ0ZXIvYm9keS9tdWx0aXBsZS1tYXNrLWRlY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELFNBQVMsT0FBTyxDQUFDLEdBQTJCO0lBQzFDLElBQUksR0FBRyxHQUEyQixFQUFFLENBQUM7SUFDckMsS0FBSyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7UUFDbkIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sT0FBTyxxQkFBcUI7SUFJaEMsK0NBQStDO0lBRS9DLFlBQVksT0FBWTtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixxREFBcUQ7UUFDckQscURBQXFEO0lBQ3ZELENBQUM7SUFFTSxNQUFNLENBQUMsSUFBZ0I7UUFDNUIsT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLENBQWEsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEtBQW1CO1FBQy9CLE9BQU8scUJBQXFCLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQUksTUFBVyxFQUFFLE9BQVk7UUFDbEQsSUFBSSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNqQixLQUFLLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRTtZQUN2QixJQUFLLElBQVksSUFBSSxlQUFlLEVBQUU7Z0JBQ3BDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBVyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDeEI7U0FDRjtRQUNELE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFJLEtBQTBCLEVBQUUsT0FBWTtRQUNqRSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsS0FBSyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQ25DLEtBQUssRUFDTCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUMvQixDQUFDO1NBQ0g7UUFDRCxLQUFLLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRTtZQUN2QixJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDN0I7aUJBQU0sSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDN0I7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FRRiJ9