dptlib/src/DPT12.ts
2022-03-11 12:09:49 +01:00

49 lines
1.1 KiB
TypeScript

'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"
}
};
}