[zb4osgi-changeset] [scm] ZigBee 4 OSGi repository change: r606 - /projects/zb4osgi/trunk/zigbee.zcl.library/src/main/java/it/cnr/isti/zigbee/zcl/library/impl/global/write/WriteAttributeCommand.java

scm-notify at zb4osgi.aaloa.org scm-notify at zb4osgi.aaloa.org
Sat Jan 26 15:11:44 CET 2013


Author: stefano.lenzi
Date: Sat Jan 26 15:11:44 2013
New Revision: 606

Log:
Reverting changes after the merging ( refs #174 )


Modified:
    projects/zb4osgi/trunk/zigbee.zcl.library/src/main/java/it/cnr/isti/zigbee/zcl/library/impl/global/write/WriteAttributeCommand.java

Modified: projects/zb4osgi/trunk/zigbee.zcl.library/src/main/java/it/cnr/isti/zigbee/zcl/library/impl/global/write/WriteAttributeCommand.java
==============================================================================
--- projects/zb4osgi/trunk/zigbee.zcl.library/src/main/java/it/cnr/isti/zigbee/zcl/library/impl/global/write/WriteAttributeCommand.java (original)
+++ projects/zb4osgi/trunk/zigbee.zcl.library/src/main/java/it/cnr/isti/zigbee/zcl/library/impl/global/write/WriteAttributeCommand.java Sat Jan 26 15:11:44 2013
@@ -52,14 +52,24 @@
 				int len = attributeRecord[i].getAttributeDataType().getLength();
 				if(len == -1){
 					//TODO Use a general method instead of assuming that variable length is applied only for String 
-					length = length + ((String) attributeRecord[i].getAttributeData()).length();
+					switch( attributeRecord[i].getAttributeDataType() ) {
+						case CharacterString : case OctectString :
+							length = length + ((String) attributeRecord[i].getAttributeData()).length() + 1;
+						break;
+						case LongOctectString : case LongCharacterString :
+							length = length + ((String) attributeRecord[i].getAttributeData()).length() + 2;
+						break;
+						default:
+							throw new IllegalArgumentException("Data type "+attributeRecord[i].getAttributeDataType()+" is not supported yet");
+					}
+					
 				} else {
 					length = length + len;
 				}
-				length = length + 2 + 1 + 1; // manlio +1 (a bit for string length field) //space for attribute id and attribute data type
+				length = length + 2 + 1; //space for attribute id and attribute data type
 			}
 			payload = new byte[length];
-			ZBSerializer serializer = new DefaultSerializer(payload, 0);
+			ZBSerializer serializer = new DefaultSerializer(payload,0);
 		
 			for (int i = 0; i < attributeRecord.length; i++) {
 				serializer.append_short( (short) attributeRecord[i].getAttributeId());




More information about the Commit mailing list