@iotize/tap
Version:
IoTize Device client for Javascript
34 lines • 3.13 kB
JavaScript
import { bufferToHexString } from '@iotize/common/byte-converter';
import { ConverterError } from '../error';
const EXPECTED_ARRAY_LENGTH = 6;
export class MacAddressStringConverter {
decode(body) {
if (!body || body.length !== EXPECTED_ARRAY_LENGTH) {
throw ConverterError.unexpectedBufferSize(EXPECTED_ARRAY_LENGTH, body);
}
let result = '';
for (var i = body.length - 1; i >= 0; i--) {
const part = body.slice(i, i + 1);
result += bufferToHexString(part).toUpperCase() + ':';
}
return result.substring(0, result.length - 1);
}
encode(value) {
const values = value
.split(':')
.map((v) => parseInt(v, 16) & 0xff)
.reverse();
if (values.length !== EXPECTED_ARRAY_LENGTH) {
throw new Error('Invalid mac address format: ' + value);
}
return Uint8Array.from(values);
}
static instance() {
if (!MacAddressStringConverter._instance) {
MacAddressStringConverter._instance = new MacAddressStringConverter();
}
return MacAddressStringConverter._instance;
}
}
MacAddressStringConverter._instance = undefined;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLWFkZHJlc3Mtc3RyaW5nLWRlY29kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9jbGllbnQvaW1wbC9zcmMvbGliL2NvbnZlcnRlci9ib2R5L21hYy1hZGRyZXNzLXN0cmluZy1kZWNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFMUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUFFaEMsTUFBTSxPQUFPLHlCQUF5QjtJQUs3QixNQUFNLENBQUMsSUFBZ0I7UUFDNUIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLHFCQUFxQixFQUFFO1lBQ2xELE1BQU0sY0FBYyxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQztTQUN2RDtRQUNELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQWE7UUFDekIsTUFBTSxNQUFNLEdBQUcsS0FBSzthQUNqQixLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQzthQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNiLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxxQkFBcUIsRUFBRTtZQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUTtRQUNwQixJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFO1lBQ3hDLHlCQUF5QixDQUFDLFNBQVMsR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7U0FDdkU7UUFDRCxPQUFPLHlCQUF5QixDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDOztBQTlCZ0IsbUNBQVMsR0FBK0IsU0FBUyxDQUFDIn0=