public static KNXmessage CreateResponse(FAHFunctionPropertyCommand MessageToRespondTo, FaHDevice atHomeDevice) { if (MessageToRespondTo.PropertyControl != FAHFunctionPropertyCommand.PropertyControlTypes.ReadDesc) { throw new InvalidCastException(); } KNXmessage kNXmessage; string Description; atHomeDevice.ReadChannelDescription(MessageToRespondTo.ObjectID, MessageToRespondTo.PropertyID, out Description); if (Description.Length > 10) { kNXmessage = new KNXmessage(knxControlField.KnxPacketType.KNX_PacketLong); } else { kNXmessage = new KNXmessage(knxControlField.KnxPacketType.KNX_PacketShort); } kNXmessage.DestinationAddressType = KNXmessage.DestinationAddressFieldType.Individual; uint payloadSize = (uint)(FPSRHEADERSIZE + DescriptionByteLenght(Description)); kNXmessage.Payload.NewPayload(KNXAdpu.ApduType.FunctionPropertyStateResponse, payloadSize); kNXmessage.Payload.ReadablePayloadPacket = new FPSR_ChannelDescription(kNXmessage.Payload); FPSR_ChannelDescription newPkg = (FPSR_ChannelDescription)kNXmessage.Payload.ReadablePayloadPacket; newPkg.UpdatePacketSettings(); newPkg.PropertyID = MessageToRespondTo.PropertyID; newPkg.ObjectID = MessageToRespondTo.ObjectID; newPkg.resultCode = KNXHelpers.knxPropertyReturnValues.Success; newPkg.Description = Description; return(kNXmessage); }