public static KNXmessage CreateResponse(FAHFunctionPropertyCommand MessageToRespondTo, FaHDevice atHomeDevice) { if (MessageToRespondTo.PropertyControl != FAHFunctionPropertyCommand.PropertyControlTypes.ReadBasicInfo && MessageToRespondTo.PropertyControl != FAHFunctionPropertyCommand.PropertyControlTypes.ReadDesc) { throw new InvalidCastException(); } int ChannelIndex = MessageToRespondTo.ObjectID; //TODO, add as actual param to device and index! //FahDeviceParametersNew p = new FahDeviceParametersNew(); //p.dataType = FahDeviceParametersNew.ParameterType.deviceInfo; //p.Response = KNXHelpers.knxPropertyReturnValues.Success; /* * if (atHomeDevice.Channels[ChannelIndex].DeviceChannelInfo == null) * { * if(ChannelIndex==0) * atHomeDevice.Channels[ChannelIndex].DeviceChannelInfo = new byte[] { 0x00, 0x80, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x55 }; * else if (ChannelIndex == 1) * atHomeDevice.Channels[ChannelIndex].DeviceChannelInfo = new byte[] { 0x00, 0x40, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x2A }; * else if (ChannelIndex == 2) * atHomeDevice.Channels[ChannelIndex].DeviceChannelInfo = new byte[] { 0x00, 0x60, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x2A }; * else if (ChannelIndex == 3) * atHomeDevice.Channels[ChannelIndex].DeviceChannelInfo = new byte[] { 0x00, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x55 }; * else if (ChannelIndex == 4) * atHomeDevice.Channels[ChannelIndex].DeviceChannelInfo = new byte[] { 0x00, 0x40, 0x00, 0x47, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x2A }; * else if (ChannelIndex == 5) * atHomeDevice.Channels[ChannelIndex].DeviceChannelInfo = new byte[] { 0x00, 0x60, 0x00, 0x48, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x2A }; * else if (ChannelIndex == 6) * atHomeDevice.Channels[ChannelIndex].DeviceChannelInfo = new byte[] { 0x02, 0x60, 0x00, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAA }; * else * atHomeDevice.Channels[ChannelIndex].DeviceChannelInfo = new byte[] { 0x00}; * atHomeDevice.Serialize("input.json"); * }*/ KNXmessage kNXmessage = new KNXmessage(knxControlField.KnxPacketType.KNX_PacketLong) { DestinationAddressType = KNXmessage.DestinationAddressFieldType.Individual }; const int HEADERSIZE = 5; byte[] bData; if (!atHomeDevice.ReadChannelInfo(ChannelIndex, out bData)) { return(MessageToRespondTo.CreateCommandNotSupportedMessage()); } //Todo, check lenght? uint payloadSize = (uint)(HEADERSIZE + bData.Length); kNXmessage.Payload.NewPayload(KNXAdpu.ApduType.FunctionPropertyStateResponse, payloadSize); kNXmessage.Payload.ReadablePayloadPacket = new FPSR_DeviceChannelInfo(kNXmessage.Payload); FPSR_DeviceChannelInfo newPkg = (FPSR_DeviceChannelInfo)kNXmessage.Payload.ReadablePayloadPacket; newPkg.UpdatePacketSettings(); newPkg.FPSRpayload = bData; newPkg.PropertyID = MessageToRespondTo.PropertyID; newPkg.ObjectID = MessageToRespondTo.ObjectID; newPkg.resultCode = KNXHelpers.knxPropertyReturnValues.Success; return(kNXmessage); }