public NodeDescriptor(int apsFlags, int bufferSize, int macCapabilities, boolean complexDescriptorAvailable, int manufacturerCode, int logicalType, int serverMask, int transferSize, boolean userDescriptorAvailable, int frequencyBands) { this.complexDescriptorAvailable = complexDescriptorAvailable; this.userDescriptorAvailable = userDescriptorAvailable; this.manufacturerCode = manufacturerCode; this.bufferSize = bufferSize; this.incomingTransferSize = transferSize; setLogicalType(logicalType); setMacCapabilities(macCapabilities); setFrequencyBands(frequencyBands); setServerCapabilities(serverMask); this.apsFlags = apsFlags; }
/** * Deserialise the contents of the structure. * * @param deserializer the {@link ZigBeeDeserializer} used to deserialize */ public void deserialize(ZigBeeDeserializer deserializer) { // Deserialize the fields // logicalType = (LogicalType) deserializer.deserialize(ZclDataType.SIGNED_8_BIT_INTEGER); // Some flags... int value1 = (int) deserializer.readZigBeeType(ZclDataType.DATA_8_BIT); int value2 = (int) deserializer.readZigBeeType(ZclDataType.DATA_8_BIT); int value3 = (int) deserializer.readZigBeeType(ZclDataType.DATA_8_BIT); setLogicalType(value1 & 0x07); complexDescriptorAvailable = (value1 & 0x08) != 0; userDescriptorAvailable = (value1 & 0x10) != 0; setFrequencyBands((value2 & 0xf8) >> 3); setMacCapabilities(value3); // complexDescriptorAvailable = (Boolean) deserializer.deserialize(ZclDataType.BOOLEAN); // userDescriptorAvailable = (Boolean) deserializer.deserialize(ZclDataType.BOOLEAN); manufacturerCode = (int) deserializer.readZigBeeType(ZclDataType.UNSIGNED_16_BIT_INTEGER); bufferSize = (int) deserializer.readZigBeeType(ZclDataType.UNSIGNED_8_BIT_INTEGER); incomingTransferSize = (int) deserializer.readZigBeeType(ZclDataType.UNSIGNED_16_BIT_INTEGER); setServerCapabilities((int) deserializer.readZigBeeType(ZclDataType.SIGNED_16_BIT_INTEGER)); outgoingTransferSize = (int) deserializer.readZigBeeType(ZclDataType.UNSIGNED_16_BIT_INTEGER); int descriptorCapabilities = (int) deserializer.readZigBeeType(ZclDataType.SIGNED_8_BIT_INTEGER); extendedEndpointListAvailable = (descriptorCapabilities & 0x01) != 0; extendedSimpleDescriptorListAvailable = (descriptorCapabilities & 0x02) != 0; }