payload property
Implementation
Uint8List? get payload {
if (!(vendorName != null && modelName != null)) {
throw ArgumentError(
"Decoding requires the manufacturer and model name TLVs");
}
List<int>? payload = [];
// known data
_addEncodedData(vendorName, 0, payload);
_addEncodedData(modelName, 1, payload);
_addEncodedData(uniqueName, 2, payload);
payload.add(3);
payload.add(uuidData.length);
payload.addAll(uuidData);
_addEncodedData(versionString, 4, payload);
// undefined data
for (int i = 0; i < undefinedData.length; i++) {
payload.add(undefinedData[i].type);
Uint8List valueBytes = undefinedData[i].value;
payload.add(valueBytes.length);
payload.addAll(valueBytes);
}
return new Uint8List.fromList(payload);
}
Implementation
set payload(Uint8List? payload) {
ByteStream stream = new ByteStream(payload!);
while (!stream.isEnd()) {
int type = stream.readByte();
int length = stream.readByte();
Uint8List value = stream.readBytes(length);
switch (type) {
case 0:
vendorName = utf8.decode(value);
break;
case 1:
modelName = utf8.decode(value);
break;
case 2:
uniqueName = utf8.decode(value);
break;
case 3:
uuidData = value;
break;
case 4:
versionString = utf8.decode(value);
break;
default:
undefinedData.add(DataElement(type, value));
break;
}
}
if (!(vendorName != null && modelName != null)) {
throw ArgumentError(
"Decoding requires the manufacturer and model name TLVs");
}
}