Skip to content

Add FIT write support - #1

Merged
trasch merged 1 commit into
mainfrom
feat/fit-write-support
Jul 22, 2026
Merged

trasch merged 1 commit into
mainfrom
feat/fit-write-support

Conversation

@trasch

@trasch trasch commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Implements FIT write support for round-trip read → write → read:

  • FITEncoder — binary encoder for typed EncodedMessage/EncodedField representations, handles header, definition messages, data messages and file CRC.
  • FITCoder.write(from:) — converts a FeatureCollection back to binary FIT data (file_id, record, lap, session, activity messages with all per-point sensor arrays).
  • FeatureCollection+FIT.swift — dedicated file containing init?(fit:), init?(fitData:), writeFIT(to:), fitData(), and all other FeatureCollection FIT extensions (consolidated from FITCoder.swift and Feature+FIT.swift).
  • Namespacing — free top-level functions (FITDegreesFromSemicircles, FITSemicirclesFromDegrees, FITDateFromTimestamp, FITEpoch) moved into public enum FIT.
  • Round-trip tests — 11 new tests verifying coordinate, sensor data, and metadata preservation through encode/decode.

- FITEncoder: binary encoder for typed FIT messages (header, definition,
  data, CRC)
- FITCoder.write(from:): converts FeatureCollection back to FIT binary
- FITCoder.write(from:to:): writes FIT to file
- FeatureCollection+FIT: dedicated file with init?(fit:), init?(fitData:),
  writeFIT(to:), fitData(), and all FeatureCollection FIT extensions
- FeatureCollection extensions moved from FITCoder.swift/Feature+FIT.swift
  into FeatureCollection+FIT.swift
- Free top-level functions (FITDegreesFromSemicircles, etc.) namespaced
  under public enum FIT
- Round-trip tests: read → write → read preserves coordinates, sensor
  data, and device metadata
@trasch trasch self-assigned this Jul 22, 2026
@trasch trasch added the enhancement New feature or request label Jul 22, 2026
@trasch
trasch merged commit 8c3b3d8 into main Jul 22, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant