decode method
Decodes one frame body — the bytes after the length prefix. A rejected message carries its reject code in the header and no ISO body.
Implementation
IsoMsg decode(Uint8List payload) {
if (payload.length < headerLength) throw const FormatException("frame shorter than the $headerLength byte header");
final Uint8List header = Uint8List.fromList(payload.sublist(0, headerLength));
final OssAcqHeader ossHeader = OssAcqHeader.raw(header);
final IsoMsg message = packager.createComponent()
..isoHeader = header
..rawBuffer = payload;
if (ossHeader.isReject) {
message.rejectCode = ossHeader.rejectCode;
return message;
}
final Uint8List body = Uint8List.fromList(payload.sublist(headerLength));
if (body.isNotEmpty) packager.unpack(message, IsoBuffer.wrap(body));
return message;
}