knxultimate
Version:
KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.
53 lines • 2.53 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const CEMIConstants_1 = __importDefault(require("./CEMIConstants"));
const LDataInd_1 = __importDefault(require("./LDataInd"));
const LDataCon_1 = __importDefault(require("./LDataCon"));
const LDataReq_1 = __importDefault(require("./LDataReq"));
const ControlField_1 = __importDefault(require("./ControlField"));
const NPDU_1 = __importDefault(require("./NPDU"));
class CEMIFactory {
static createFromBuffer(type, buffer, offset) {
switch (type) {
case CEMIConstants_1.default.L_DATA_IND:
return LDataInd_1.default.createFromBuffer(buffer, offset);
case CEMIConstants_1.default.L_DATA_CON:
return LDataCon_1.default.createFromBuffer(buffer, offset);
case CEMIConstants_1.default.L_DATA_REQ:
return LDataReq_1.default.createFromBuffer(buffer, offset);
default:
throw new Error(`Unsupported type cEMI message type ${type}`);
}
}
static newLDataRequestMessage(requestType, srcAddress, dstAddress, data) {
const controlField = new ControlField_1.default();
const npdu = new NPDU_1.default();
npdu.tpci = NPDU_1.default.TPCI_UNUMBERED_PACKET;
if (requestType === 'write')
npdu.action = NPDU_1.default.GROUP_WRITE;
if (requestType === 'response')
npdu.action = NPDU_1.default.GROUP_RESPONSE;
if (requestType === 'read')
npdu.action = NPDU_1.default.GROUP_READ;
npdu.data = data;
return new LDataReq_1.default(null, controlField, srcAddress, dstAddress, npdu);
}
static newLDataIndicationMessage(requestType, srcAddress, dstAddress, data) {
const controlField = new ControlField_1.default();
const npdu = new NPDU_1.default();
npdu.tpci = NPDU_1.default.TPCI_UNUMBERED_PACKET;
if (requestType === 'write')
npdu.action = NPDU_1.default.GROUP_WRITE;
if (requestType === 'response')
npdu.action = NPDU_1.default.GROUP_RESPONSE;
if (requestType === 'read')
npdu.action = NPDU_1.default.GROUP_READ;
npdu.data = data;
return new LDataInd_1.default(null, controlField, srcAddress, dstAddress, npdu);
}
}
exports.default = CEMIFactory;
//# sourceMappingURL=CEMIFactory.js.map