@iotize/tap
Version:
IoTize Device client for Javascript
54 lines • 4.01 kB
JavaScript
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