public FPSR_ReadDeviceHealth(KNXPayload ownerPayload) : base(ownerPayload) { /* * 2020-06-23 18:56:16.635; FunctionPropertyStateResponse KNX_PRIORITY_NORMAL H:6, Single, FF:0x00 [0xB8-0x01] [0x00-0x01] FPSR_ReadDeviceHealth>Ch000:1->Success [07 C9 00 00 42 B5 00 54 00 00 00 BF 00 00 00 03 00 00 00 00 00 06 00 06 00 00 00 00]0x02 0xC9 0x00 0x01 0x00 0x07 0xC9 0x00 0x00 0x42 0xB5 0x00 0x54 0x00 0x00 0x00 0xBF 0x00 0x00 0x00 0x03 0x00 0x00 0x00 0x00 0x00 0x06 0x00 0x06 0x00 0x00 0x00 0x00 */ // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 // 0x02 0xC9 0x00 0x01 0x00 0x07 0xC9 0x00 0x00 0x42 0xB5 0x00 0x54 0x00 0x00 0x00 0xBF 0x00 0x00 0x00 0x03 0x00 0x00 0x00 0x00 0x00 0x06 0x00 0x06 0x00 0x00 0x00 0x00 // HEX 0x02 0xC9 0x00 0x01 0x00 0x07 0x78 0x00 0x00 0x04 0x31 0x00 0x03 0x00 0x00 0x00 0xBF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 // DESC * * * * * Volt----Volt OperationTime--OperationTime devicereboots biterrors--- parityerrors spikeErrors- othererrorvalue //ReadValue0x00 ch000 4 //Voltage addAccountedBytes(5, 2); //var x = KNXHelpers.knx_to_float(ownerPayload.PayloadByteData, 5); //Operation Time addAccountedBytes(7, 4); //var operationTime = KNXHelpers.knx_to_uint32(ownerPayload.PayloadByteData, 7); //Reboots addAccountedBytes(11, 2); //Biterrors? addAccountedBytes(19, 2); //parityerrors? addAccountedBytes(25, 2); //spikeerrors? addAccountedBytes(27, 2); //othererror? addAccountedBytes(29, 2); //ingore others addIgnoredBytes(13, 20); }
public FAHGroupValueResponse(KNXPayload kNXPayload) : base(kNXPayload) { if (kNXPayload.Apdu.apduType != KNXAdpu.ApduType.GroupValueResponse) { throw new InvalidCastException("Message type does not match"); } }
public FPSR_DeviceParameterInfo(KNXPayload OwnerPayload) : base(OwnerPayload) { //Index? addAccountedBytes(4, 2); //ParamID addAccountedBytes(6, 1); //Matchcode addAccountedBytes(7, 4); //Bit?Value? addAccountedBytes(11, 1); //DPT addAccountedBytes(12, 2); //PARMID addAccountedBytes(14, 2); //Value addAccountedBytes(16, 1); uint i = 17; while (payloadReference.PayloadByteData.Length > i) { //Option NameID addAccountedBytes(i, 2); //Option Mask addAccountedBytes(i + 2, 4); i += 6; } }
public FAHDeviceDescriptorResponse(KNXPayload kNXPayload) : base(kNXPayload) { if (kNXPayload.Apdu.apduType != KNXAdpu.ApduType.DeviceDescriptorResponse) { throw new InvalidCastException("Message type does not match"); } defaultKnxPacketType = knxControlField.KnxPacketType.KNX_PacketLong; //Last 4 bits of second byte //DescriptorType = (byte)(kNXPayload.PayloadByteData[1] & 0xF); addAccountedBytes(1); //freeAtHomeDevice.FaHAddress = FaHDeviceAddress.FromByteArray(base.payloadReference.PayloadByteData, 4); addAccountedBytes(4, 6); //freeAtHomeDevice.NetworkID = new FahSystemID(KNXHelpers.knx_to_uint16(base.payloadReference.GetBytes(10, 2))); addAccountedBytes(10, 2); //freeAtHomeDevice.DeviceType = freeAtHomeDevice.DeviceType.FromByteArray(base.payloadReference.PayloadByteData, 12); addAccountedBytes(12, 2); //freeAtHomeDevice.ConsitancyValue = new KNXu16SimpleStruct(base.payloadReference.PayloadByteData, 14); addAccountedBytes(14, 2); //base.processingLevel = ProcessingLevel.ProcessingBasic; uint ChannelCount = (uint)(base.payloadReference.PayloadByteData.Length - __FAHChannelStart) / 2; for (int i = 0; i < ChannelCount; i++) { //freeAtHomeDevice.Channels[i] = FaHDeviceChannel.FromByteArray(base.payloadReference.GetBytes((i * 2) + __FAHChannelStart, 2)); addAccountedBytes((uint)(i * 2) + __FAHChannelStart, 2); } }
public FPSR_PropertyValueRead(KNXPayload OwnerPayload) : base(OwnerPayload) { //Field ID addAccountedBytes(5, 1); //Value count is variable addIgnoredBytes(6, 25); }
public FPSR_FunctionList(KNXPayload OwnerPayload) : base(OwnerPayload) { //Function List ID addAccountedBytes(5, 1); //8x 2 byte function data, not known how to interpet. (size might vary per device) addIgnoredBytes(6, 8 * 2); }
public FAHFunctionPropertyStateResponse(KNXPayload kNXPayload) : base(kNXPayload) { if (kNXPayload.Apdu.apduType != KNXAdpu.ApduType.FunctionPropertyStateResponse && kNXPayload.Apdu.apduType != KNXAdpu.ApduType.FunctionPropertyCommand) { throw new InvalidCastException("Message type does not match"); } addAccountedBytes(2, 3); }
public FPC_WriteRoomInfo(KNXPayload OwnerPayload) : base(OwnerPayload) { //Room addAccountedBytes(5, 2); //X addAccountedBytes(7, 2); //Y addAccountedBytes(9, 2); }
public FAHDeviceDescriptorRead(KNXPayload kNXPayload) : base(kNXPayload) { if (kNXPayload.Apdu.apduType != KNXAdpu.ApduType.DeviceDescriptorRead) { throw new InvalidCastException("Message type does not match"); } addAccountedBytes(0, 2); base.defaultKnxPacketType = knxControlField.KnxPacketType.KNX_PacketShort; }
public FAHRPPIndividualSerialNumberWrite(KNXPayload payload) { addAccountedBytes(0, 2); deviceAddress = FreeAtHomeDeviceAddress.FromByteArray(payload.ByteData, 2); addAccountedBytes(2, 6); kNXAddress = new KNXAddress(payload.ByteData[9], payload.ByteData[8]); addAccountedBytes(8, 2); NetworkID = new FahSystemID(payload.ByteData[10], payload.ByteData[11]); //todo Check byte order! addAccountedBytes(10, 2); }
public FAHFunctionPropertyCommand(KNXPayload kNXPayload) : base(kNXPayload) { if (kNXPayload.Apdu.apduType != KNXAdpu.ApduType.FunctionPropertyCommand) { throw new InvalidCastException("Message type does not match"); } base.defaultKnxPacketType = knxControlField.KnxPacketType.KNX_PacketShort; addAccountedBytes(2, 3); InterpetPropertyCommand(); }
public FPSR_BasicDeviceInfo(KNXPayload ownerPayload) : base(ownerPayload) { //NameID addAccountedBytes(5, 2); //FunctionID addAccountedBytes(7, 2); //Compiler addAccountedBytes(12, 4); //Build addAccountedBytes(16, 4); }
public FPSR_DeviceChannelInfo(KNXPayload ownerPayload) : base(ownerPayload) { //Channel ID addAccountedBytes(5, 2); //Name ID addAccountedBytes(7, 2); //Mask addAccountedBytes(9, 4); //Combined addAccountedBytes(16, 1); //MoreDataFlag? addAccountedBytes(17, 1); }
public FAHIndividualAddressSerialNumberWrite(KNXPayload kNXPayload) : base(kNXPayload) { if (kNXPayload.Apdu.apduType != KNXAdpu.ApduType.IndividualAddressSerialNumberWrite) { throw new InvalidCastException("Message type does not match"); } //F@H Device ID addAccountedBytes(2, 6); //Device Address addAccountedBytes(8, 2); //Network ID addAccountedBytes(10, 2); }
public FPC_AssignConnection(KNXPayload OwnerPayload) : base(OwnerPayload) { if (PropertyID == 1) { //Description } else { //Connection ID addAccountedBytes(5, 1); //GroupValue Address addAccountedBytes(6, 2); } }
public FAHRPPResponseDeviceConfig(KNXPayload payload) { addAccountedBytes(0, 2); fprop_objidx = payload.ByteData[2]; fprop_propid = payload.ByteData[3]; fprop_return = (fpropReturnValues)payload.ByteData[4]; addAccountedBytes(2, 3); /*if (fprop_objidx == 0) * { * fprop_objidx = 0xff; * } * else * { * fprop_objidx--; * }*/ if (payload.Length > 5) { addAccountedBytes(5, (uint)(payload.Length - 5)); ByteData = payload.GetBytes(5, payload.Length - 5); } else { ByteData = null; } /* * if (payload.ByteData[2] > 0) * { * configuredChannel = (byte)(payload.ByteData[2] - 1); * responsedata = new byte[] { payload.ByteData[3], payload.ByteData[4] }; * addAccountedBytes(2, 3); * } * else if (payload.ByteData[2] == 0) * { * if (payload.ByteData[3] == 0x01 && payload.ByteData[4] == 0x00) * { * addAccountedBytes(2, 3); * //Payload consistancey tag * if (payload.Length == 7) * { * consistencytag = new byte[] { payload.ByteData[5], payload.ByteData[6] }; * addAccountedBytes(5, 2); * } * } * }*/ }
public ABBResponseBinaryInputType(KNXPayload kNXPayload) : base(kNXPayload) { if (kNXPayload.Apdu.apduType != KNXAdpu.ApduType.ABBResponseBinaryInputType) { throw new InvalidCastException("Message type does not match"); } //Channel ?? addAccountedBytes(2); //Entry ?? addAccountedBytes(3, 2); //return value?? addAccountedBytes(5); }
public FPSR_ConnectionInfo(KNXPayload OwnerPayload, byte[] parmeters) : base(OwnerPayload) { this.requestDataParms = parmeters; if (payloadReference.PayloadByteData.Length > FPSRHEADERSIZE) { //Connection ID addAccountedBytes(5, 1); //Static 1??? addIgnoredBytes(5, 1); } if (payloadReference.PayloadByteData.Length > FPSRHEADERSIZE + PACKET_PAYLOAD_CONNECTIONID) { //GroupValue Address addAccountedBytes(7, 2); } }
public FPC_DeleteConnection(KNXPayload OwnerPayload) : base(OwnerPayload) { if (payloadReference.PayloadByteData.Length == 7) { Console.WriteLine("Odd Size"); return; } else if (payloadReference.PayloadByteData.Length != 8) { throw new Exception("Unexpected command, not implemented"); } //GroupValue Address //FieldID addAccountedBytes(5, 1); //GroupValue Address addAccountedBytes(7, 2); }
public FAHRestart(KNXPayload kNXPayload) : base(kNXPayload) { if (kNXPayload.Apdu.apduType != KNXAdpu.ApduType.Restart) { throw new InvalidCastException("Message type does not match"); } defaultKnxPacketType = knxControlField.KnxPacketType.KNX_PacketShort; //RestartType addAccountedBytes(1); //EraseCode addAccountedBytes(2); //Response addAccountedBytes(3); //or4 //Channel addAccountedBytes(4); //or3 //flags addAccountedBytes(5); //or3 }
public FPC_WriteDescription(KNXPayload OwnerPayload) : base(OwnerPayload) { //Description addAccountedBytes(5, 100); }
public FPC_WriteIcon(KNXPayload OwnerPayload) : base(OwnerPayload) { //IconID addAccountedBytes(5, 2); }
public FAHRPPDeviceConfig(KNXPayload payload) { GetActionFromPayload(payload); if (payload.Length > 5) { addAccountedBytes(5, (uint)(payload.Length - 5)); ByteData = payload.GetBytes(5, payload.Length - 5); } else { ByteData = null; } switch (fprop_cmd) { /*case DeviceAction.DeviceRuntimeStatus: * //Update status requested * break;*/ case DeviceAction.WriteIconId: /*PropertyValue = KNXDataConversion.knx_to_uint16_rev(payload.GetBytes(5, 2)); * addAccountedBytes(5, 2);*/ break; case DeviceAction.AssignConn: groupAddressingType = (GroupAddressingType)payload.ByteData[5]; addAccountedBytes(5); /*GroupAddress = new KNXAddress(KNXDataConversion.knx_to_uint16_rev(payload.GetBytes(6, 2))); * addAccountedBytes(6, 2);*/ break; case DeviceAction.DeleteConn: groupAddressingType = (GroupAddressingType)payload.ByteData[5]; /*GroupAddress = new KNXAddress(); * addAccountedBytes(5); * addAccountedBytes(6, 2); //0x00, 0x00 for new value*/ break; /*case DeviceAction.RemovePairing: * groupAddressingType = (GroupAddressingType)payload.ByteData[5]; * addAccountedBytes(5); * if (isSetAction) * { * GroupAddress = new KNXAddress(KNXDataConversion.knx_to_uint16_rev(payload.GetBytes(6, 2))); * addAccountedBytes(6, 2); * } * else * { * GroupAddress = new KNXAddress(payload.ByteData[6]); * addAccountedBytes(6, 1); * } * break; * * case DeviceAction.DeviceAddPairingB: * case DeviceAction.DeviceDelPairingB: * if (isSetAction) * { * * GroupAddress = new KNXAddress(KNXDataConversion.knx_to_uint16_rev(payload.GetBytes(6, 2))); * addAccountedBytes(6, 2); * } * else * { * if (payload.Length == 6) * { * GroupAddress = new KNXAddress(); * } * else if (payload.Length == 7) * { * GroupAddress = new KNXAddress(payload.ByteData[6]); * addAccountedBytes(6, 1); * } * else * { * throw new Exception("Add this lenght"); * } * } * break;*/ case DeviceAction.WriteFlr_RmNr: //addAccountedBytes(5, 6); //1 Byte Floor //2 Byte Room //3+4 X //5+6 Y break; /* * case DeviceAction.DeviceProperty: * //Console.WriteLine(isSetAction ? "Set" : "Get"); * addAccountedBytes(5); * this.Parameter = payload.ByteData[5]; * if(payload.Length == 7) * { * this.PropertyValue = payload.ByteData[6]; * } * else if(payload.Length == 8) * { * this.PropertyValue = KNXDataConversion.knx_to_uint16(payload.GetBytes(6,2)); * } * break;*/ default: //deviceAction = DeviceAction.Undefined; break; } }
public FAHRPPDeviceRead(KNXPayload payload) { fprop_cmd = (IndividualDeviceReadActions)payload.ByteData[3]; fprop_objidx = payload.ByteData[1]; fprop_propid = payload.ByteData[2]; addAccountedBytes(0, 4); if (fprop_cmd == IndividualDeviceReadActions.fSuccess && fprop_objidx == 0 && fprop_propid == 4) { //ReadValue0x00 ch000 4 // ID 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 // HEX 0xC9 0x00 0x04 0x00 0x01 0x00 0x3B 0xFF 0xFF 0xFF 0xFF 0x07 0x14 0xC8 0x00 0x0C 0x01 0x00 0x49 0x00 0x00 0x00 0x05 0x00 0x4A 0x00 0x00 0x00 0x09 0x00 0x4B 0x00 0x00 0x00 0x06 0x00 0x4C 0x00 0x00 0x00 0x0A // DEC * * * * 1 0 59 255 255 255 255 7 20 200 0 12 1 0 73 0 0 0 5 0 74 0 0 0 9 0 75 0 0 0 6 0 76 0 0 0 10 // SWVER? SWVER? PARAMID MATCHCODE MATCHCODE BIT? DPT DPT PARMID PARMID Value optionNameID MASK--------------------MASK optionNameID MASK--------------------MASK optionNameID MASK--------------------MASK optionNameID MASK--------------------MASK // // BIT? --> wizardOnly="false" deviceChannelSelector="false" channelSelector="true" writable="true" visible="true" // /* * <parameters> * <parameter nameId="003B" i="pm0000" optional="false" dependencyId="FFFF" wizardOnly="false" deviceChannelSelector="false" channelSelector="true" writable="true" visible="true" accessLevel="Enduser" parameterId="000C" matchCode="FFFFFFFF" dpt="14C8"> * <valueEnum> * <option nameId="0049" mask="00000005" isDefault="true" key="1"/> * <option nameId="004A" mask="00000009" isDefault="false" key="2"/> * <option nameId="004B" mask="00000006" isDefault="false" key="3"/> * <option nameId="004C" mask="0000000A" isDefault="false" key="4"/> * </valueEnum> * <value>1</value> * </parameter> */ // fprop_cmd = IndividualDeviceReadActions.DeviceParameters; addAccountedBytes(6, 35); } else if (fprop_cmd == IndividualDeviceReadActions.fSuccess && fprop_objidx != 0 && fprop_propid == 1) { fprop_cmd = IndividualDeviceReadActions.ChannelInfo; addAccountedBytes(3, 1); addAccountedBytes(4, 8); addAccountedBytes(15, 2); //ReadValue0x00 ch0XX 1 /* * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 * HEX: 0xC9 0x01 0x01 0x00 0x00 0x80 0x00 0x43 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x01 0x55 //Moredata * HEX: 0xC9 0x02 0x01 0x00 0x00 0x40 0x00 0x45 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x01 0x2A //Done * HEX: 0xC9 0x03 0x01 0x00 0x00 0x60 0x00 0x46 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x01 0x2A * HEX: 0xC9 0x04 0x01 0x00 0x00 0x80 0x00 0x44 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x01 0x55 * HEX: 0xC9 0x05 0x01 0x00 0x00 0x40 0x00 0x47 0x00 0x00 0x00 0x08 0x00 0x00 0x00 0x01 0x2A * HEX: 0xC9 0x06 0x01 0x00 0x00 0x60 0x00 0x48 0x00 0x00 0x00 0x08 0x00 0x00 0x00 0x01 0x2A * HEX: 0xC9 0x07 0x01 0x00 0x02 0x60 0x00 0x4F 0xFF 0xFF 0xFF 0xFF 0x00 0x00 0x00 0x00 0xAA //FunctionID 12 ?? * DESC: * * * fprop CHANID CHANID ChanNID ChanNID MASK--------------------MASK COMBIND MoreDataMask? * retval */ } else if ((fprop_cmd == IndividualDeviceReadActions.fMInscs || fprop_cmd == IndividualDeviceReadActions.fSuccess) && (fprop_objidx > 2)) { /* * //Inputs * ReadValue0x02 ch007 2 0xC9 0x07 0x02 0x02 0x01 0x00 0x01 0x00 0x0B 0x00 0x00 0x00 0x01 0x01 0x01 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0xC9 0x07 0x02 0x02 0x02 0x00 0x10 0x00 0x10 0x00 0x00 0x00 0x01 0x03 0x07 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0xC9 0x07 0x02 0x02 0x03 0x00 0x11 0x00 0x11 0x00 0x00 0x00 0x01 0x05 0x01 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0xC9 0x07 0x02 0x02 0x04 0x00 0x02 0x00 0x0C 0x00 0x00 0x00 0x01 0x01 0x0A 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0xC9 0x07 0x02 0x02 0x05 0x00 0x03 0x00 0x0D 0x00 0x00 0x00 0x01 0x02 0x01 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0xC9 0x07 0x02 0x02 0x06 0x00 0x04 0x00 0x0E 0x00 0x00 0x00 0x01 0x12 0x01 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0xC9 0x07 0x02 0x02 0x07 0x00 0x12 0x00 0x12 0x00 0x00 0x00 0x01 0x01 0x02 0x10 0x00 0x04 * ReadValue0x00 ch007 2 0xC9 0x07 0x02 0x00 0x08 0x00 0x06 0x01 0xF6 0x00 0x00 0x00 0x01 0x01 0x0A 0x20 0x00 0x00 * * * fprop Datpoint * retval * //Outputs * ReadValue0x02 ch007 3 0xC9 0x07 0x03 0x02 0x01 0x01 0x00 0x00 0x0F 0x00 0x00 0x00 0x01 0x01 0x01 0x01 0x00 0x08 * ReadValue0x02 ch007 3 0xC9 0x07 0x03 0x02 0x02 0x01 0x10 0x01 0x20 0x00 0x00 0x00 0x01 0x05 0x01 0x01 0x00 0x08 * ReadValue0x02 ch007 3 0xC9 0x07 0x03 0x02 0x03 0x01 0x11 0x00 0x14 0x00 0x00 0x00 0x01 0x15 0x03 0x01 0x00 0x08 * ReadValue0x00 ch007 3 0xC9 0x07 0x03 0x00 0x04 0x01 0x01 0x02 0x04 0x00 0x00 0x00 0x01 0x14 0x64 0x01 0x00 0x08 * * * fprop Datpoint * retval * //Parameters * ReadValue0x02 ch007 4 0xC9 0x07 0x04 0x02 0x01 0x00 0xFC 0x00 0x00 0x00 0x01 0x0B 0x14 0x64 0x00 0x13 0x03 0x00 0xFB 0x01 0x8A 0x00 0xFA * ReadValue0x02 ch007 4 0xC9 0x07 0x04 0x02 0x02 0x01 0x8B 0x00 0x00 0x00 0x01 0x03 0x05 0x01 0x00 0x04 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x32 0x00 0x00 0x00 0x01 0x40 0x23 0x33 0x33 * ReadValue0x02 ch007 4 0xC9 0x07 0x04 0x02 0x03 0x01 0xF4 0x00 0x00 0x00 0x01 0x03 0x05 0x01 0x00 0x05 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x0A 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x01 0x40 0x23 0x33 0x33 * ReadValue0x02 ch007 4 0xC9 0x07 0x04 0x02 0x04 0x01 0xF5 0x00 0x00 0x00 0x01 0x03 0x05 0x01 0x00 0x12 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x0A 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x01 0x40 0x23 0x33 0x33 * ReadValue0x00 ch007 4 0xC9 0x07 0x04 0x00 0x05 0x01 0x6D 0x00 0x00 0x00 0x01 0x03 0x07 0x05 0xFF 0xFF 0x00 0x00 0x00 0x3C 0x00 0x00 0x00 0x1E 0x00 0x00 0x07 0x08 0x00 0x00 0x00 0x0A 0x3F 0x80 0x00 0x00 * * * fprop Datpoint * retval */ //Console.WriteLine("Todo!"); } else if (fprop_cmd == IndividualDeviceReadActions.fSuccess && fprop_objidx == 0 && fprop_propid == 1) { //ReadValue0x00 ch000 1 if (payload.ByteData[4] == 0xFF) { fprop_cmd = IndividualDeviceReadActions.DeviceInfo; addAccountedBytes(4, 4); addAccountedBytes(11, 4); addAccountedBytes(15, 4); addAccountedBytes(21, 2); // // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 // HEX 0xC9 0x00 0x01 0x00 0xFF 0xFD 0xFE 0xFF 0x15 0x56 0x37 0x00 0x7A 0x3C 0xF9 0x00 0x00 0x05 0x56 0x02 0x00 0x01 0x00 // DEC 201 0 1 0 255 253 254 255 21 86 55 0 122 60 249 0 0 5 86 2 0 1 0 // // HEX 0xC9 0x00 0x01 0x00 0xFF 0xEB 0xFE 0xFF 0x08 0x00 0x37 0x00 0x6A 0xF6 0xD1 0x00 0x00 0x02 0x7E // DEC 201 0 1 0 255 235 254 255 8 0 55 0 106 246 209 0 0 2 126 // NAME * * * NAMEID NAMEID FUNCTID FUNCTID COMPILER------------COMPILER BUILD------------------BUILD } else if (payload.ByteData[4] == 0x01) { Console.WriteLine("Todo!"); } else if (payload.ByteData[4] == 0x07) { // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 // HEX 0xC9 0x00 0x01 0x00 0x07 0x78 0x00 0x00 0x04 0x31 0x00 0x03 0x00 0x00 0x00 0xBF 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 // DESC * * * * CHANCNT Voltage OperationTime OperationTime devicereboots biterrors parityerrors biterrors //ReadValue0x00 ch000 4 fprop_cmd = IndividualDeviceReadActions.OperationalStatus; if (!(payload.Length >= 5)) { return; } busVoltage_NEED_TO_INTERPET = payload.ByteData[5]; addAccountedBytes(5, 1); if (!(payload.Length >= 6)) { return; } operationTime = KNXDataConversion.knx_to_uint32(payload.GetBytes(6, 4)); addAccountedBytes(6, 4); if (!(payload.Length >= 12)) { return; } deviceReboots = KNXDataConversion.knx_to_uint16(payload.GetBytes(10, 2)); addAccountedBytes(10, 2); if (!(payload.Length >= 20)) { return; } bitErrors = KNXDataConversion.knx_to_uint16(payload.GetBytes(18, 2)); addAccountedBytes(18, 2); if (!(payload.Length >= 26)) { return; } parityErrors = KNXDataConversion.knx_to_uint16(payload.GetBytes(24, 2)); addAccountedBytes(24, 2); if (!(payload.Length >= 28)) { return; } spikeErrors = KNXDataConversion.knx_to_uint16(payload.GetBytes(26, 2)); addAccountedBytes(26, 2); } } /* * //Action = (FAHRPPDeviceRead.IndividualDeviceReadActions)payload.ByteData[2]; * //addAccountedBytes(0, 3); * //Detection Method unsure, might be needed to check on lenght of packet or something * //Action = (FAHRPPDeviceRead.IndividualDeviceReadActions)payload.ByteData[4]; * if (Action == FAHRPPDeviceRead.IndividualDeviceReadActions.DeviceOperationalStatus) * { * * if (!(payload.Length >= 5)) return; * busVoltage_NEED_TO_INTERPET = payload.ByteData[5]; * addAccountedBytes(5, 1); * * if (!(payload.Length >= 6)) return; * operationTime = KNXDataConversion.knx_to_uint32(payload.GetBytes(6, 4)); * addAccountedBytes(6, 4); * * if (!(payload.Length >= 12)) return; * deviceReboots = KNXDataConversion.knx_to_uint16(payload.GetBytes(10, 2)); * addAccountedBytes(10, 2); * * if (!(payload.Length >= 20)) return; * bitErrors = KNXDataConversion.knx_to_uint16(payload.GetBytes(18, 2)); * addAccountedBytes(18, 2); * * if (!(payload.Length >= 26)) return; * parityErrors = KNXDataConversion.knx_to_uint16(payload.GetBytes(24, 2)); * addAccountedBytes(24, 2); * * if (!(payload.Length >= 28)) return; * spikeErrors = KNXDataConversion.knx_to_uint16(payload.GetBytes(26, 2)); * addAccountedBytes(26, 2); * } * else if (Action == IndividualDeviceReadActions.DeviceConfigurationInformation) * { * * } * else if (Action == FAHRPPDeviceRead.IndividualDeviceReadActions.RequestDeviceInformation) * { * //Todo * Channel = payload[1]; * if (Channel == 0) * { * addAccountedBytes(0, 2); * addAccountedBytes(4, 4); * addAccountedBytes(11, 4); * addAccountedBytes(15, 3); * // * // 0xC9 0x00 0x01 0x00 0xFF 0xFD 0xFE 0xFF 0x15 0x56 0x37 0x00 0x7A 0x3C 0xF9 0x00 0x00 0x05 0x56 0x02 0x00 0x01 0x00 * // NAMEID NAMEID FUNCTID FUNCTID COMPILER------------COMPILER BUILD----------BUILD * * } * else * { * var w = 0; * } * * } * else * { * var x = 0; * }*/ }
public FPSRBasic(KNXPayload OwnerParent) { payloadReference = OwnerParent; }
public FAHRPPGroupValueWrite(KNXPayload payload) { }
//Default <Random> public FPSR_ConsistancyTag(KNXPayload OwnerPayload) : base(OwnerPayload) { //Consitancy Value addAccountedBytes(5, 2); }
public FPSR_DeviceOIDData(KNXPayload OwnerPayload) : this(OwnerPayload, null) { }
public FPSR_GroupCommEnableCtl(KNXPayload OwnerPayload) : base(OwnerPayload) { //CommEnabled payloadReference.ReadablePayloadPacket.addAccountedBytes(5, 2); }
public FPSR_DeviceOIDData(KNXPayload OwnerPayload, byte[] parmeters) : base(OwnerPayload) { //TODO implement request parameters; currently not implemented in DescriptorRead //this.requestDataParms = parmeters; //These values all seem come from the register with the FFFFFF mask + 1 (FPSR_DeviceChannelInfo), so be aware that channel might varry between device types. // if (this.resultCode == KNXHelpers.knxPropertyReturnValues.CommandNotSupported || this.resultCode == KNXHelpers.knxPropertyReturnValues.Failed || this.resultCode == KNXHelpers.knxPropertyReturnValues.InvalidIndex) { return; } switch (this.PropertyID) { case 0: //Empty?? break; case 2: //Console.Write("Inputs:"); /* * //Inputs * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 * ReadValue0x02 ch007 2 0x02 0xC9 0x07 0x02 0x02 0x01 0x00 0x01 0x00 0x0B 0x00 0x00 0x00 0x01 0x01 0x01 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0x02 0xC9 0x07 0x02 0x02 0x02 0x00 0x10 0x00 0x10 0x00 0x00 0x00 0x01 0x03 0x07 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0x02 0xC9 0x07 0x02 0x02 0x03 0x00 0x11 0x00 0x11 0x00 0x00 0x00 0x01 0x05 0x01 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0x02 0xC9 0x07 0x02 0x02 0x04 0x00 0x02 0x00 0x0C 0x00 0x00 0x00 0x01 0x01 0x0A 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0x02 0xC9 0x07 0x02 0x02 0x05 0x00 0x03 0x00 0x0D 0x00 0x00 0x00 0x01 0x02 0x01 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0x02 0xC9 0x07 0x02 0x02 0x06 0x00 0x04 0x00 0x0E 0x00 0x00 0x00 0x01 0x12 0x01 0x20 0x00 0x00 * ReadValue0x02 ch007 2 0x02 0xC9 0x07 0x02 0x02 0x07 0x00 0x12 0x00 0x12 0x00 0x00 0x00 0x01 0x01 0x02 0x10 0x00 0x04 * ReadValue0x00 ch007 2 0x02 0xC9 0x07 0x02 0x00 0x08 0x00 0x06 0x01 0xF6 0x00 0x00 0x00 0x01 0x01 0x0A 0x20 0x00 0x00 * * * * * Datpoint */ payloadReference.ReadablePayloadPacket.addAccountedBytes(5, 1); payloadReference.ReadablePayloadPacket.addIgnoredBytes(6, 15); break; case 3: //Console.Write("Outputs:"); /* * //Outputs * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 * ReadValue0x02 ch007 3 0x02 0xC9 0x07 0x03 0x02 0x01 0x01 0x00 0x00 0x0F 0x00 0x00 0x00 0x01 0x01 0x01 0x01 0x00 0x08 * ReadValue0x02 ch007 3 0x02 0xC9 0x07 0x03 0x02 0x02 0x01 0x10 0x01 0x20 0x00 0x00 0x00 0x01 0x05 0x01 0x01 0x00 0x08 * ReadValue0x02 ch007 3 0x02 0xC9 0x07 0x03 0x02 0x03 0x01 0x11 0x00 0x14 0x00 0x00 0x00 0x01 0x15 0x03 0x01 0x00 0x08 * ReadValue0x00 ch007 3 0x02 0xC9 0x07 0x03 0x00 0x04 0x01 0x01 0x02 0x04 0x00 0x00 0x00 0x01 0x14 0x64 0x01 0x00 0x08 * * * * * Datpoint * */ payloadReference.ReadablePayloadPacket.addAccountedBytes(5, 1); payloadReference.ReadablePayloadPacket.addIgnoredBytes(6, 15); break; case 4: //Console.Write("Parameters:"); /* * //Parameters * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 * ReadValue0x02 ch007 4 0x02 0xC9 0x07 0x04 0x02 0x01 0x00 0xFC 0x00 0x00 0x00 0x01 0x0B 0x14 0x64 0x00 0x13 0x03 0x00 0xFB 0x01 0x8A 0x00 0xFA * ReadValue0x02 ch007 4 0x02 0xC9 0x07 0x04 0x02 0x02 0x01 0x8B 0x00 0x00 0x00 0x01 0x03 0x05 0x01 0x00 0x04 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x32 0x00 0x00 0x00 0x01 0x40 0x23 0x33 0x33 * ReadValue0x02 ch007 4 0x02 0xC9 0x07 0x04 0x02 0x03 0x01 0xF4 0x00 0x00 0x00 0x01 0x03 0x05 0x01 0x00 0x05 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x0A 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x01 0x40 0x23 0x33 0x33 * ReadValue0x02 ch007 4 0x02 0xC9 0x07 0x04 0x02 0x04 0x01 0xF5 0x00 0x00 0x00 0x01 0x03 0x05 0x01 0x00 0x12 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x0A 0x00 0x00 0x00 0x64 0x00 0x00 0x00 0x01 0x40 0x23 0x33 0x33 * ReadValue0x00 ch007 4 0x02 0xC9 0x07 0x04 0x00 0x05 0x01 0x6D 0x00 0x00 0x00 0x01 0x03 0x07 0x05 0xFF 0xFF 0x00 0x00 0x00 0x3C 0x00 0x00 0x00 0x1E 0x00 0x00 0x07 0x08 0x00 0x00 0x00 0x0A 0x3F 0x80 0x00 0x00 * * * * * Datpoint */ payloadReference.ReadablePayloadPacket.addAccountedBytes(5, 1); payloadReference.ReadablePayloadPacket.addIgnoredBytes(6, 35); break; case 5: //??? break; default: throw new NotImplementedException(); //Console.WriteLine("******UNKN*******"); //break; } }