Пример #1
0
        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);
        }
Пример #2
0
 public FAHGroupValueResponse(KNXPayload kNXPayload) : base(kNXPayload)
 {
     if (kNXPayload.Apdu.apduType != KNXAdpu.ApduType.GroupValueResponse)
     {
         throw new InvalidCastException("Message type does not match");
     }
 }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        public FPSR_PropertyValueRead(KNXPayload OwnerPayload) : base(OwnerPayload)
        {
            //Field ID
            addAccountedBytes(5, 1);

            //Value count is variable
            addIgnoredBytes(6, 25);
        }
Пример #6
0
        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);
        }
Пример #7
0
 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);
 }
Пример #8
0
 public FPC_WriteRoomInfo(KNXPayload OwnerPayload) : base(OwnerPayload)
 {
     //Room
     addAccountedBytes(5, 2);
     //X
     addAccountedBytes(7, 2);
     //Y
     addAccountedBytes(9, 2);
 }
Пример #9
0
 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);
 }
Пример #11
0
 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();
 }
Пример #12
0
 public FPSR_BasicDeviceInfo(KNXPayload ownerPayload) : base(ownerPayload)
 {
     //NameID
     addAccountedBytes(5, 2);
     //FunctionID
     addAccountedBytes(7, 2);
     //Compiler
     addAccountedBytes(12, 4);
     //Build
     addAccountedBytes(16, 4);
 }
Пример #13
0
 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);
 }
Пример #15
0
 public FPC_AssignConnection(KNXPayload OwnerPayload) : base(OwnerPayload)
 {
     if (PropertyID == 1)
     {
         //Description
     }
     else
     {
         //Connection ID
         addAccountedBytes(5, 1);
         //GroupValue Address
         addAccountedBytes(6, 2);
     }
 }
Пример #16
0
        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);
        }
Пример #18
0
        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);
            }
        }
Пример #19
0
        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);
        }
Пример #20
0
        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
        }
Пример #21
0
 public FPC_WriteDescription(KNXPayload OwnerPayload) : base(OwnerPayload)
 {
     //Description
     addAccountedBytes(5, 100);
 }
Пример #22
0
 public FPC_WriteIcon(KNXPayload OwnerPayload) : base(OwnerPayload)
 {
     //IconID
     addAccountedBytes(5, 2);
 }
Пример #23
0
        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;
            }
        }
Пример #24
0
        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;
             * }*/
        }
Пример #25
0
 public FPSRBasic(KNXPayload OwnerParent)
 {
     payloadReference = OwnerParent;
 }
Пример #26
0
 public FAHRPPGroupValueWrite(KNXPayload payload)
 {
 }
Пример #27
0
 //Default <Random>
 public FPSR_ConsistancyTag(KNXPayload OwnerPayload) : base(OwnerPayload)
 {
     //Consitancy Value
     addAccountedBytes(5, 2);
 }
Пример #28
0
 public FPSR_DeviceOIDData(KNXPayload OwnerPayload) : this(OwnerPayload, null)
 {
 }
Пример #29
0
 public FPSR_GroupCommEnableCtl(KNXPayload OwnerPayload) : base(OwnerPayload)
 {
     //CommEnabled
     payloadReference.ReadablePayloadPacket.addAccountedBytes(5, 2);
 }
Пример #30
0
        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;
            }
        }