packet 0x2c: properties updated to support 1.6.2 version (elementList added)

This commit is contained in:
Xabier de Zuazo 2013-07-11 12:08:46 +02:00
parent 6b09737dec
commit c597436b70

View file

@ -731,6 +731,9 @@ function sizeOfPropertyArray(value) {
var size = 4;
for (var i = 0; i < value.length; ++i) {
size += sizeOfString(value[i].key) + types['double'][2];
for (var j = 0; j < value[i].elementList.length; j++) {
size += types['long'][2] + types['long'][2] + types['double'][2] + types['byte'][2];
}
}
return size;
}
@ -741,6 +744,13 @@ function writePropertyArray(value, buffer, offset) {
for (var i = 0; i < value.length; ++i) {
offset = writeString(value[i].key, buffer, offset);
offset = writeDouble(value[i].value, buffer, offset);
offset = writeShort(value[i].elementList.length, buffer, offset);
for (var j = 0; j < value[i].elementList.length; j++) {
offset = writeLong(value[i].elementList[j].uuid_msb, buffer, offset);
offset = writeLong(value[i].elementList[j].uuid_lsb, buffer, offset);
offset = writeDouble(value[i].elementList[j].amount, buffer, offset);
offset = writeByte(value[i].elementList[j].operation, buffer, offset);
}
}
return offset;
}
@ -1057,6 +1067,7 @@ function readPropertyArray (buffer, offset) {
var propertyArray = [];
for (var i = 0; i < count; ++i) {
var property = {};
var elementListLength;
results = readString(buffer, cursor);
if (! results) return null;
@ -1068,6 +1079,37 @@ function readPropertyArray (buffer, offset) {
property.value = results.value;
cursor += results.size;
results = readShort(buffer, cursor);
if (! results) return null;
elementListLength = results.value;
cursor += results.size;
property.elementList = [];
for (var j = 0; j < elementListLength ; j++) {
property.elementList[j] = {}
results = readLong(buffer, cursor);
if (! results) return null;
property.elementList[j].uuid_msb = results.value;
cursor += results.size;
results = readLong(buffer, cursor);
if (! results) return null;
property.elementList[j].uuid_lsb = results.value;
cursor += results.size;
results = readDouble(buffer, cursor);
if (! results) return null;
property.elementList[j].amount = results.value;
cursor += results.size;
results = readByte(buffer, cursor);
if (! results) return null;
property.elementList[j].operation = results.value;
cursor += results.size;
}
propertyArray.push(property);
}