Example #1
0
        /**
         * Deserialise the contents of the structure.
         *
         * @param deserializer the {@link ZigBeeDeserializer} used to deserialize
         */
        public void Deserialize(IZigBeeDeserializer deserializer)
        {
            // Deserialize the fields
            // logicalType = (LogicalType) deserializer.deserialize(ZclDataType.SIGNED_8_BIT_INTEGER);

            // Some flags...
            byte value1 = deserializer.ReadZigBeeType <byte>(DataType.DATA_8_BIT);
            byte value2 = deserializer.ReadZigBeeType <byte>(DataType.DATA_8_BIT);
            byte value3 = deserializer.ReadZigBeeType <byte>(DataType.DATA_8_BIT);

            SetLogicalType(value1 & 0x07);
            ComplexDescriptorAvailable = (value1 & 0x08) != 0;
            IsuserDescriptorAvailable  = (value1 & 0x10) != 0;

            SetFrequencyBands((value2 & 0xf8) >> 3);
            SetMacCapabilities(value3);

            // complexDescriptorAvailable = (Boolean) deserializer.deserialize(ZclDataType.BOOLEAN);
            // userDescriptorAvailable = (Boolean) deserializer.deserialize(ZclDataType.BOOLEAN);
            ManufacturerCode     = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
            BufferSize           = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
            IncomingTransferSize = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);

            SetServerCapabilities(deserializer.ReadZigBeeType <short>(DataType.SIGNED_16_BIT_INTEGER));
            OutgoingTransferSize = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
            sbyte descriptorCapabilities = deserializer.ReadZigBeeType <sbyte>(DataType.SIGNED_8_BIT_INTEGER);

            IsextendedEndpointListAvailable       = (descriptorCapabilities & 0x01) != 0;
            ExtendedSimpleDescriptorListAvailable = (descriptorCapabilities & 0x02) != 0;
        }
Example #2
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Direction           = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
     AttributeIdentifier = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     if (Direction == 1)
     {
         // If direction is set to 0x01, then the timeout period field is included in the payload,
         // and the attribute data type field, the minimum reporting interval field, the
         // maximum reporting interval field and the reportable change field are omitted. The
         // record is sent to a cluster client (or server) to configure how it should expect
         // reports from a server (or client) of the same cluster.
         TimeoutPeriod = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     }
     else
     {
         // If direction is set to 0x00, then the attribute data type field, the minimum
         // reporting interval field, the maximum reporting interval field and the reportable
         // change field are included in the payload, and the timeout period field is omitted.
         // The record is sent to a cluster server (or client) to configure how it sends reports to
         // a client (or server) of the same cluster.
         AttributeDataType        = ZclDataType.Get((byte)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER)));
         MinimumReportingInterval = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
         MaximumReportingInterval = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
         if (AttributeDataType.IsAnalog)
         {
             // The reportable change field shall contain the minimum change to the attribute that
             // will result in a report being issued. This field is of variable length. For attributes
             // with 'analog' data typethe field has the same data type as the attribute. The sign (if any) of the
             // reportable change field is ignored. For attributes of 'discrete' data type this field is omitted.
             ReportableChange = deserializer.ReadZigBeeType(AttributeDataType);
         }
     }
 }
Example #3
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Status = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
     if (Status != 0)
     {
         AttributeIdentifier = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     }
 }
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Status = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
     if (Status != 0)
     {
         AttributeIdentifier = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     }
 }
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     NeighborAddress  = deserializer.ReadZigBeeType <IeeeAddress>(DataType.IEEE_ADDRESS);
     Coordinate1      = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     Coordinate2      = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     Coordinate3      = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     Rssi             = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
     MeasurementCount = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
 }
Example #6
0
        public void Deserialize(IZigBeeDeserializer deserializer)
        {
            AttributeIdentifier = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);

            byte dataType = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);

            AttributeDataType = ZclDataType.Get((DataType)dataType);
            AttributeValue    = deserializer.ReadZigBeeType <object>(AttributeDataType.DataType);
        }
Example #7
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     neighborAddress  = (long)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.IEEE_ADDRESS));
     Coordinate1      = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     Coordinate2      = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     Coordinate3      = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     Rssi             = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
     MeasurementCount = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
 }
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     AttributeIdentifier = (ushort)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     Status = (ZclStatus)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.ZCL_STATUS));
     if (Status == ZclStatus.SUCCESS)
     {
         AttributeDataType = ZclDataType.Get((byte)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER)));
         AttributeValue    = deserializer.ReadZigBeeType(AttributeDataType);
     }
 }
Example #9
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     AttributeIdentifier = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     Status = deserializer.ReadZigBeeType <ZclStatus>(DataType.ZCL_STATUS);
     if (Status == ZclStatus.SUCCESS)
     {
         AttributeDataType = ZclDataType.Get(deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER));
         AttributeValue    = deserializer.ReadZigBeeType <object>(AttributeDataType.DataType);
     }
 }
Example #10
0
 /// <summary>
 /// Deserialise the contents of the structure.
 ///
 /// <param name="deserializer">the <see cref="ZigBeeDeserializer"> used to deserialize</param>
 /// </summary>
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     // Deserialize the fields
     Endpoint          = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
     ProfileId         = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     DeviceId          = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     DeviceVersion     = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
     InputClusterList  = deserializer.ReadZigBeeType <List <ushort> >(DataType.N_X_UNSIGNED_16_BIT_INTEGER);
     OutputClusterList = deserializer.ReadZigBeeType <List <ushort> >(DataType.N_X_UNSIGNED_16_BIT_INTEGER);
 }
Example #11
0
 /**
  * Deserialise the contents of the structure.
  *
  * @param deserializer the {@link ZigBeeDeserializer} used to deserialize
  */
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     // Deserialize the fields
     Endpoint          = (byte)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
     ProfileId         = (ushort)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     DeviceId          = (ushort)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     DeviceVersion     = (byte)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
     InputClusterList  = (List <ushort>)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.N_X_UNSIGNED_16_BIT_INTEGER));
     OutputClusterList = (List <ushort>)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.N_X_UNSIGNED_16_BIT_INTEGER));
 }
Example #12
0
        /**
         * Deserialise the contents of the structure.
         *
         * @param deserializer the {@link ZigBeeDeserializer} used to deserialize
         */
        public void Deserialize(IZigBeeDeserializer deserializer)
        {
            // Deserialize the fields
            byte byte1 = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
            byte byte2 = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);

            setCurrentPowerMode(byte1 & 0x0f);
            SetAvailablePowerSources(byte1 >> 4 & 0x0f);
            setCurrentPowerSource(byte2 & 0x0f);
            SetCurrentPowerLevel(byte2 >> 4 & 0x0f);
        }
Example #13
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     SrcAddr     = deserializer.ReadZigBeeType <IeeeAddress>(DataType.IEEE_ADDRESS);
     SrcEndpoint = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
     ClusterId   = deserializer.ReadZigBeeType <ushort>(DataType.CLUSTERID);
     DstAddrMode = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
     if (DstAddrMode == 1)
     {
         DstGroupAddr = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     }
     else if (DstAddrMode == 3)
     {
         DstAddr         = deserializer.ReadZigBeeType <IeeeAddress>(DataType.IEEE_ADDRESS);
         DstNodeEndpoint = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
     }
 }
Example #14
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     SrcAddr     = (IeeeAddress)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.IEEE_ADDRESS));
     SrcEndpoint = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
     ClusterId   = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.CLUSTERID));
     DstAddrMode = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
     if (DstAddrMode == 1)
     {
         DstGroupAddr = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     }
     else if (DstAddrMode == 3)
     {
         DstAddr         = (IeeeAddress)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.IEEE_ADDRESS));
         DstNodeEndpoint = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
     }
 }
Example #15
0
        /**
         * Deserialise the contents of the structure.
         *
         * @param deserializer the {@link ZigBeeDeserializer} used to deserialize
         */
        public void Deserialize(IZigBeeDeserializer deserializer)
        {
            // Deserialize the fields
            ExtendedPanId   = deserializer.ReadZigBeeType <ExtendedPanId>(DataType.EXTENDED_PANID);
            ExtendedAddress = deserializer.ReadZigBeeType <IeeeAddress>(DataType.IEEE_ADDRESS);
            NetworkAddress  = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);

            byte temp = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);

            SetDeviceType(temp & 0x03);
            SetRxOnWhenIdle((temp & 0x0c) >> 2);
            SetRelationship((temp & 0x70) >> 4);

            temp = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
            SetPermitJoining(temp & 0x03);
            Depth = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
            Lqi   = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
        }
Example #16
0
        /**
         * Deserialise the contents of the structure.
         *
         * @param deserializer the {@link ZigBeeDeserializer} used to deserialize
         */
        public void Deserialize(IZigBeeDeserializer deserializer)
        {
            // Deserialize the fields
            DestinationAddress = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
            byte temp = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);

            switch (temp & 0x07)
            {
            case 0:
                Status = DiscoveryState.ACTIVE;
                break;

            case 1:
                Status = DiscoveryState.DISCOVERY_UNDERWAY;
                break;

            case 2:
                Status = DiscoveryState.DISCOVERY_FAILED;
                break;

            case 3:
                Status = DiscoveryState.INACTIVE;
                break;

            case 4:
                Status = DiscoveryState.VALIDATION_UNDERWAY;
                break;

            default:
                Status = DiscoveryState.UNKNOWN;
                break;
            }

            IsMemoryConstrained   = (temp & 0x08) != 0;
            IsManyToOne           = (temp & 0x10) != 0;
            IsRouteRecordRequired = (temp & 0x20) != 0;
            IsNextHopAddress      = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
        }
Example #17
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Status              = deserializer.ReadZigBeeType <ZclStatus>(DataType.ZCL_STATUS);
     Direction           = deserializer.ReadZigBeeType <bool>(DataType.BOOLEAN);
     AttributeIdentifier = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
 }
Example #18
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Identifier        = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     AttributeDataType = deserializer.ReadZigBeeType <ZclDataType>(DataType.ZIGBEE_DATA_TYPE);
 }
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     AttributeIdentifier = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     AttributeDataType   = ZclDataType.Get((byte)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER)));
     AttributeValue      = deserializer.ReadZigBeeType(AttributeDataType);
 }
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Status              = (ZclStatus)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.ZCL_STATUS));
     Direction           = (bool)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.BOOLEAN));
     AttributeIdentifier = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
 }
Example #21
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Value = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
 }
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Identifier        = (ushort)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     AttributeDataType = (ZclDataType)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.ZIGBEE_DATA_TYPE));
 }
Example #23
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Direction           = deserializer.ReadZigBeeType <byte>(DataType.UNSIGNED_8_BIT_INTEGER);
     AttributeIdentifier = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
 }
Example #24
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Value = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
 }
Example #25
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     ClusterId = (byte)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
     Data      = (byte[])deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER_ARRAY));
 }
Example #26
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     ClusterId = deserializer.ReadZigBeeType <ushort>(DataType.UNSIGNED_16_BIT_INTEGER);
     Data      = deserializer.ReadZigBeeType <byte[]>(DataType.UNSIGNED_8_BIT_INTEGER_ARRAY);
 }
Example #27
0
 public ZclFieldDeserializer(IZigBeeDeserializer deserializer)
 {
     Deserializer = deserializer;
 }
Example #28
0
 public void Deserialize(IZigBeeDeserializer deserializer)
 {
     Direction           = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_8_BIT_INTEGER));
     AttributeIdentifier = (int)deserializer.ReadZigBeeType(ZclDataType.Get(DataType.UNSIGNED_16_BIT_INTEGER));
 }