knxultimate
Version:
KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.
110 lines • 6.02 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const KNXHeader_1 = __importDefault(require("./KNXHeader"));
const KNXSearchRequest_1 = __importDefault(require("./KNXSearchRequest"));
const KNXSearchResponse_1 = __importDefault(require("./KNXSearchResponse"));
const KNXDescriptionRequest_1 = __importDefault(require("./KNXDescriptionRequest"));
const KNXDescriptionResponse_1 = __importDefault(require("./KNXDescriptionResponse"));
const KNXSecureSearchRequest_1 = __importDefault(require("./KNXSecureSearchRequest"));
const KNXSecureSearchResponse_1 = __importDefault(require("./KNXSecureSearchResponse"));
const KNXConnectRequest_1 = __importDefault(require("./KNXConnectRequest"));
const KNXConnectResponse_1 = __importDefault(require("./KNXConnectResponse"));
const KNXConnectionStateRequest_1 = __importDefault(require("./KNXConnectionStateRequest"));
const KNXConnectionStateResponse_1 = __importDefault(require("./KNXConnectionStateResponse"));
const KNXDisconnectRequest_1 = __importDefault(require("./KNXDisconnectRequest"));
const KNXDisconnectResponse_1 = __importDefault(require("./KNXDisconnectResponse"));
const KNXTunnelingRequest_1 = __importDefault(require("./KNXTunnelingRequest"));
const KNXTunnelingAck_1 = __importDefault(require("./KNXTunnelingAck"));
const KNXRoutingIndication_1 = __importDefault(require("./KNXRoutingIndication"));
const HPAI_1 = __importDefault(require("./HPAI"));
const KNXConstants_1 = require("./KNXConstants");
class KNXProtocol {
static parseMessage(buffer) {
const knxHeader = KNXHeader_1.default.createFromBuffer(buffer);
const knxData = buffer.subarray(knxHeader.headerLength);
let knxMessage;
switch (knxHeader.service_type) {
case KNXConstants_1.KNX_CONSTANTS.SEARCH_REQUEST:
knxMessage = KNXSearchRequest_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.SEARCH_RESPONSE:
knxMessage = KNXSearchResponse_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.SEARCH_RESPONSE_EXTENDED:
knxMessage = KNXSecureSearchResponse_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.DESCRIPTION_REQUEST:
knxMessage = KNXDescriptionRequest_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.DESCRIPTION_RESPONSE:
knxMessage = KNXDescriptionResponse_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.CONNECT_REQUEST:
knxMessage = KNXConnectRequest_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.CONNECT_RESPONSE:
knxMessage = KNXConnectResponse_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.CONNECTIONSTATE_REQUEST:
knxMessage = KNXConnectionStateRequest_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.CONNECTIONSTATE_RESPONSE:
knxMessage =
KNXConnectionStateResponse_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.DISCONNECT_REQUEST:
knxMessage = KNXDisconnectRequest_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.DISCONNECT_RESPONSE:
knxMessage = KNXDisconnectResponse_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.TUNNELING_REQUEST:
knxMessage = KNXTunnelingRequest_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.TUNNELING_ACK:
knxMessage = KNXTunnelingAck_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.ROUTING_INDICATION:
knxMessage = KNXRoutingIndication_1.default.createFromBuffer(knxData);
break;
case KNXConstants_1.KNX_CONSTANTS.ROUTING_LOST_MESSAGE:
break;
}
return { knxHeader, knxMessage, knxData };
}
static newKNXSearchRequest(hpai) {
return new KNXSearchRequest_1.default(hpai);
}
static newKNXSecureSearchRequest(hpai) {
return new KNXSecureSearchRequest_1.default(hpai);
}
static newKNXDescriptionRequest(hpai) {
return new KNXDescriptionRequest_1.default(hpai);
}
static newKNXConnectRequest(cri, hpaiControl = HPAI_1.default.NULLHPAI, hpaiData = HPAI_1.default.NULLHPAI) {
return new KNXConnectRequest_1.default(cri, hpaiControl, hpaiData);
}
static newKNXConnectionStateRequest(channelID, hpaiControl = HPAI_1.default.NULLHPAI) {
return new KNXConnectionStateRequest_1.default(channelID, hpaiControl);
}
static newKNXDisconnectRequest(channelID, hpaiControl = HPAI_1.default.NULLHPAI) {
return new KNXDisconnectRequest_1.default(channelID, hpaiControl);
}
static newKNXDisconnectResponse(channelID, status) {
return new KNXDisconnectResponse_1.default(channelID, status);
}
static newKNXTunnelingACK(channelID, seqCounter, status) {
return new KNXTunnelingAck_1.default(channelID, seqCounter, status);
}
static newKNXTunnelingRequest(channelID, seqCounter, cEMIMessage) {
return new KNXTunnelingRequest_1.default(channelID, seqCounter, cEMIMessage);
}
static newKNXRoutingIndication(cEMIMessage) {
return new KNXRoutingIndication_1.default(cEMIMessage);
}
}
exports.default = KNXProtocol;
//# sourceMappingURL=KNXProtocol.js.map