from dataclasses import dataclass from pathlib import Path @dataclass(frozen=True) class FieldDefinition: num: int size: int base_type: int @dataclass(frozen=True) class LocalDefinition: global_message_num: int endian: str fields: tuple[FieldDefinition, ...] developer_field_size: int GARMIN_MANUFACTURER_ID = 1 @dataclass(frozen=True) class GarminDevice: manufacturer_id: int = GARMIN_MANUFACTURER_ID product_id: int = 3570 product_name: str = "Edge 1030 Plus" serial_number: int | None = None @dataclass(frozen=True) class FitConversionResult: source_path: Path output_path: Path patched_field_count: int header_crc: int | None file_crc: int @dataclass(frozen=True) class DeviceFieldValue: global_message_num: int field_num: int value: int | str #: True when this value came from the creator device record. ``file_id`` #: values are always creator values (a FIT file has exactly one file_id); #: ``device_info`` values are creator values only when device_index == 0. is_creator: bool