'use strict'; import { BufferLengthError } from './errors/BufferLengthError'; import { InvalidValueError } from './errors/InvalidValueError'; import { DPT } from './definitions'; import { buffer } from 'stream/consumers'; export class DPT12 implements DPT { id = '12'; name = '4-byte unsigned value'; bufferLength = 4 /** * Decode a buffer * * @param buffer the buffer * @returns the DPT value */ decoder(buffer: Buffer): number { if (buffer.length !== this.bufferLength) throw new BufferLengthError(`Invalid buffer length ${buffer.length}/${buffer}. Expected ${this.bufferLength}.`); return buffer.readUInt32BE(0); }; /** * Encode a buffer * * @param value the value to be converted to buffer * @returns the buffer */ encoder(value: number): Buffer { if (!value) throw new InvalidValueError('Cannot write null value'); let result = Buffer.alloc(this.bufferLength) result.writeUInt32BE(value) return result; } subtypes: { // 12.001 counter pulses "001": { "name": "DPT_Value_4_Ucount", "desc": "counter pulses" } }; }