close method

Uint8List close()

Implementation

Uint8List close() {
  Uint8List data = _writer.toBytes();

  // Update header
  _header.dataSize = data.length - Fit.headerWithCrcSize;

  // Create new writer for the final file
  var finalWriter = EndianBinaryWriter();
  _header.write(finalWriter);

  // Copy message data
  Uint8List messageData = data.sublist(Fit.headerWithCrcSize);
  finalWriter.writeBytes(messageData);

  // Calculate and write CRC
  Uint8List allData = finalWriter.toBytes();
  int crc = Crc.calc16(allData, allData.length);

  finalWriter.writeUInt16(crc);

  return finalWriter.toBytes();
}