import struct from app.fit.crc import fit_crc def make_fit(data_records: bytes, *, header_size: int = 14) -> bytes: if header_size not in {12, 14}: raise ValueError(header_size) header = bytearray(header_size) header[0] = header_size header[1] = 0x20 struct.pack_into(" bytes: architecture = 1 if endian == ">" else 0 payload = bytearray([0, architecture]) payload.extend(struct.pack(f"{endian}H", global_num)) payload.append(len(fields)) for num, size, base_type in fields: payload.extend(bytes([num, size, base_type])) return bytes([0x40 | local]) + bytes(payload) def data(local: int, payload: bytes) -> bytes: return bytes([local]) + payload