'use strict'; import { Encoder, Decoder, DPT } from './definitions'; import { DPT1 } from './DPT1'; import { DPT2 } from './DPT2'; import { DPT3 } from './DPT3'; import { DPT4 } from './DPT4'; import { DPT5 } from './DPT5'; import { DPT6 } from './DPT6'; import { DPT7 } from './DPT7'; import { DPT8 } from './DPT8'; import { DPT9 } from './DPT9'; import { DPT10 } from './DPT10'; import { DPT11 } from './DPT11'; import { DPT12 } from './DPT12'; import { DPT13 } from './DPT13'; import { DPT14 } from './DPT14'; import { DPT15 } from './DPT15'; import { DPT16 } from './DPT16'; import { DPT17 } from './DPT17'; import { DPT18 } from './DPT18'; import { DPT19 } from './DPT19'; import { DPT20 } from './DPT20'; import { DPT21 } from './DPT21'; //import { DPT22 } from './DPT22'; import { DPT232 } from './DPT232'; import { DPT237 } from './DPT237'; import { DPT238 } from './DPT238'; export class DataPointType { get type(): string { return this._type; } get subtype(): string { return this._subtype; } /** * @property {DPTYPE} DPT1 * @property {DPTYPE} DPT2 * @property {DPTYPE} DPT3 * @property {DPTYPE} DPT4 * @property {DPTYPE} DPT5 * @property {DPTYPE} DPT6 * @property {DPTYPE} DPT7 * @property {DPTYPE} DPT8 * @property {DPTYPE} DPT9 * @property {DPTYPE} DPT10 * @property {DPTYPE} DPT11 * @property {DPTYPE} DPT12 * @property {DPTYPE} DPT13 * @property {DPTYPE} DPT14 * @property {DPTYPE} DPT15 * @property {DPTYPE} DPT16 * @property {DPTYPE} DPT17 * @property {DPTYPE} DPT18 * @property {DPTYPE} DPT19 * @property {DPTYPE} DPT20 */ static get TYPES(): { [index: string]: DPT | null } { return { DPT1: new DPT1(), DPT2: new DPT2(), DPT3: new DPT3(), DPT4: new DPT4(), DPT5: new DPT5(), DPT6: new DPT6(), DPT7: new DPT7(), DPT8: new DPT8(), DPT9: new DPT9(), DPT10: new DPT10(), DPT11: new DPT11(), DPT12: new DPT12(), DPT13: new DPT13(), DPT14: new DPT14(), DPT15: new DPT15(), DPT16: new DPT16(), DPT17: new DPT17(), DPT18: new DPT18(), DPT19: new DPT19(), DPT20: new DPT20(), DPT21: new DPT21(), //DPT22: new DPT22(), DPT232: new DPT232(), DPT237: new DPT237(), DPT238: new DPT238() }; } constructor(private _type: string, private _subtype: string, private _encoder: Encoder, private _decoder: Decoder) { } static validType(text: string): boolean { const m = text.toUpperCase().match(/(?:DPT)?(\d+)(\.(\d+))?/); return m != null; } toString(): string { return `${this.type}.${this.subtype}`; } decode(buffer: Buffer): string | number { return this._decoder(buffer); } encode(value: string | number): Buffer { return this._encoder(value); } }