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);
        }