rustyfit 0.8.0

The #![no_std] Rust implementation of The Flexible and Interoperable Data Transfer (FIT) Protocol for decoding and encoding Garmin FIT files, supporting FIT Protocol V2.
Documentation

RustyFIT

GitHub Workflow Status docs.rs Crates.io Version Crates.io Downloads Profile Version

The #![no_std] Rust implementation of The Flexible and Interoperable Data Transfer (FIT) Protocol for decoding and encoding Garmin FIT files, supporting FIT Protocol V2.

This library is a rewrite of FIT SDK for Go and is designed to run on baremetal Rust.

Current State

At the moment, I can't make this library heapless without complicating the code. I have no elegant solution for pure baremetal without dynamic memory allocation. That being said, this library is efficient enough to work on resource-constrained environments. I've tested it on a #![no_std] program to decode a FIT file (statically embedded) and print some of its Session's fields to stdout with a custom global allocator having less than 50 KB heap size and it works like a charm.

Usage

For #![no_std], you need to provide #[global_allocator] since this library requires allocation.

For std, you need to wrap std::io's Read or Write with embedded_io_adapters::std:FromStd.

Usage examples can be viewed on docs.rs.

License

This library is licensed under the BSD 3-Clause License.

The file fitgen/Profile.xlsx and all files under rustyfit/tests/data/from_official_sdk/* are licensed under the FIT SDK License. These files are used for code generation and testing only.

The FIT Protocol and FIT file format are proprietary to Garmin and are licensed under the FIT Protocol License. Use of this library may require compliance with the FIT Protocol License.

This project is not affiliated with or endorsed by Garmin. It is provided "as is" without warranty. Users are responsible for complying with all applicable licenses and laws.