UNPKG

@pst-on-npm/homebridge-enocean

Version:
54 lines • 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EepParserFactory = void 0; const EepParser_A5_02_1 = require("./EepParser_A5_02"); const EepParser_A5_04_1 = require("./EepParser_A5_04"); const EepParser_A5_08_1 = require("./EepParser_A5_08"); const EepParser_A5_10_1 = require("./EepParser_A5_10"); const EepParser_A5_14_1 = require("./EepParser_A5_14"); const EepParser_A5_30_1 = require("./EepParser_A5_30"); const EepParser_A5_38_08_1 = require("./EepParser_A5_38_08"); const EepParser_A5_3F_7F_Eltako_1 = require("./EepParser_A5_3F_7F_Eltako"); const EepParser_D2_05_1 = require("./EepParser_D2_05"); const EepParser_F6_1 = require("./EepParser_F6"); class EepParserFactory { classMap = new Map(); constructor() { this.registerClass('A5-02', EepParser_A5_02_1.EepParser_A5_02); this.registerClass('A5-04', EepParser_A5_04_1.EepParser_A5_04); this.registerClass('A5-08', EepParser_A5_08_1.EepParser_A5_08); this.registerClass('A5-14', EepParser_A5_14_1.EepParser_A5_14); this.registerClass('F6-01', EepParser_F6_1.EepParser_F6); this.registerClass('F6-02', EepParser_F6_1.EepParser_F6); this.registerClass('A5-10', EepParser_A5_10_1.EepParser_A5_10); this.registerClass('A5-30', EepParser_A5_30_1.EepParser_A5_30); this.registerClass('A5-38-08', EepParser_A5_38_08_1.EepParser_A5_38_08); this.registerClass('A5-3F-7F', EepParser_A5_3F_7F_Eltako_1.EepParser_A5_3F_7F_Eltako); this.registerClass('D2-05', EepParser_D2_05_1.EepParser_D2_05); } /** * Create a new parser for the given EEP * @param eep the EEP to create a parser for. RORG and FUNC is required. * @returns A new instance of the parser for the given EEP */ newParser(eep) { const classRef = this.classMap.get(eep) || this.classMap.get(eep.substring(0, 5)); if (!classRef) { throw new Error(`${eep}: EEP not supported, cannot create parser`); } const hexType = eep.slice(-2); // Get the last two characters const type = parseInt(hexType, 16); // Convert hex to number return new classRef(type); } /** * Register a class for a given EnOcean ID * @param id the EnOcean ID to register the class for * @param classRef the class to register */ registerClass(id, classRef) { this.classMap.set(id, classRef); } } exports.EepParserFactory = EepParserFactory; //# sourceMappingURL=ParserFactory.js.map