@pst-on-npm/homebridge-enocean
Version:
Integrate EnOcean® devices into Homebridge.
54 lines • 2.54 kB
JavaScript
;
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