fit

package module
v0.0.0-...-cd8a489 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 24, 2023 License: MIT Imports: 16 Imported by: 0

README

fit

license GoDoc Build

fit is a Go package that implements decoding and encoding of the Flexible and Interoperable Data Transfer (FIT) Protocol. Fit is a "compact binary format designed for storing and sharing data from sport, fitness and health devices". Fit files are created by newer GPS enabled Garmin sport watches and cycling computers, such as the Forerunner/Edge/Fenix series.

The two latest versions of Go is supported. The core decoding package has no external dependencies. The latest release of Go and a few external dependencies are required for running the full test suite and benchmarks.

Latest release: 0.14.0

Version Support

The current supported FIT SDK version is 21.94.

Developer data fields are currently only partially supported. At the moment the decoder parses Developer Data Field Descriptions, Developer Data ID Messages and Field Description Messages. The decoder currently discards developer data fields found in records.

The encoder will currently (silently) ignore anything related to Developer data fields, This also means that encoding will not fail if protocol version 2 is specified for a file header.

Developer data fields support is tracked by #21 and #64.

Features
  • Supports all FIT file types.
  • Accessors for scaled fields.
  • Accessors for dynamic fields.
  • Field components expansion.
  • Go code generation for custom FIT product profiles.
Installation

Using Go modules:

$ go get github.com/JesprUniverse/fit@v0.14.0

Using $GOPATH:

$ go get github.com/JesprUniverse/fit
About fit
Contributors

Documentation

Overview

Package fit implements decoding of the Flexible and Interoperable Data Transfer (FIT) Protocol. For more information see https://github.com/JesprUniverse/fit.

Example
package main

import (
	"bytes"
	"fmt"
	"os"
	"path/filepath"

	"github.com/JesprUniverse/fit"
)

func main() {
	// Read our FIT test file data
	testFile := filepath.Join("testdata", "fitsdk", "Activity.fit")
	testData, err := os.ReadFile(testFile)
	if err != nil {
		fmt.Println(err)
		return
	}

	// Decode the FIT file data
	fit, err := fit.Decode(bytes.NewReader(testData))
	if err != nil {
		fmt.Println(err)
		return
	}

	// Inspect the TimeCreated field in the FileId message
	fmt.Println(fit.FileId.TimeCreated)

	// Inspect the dynamic Product field in the FileId message
	fmt.Println(fit.FileId.GetProduct())

	// Inspect the FIT file type
	fmt.Println(fit.Type())

	// Get the actual activity
	activity, err := fit.Activity()
	if err != nil {
		fmt.Println(err)
		return
	}

	// Print the latitude and longitude of the first Record message
	for _, record := range activity.Records {
		fmt.Println(record.PositionLat)
		fmt.Println(record.PositionLong)
		break
	}

	// Print the sport of the first Session message
	for _, session := range activity.Sessions {
		fmt.Println(session.Sport)
		break
	}

}
Output:

2012-04-09 21:22:26 +0000 UTC
Hrm1
Activity
41.51393
-73.14859
Running

Index

Examples

Constants

View Source
const (
	// ProfileMajorVersion is the current supported profile major version of the FIT SDK.
	ProfileMajorVersion = 21

	// ProfileMinorVersion is the current supported profile minor version of the FIT SDK.
	ProfileMinorVersion = 94
)
View Source
const ProfileVersion uint16 = ((ProfileMajorVersion * 100) + ProfileMinorVersion)

ProfileVersion is the current supported profile version of the FIT SDK.

Variables

This section is empty.

Functions

func CheckIntegrity

func CheckIntegrity(r io.Reader, headerOnly bool) error

CheckIntegrity verifies the FIT header and file CRC. Only the header CRC is verified if headerOnly is true.

func DecodeHeaderAndFileID

func DecodeHeaderAndFileID(r io.Reader) (Header, FileIdMsg, error)

DecodeHeaderAndFileID returns the FIT file header and FileId message without decoding the entire FIT file. The FileId message must be present in all FIT files.

func Encode

func Encode(w io.Writer, file *File, arch binary.ByteOrder) error

Encode writes the given FIT file into the given Writer. file.CRC and file.Header.CRC will be updated to the correct values.

func IsBaseTime

func IsBaseTime(t time.Time) bool

IsBaseTime reports if t represents the FIT base time.

Types

type AccelerometerDataMsg

type AccelerometerDataMsg struct {
}

AccelerometerDataMsg represents the accelerometer_data FIT message type.

func NewAccelerometerDataMsg

func NewAccelerometerDataMsg() *AccelerometerDataMsg

NewAccelerometerDataMsg returns a accelerometer_data FIT message initialized to all-invalid values.

type ActivityClass

type ActivityClass byte

ActivityClass represents the activity_class FIT type.

const (
	ActivityClassLevel    ActivityClass = 0x7F // 0 to 100
	ActivityClassLevelMax ActivityClass = 100
	ActivityClassAthlete  ActivityClass = 0x80
	ActivityClassInvalid  ActivityClass = 0xFF
)

func (ActivityClass) String

func (i ActivityClass) String() string

type ActivityFile

type ActivityFile struct {
	Activity    *ActivityMsg
	Sessions    []*SessionMsg
	Laps        []*LapMsg
	Lengths     []*LengthMsg
	Records     []*RecordMsg
	Events      []*EventMsg
	Hrvs        []*HrvMsg
	DeviceInfos []*DeviceInfoMsg
}

ActivityFile represents the Activity FIT file type. Records sensor data and events from active sessions.

type ActivityLevel

type ActivityLevel byte

ActivityLevel represents the activity_level FIT type.

const (
	ActivityLevelLow     ActivityLevel = 0
	ActivityLevelMedium  ActivityLevel = 1
	ActivityLevelHigh    ActivityLevel = 2
	ActivityLevelInvalid ActivityLevel = 0xFF
)

func (ActivityLevel) String

func (i ActivityLevel) String() string

type ActivityMode

type ActivityMode byte

ActivityMode represents the activity FIT type.

const (
	ActivityModeManual         ActivityMode = 0
	ActivityModeAutoMultiSport ActivityMode = 1
	ActivityModeInvalid        ActivityMode = 0xFF
)

func (ActivityMode) String

func (i ActivityMode) String() string

type ActivityMsg

type ActivityMsg struct {
	Timestamp      time.Time
	TotalTimerTime uint32 // Exclude pauses
	NumSessions    uint16
	Type           ActivityMode
	Event          Event
	EventType      EventType
	LocalTimestamp time.Time // timestamp epoch expressed in local time, used to convert activity timestamps to local time
	EventGroup     uint8
}

ActivityMsg represents the activity FIT message type.

func NewActivityMsg

func NewActivityMsg() *ActivityMsg

NewActivityMsg returns a activity FIT message initialized to all-invalid values.

func (*ActivityMsg) GetTotalTimerTimeScaled

func (x *ActivityMsg) GetTotalTimerTimeScaled() float64

GetTotalTimerTimeScaled returns TotalTimerTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

type ActivitySubtype

type ActivitySubtype byte

ActivitySubtype represents the activity_subtype FIT type.

const (
	ActivitySubtypeGeneric       ActivitySubtype = 0
	ActivitySubtypeTreadmill     ActivitySubtype = 1  // Run
	ActivitySubtypeStreet        ActivitySubtype = 2  // Run
	ActivitySubtypeTrail         ActivitySubtype = 3  // Run
	ActivitySubtypeTrack         ActivitySubtype = 4  // Run
	ActivitySubtypeSpin          ActivitySubtype = 5  // Cycling
	ActivitySubtypeIndoorCycling ActivitySubtype = 6  // Cycling
	ActivitySubtypeRoad          ActivitySubtype = 7  // Cycling
	ActivitySubtypeMountain      ActivitySubtype = 8  // Cycling
	ActivitySubtypeDownhill      ActivitySubtype = 9  // Cycling
	ActivitySubtypeRecumbent     ActivitySubtype = 10 // Cycling
	ActivitySubtypeCyclocross    ActivitySubtype = 11 // Cycling
	ActivitySubtypeHandCycling   ActivitySubtype = 12 // Cycling
	ActivitySubtypeTrackCycling  ActivitySubtype = 13 // Cycling
	ActivitySubtypeIndoorRowing  ActivitySubtype = 14 // Fitness Equipment
	ActivitySubtypeElliptical    ActivitySubtype = 15 // Fitness Equipment
	ActivitySubtypeStairClimbing ActivitySubtype = 16 // Fitness Equipment
	ActivitySubtypeLapSwimming   ActivitySubtype = 17 // Swimming
	ActivitySubtypeOpenWater     ActivitySubtype = 18 // Swimming
	ActivitySubtypeAll           ActivitySubtype = 254
	ActivitySubtypeInvalid       ActivitySubtype = 0xFF
)

func (ActivitySubtype) String

func (i ActivitySubtype) String() string

type ActivitySummaryFile

type ActivitySummaryFile struct {
	Activity *ActivityMsg
	Sessions []*SessionMsg
	Laps     []*LapMsg
}

ActivitySummaryFile represents the Activity Summary FIT file type. Similar to Activity file, contains summary information only.

type ActivityType

type ActivityType byte

ActivityType represents the activity_type FIT type.

const (
	ActivityTypeGeneric          ActivityType = 0
	ActivityTypeRunning          ActivityType = 1
	ActivityTypeCycling          ActivityType = 2
	ActivityTypeTransition       ActivityType = 3 // Mulitsport transition
	ActivityTypeFitnessEquipment ActivityType = 4
	ActivityTypeSwimming         ActivityType = 5
	ActivityTypeWalking          ActivityType = 6
	ActivityTypeSedentary        ActivityType = 8
	ActivityTypeAll              ActivityType = 254 // All is for goals only to include all sports.
	ActivityTypeInvalid          ActivityType = 0xFF
)

func (ActivityType) String

func (i ActivityType) String() string

type AnalogWatchfaceLayout

type AnalogWatchfaceLayout byte

AnalogWatchfaceLayout represents the analog_watchface_layout FIT type.

const (
	AnalogWatchfaceLayoutMinimal     AnalogWatchfaceLayout = 0
	AnalogWatchfaceLayoutTraditional AnalogWatchfaceLayout = 1
	AnalogWatchfaceLayoutModern      AnalogWatchfaceLayout = 2
	AnalogWatchfaceLayoutInvalid     AnalogWatchfaceLayout = 0xFF
)

func (AnalogWatchfaceLayout) String

func (i AnalogWatchfaceLayout) String() string

type AntChannelIdMsg

type AntChannelIdMsg struct {
}

AntChannelIdMsg represents the ant_channel_id FIT message type.

func NewAntChannelIdMsg

func NewAntChannelIdMsg() *AntChannelIdMsg

NewAntChannelIdMsg returns a ant_channel_id FIT message initialized to all-invalid values.

type AntNetwork

type AntNetwork byte

AntNetwork represents the ant_network FIT type.

const (
	AntNetworkPublic  AntNetwork = 0
	AntNetworkAntplus AntNetwork = 1
	AntNetworkAntfs   AntNetwork = 2
	AntNetworkPrivate AntNetwork = 3
	AntNetworkInvalid AntNetwork = 0xFF
)

func (AntNetwork) String

func (i AntNetwork) String() string

type AntRxMsg

type AntRxMsg struct {
	Timestamp           time.Time
	FractionalTimestamp uint16
	MesgId              byte
	MesgData            []byte
	ChannelNumber       uint8
	Data                []byte
}

AntRxMsg represents the ant_rx FIT message type.

func NewAntRxMsg

func NewAntRxMsg() *AntRxMsg

NewAntRxMsg returns a ant_rx FIT message initialized to all-invalid values.

func (*AntRxMsg) GetFractionalTimestampScaled

func (x *AntRxMsg) GetFractionalTimestampScaled() float64

GetFractionalTimestampScaled returns FractionalTimestamp with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

type AntTxMsg

type AntTxMsg struct {
	Timestamp           time.Time
	FractionalTimestamp uint16
	MesgId              byte
	MesgData            []byte
	ChannelNumber       uint8
	Data                []byte
}

AntTxMsg represents the ant_tx FIT message type.

func NewAntTxMsg

func NewAntTxMsg() *AntTxMsg

NewAntTxMsg returns a ant_tx FIT message initialized to all-invalid values.

func (*AntTxMsg) GetFractionalTimestampScaled

func (x *AntTxMsg) GetFractionalTimestampScaled() float64

GetFractionalTimestampScaled returns FractionalTimestamp with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

type AntplusDeviceType

type AntplusDeviceType uint8

AntplusDeviceType represents the antplus_device_type FIT type.

const (
	AntplusDeviceTypeAntfs                   AntplusDeviceType = 1
	AntplusDeviceTypeBikePower               AntplusDeviceType = 11
	AntplusDeviceTypeEnvironmentSensorLegacy AntplusDeviceType = 12
	AntplusDeviceTypeMultiSportSpeedDistance AntplusDeviceType = 15
	AntplusDeviceTypeControl                 AntplusDeviceType = 16
	AntplusDeviceTypeFitnessEquipment        AntplusDeviceType = 17
	AntplusDeviceTypeBloodPressure           AntplusDeviceType = 18
	AntplusDeviceTypeGeocacheNode            AntplusDeviceType = 19
	AntplusDeviceTypeLightElectricVehicle    AntplusDeviceType = 20
	AntplusDeviceTypeEnvSensor               AntplusDeviceType = 25
	AntplusDeviceTypeRacquet                 AntplusDeviceType = 26
	AntplusDeviceTypeControlHub              AntplusDeviceType = 27
	AntplusDeviceTypeMuscleOxygen            AntplusDeviceType = 31
	AntplusDeviceTypeShifting                AntplusDeviceType = 34
	AntplusDeviceTypeBikeLightMain           AntplusDeviceType = 35
	AntplusDeviceTypeBikeLightShared         AntplusDeviceType = 36
	AntplusDeviceTypeExd                     AntplusDeviceType = 38
	AntplusDeviceTypeBikeRadar               AntplusDeviceType = 40
	AntplusDeviceTypeBikeAero                AntplusDeviceType = 46
	AntplusDeviceTypeWeightScale             AntplusDeviceType = 119
	AntplusDeviceTypeHeartRate               AntplusDeviceType = 120
	AntplusDeviceTypeBikeSpeedCadence        AntplusDeviceType = 121
	AntplusDeviceTypeBikeCadence             AntplusDeviceType = 122
	AntplusDeviceTypeBikeSpeed               AntplusDeviceType = 123
	AntplusDeviceTypeStrideSpeedDistance     AntplusDeviceType = 124
	AntplusDeviceTypeInvalid                 AntplusDeviceType = 0xFF
)

func (AntplusDeviceType) String

func (i AntplusDeviceType) String() string

type AttitudeStage

type AttitudeStage byte

AttitudeStage represents the attitude_stage FIT type.

const (
	AttitudeStageFailed   AttitudeStage = 0
	AttitudeStageAligning AttitudeStage = 1
	AttitudeStageDegraded AttitudeStage = 2
	AttitudeStageValid    AttitudeStage = 3
	AttitudeStageInvalid  AttitudeStage = 0xFF
)

func (AttitudeStage) String

func (i AttitudeStage) String() string

type AttitudeValidity

type AttitudeValidity uint16

AttitudeValidity represents the attitude_validity FIT type.

const (
	AttitudeValidityTrackAngleHeadingValid AttitudeValidity = 0x0001
	AttitudeValidityPitchValid             AttitudeValidity = 0x0002
	AttitudeValidityRollValid              AttitudeValidity = 0x0004
	AttitudeValidityLateralBodyAccelValid  AttitudeValidity = 0x0008
	AttitudeValidityNormalBodyAccelValid   AttitudeValidity = 0x0010
	AttitudeValidityTurnRateValid          AttitudeValidity = 0x0020
	AttitudeValidityHwFail                 AttitudeValidity = 0x0040
	AttitudeValidityMagInvalid             AttitudeValidity = 0x0080
	AttitudeValidityNoGps                  AttitudeValidity = 0x0100
	AttitudeValidityGpsInvalid             AttitudeValidity = 0x0200
	AttitudeValiditySolutionCoasting       AttitudeValidity = 0x0400
	AttitudeValidityTrueTrackAngle         AttitudeValidity = 0x0800
	AttitudeValidityMagneticHeading        AttitudeValidity = 0x1000
	AttitudeValidityInvalid                AttitudeValidity = 0xFFFF
)

func (AttitudeValidity) String

func (i AttitudeValidity) String() string

type AutoActivityDetect

type AutoActivityDetect uint32

AutoActivityDetect represents the auto_activity_detect FIT type.

const (
	AutoActivityDetectNone       AutoActivityDetect = 0x00000000
	AutoActivityDetectRunning    AutoActivityDetect = 0x00000001
	AutoActivityDetectCycling    AutoActivityDetect = 0x00000002
	AutoActivityDetectSwimming   AutoActivityDetect = 0x00000004
	AutoActivityDetectWalking    AutoActivityDetect = 0x00000008
	AutoActivityDetectElliptical AutoActivityDetect = 0x00000020
	AutoActivityDetectSedentary  AutoActivityDetect = 0x00000400
	AutoActivityDetectInvalid    AutoActivityDetect = 0xFFFFFFFF
)

func (AutoActivityDetect) String

func (i AutoActivityDetect) String() string

type AutoSyncFrequency

type AutoSyncFrequency byte

AutoSyncFrequency represents the auto_sync_frequency FIT type.

const (
	AutoSyncFrequencyNever        AutoSyncFrequency = 0
	AutoSyncFrequencyOccasionally AutoSyncFrequency = 1
	AutoSyncFrequencyFrequent     AutoSyncFrequency = 2
	AutoSyncFrequencyOnceADay     AutoSyncFrequency = 3
	AutoSyncFrequencyRemote       AutoSyncFrequency = 4
	AutoSyncFrequencyInvalid      AutoSyncFrequency = 0xFF
)

func (AutoSyncFrequency) String

func (i AutoSyncFrequency) String() string

type AutolapTrigger

type AutolapTrigger byte

AutolapTrigger represents the autolap_trigger FIT type.

const (
	AutolapTriggerTime             AutolapTrigger = 0
	AutolapTriggerDistance         AutolapTrigger = 1
	AutolapTriggerPositionStart    AutolapTrigger = 2
	AutolapTriggerPositionLap      AutolapTrigger = 3
	AutolapTriggerPositionWaypoint AutolapTrigger = 4
	AutolapTriggerPositionMarked   AutolapTrigger = 5
	AutolapTriggerOff              AutolapTrigger = 6
	AutolapTriggerInvalid          AutolapTrigger = 0xFF
)

func (AutolapTrigger) String

func (i AutolapTrigger) String() string

type Autoscroll

type Autoscroll byte

Autoscroll represents the autoscroll FIT type.

const (
	AutoscrollNone    Autoscroll = 0
	AutoscrollSlow    Autoscroll = 1
	AutoscrollMedium  Autoscroll = 2
	AutoscrollFast    Autoscroll = 3
	AutoscrollInvalid Autoscroll = 0xFF
)

func (Autoscroll) String

func (i Autoscroll) String() string

type AviationAttitudeMsg

type AviationAttitudeMsg struct {
	Timestamp             time.Time // Timestamp message was output
	TimestampMs           uint16    // Fractional part of timestamp, added to timestamp
	SystemTime            []uint32  // System time associated with sample expressed in ms.
	Pitch                 []int16   // Range -PI/2 to +PI/2
	Roll                  []int16   // Range -PI to +PI
	AccelLateral          []int16   // Range -78.4 to +78.4 (-8 Gs to 8 Gs)
	AccelNormal           []int16   // Range -78.4 to +78.4 (-8 Gs to 8 Gs)
	TurnRate              []int16   // Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec)
	Stage                 []AttitudeStage
	AttitudeStageComplete []uint8  // The percent complete of the current attitude stage. Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it. Range - 100
	Track                 []uint16 // Track Angle/Heading Range 0 - 2pi
	Validity              []AttitudeValidity
}

AviationAttitudeMsg represents the aviation_attitude FIT message type.

func NewAviationAttitudeMsg

func NewAviationAttitudeMsg() *AviationAttitudeMsg

NewAviationAttitudeMsg returns a aviation_attitude FIT message initialized to all-invalid values.

func (*AviationAttitudeMsg) GetAccelLateralScaled

func (x *AviationAttitudeMsg) GetAccelLateralScaled() []float64

GetAccelLateralScaled returns AccelLateral as a slice with scale and any offset applied to every element. Units: m/s^2

func (*AviationAttitudeMsg) GetAccelNormalScaled

func (x *AviationAttitudeMsg) GetAccelNormalScaled() []float64

GetAccelNormalScaled returns AccelNormal as a slice with scale and any offset applied to every element. Units: m/s^2

func (*AviationAttitudeMsg) GetPitchScaled

func (x *AviationAttitudeMsg) GetPitchScaled() []float64

GetPitchScaled returns Pitch as a slice with scale and any offset applied to every element. Units: radians

func (*AviationAttitudeMsg) GetRollScaled

func (x *AviationAttitudeMsg) GetRollScaled() []float64

GetRollScaled returns Roll as a slice with scale and any offset applied to every element. Units: radians

func (*AviationAttitudeMsg) GetTrackScaled

func (x *AviationAttitudeMsg) GetTrackScaled() []float64

GetTrackScaled returns Track as a slice with scale and any offset applied to every element. Units: radians

func (*AviationAttitudeMsg) GetTurnRateScaled

func (x *AviationAttitudeMsg) GetTurnRateScaled() []float64

GetTurnRateScaled returns TurnRate as a slice with scale and any offset applied to every element. Units: radians/second

type BacklightMode

type BacklightMode byte

BacklightMode represents the backlight_mode FIT type.

const (
	BacklightModeOff                                 BacklightMode = 0
	BacklightModeManual                              BacklightMode = 1
	BacklightModeKeyAndMessages                      BacklightMode = 2
	BacklightModeAutoBrightness                      BacklightMode = 3
	BacklightModeSmartNotifications                  BacklightMode = 4
	BacklightModeKeyAndMessagesNight                 BacklightMode = 5
	BacklightModeKeyAndMessagesAndSmartNotifications BacklightMode = 6
	BacklightModeInvalid                             BacklightMode = 0xFF
)

func (BacklightMode) String

func (i BacklightMode) String() string

type BacklightTimeout

type BacklightTimeout uint8

BacklightTimeout represents the backlight_timeout FIT type.

const (
	BacklightTimeoutInfinite BacklightTimeout = 0 // Backlight stays on forever.
	BacklightTimeoutInvalid  BacklightTimeout = 0xFF
)

func (BacklightTimeout) String

func (i BacklightTimeout) String() string

type BarometerDataMsg

type BarometerDataMsg struct {
}

BarometerDataMsg represents the barometer_data FIT message type.

func NewBarometerDataMsg

func NewBarometerDataMsg() *BarometerDataMsg

NewBarometerDataMsg returns a barometer_data FIT message initialized to all-invalid values.

type BatteryStatus

type BatteryStatus uint8

BatteryStatus represents the battery_status FIT type.

const (
	BatteryStatusNew      BatteryStatus = 1
	BatteryStatusGood     BatteryStatus = 2
	BatteryStatusOk       BatteryStatus = 3
	BatteryStatusLow      BatteryStatus = 4
	BatteryStatusCritical BatteryStatus = 5
	BatteryStatusCharging BatteryStatus = 6
	BatteryStatusUnknown  BatteryStatus = 7
	BatteryStatusInvalid  BatteryStatus = 0xFF
)

func (BatteryStatus) String

func (i BatteryStatus) String() string

type BenchPressExerciseName

type BenchPressExerciseName uint16

BenchPressExerciseName represents the bench_press_exercise_name FIT type.

const (
	BenchPressExerciseNameAlternatingDumbbellChestPressOnSwissBall BenchPressExerciseName = 0
	BenchPressExerciseNameBarbellBenchPress                        BenchPressExerciseName = 1
	BenchPressExerciseNameBarbellBoardBenchPress                   BenchPressExerciseName = 2
	BenchPressExerciseNameBarbellFloorPress                        BenchPressExerciseName = 3
	BenchPressExerciseNameCloseGripBarbellBenchPress               BenchPressExerciseName = 4
	BenchPressExerciseNameDeclineDumbbellBenchPress                BenchPressExerciseName = 5
	BenchPressExerciseNameDumbbellBenchPress                       BenchPressExerciseName = 6
	BenchPressExerciseNameDumbbellFloorPress                       BenchPressExerciseName = 7
	BenchPressExerciseNameInclineBarbellBenchPress                 BenchPressExerciseName = 8
	BenchPressExerciseNameInclineDumbbellBenchPress                BenchPressExerciseName = 9
	BenchPressExerciseNameInclineSmithMachineBenchPress            BenchPressExerciseName = 10
	BenchPressExerciseNameIsometricBarbellBenchPress               BenchPressExerciseName = 11
	BenchPressExerciseNameKettlebellChestPress                     BenchPressExerciseName = 12
	BenchPressExerciseNameNeutralGripDumbbellBenchPress            BenchPressExerciseName = 13
	BenchPressExerciseNameNeutralGripDumbbellInclineBenchPress     BenchPressExerciseName = 14
	BenchPressExerciseNameOneArmFloorPress                         BenchPressExerciseName = 15
	BenchPressExerciseNameWeightedOneArmFloorPress                 BenchPressExerciseName = 16
	BenchPressExerciseNamePartialLockout                           BenchPressExerciseName = 17
	BenchPressExerciseNameReverseGripBarbellBenchPress             BenchPressExerciseName = 18
	BenchPressExerciseNameReverseGripInclineBenchPress             BenchPressExerciseName = 19
	BenchPressExerciseNameSingleArmCableChestPress                 BenchPressExerciseName = 20
	BenchPressExerciseNameSingleArmDumbbellBenchPress              BenchPressExerciseName = 21
	BenchPressExerciseNameSmithMachineBenchPress                   BenchPressExerciseName = 22
	BenchPressExerciseNameSwissBallDumbbellChestPress              BenchPressExerciseName = 23
	BenchPressExerciseNameTripleStopBarbellBenchPress              BenchPressExerciseName = 24
	BenchPressExerciseNameWideGripBarbellBenchPress                BenchPressExerciseName = 25
	BenchPressExerciseNameAlternatingDumbbellChestPress            BenchPressExerciseName = 26
	BenchPressExerciseNameInvalid                                  BenchPressExerciseName = 0xFFFF
)

func (BenchPressExerciseName) String

func (i BenchPressExerciseName) String() string

type BikeLightBeamAngleMode

type BikeLightBeamAngleMode uint8

BikeLightBeamAngleMode represents the bike_light_beam_angle_mode FIT type.

const (
	BikeLightBeamAngleModeManual  BikeLightBeamAngleMode = 0
	BikeLightBeamAngleModeAuto    BikeLightBeamAngleMode = 1
	BikeLightBeamAngleModeInvalid BikeLightBeamAngleMode = 0xFF
)

func (BikeLightBeamAngleMode) String

func (i BikeLightBeamAngleMode) String() string

type BikeLightNetworkConfigType

type BikeLightNetworkConfigType byte

BikeLightNetworkConfigType represents the bike_light_network_config_type FIT type.

const (
	BikeLightNetworkConfigTypeAuto           BikeLightNetworkConfigType = 0
	BikeLightNetworkConfigTypeIndividual     BikeLightNetworkConfigType = 4
	BikeLightNetworkConfigTypeHighVisibility BikeLightNetworkConfigType = 5
	BikeLightNetworkConfigTypeTrail          BikeLightNetworkConfigType = 6
	BikeLightNetworkConfigTypeInvalid        BikeLightNetworkConfigType = 0xFF
)

func (BikeLightNetworkConfigType) String

type BikeProfileMsg

type BikeProfileMsg struct {
	MessageIndex             MessageIndex
	Name                     string
	Sport                    Sport
	SubSport                 SubSport
	Odometer                 uint32
	BikeSpdAntId             uint16
	BikeCadAntId             uint16
	BikeSpdcadAntId          uint16
	BikePowerAntId           uint16
	CustomWheelsize          uint16
	AutoWheelsize            uint16
	BikeWeight               uint16
	PowerCalFactor           uint16
	AutoWheelCal             Bool
	AutoPowerZero            Bool
	Id                       uint8
	SpdEnabled               Bool
	CadEnabled               Bool
	SpdcadEnabled            Bool
	PowerEnabled             Bool
	CrankLength              uint8
	Enabled                  Bool
	BikeSpdAntIdTransType    uint8
	BikeCadAntIdTransType    uint8
	BikeSpdcadAntIdTransType uint8
	BikePowerAntIdTransType  uint8
	OdometerRollover         uint8   // Rollover counter that can be used to extend the odometer
	FrontGearNum             uint8   // Number of front gears
	FrontGear                []uint8 // Number of teeth on each gear 0 is innermost
	RearGearNum              uint8   // Number of rear gears
	RearGear                 []uint8 // Number of teeth on each gear 0 is innermost
	ShimanoDi2Enabled        Bool
}

BikeProfileMsg represents the bike_profile FIT message type.

func NewBikeProfileMsg

func NewBikeProfileMsg() *BikeProfileMsg

NewBikeProfileMsg returns a bike_profile FIT message initialized to all-invalid values.

func (*BikeProfileMsg) GetAutoWheelsizeScaled

func (x *BikeProfileMsg) GetAutoWheelsizeScaled() float64

GetAutoWheelsizeScaled returns AutoWheelsize with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*BikeProfileMsg) GetBikeWeightScaled

func (x *BikeProfileMsg) GetBikeWeightScaled() float64

GetBikeWeightScaled returns BikeWeight with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kg

func (*BikeProfileMsg) GetCrankLengthScaled

func (x *BikeProfileMsg) GetCrankLengthScaled() float64

GetCrankLengthScaled returns CrankLength with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: mm

func (*BikeProfileMsg) GetCustomWheelsizeScaled

func (x *BikeProfileMsg) GetCustomWheelsizeScaled() float64

GetCustomWheelsizeScaled returns CustomWheelsize with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*BikeProfileMsg) GetOdometerScaled

func (x *BikeProfileMsg) GetOdometerScaled() float64

GetOdometerScaled returns Odometer with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*BikeProfileMsg) GetPowerCalFactorScaled

func (x *BikeProfileMsg) GetPowerCalFactorScaled() float64

GetPowerCalFactorScaled returns PowerCalFactor with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

type BloodPressureFile

type BloodPressureFile struct {
	UserProfile    *UserProfileMsg
	BloodPressures []*BloodPressureMsg
	DeviceInfos    []*DeviceInfoMsg
}

BloodPressureFile represents the Bload Pressure FIT file type. Records blood pressure data.

type BloodPressureMsg

type BloodPressureMsg struct {
	Timestamp            time.Time
	SystolicPressure     uint16
	DiastolicPressure    uint16
	MeanArterialPressure uint16
	Map3SampleMean       uint16
	MapMorningValues     uint16
	MapEveningValues     uint16
	HeartRate            uint8
	HeartRateType        HrType
	Status               BpStatus
	UserProfileIndex     MessageIndex // Associates this blood pressure message to a user. This corresponds to the index of the user profile message in the blood pressure file.
}

BloodPressureMsg represents the blood_pressure FIT message type.

func NewBloodPressureMsg

func NewBloodPressureMsg() *BloodPressureMsg

NewBloodPressureMsg returns a blood_pressure FIT message initialized to all-invalid values.

type BodyLocation

type BodyLocation byte

BodyLocation represents the body_location FIT type.

const (
	BodyLocationLeftLeg               BodyLocation = 0
	BodyLocationLeftCalf              BodyLocation = 1
	BodyLocationLeftShin              BodyLocation = 2
	BodyLocationLeftHamstring         BodyLocation = 3
	BodyLocationLeftQuad              BodyLocation = 4
	BodyLocationLeftGlute             BodyLocation = 5
	BodyLocationRightLeg              BodyLocation = 6
	BodyLocationRightCalf             BodyLocation = 7
	BodyLocationRightShin             BodyLocation = 8
	BodyLocationRightHamstring        BodyLocation = 9
	BodyLocationRightQuad             BodyLocation = 10
	BodyLocationRightGlute            BodyLocation = 11
	BodyLocationTorsoBack             BodyLocation = 12
	BodyLocationLeftLowerBack         BodyLocation = 13
	BodyLocationLeftUpperBack         BodyLocation = 14
	BodyLocationRightLowerBack        BodyLocation = 15
	BodyLocationRightUpperBack        BodyLocation = 16
	BodyLocationTorsoFront            BodyLocation = 17
	BodyLocationLeftAbdomen           BodyLocation = 18
	BodyLocationLeftChest             BodyLocation = 19
	BodyLocationRightAbdomen          BodyLocation = 20
	BodyLocationRightChest            BodyLocation = 21
	BodyLocationLeftArm               BodyLocation = 22
	BodyLocationLeftShoulder          BodyLocation = 23
	BodyLocationLeftBicep             BodyLocation = 24
	BodyLocationLeftTricep            BodyLocation = 25
	BodyLocationLeftBrachioradialis   BodyLocation = 26 // Left anterior forearm
	BodyLocationLeftForearmExtensors  BodyLocation = 27 // Left posterior forearm
	BodyLocationRightArm              BodyLocation = 28
	BodyLocationRightShoulder         BodyLocation = 29
	BodyLocationRightBicep            BodyLocation = 30
	BodyLocationRightTricep           BodyLocation = 31
	BodyLocationRightBrachioradialis  BodyLocation = 32 // Right anterior forearm
	BodyLocationRightForearmExtensors BodyLocation = 33 // Right posterior forearm
	BodyLocationNeck                  BodyLocation = 34
	BodyLocationThroat                BodyLocation = 35
	BodyLocationWaistMidBack          BodyLocation = 36
	BodyLocationWaistFront            BodyLocation = 37
	BodyLocationWaistLeft             BodyLocation = 38
	BodyLocationWaistRight            BodyLocation = 39
	BodyLocationInvalid               BodyLocation = 0xFF
)

func (BodyLocation) String

func (i BodyLocation) String() string

type Bool

type Bool byte
const (
	BoolFalse   Bool = 0
	BoolTrue    Bool = 1
	BoolInvalid Bool = 255
)

func (Bool) String

func (i Bool) String() string

type BpStatus

type BpStatus byte

BpStatus represents the bp_status FIT type.

const (
	BpStatusNoError                 BpStatus = 0
	BpStatusErrorIncompleteData     BpStatus = 1
	BpStatusErrorNoMeasurement      BpStatus = 2
	BpStatusErrorDataOutOfRange     BpStatus = 3
	BpStatusErrorIrregularHeartRate BpStatus = 4
	BpStatusInvalid                 BpStatus = 0xFF
)

func (BpStatus) String

func (i BpStatus) String() string

type CadenceZoneMsg

type CadenceZoneMsg struct {
	MessageIndex MessageIndex
	HighValue    uint8
	Name         string
}

CadenceZoneMsg represents the cadence_zone FIT message type.

func NewCadenceZoneMsg

func NewCadenceZoneMsg() *CadenceZoneMsg

NewCadenceZoneMsg returns a cadence_zone FIT message initialized to all-invalid values.

type CalfRaiseExerciseName

type CalfRaiseExerciseName uint16

CalfRaiseExerciseName represents the calf_raise_exercise_name FIT type.

const (
	CalfRaiseExerciseName3WayCalfRaise                      CalfRaiseExerciseName = 0
	CalfRaiseExerciseName3WayWeightedCalfRaise              CalfRaiseExerciseName = 1
	CalfRaiseExerciseName3WaySingleLegCalfRaise             CalfRaiseExerciseName = 2
	CalfRaiseExerciseName3WayWeightedSingleLegCalfRaise     CalfRaiseExerciseName = 3
	CalfRaiseExerciseNameDonkeyCalfRaise                    CalfRaiseExerciseName = 4
	CalfRaiseExerciseNameWeightedDonkeyCalfRaise            CalfRaiseExerciseName = 5
	CalfRaiseExerciseNameSeatedCalfRaise                    CalfRaiseExerciseName = 6
	CalfRaiseExerciseNameWeightedSeatedCalfRaise            CalfRaiseExerciseName = 7
	CalfRaiseExerciseNameSeatedDumbbellToeRaise             CalfRaiseExerciseName = 8
	CalfRaiseExerciseNameSingleLegBentKneeCalfRaise         CalfRaiseExerciseName = 9
	CalfRaiseExerciseNameWeightedSingleLegBentKneeCalfRaise CalfRaiseExerciseName = 10
	CalfRaiseExerciseNameSingleLegDeclinePushUp             CalfRaiseExerciseName = 11
	CalfRaiseExerciseNameSingleLegDonkeyCalfRaise           CalfRaiseExerciseName = 12
	CalfRaiseExerciseNameWeightedSingleLegDonkeyCalfRaise   CalfRaiseExerciseName = 13
	CalfRaiseExerciseNameSingleLegHipRaiseWithKneeHold      CalfRaiseExerciseName = 14
	CalfRaiseExerciseNameSingleLegStandingCalfRaise         CalfRaiseExerciseName = 15
	CalfRaiseExerciseNameSingleLegStandingDumbbellCalfRaise CalfRaiseExerciseName = 16
	CalfRaiseExerciseNameStandingBarbellCalfRaise           CalfRaiseExerciseName = 17
	CalfRaiseExerciseNameStandingCalfRaise                  CalfRaiseExerciseName = 18
	CalfRaiseExerciseNameWeightedStandingCalfRaise          CalfRaiseExerciseName = 19
	CalfRaiseExerciseNameStandingDumbbellCalfRaise          CalfRaiseExerciseName = 20
	CalfRaiseExerciseNameInvalid                            CalfRaiseExerciseName = 0xFFFF
)

func (CalfRaiseExerciseName) String

func (i CalfRaiseExerciseName) String() string

type CameraEventMsg

type CameraEventMsg struct {
}

CameraEventMsg represents the camera_event FIT message type.

func NewCameraEventMsg

func NewCameraEventMsg() *CameraEventMsg

NewCameraEventMsg returns a camera_event FIT message initialized to all-invalid values.

type CameraEventType

type CameraEventType byte

CameraEventType represents the camera_event_type FIT type.

const (
	CameraEventTypeVideoStart                  CameraEventType = 0 // Start of video recording
	CameraEventTypeVideoSplit                  CameraEventType = 1 // Mark of video file split (end of one file, beginning of the other)
	CameraEventTypeVideoEnd                    CameraEventType = 2 // End of video recording
	CameraEventTypePhotoTaken                  CameraEventType = 3 // Still photo taken
	CameraEventTypeVideoSecondStreamStart      CameraEventType = 4
	CameraEventTypeVideoSecondStreamSplit      CameraEventType = 5
	CameraEventTypeVideoSecondStreamEnd        CameraEventType = 6
	CameraEventTypeVideoSplitStart             CameraEventType = 7 // Mark of video file split start
	CameraEventTypeVideoSecondStreamSplitStart CameraEventType = 8
	CameraEventTypeVideoPause                  CameraEventType = 11 // Mark when a video recording has been paused
	CameraEventTypeVideoSecondStreamPause      CameraEventType = 12
	CameraEventTypeVideoResume                 CameraEventType = 13 // Mark when a video recording has been resumed
	CameraEventTypeVideoSecondStreamResume     CameraEventType = 14
	CameraEventTypeInvalid                     CameraEventType = 0xFF
)

func (CameraEventType) String

func (i CameraEventType) String() string

type CameraOrientationType

type CameraOrientationType byte

CameraOrientationType represents the camera_orientation_type FIT type.

const (
	CameraOrientationTypeCameraOrientation0   CameraOrientationType = 0
	CameraOrientationTypeCameraOrientation90  CameraOrientationType = 1
	CameraOrientationTypeCameraOrientation180 CameraOrientationType = 2
	CameraOrientationTypeCameraOrientation270 CameraOrientationType = 3
	CameraOrientationTypeInvalid              CameraOrientationType = 0xFF
)

func (CameraOrientationType) String

func (i CameraOrientationType) String() string

type CapabilitiesMsg

type CapabilitiesMsg struct {
	Languages             []uint8      // Use language_bits_x types where x is index of array.
	Sports                []SportBits0 // Use sport_bits_x types where x is index of array.
	WorkoutsSupported     WorkoutCapabilities
	ConnectivitySupported ConnectivityCapabilities
}

CapabilitiesMsg represents the capabilities FIT message type.

func NewCapabilitiesMsg

func NewCapabilitiesMsg() *CapabilitiesMsg

NewCapabilitiesMsg returns a capabilities FIT message initialized to all-invalid values.

type CardioExerciseName

type CardioExerciseName uint16

CardioExerciseName represents the cardio_exercise_name FIT type.

const (
	CardioExerciseNameBobAndWeaveCircle         CardioExerciseName = 0
	CardioExerciseNameWeightedBobAndWeaveCircle CardioExerciseName = 1
	CardioExerciseNameCardioCoreCrawl           CardioExerciseName = 2
	CardioExerciseNameWeightedCardioCoreCrawl   CardioExerciseName = 3
	CardioExerciseNameDoubleUnder               CardioExerciseName = 4
	CardioExerciseNameWeightedDoubleUnder       CardioExerciseName = 5
	CardioExerciseNameJumpRope                  CardioExerciseName = 6
	CardioExerciseNameWeightedJumpRope          CardioExerciseName = 7
	CardioExerciseNameJumpRopeCrossover         CardioExerciseName = 8
	CardioExerciseNameWeightedJumpRopeCrossover CardioExerciseName = 9
	CardioExerciseNameJumpRopeJog               CardioExerciseName = 10
	CardioExerciseNameWeightedJumpRopeJog       CardioExerciseName = 11
	CardioExerciseNameJumpingJacks              CardioExerciseName = 12
	CardioExerciseNameWeightedJumpingJacks      CardioExerciseName = 13
	CardioExerciseNameSkiMoguls                 CardioExerciseName = 14
	CardioExerciseNameWeightedSkiMoguls         CardioExerciseName = 15
	CardioExerciseNameSplitJacks                CardioExerciseName = 16
	CardioExerciseNameWeightedSplitJacks        CardioExerciseName = 17
	CardioExerciseNameSquatJacks                CardioExerciseName = 18
	CardioExerciseNameWeightedSquatJacks        CardioExerciseName = 19
	CardioExerciseNameTripleUnder               CardioExerciseName = 20
	CardioExerciseNameWeightedTripleUnder       CardioExerciseName = 21
	CardioExerciseNameInvalid                   CardioExerciseName = 0xFFFF
)

func (CardioExerciseName) String

func (i CardioExerciseName) String() string

type CarryExerciseName

type CarryExerciseName uint16

CarryExerciseName represents the carry_exercise_name FIT type.

const (
	CarryExerciseNameBarHolds          CarryExerciseName = 0
	CarryExerciseNameFarmersWalk       CarryExerciseName = 1
	CarryExerciseNameFarmersWalkOnToes CarryExerciseName = 2
	CarryExerciseNameHexDumbbellHold   CarryExerciseName = 3
	CarryExerciseNameOverheadCarry     CarryExerciseName = 4
	CarryExerciseNameInvalid           CarryExerciseName = 0xFFFF
)

func (CarryExerciseName) String

func (i CarryExerciseName) String() string

type Checksum

type Checksum uint8

Checksum represents the checksum FIT type.

const (
	ChecksumClear   Checksum = 0 // Allows clear of checksum for flash memory where can only write 1 to 0 without erasing sector.
	ChecksumOk      Checksum = 1 // Set to mark checksum as valid if computes to invalid values 0 or 0xFF. Checksum can also be set to ok to save encoding computation time.
	ChecksumInvalid Checksum = 0xFF
)

func (Checksum) String

func (i Checksum) String() string

type ChopExerciseName

type ChopExerciseName uint16

ChopExerciseName represents the chop_exercise_name FIT type.

const (
	ChopExerciseNameCablePullThrough                   ChopExerciseName = 0
	ChopExerciseNameCableRotationalLift                ChopExerciseName = 1
	ChopExerciseNameCableWoodchop                      ChopExerciseName = 2
	ChopExerciseNameCrossChopToKnee                    ChopExerciseName = 3
	ChopExerciseNameWeightedCrossChopToKnee            ChopExerciseName = 4
	ChopExerciseNameDumbbellChop                       ChopExerciseName = 5
	ChopExerciseNameHalfKneelingRotation               ChopExerciseName = 6
	ChopExerciseNameWeightedHalfKneelingRotation       ChopExerciseName = 7
	ChopExerciseNameHalfKneelingRotationalChop         ChopExerciseName = 8
	ChopExerciseNameHalfKneelingRotationalReverseChop  ChopExerciseName = 9
	ChopExerciseNameHalfKneelingStabilityChop          ChopExerciseName = 10
	ChopExerciseNameHalfKneelingStabilityReverseChop   ChopExerciseName = 11
	ChopExerciseNameKneelingRotationalChop             ChopExerciseName = 12
	ChopExerciseNameKneelingRotationalReverseChop      ChopExerciseName = 13
	ChopExerciseNameKneelingStabilityChop              ChopExerciseName = 14
	ChopExerciseNameKneelingWoodchopper                ChopExerciseName = 15
	ChopExerciseNameMedicineBallWoodChops              ChopExerciseName = 16
	ChopExerciseNamePowerSquatChops                    ChopExerciseName = 17
	ChopExerciseNameWeightedPowerSquatChops            ChopExerciseName = 18
	ChopExerciseNameStandingRotationalChop             ChopExerciseName = 19
	ChopExerciseNameStandingSplitRotationalChop        ChopExerciseName = 20
	ChopExerciseNameStandingSplitRotationalReverseChop ChopExerciseName = 21
	ChopExerciseNameStandingStabilityReverseChop       ChopExerciseName = 22
	ChopExerciseNameInvalid                            ChopExerciseName = 0xFFFF
)

func (ChopExerciseName) String

func (i ChopExerciseName) String() string

type ClimbProEvent

type ClimbProEvent byte

ClimbProEvent represents the climb_pro_event FIT type.

const (
	ClimbProEventApproach ClimbProEvent = 0
	ClimbProEventStart    ClimbProEvent = 1
	ClimbProEventComplete ClimbProEvent = 2
	ClimbProEventInvalid  ClimbProEvent = 0xFF
)

func (ClimbProEvent) String

func (i ClimbProEvent) String() string

type ClimbProMsg

type ClimbProMsg struct {
}

ClimbProMsg represents the climb_pro FIT message type.

func NewClimbProMsg

func NewClimbProMsg() *ClimbProMsg

NewClimbProMsg returns a climb_pro FIT message initialized to all-invalid values.

type CommTimeoutType

type CommTimeoutType uint16

CommTimeoutType represents the comm_timeout_type FIT type.

const (
	CommTimeoutTypeWildcardPairingTimeout CommTimeoutType = 0 // Timeout pairing to any device
	CommTimeoutTypePairingTimeout         CommTimeoutType = 1 // Timeout pairing to previously paired device
	CommTimeoutTypeConnectionLost         CommTimeoutType = 2 // Temporary loss of communications
	CommTimeoutTypeConnectionTimeout      CommTimeoutType = 3 // Connection closed due to extended bad communications
	CommTimeoutTypeInvalid                CommTimeoutType = 0xFFFF
)

func (CommTimeoutType) String

func (i CommTimeoutType) String() string

type ConnectivityCapabilities

type ConnectivityCapabilities uint32

ConnectivityCapabilities represents the connectivity_capabilities FIT type.

const (
	ConnectivityCapabilitiesBluetooth                       ConnectivityCapabilities = 0x00000001
	ConnectivityCapabilitiesBluetoothLe                     ConnectivityCapabilities = 0x00000002
	ConnectivityCapabilitiesAnt                             ConnectivityCapabilities = 0x00000004
	ConnectivityCapabilitiesActivityUpload                  ConnectivityCapabilities = 0x00000008
	ConnectivityCapabilitiesCourseDownload                  ConnectivityCapabilities = 0x00000010
	ConnectivityCapabilitiesWorkoutDownload                 ConnectivityCapabilities = 0x00000020
	ConnectivityCapabilitiesLiveTrack                       ConnectivityCapabilities = 0x00000040
	ConnectivityCapabilitiesWeatherConditions               ConnectivityCapabilities = 0x00000080
	ConnectivityCapabilitiesWeatherAlerts                   ConnectivityCapabilities = 0x00000100
	ConnectivityCapabilitiesGpsEphemerisDownload            ConnectivityCapabilities = 0x00000200
	ConnectivityCapabilitiesExplicitArchive                 ConnectivityCapabilities = 0x00000400
	ConnectivityCapabilitiesSetupIncomplete                 ConnectivityCapabilities = 0x00000800
	ConnectivityCapabilitiesContinueSyncAfterSoftwareUpdate ConnectivityCapabilities = 0x00001000
	ConnectivityCapabilitiesConnectIqAppDownload            ConnectivityCapabilities = 0x00002000
	ConnectivityCapabilitiesGolfCourseDownload              ConnectivityCapabilities = 0x00004000
	ConnectivityCapabilitiesDeviceInitiatesSync             ConnectivityCapabilities = 0x00008000 // Indicates device is in control of initiating all syncs
	ConnectivityCapabilitiesConnectIqWatchAppDownload       ConnectivityCapabilities = 0x00010000
	ConnectivityCapabilitiesConnectIqWidgetDownload         ConnectivityCapabilities = 0x00020000
	ConnectivityCapabilitiesConnectIqWatchFaceDownload      ConnectivityCapabilities = 0x00040000
	ConnectivityCapabilitiesConnectIqDataFieldDownload      ConnectivityCapabilities = 0x00080000
	ConnectivityCapabilitiesConnectIqAppManagment           ConnectivityCapabilities = 0x00100000 // Device supports delete and reorder of apps via GCM
	ConnectivityCapabilitiesSwingSensor                     ConnectivityCapabilities = 0x00200000
	ConnectivityCapabilitiesSwingSensorRemote               ConnectivityCapabilities = 0x00400000
	ConnectivityCapabilitiesIncidentDetection               ConnectivityCapabilities = 0x00800000 // Device supports incident detection
	ConnectivityCapabilitiesAudioPrompts                    ConnectivityCapabilities = 0x01000000
	ConnectivityCapabilitiesWifiVerification                ConnectivityCapabilities = 0x02000000 // Device supports reporting wifi verification via GCM
	ConnectivityCapabilitiesTrueUp                          ConnectivityCapabilities = 0x04000000 // Device supports True Up
	ConnectivityCapabilitiesFindMyWatch                     ConnectivityCapabilities = 0x08000000 // Device supports Find My Watch
	ConnectivityCapabilitiesRemoteManualSync                ConnectivityCapabilities = 0x10000000
	ConnectivityCapabilitiesLiveTrackAutoStart              ConnectivityCapabilities = 0x20000000 // Device supports LiveTrack auto start
	ConnectivityCapabilitiesLiveTrackMessaging              ConnectivityCapabilities = 0x40000000 // Device supports LiveTrack Messaging
	ConnectivityCapabilitiesInstantInput                    ConnectivityCapabilities = 0x80000000 // Device supports instant input feature
	ConnectivityCapabilitiesInvalid                         ConnectivityCapabilities = 0x00000000
)

func (ConnectivityCapabilities) String

func (i ConnectivityCapabilities) String() string

type ConnectivityMsg

type ConnectivityMsg struct {
	BluetoothEnabled            Bool // Use Bluetooth for connectivity features
	BluetoothLeEnabled          Bool // Use Bluetooth Low Energy for connectivity features
	AntEnabled                  Bool // Use ANT for connectivity features
	Name                        string
	LiveTrackingEnabled         Bool
	WeatherConditionsEnabled    Bool
	WeatherAlertsEnabled        Bool
	AutoActivityUploadEnabled   Bool
	CourseDownloadEnabled       Bool
	WorkoutDownloadEnabled      Bool
	GpsEphemerisDownloadEnabled Bool
	IncidentDetectionEnabled    Bool
	GrouptrackEnabled           Bool
}

ConnectivityMsg represents the connectivity FIT message type.

func NewConnectivityMsg

func NewConnectivityMsg() *ConnectivityMsg

NewConnectivityMsg returns a connectivity FIT message initialized to all-invalid values.

type CoreExerciseName

type CoreExerciseName uint16

CoreExerciseName represents the core_exercise_name FIT type.

const (
	CoreExerciseNameAbsJabs                          CoreExerciseName = 0
	CoreExerciseNameWeightedAbsJabs                  CoreExerciseName = 1
	CoreExerciseNameAlternatingPlateReach            CoreExerciseName = 2
	CoreExerciseNameBarbellRollout                   CoreExerciseName = 3
	CoreExerciseNameWeightedBarbellRollout           CoreExerciseName = 4
	CoreExerciseNameBodyBarObliqueTwist              CoreExerciseName = 5
	CoreExerciseNameCableCorePress                   CoreExerciseName = 6
	CoreExerciseNameCableSideBend                    CoreExerciseName = 7
	CoreExerciseNameSideBend                         CoreExerciseName = 8
	CoreExerciseNameWeightedSideBend                 CoreExerciseName = 9
	CoreExerciseNameCrescentCircle                   CoreExerciseName = 10
	CoreExerciseNameWeightedCrescentCircle           CoreExerciseName = 11
	CoreExerciseNameCyclingRussianTwist              CoreExerciseName = 12
	CoreExerciseNameWeightedCyclingRussianTwist      CoreExerciseName = 13
	CoreExerciseNameElevatedFeetRussianTwist         CoreExerciseName = 14
	CoreExerciseNameWeightedElevatedFeetRussianTwist CoreExerciseName = 15
	CoreExerciseNameHalfTurkishGetUp                 CoreExerciseName = 16
	CoreExerciseNameKettlebellWindmill               CoreExerciseName = 17
	CoreExerciseNameKneelingAbWheel                  CoreExerciseName = 18
	CoreExerciseNameWeightedKneelingAbWheel          CoreExerciseName = 19
	CoreExerciseNameModifiedFrontLever               CoreExerciseName = 20
	CoreExerciseNameOpenKneeTucks                    CoreExerciseName = 21
	CoreExerciseNameWeightedOpenKneeTucks            CoreExerciseName = 22
	CoreExerciseNameSideAbsLegLift                   CoreExerciseName = 23
	CoreExerciseNameWeightedSideAbsLegLift           CoreExerciseName = 24
	CoreExerciseNameSwissBallJackknife               CoreExerciseName = 25
	CoreExerciseNameWeightedSwissBallJackknife       CoreExerciseName = 26
	CoreExerciseNameSwissBallPike                    CoreExerciseName = 27
	CoreExerciseNameWeightedSwissBallPike            CoreExerciseName = 28
	CoreExerciseNameSwissBallRollout                 CoreExerciseName = 29
	CoreExerciseNameWeightedSwissBallRollout         CoreExerciseName = 30
	CoreExerciseNameTriangleHipPress                 CoreExerciseName = 31
	CoreExerciseNameWeightedTriangleHipPress         CoreExerciseName = 32
	CoreExerciseNameTrxSuspendedJackknife            CoreExerciseName = 33
	CoreExerciseNameWeightedTrxSuspendedJackknife    CoreExerciseName = 34
	CoreExerciseNameUBoat                            CoreExerciseName = 35
	CoreExerciseNameWeightedUBoat                    CoreExerciseName = 36
	CoreExerciseNameWindmillSwitches                 CoreExerciseName = 37
	CoreExerciseNameWeightedWindmillSwitches         CoreExerciseName = 38
	CoreExerciseNameAlternatingSlideOut              CoreExerciseName = 39
	CoreExerciseNameWeightedAlternatingSlideOut      CoreExerciseName = 40
	CoreExerciseNameGhdBackExtensions                CoreExerciseName = 41
	CoreExerciseNameWeightedGhdBackExtensions        CoreExerciseName = 42
	CoreExerciseNameOverheadWalk                     CoreExerciseName = 43
	CoreExerciseNameInchworm                         CoreExerciseName = 44
	CoreExerciseNameWeightedModifiedFrontLever       CoreExerciseName = 45
	CoreExerciseNameRussianTwist                     CoreExerciseName = 46
	CoreExerciseNameAbdominalLegRotations            CoreExerciseName = 47 // Deprecated do not use
	CoreExerciseNameArmAndLegExtensionOnKnees        CoreExerciseName = 48
	CoreExerciseNameBicycle                          CoreExerciseName = 49
	CoreExerciseNameBicepCurlWithLegExtension        CoreExerciseName = 50
	CoreExerciseNameCatCow                           CoreExerciseName = 51
	CoreExerciseNameCorkscrew                        CoreExerciseName = 52
	CoreExerciseNameCrissCross                       CoreExerciseName = 53
	CoreExerciseNameCrissCrossWithBall               CoreExerciseName = 54 // Deprecated do not use
	CoreExerciseNameDoubleLegStretch                 CoreExerciseName = 55
	CoreExerciseNameKneeFolds                        CoreExerciseName = 56
	CoreExerciseNameLowerLift                        CoreExerciseName = 57
	CoreExerciseNameNeckPull                         CoreExerciseName = 58
	CoreExerciseNamePelvicClocks                     CoreExerciseName = 59
	CoreExerciseNameRollOver                         CoreExerciseName = 60
	CoreExerciseNameRollUp                           CoreExerciseName = 61
	CoreExerciseNameRolling                          CoreExerciseName = 62
	CoreExerciseNameRowing1                          CoreExerciseName = 63
	CoreExerciseNameRowing2                          CoreExerciseName = 64
	CoreExerciseNameScissors                         CoreExerciseName = 65
	CoreExerciseNameSingleLegCircles                 CoreExerciseName = 66
	CoreExerciseNameSingleLegStretch                 CoreExerciseName = 67
	CoreExerciseNameSnakeTwist1And2                  CoreExerciseName = 68 // Deprecated do not use
	CoreExerciseNameSwan                             CoreExerciseName = 69
	CoreExerciseNameSwimming                         CoreExerciseName = 70
	CoreExerciseNameTeaser                           CoreExerciseName = 71
	CoreExerciseNameTheHundred                       CoreExerciseName = 72
	CoreExerciseNameInvalid                          CoreExerciseName = 0xFFFF
)

func (CoreExerciseName) String

func (i CoreExerciseName) String() string

type CourseCapabilities

type CourseCapabilities uint32

CourseCapabilities represents the course_capabilities FIT type.

const (
	CourseCapabilitiesProcessed  CourseCapabilities = 0x00000001
	CourseCapabilitiesValid      CourseCapabilities = 0x00000002
	CourseCapabilitiesTime       CourseCapabilities = 0x00000004
	CourseCapabilitiesDistance   CourseCapabilities = 0x00000008
	CourseCapabilitiesPosition   CourseCapabilities = 0x00000010
	CourseCapabilitiesHeartRate  CourseCapabilities = 0x00000020
	CourseCapabilitiesPower      CourseCapabilities = 0x00000040
	CourseCapabilitiesCadence    CourseCapabilities = 0x00000080
	CourseCapabilitiesTraining   CourseCapabilities = 0x00000100
	CourseCapabilitiesNavigation CourseCapabilities = 0x00000200
	CourseCapabilitiesBikeway    CourseCapabilities = 0x00000400
	CourseCapabilitiesInvalid    CourseCapabilities = 0x00000000
)

func (CourseCapabilities) String

func (i CourseCapabilities) String() string

type CourseFile

type CourseFile struct {
	Course       *CourseMsg
	Laps         []*LapMsg
	CoursePoints []*CoursePointMsg
	Events       []*EventMsg
	Records      []*RecordMsg
}

CourseFile represents the Course FIT file type. Uses data from an activity to recreate a course.

type CourseMsg

type CourseMsg struct {
	Sport        Sport
	Name         string
	Capabilities CourseCapabilities
	SubSport     SubSport
}

CourseMsg represents the course FIT message type.

func NewCourseMsg

func NewCourseMsg() *CourseMsg

NewCourseMsg returns a course FIT message initialized to all-invalid values.

type CoursePoint

type CoursePoint byte

CoursePoint represents the course_point FIT type.

const (
	CoursePointGeneric         CoursePoint = 0
	CoursePointSummit          CoursePoint = 1
	CoursePointValley          CoursePoint = 2
	CoursePointWater           CoursePoint = 3
	CoursePointFood            CoursePoint = 4
	CoursePointDanger          CoursePoint = 5
	CoursePointLeft            CoursePoint = 6
	CoursePointRight           CoursePoint = 7
	CoursePointStraight        CoursePoint = 8
	CoursePointFirstAid        CoursePoint = 9
	CoursePointFourthCategory  CoursePoint = 10
	CoursePointThirdCategory   CoursePoint = 11
	CoursePointSecondCategory  CoursePoint = 12
	CoursePointFirstCategory   CoursePoint = 13
	CoursePointHorsCategory    CoursePoint = 14
	CoursePointSprint          CoursePoint = 15
	CoursePointLeftFork        CoursePoint = 16
	CoursePointRightFork       CoursePoint = 17
	CoursePointMiddleFork      CoursePoint = 18
	CoursePointSlightLeft      CoursePoint = 19
	CoursePointSharpLeft       CoursePoint = 20
	CoursePointSlightRight     CoursePoint = 21
	CoursePointSharpRight      CoursePoint = 22
	CoursePointUTurn           CoursePoint = 23
	CoursePointSegmentStart    CoursePoint = 24
	CoursePointSegmentEnd      CoursePoint = 25
	CoursePointCampsite        CoursePoint = 27
	CoursePointAidStation      CoursePoint = 28
	CoursePointRestArea        CoursePoint = 29
	CoursePointGeneralDistance CoursePoint = 30 // Used with UpAhead
	CoursePointService         CoursePoint = 31
	CoursePointEnergyGel       CoursePoint = 32
	CoursePointSportsDrink     CoursePoint = 33
	CoursePointMileMarker      CoursePoint = 34
	CoursePointCheckpoint      CoursePoint = 35
	CoursePointShelter         CoursePoint = 36
	CoursePointMeetingSpot     CoursePoint = 37
	CoursePointOverlook        CoursePoint = 38
	CoursePointToilet          CoursePoint = 39
	CoursePointShower          CoursePoint = 40
	CoursePointGear            CoursePoint = 41
	CoursePointSharpCurve      CoursePoint = 42
	CoursePointSteepIncline    CoursePoint = 43
	CoursePointTunnel          CoursePoint = 44
	CoursePointBridge          CoursePoint = 45
	CoursePointObstacle        CoursePoint = 46
	CoursePointCrossing        CoursePoint = 47
	CoursePointStore           CoursePoint = 48
	CoursePointTransition      CoursePoint = 49
	CoursePointNavaid          CoursePoint = 50
	CoursePointTransport       CoursePoint = 51
	CoursePointAlert           CoursePoint = 52
	CoursePointInfo            CoursePoint = 53
	CoursePointInvalid         CoursePoint = 0xFF
)

func (CoursePoint) String

func (i CoursePoint) String() string

type CoursePointMsg

type CoursePointMsg struct {
	MessageIndex MessageIndex
	Timestamp    time.Time
	PositionLat  Latitude
	PositionLong Longitude
	Distance     uint32
	Type         CoursePoint
	Name         string
	Favorite     Bool
}

CoursePointMsg represents the course_point FIT message type.

func NewCoursePointMsg

func NewCoursePointMsg() *CoursePointMsg

NewCoursePointMsg returns a course_point FIT message initialized to all-invalid values.

func (*CoursePointMsg) GetDistanceScaled

func (x *CoursePointMsg) GetDistanceScaled() float64

GetDistanceScaled returns Distance with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

type CrunchExerciseName

type CrunchExerciseName uint16

CrunchExerciseName represents the crunch_exercise_name FIT type.

const (
	CrunchExerciseNameBicycleCrunch                           CrunchExerciseName = 0
	CrunchExerciseNameCableCrunch                             CrunchExerciseName = 1
	CrunchExerciseNameCircularArmCrunch                       CrunchExerciseName = 2
	CrunchExerciseNameCrossedArmsCrunch                       CrunchExerciseName = 3
	CrunchExerciseNameWeightedCrossedArmsCrunch               CrunchExerciseName = 4
	CrunchExerciseNameCrossLegReverseCrunch                   CrunchExerciseName = 5
	CrunchExerciseNameWeightedCrossLegReverseCrunch           CrunchExerciseName = 6
	CrunchExerciseNameCrunchChop                              CrunchExerciseName = 7
	CrunchExerciseNameWeightedCrunchChop                      CrunchExerciseName = 8
	CrunchExerciseNameDoubleCrunch                            CrunchExerciseName = 9
	CrunchExerciseNameWeightedDoubleCrunch                    CrunchExerciseName = 10
	CrunchExerciseNameElbowToKneeCrunch                       CrunchExerciseName = 11
	CrunchExerciseNameWeightedElbowToKneeCrunch               CrunchExerciseName = 12
	CrunchExerciseNameFlutterKicks                            CrunchExerciseName = 13
	CrunchExerciseNameWeightedFlutterKicks                    CrunchExerciseName = 14
	CrunchExerciseNameFoamRollerReverseCrunchOnBench          CrunchExerciseName = 15
	CrunchExerciseNameWeightedFoamRollerReverseCrunchOnBench  CrunchExerciseName = 16
	CrunchExerciseNameFoamRollerReverseCrunchWithDumbbell     CrunchExerciseName = 17
	CrunchExerciseNameFoamRollerReverseCrunchWithMedicineBall CrunchExerciseName = 18
	CrunchExerciseNameFrogPress                               CrunchExerciseName = 19
	CrunchExerciseNameHangingKneeRaiseObliqueCrunch           CrunchExerciseName = 20
	CrunchExerciseNameWeightedHangingKneeRaiseObliqueCrunch   CrunchExerciseName = 21
	CrunchExerciseNameHipCrossover                            CrunchExerciseName = 22
	CrunchExerciseNameWeightedHipCrossover                    CrunchExerciseName = 23
	CrunchExerciseNameHollowRock                              CrunchExerciseName = 24
	CrunchExerciseNameWeightedHollowRock                      CrunchExerciseName = 25
	CrunchExerciseNameInclineReverseCrunch                    CrunchExerciseName = 26
	CrunchExerciseNameWeightedInclineReverseCrunch            CrunchExerciseName = 27
	CrunchExerciseNameKneelingCableCrunch                     CrunchExerciseName = 28
	CrunchExerciseNameKneelingCrossCrunch                     CrunchExerciseName = 29
	CrunchExerciseNameWeightedKneelingCrossCrunch             CrunchExerciseName = 30
	CrunchExerciseNameKneelingObliqueCableCrunch              CrunchExerciseName = 31
	CrunchExerciseNameKneesToElbow                            CrunchExerciseName = 32
	CrunchExerciseNameLegExtensions                           CrunchExerciseName = 33
	CrunchExerciseNameWeightedLegExtensions                   CrunchExerciseName = 34
	CrunchExerciseNameLegLevers                               CrunchExerciseName = 35
	CrunchExerciseNameMcgillCurlUp                            CrunchExerciseName = 36
	CrunchExerciseNameWeightedMcgillCurlUp                    CrunchExerciseName = 37
	CrunchExerciseNameModifiedPilatesRollUpWithBall           CrunchExerciseName = 38
	CrunchExerciseNameWeightedModifiedPilatesRollUpWithBall   CrunchExerciseName = 39
	CrunchExerciseNamePilatesCrunch                           CrunchExerciseName = 40
	CrunchExerciseNameWeightedPilatesCrunch                   CrunchExerciseName = 41
	CrunchExerciseNamePilatesRollUpWithBall                   CrunchExerciseName = 42
	CrunchExerciseNameWeightedPilatesRollUpWithBall           CrunchExerciseName = 43
	CrunchExerciseNameRaisedLegsCrunch                        CrunchExerciseName = 44
	CrunchExerciseNameWeightedRaisedLegsCrunch                CrunchExerciseName = 45
	CrunchExerciseNameReverseCrunch                           CrunchExerciseName = 46
	CrunchExerciseNameWeightedReverseCrunch                   CrunchExerciseName = 47
	CrunchExerciseNameReverseCrunchOnABench                   CrunchExerciseName = 48
	CrunchExerciseNameWeightedReverseCrunchOnABench           CrunchExerciseName = 49
	CrunchExerciseNameReverseCurlAndLift                      CrunchExerciseName = 50
	CrunchExerciseNameWeightedReverseCurlAndLift              CrunchExerciseName = 51
	CrunchExerciseNameRotationalLift                          CrunchExerciseName = 52
	CrunchExerciseNameWeightedRotationalLift                  CrunchExerciseName = 53
	CrunchExerciseNameSeatedAlternatingReverseCrunch          CrunchExerciseName = 54
	CrunchExerciseNameWeightedSeatedAlternatingReverseCrunch  CrunchExerciseName = 55
	CrunchExerciseNameSeatedLegU                              CrunchExerciseName = 56
	CrunchExerciseNameWeightedSeatedLegU                      CrunchExerciseName = 57
	CrunchExerciseNameSideToSideCrunchAndWeave                CrunchExerciseName = 58
	CrunchExerciseNameWeightedSideToSideCrunchAndWeave        CrunchExerciseName = 59
	CrunchExerciseNameSingleLegReverseCrunch                  CrunchExerciseName = 60
	CrunchExerciseNameWeightedSingleLegReverseCrunch          CrunchExerciseName = 61
	CrunchExerciseNameSkaterCrunchCross                       CrunchExerciseName = 62
	CrunchExerciseNameWeightedSkaterCrunchCross               CrunchExerciseName = 63
	CrunchExerciseNameStandingCableCrunch                     CrunchExerciseName = 64
	CrunchExerciseNameStandingSideCrunch                      CrunchExerciseName = 65
	CrunchExerciseNameStepClimb                               CrunchExerciseName = 66
	CrunchExerciseNameWeightedStepClimb                       CrunchExerciseName = 67
	CrunchExerciseNameSwissBallCrunch                         CrunchExerciseName = 68
	CrunchExerciseNameSwissBallReverseCrunch                  CrunchExerciseName = 69
	CrunchExerciseNameWeightedSwissBallReverseCrunch          CrunchExerciseName = 70
	CrunchExerciseNameSwissBallRussianTwist                   CrunchExerciseName = 71
	CrunchExerciseNameWeightedSwissBallRussianTwist           CrunchExerciseName = 72
	CrunchExerciseNameSwissBallSideCrunch                     CrunchExerciseName = 73
	CrunchExerciseNameWeightedSwissBallSideCrunch             CrunchExerciseName = 74
	CrunchExerciseNameThoracicCrunchesOnFoamRoller            CrunchExerciseName = 75
	CrunchExerciseNameWeightedThoracicCrunchesOnFoamRoller    CrunchExerciseName = 76
	CrunchExerciseNameTricepsCrunch                           CrunchExerciseName = 77
	CrunchExerciseNameWeightedBicycleCrunch                   CrunchExerciseName = 78
	CrunchExerciseNameWeightedCrunch                          CrunchExerciseName = 79
	CrunchExerciseNameWeightedSwissBallCrunch                 CrunchExerciseName = 80
	CrunchExerciseNameToesToBar                               CrunchExerciseName = 81
	CrunchExerciseNameWeightedToesToBar                       CrunchExerciseName = 82
	CrunchExerciseNameCrunch                                  CrunchExerciseName = 83
	CrunchExerciseNameStraightLegCrunchWithBall               CrunchExerciseName = 84
	CrunchExerciseNameInvalid                                 CrunchExerciseName = 0xFFFF
)

func (CrunchExerciseName) String

func (i CrunchExerciseName) String() string

type CurlExerciseName

type CurlExerciseName uint16

CurlExerciseName represents the curl_exercise_name FIT type.

const (
	CurlExerciseNameAlternatingDumbbellBicepsCurl             CurlExerciseName = 0
	CurlExerciseNameAlternatingDumbbellBicepsCurlOnSwissBall  CurlExerciseName = 1
	CurlExerciseNameAlternatingInclineDumbbellBicepsCurl      CurlExerciseName = 2
	CurlExerciseNameBarbellBicepsCurl                         CurlExerciseName = 3
	CurlExerciseNameBarbellReverseWristCurl                   CurlExerciseName = 4
	CurlExerciseNameBarbellWristCurl                          CurlExerciseName = 5
	CurlExerciseNameBehindTheBackBarbellReverseWristCurl      CurlExerciseName = 6
	CurlExerciseNameBehindTheBackOneArmCableCurl              CurlExerciseName = 7
	CurlExerciseNameCableBicepsCurl                           CurlExerciseName = 8
	CurlExerciseNameCableHammerCurl                           CurlExerciseName = 9
	CurlExerciseNameCheatingBarbellBicepsCurl                 CurlExerciseName = 10
	CurlExerciseNameCloseGripEzBarBicepsCurl                  CurlExerciseName = 11
	CurlExerciseNameCrossBodyDumbbellHammerCurl               CurlExerciseName = 12
	CurlExerciseNameDeadHangBicepsCurl                        CurlExerciseName = 13
	CurlExerciseNameDeclineHammerCurl                         CurlExerciseName = 14
	CurlExerciseNameDumbbellBicepsCurlWithStaticHold          CurlExerciseName = 15
	CurlExerciseNameDumbbellHammerCurl                        CurlExerciseName = 16
	CurlExerciseNameDumbbellReverseWristCurl                  CurlExerciseName = 17
	CurlExerciseNameDumbbellWristCurl                         CurlExerciseName = 18
	CurlExerciseNameEzBarPreacherCurl                         CurlExerciseName = 19
	CurlExerciseNameForwardBendBicepsCurl                     CurlExerciseName = 20
	CurlExerciseNameHammerCurlToPress                         CurlExerciseName = 21
	CurlExerciseNameInclineDumbbellBicepsCurl                 CurlExerciseName = 22
	CurlExerciseNameInclineOffsetThumbDumbbellCurl            CurlExerciseName = 23
	CurlExerciseNameKettlebellBicepsCurl                      CurlExerciseName = 24
	CurlExerciseNameLyingConcentrationCableCurl               CurlExerciseName = 25
	CurlExerciseNameOneArmPreacherCurl                        CurlExerciseName = 26
	CurlExerciseNamePlatePinchCurl                            CurlExerciseName = 27
	CurlExerciseNamePreacherCurlWithCable                     CurlExerciseName = 28
	CurlExerciseNameReverseEzBarCurl                          CurlExerciseName = 29
	CurlExerciseNameReverseGripWristCurl                      CurlExerciseName = 30
	CurlExerciseNameReverseGripBarbellBicepsCurl              CurlExerciseName = 31
	CurlExerciseNameSeatedAlternatingDumbbellBicepsCurl       CurlExerciseName = 32
	CurlExerciseNameSeatedDumbbellBicepsCurl                  CurlExerciseName = 33
	CurlExerciseNameSeatedReverseDumbbellCurl                 CurlExerciseName = 34
	CurlExerciseNameSplitStanceOffsetPinkyDumbbellCurl        CurlExerciseName = 35
	CurlExerciseNameStandingAlternatingDumbbellCurls          CurlExerciseName = 36
	CurlExerciseNameStandingDumbbellBicepsCurl                CurlExerciseName = 37
	CurlExerciseNameStandingEzBarBicepsCurl                   CurlExerciseName = 38
	CurlExerciseNameStaticCurl                                CurlExerciseName = 39
	CurlExerciseNameSwissBallDumbbellOverheadTricepsExtension CurlExerciseName = 40
	CurlExerciseNameSwissBallEzBarPreacherCurl                CurlExerciseName = 41
	CurlExerciseNameTwistingStandingDumbbellBicepsCurl        CurlExerciseName = 42
	CurlExerciseNameWideGripEzBarBicepsCurl                   CurlExerciseName = 43
	CurlExerciseNameInvalid                                   CurlExerciseName = 0xFFFF
)

func (CurlExerciseName) String

func (i CurlExerciseName) String() string

type DateMode

type DateMode byte

DateMode represents the date_mode FIT type.

const (
	DateModeDayMonth DateMode = 0
	DateModeMonthDay DateMode = 1
	DateModeInvalid  DateMode = 0xFF
)

func (DateMode) String

func (i DateMode) String() string

type DayOfWeek

type DayOfWeek byte

DayOfWeek represents the day_of_week FIT type.

const (
	DayOfWeekSunday    DayOfWeek = 0
	DayOfWeekMonday    DayOfWeek = 1
	DayOfWeekTuesday   DayOfWeek = 2
	DayOfWeekWednesday DayOfWeek = 3
	DayOfWeekThursday  DayOfWeek = 4
	DayOfWeekFriday    DayOfWeek = 5
	DayOfWeekSaturday  DayOfWeek = 6
	DayOfWeekInvalid   DayOfWeek = 0xFF
)

func (DayOfWeek) String

func (i DayOfWeek) String() string

type DeadliftExerciseName

type DeadliftExerciseName uint16

DeadliftExerciseName represents the deadlift_exercise_name FIT type.

const (
	DeadliftExerciseNameBarbellDeadlift                       DeadliftExerciseName = 0
	DeadliftExerciseNameBarbellStraightLegDeadlift            DeadliftExerciseName = 1
	DeadliftExerciseNameDumbbellDeadlift                      DeadliftExerciseName = 2
	DeadliftExerciseNameDumbbellSingleLegDeadliftToRow        DeadliftExerciseName = 3
	DeadliftExerciseNameDumbbellStraightLegDeadlift           DeadliftExerciseName = 4
	DeadliftExerciseNameKettlebellFloorToShelf                DeadliftExerciseName = 5
	DeadliftExerciseNameOneArmOneLegDeadlift                  DeadliftExerciseName = 6
	DeadliftExerciseNameRackPull                              DeadliftExerciseName = 7
	DeadliftExerciseNameRotationalDumbbellStraightLegDeadlift DeadliftExerciseName = 8
	DeadliftExerciseNameSingleArmDeadlift                     DeadliftExerciseName = 9
	DeadliftExerciseNameSingleLegBarbellDeadlift              DeadliftExerciseName = 10
	DeadliftExerciseNameSingleLegBarbellStraightLegDeadlift   DeadliftExerciseName = 11
	DeadliftExerciseNameSingleLegDeadliftWithBarbell          DeadliftExerciseName = 12
	DeadliftExerciseNameSingleLegRdlCircuit                   DeadliftExerciseName = 13
	DeadliftExerciseNameSingleLegRomanianDeadliftWithDumbbell DeadliftExerciseName = 14
	DeadliftExerciseNameSumoDeadlift                          DeadliftExerciseName = 15
	DeadliftExerciseNameSumoDeadliftHighPull                  DeadliftExerciseName = 16
	DeadliftExerciseNameTrapBarDeadlift                       DeadliftExerciseName = 17
	DeadliftExerciseNameWideGripBarbellDeadlift               DeadliftExerciseName = 18
	DeadliftExerciseNameInvalid                               DeadliftExerciseName = 0xFFFF
)

func (DeadliftExerciseName) String

func (i DeadliftExerciseName) String() string

type DecodeOption

type DecodeOption func(*decodeOptions)

DecodeOption configures a decoder.

func WithLogger

func WithLogger(logger Logger) DecodeOption

WithLogger configures the decoder to enable debug logging using the provided logger.

func WithStdLogger

func WithStdLogger() DecodeOption

WithStdLogger configures the decoder to enable debug logging using the standard library's logger.

func WithUnknownFields

func WithUnknownFields() DecodeOption

WithUnknownFields configures the decoder to record information about unknown fields encountered when decoding a known message type. Currently message number, field number and number of occurrences are recorded.

func WithUnknownMessages

func WithUnknownMessages() DecodeOption

WithUnknownMessages configures the decoder to record information about unknown messages encountered during decoding of a FIT file. Currently message number and number of occurrences are recorded.

type DeveloperDataIdMsg

type DeveloperDataIdMsg struct {
	DeveloperId        []byte
	ApplicationId      []byte
	ManufacturerId     Manufacturer
	DeveloperDataIndex uint8
	ApplicationVersion uint32
}

DeveloperDataIdMsg represents the developer_data_id FIT message type.

func NewDeveloperDataIdMsg

func NewDeveloperDataIdMsg() *DeveloperDataIdMsg

NewDeveloperDataIdMsg returns a developer_data_id FIT message initialized to all-invalid values.

type DeviceAuxBatteryInfoMsg

type DeviceAuxBatteryInfoMsg struct {
	Timestamp         time.Time
	DeviceIndex       DeviceIndex
	BatteryVoltage    uint16
	BatteryStatus     BatteryStatus
	BatteryIdentifier uint8
}

DeviceAuxBatteryInfoMsg represents the device_aux_battery_info FIT message type.

func NewDeviceAuxBatteryInfoMsg

func NewDeviceAuxBatteryInfoMsg() *DeviceAuxBatteryInfoMsg

NewDeviceAuxBatteryInfoMsg returns a device_aux_battery_info FIT message initialized to all-invalid values.

func (*DeviceAuxBatteryInfoMsg) GetBatteryVoltageScaled

func (x *DeviceAuxBatteryInfoMsg) GetBatteryVoltageScaled() float64

GetBatteryVoltageScaled returns BatteryVoltage with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: V

type DeviceFile

type DeviceFile struct {
	Softwares         []*SoftwareMsg
	Capabilities      []*CapabilitiesMsg
	FileCapabilities  []*FileCapabilitiesMsg
	MesgCapabilities  []*MesgCapabilitiesMsg
	FieldCapabilities []*FieldCapabilitiesMsg
}

DeviceFile represents the Device FIT file type. Describes a device's file structure and capabilities.

type DeviceIndex

type DeviceIndex uint8

DeviceIndex represents the device_index FIT type.

const (
	DeviceIndexCreator DeviceIndex = 0 // Creator of the file is always device index 0.
	DeviceIndexInvalid DeviceIndex = 0xFF
)

func (DeviceIndex) String

func (i DeviceIndex) String() string

type DeviceInfoMsg

type DeviceInfoMsg struct {
	Timestamp           time.Time
	DeviceIndex         DeviceIndex
	DeviceType          uint8
	Manufacturer        Manufacturer
	SerialNumber        uint32
	Product             uint16
	SoftwareVersion     uint16
	HardwareVersion     uint8
	CumOperatingTime    uint32 // Reset by new battery or charge.
	BatteryVoltage      uint16
	BatteryStatus       BatteryStatus
	SensorPosition      BodyLocation // Indicates the location of the sensor
	Descriptor          string       // Used to describe the sensor or location
	AntTransmissionType uint8
	AntDeviceNumber     uint16
	AntNetwork          AntNetwork
	SourceType          SourceType
	ProductName         string // Optional free form string to indicate the devices name or model
}

DeviceInfoMsg represents the device_info FIT message type.

func NewDeviceInfoMsg

func NewDeviceInfoMsg() *DeviceInfoMsg

NewDeviceInfoMsg returns a device_info FIT message initialized to all-invalid values.

func (*DeviceInfoMsg) GetBatteryVoltageScaled

func (x *DeviceInfoMsg) GetBatteryVoltageScaled() float64

GetBatteryVoltageScaled returns BatteryVoltage with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: V

func (*DeviceInfoMsg) GetDeviceType

func (x *DeviceInfoMsg) GetDeviceType() interface{}

GetDeviceType returns the appropriate DeviceType subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*DeviceInfoMsg) GetProduct

func (x *DeviceInfoMsg) GetProduct() interface{}

GetProduct returns the appropriate Product subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*DeviceInfoMsg) GetSoftwareVersionScaled

func (x *DeviceInfoMsg) GetSoftwareVersionScaled() float64

GetSoftwareVersionScaled returns SoftwareVersion with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set).

type DeviceSettingsMsg

type DeviceSettingsMsg struct {
	ActiveTimeZone         uint8         // Index into time zone arrays.
	UtcOffset              uint32        // Offset from system time. Required to convert timestamp from system time to UTC.
	TimeOffset             []uint32      // Offset from system time.
	TimeMode               []TimeMode    // Display mode for the time
	TimeZoneOffset         []int8        // timezone offset in 1/4 hour increments
	BacklightMode          BacklightMode // Mode for backlight
	ActivityTrackerEnabled Bool          // Enabled state of the activity tracker functionality
	ClockTime              time.Time     // UTC timestamp used to set the devices clock and date
	PagesEnabled           []uint16      // Bitfield to configure enabled screens for each supported loop
	MoveAlertEnabled       Bool          // Enabled state of the move alert
	DateMode               DateMode      // Display mode for the date
	DisplayOrientation     DisplayOrientation
	MountingSide           Side
	DefaultPage            []uint16       // Bitfield to indicate one page as default for each supported loop
	AutosyncMinSteps       uint16         // Minimum steps before an autosync can occur
	AutosyncMinTime        uint16         // Minimum minutes before an autosync can occur
	TapSensitivity         TapSensitivity // Used to hold the tap threshold setting
}

DeviceSettingsMsg represents the device_settings FIT message type.

func NewDeviceSettingsMsg

func NewDeviceSettingsMsg() *DeviceSettingsMsg

NewDeviceSettingsMsg returns a device_settings FIT message initialized to all-invalid values.

func (*DeviceSettingsMsg) GetTimeZoneOffsetScaled

func (x *DeviceSettingsMsg) GetTimeZoneOffsetScaled() []float64

GetTimeZoneOffsetScaled returns TimeZoneOffset as a slice with scale and any offset applied to every element. Units: hr

type DigitalWatchfaceLayout

type DigitalWatchfaceLayout byte

DigitalWatchfaceLayout represents the digital_watchface_layout FIT type.

const (
	DigitalWatchfaceLayoutTraditional DigitalWatchfaceLayout = 0
	DigitalWatchfaceLayoutModern      DigitalWatchfaceLayout = 1
	DigitalWatchfaceLayoutBold        DigitalWatchfaceLayout = 2
	DigitalWatchfaceLayoutInvalid     DigitalWatchfaceLayout = 0xFF
)

func (DigitalWatchfaceLayout) String

func (i DigitalWatchfaceLayout) String() string

type DisplayHeart

type DisplayHeart byte

DisplayHeart represents the display_heart FIT type.

const (
	DisplayHeartBpm     DisplayHeart = 0
	DisplayHeartMax     DisplayHeart = 1
	DisplayHeartReserve DisplayHeart = 2
	DisplayHeartInvalid DisplayHeart = 0xFF
)

func (DisplayHeart) String

func (i DisplayHeart) String() string

type DisplayMeasure

type DisplayMeasure byte

DisplayMeasure represents the display_measure FIT type.

const (
	DisplayMeasureMetric   DisplayMeasure = 0
	DisplayMeasureStatute  DisplayMeasure = 1
	DisplayMeasureNautical DisplayMeasure = 2
	DisplayMeasureInvalid  DisplayMeasure = 0xFF
)

func (DisplayMeasure) String

func (i DisplayMeasure) String() string

type DisplayOrientation

type DisplayOrientation byte

DisplayOrientation represents the display_orientation FIT type.

const (
	DisplayOrientationAuto             DisplayOrientation = 0 // automatic if the device supports it
	DisplayOrientationPortrait         DisplayOrientation = 1
	DisplayOrientationLandscape        DisplayOrientation = 2
	DisplayOrientationPortraitFlipped  DisplayOrientation = 3 // portrait mode but rotated 180 degrees
	DisplayOrientationLandscapeFlipped DisplayOrientation = 4 // landscape mode but rotated 180 degrees
	DisplayOrientationInvalid          DisplayOrientation = 0xFF
)

func (DisplayOrientation) String

func (i DisplayOrientation) String() string

type DisplayPosition

type DisplayPosition byte

DisplayPosition represents the display_position FIT type.

const (
	DisplayPositionDegree               DisplayPosition = 0  // dd.dddddd
	DisplayPositionDegreeMinute         DisplayPosition = 1  // dddmm.mmm
	DisplayPositionDegreeMinuteSecond   DisplayPosition = 2  // dddmmss
	DisplayPositionAustrianGrid         DisplayPosition = 3  // Austrian Grid (BMN)
	DisplayPositionBritishGrid          DisplayPosition = 4  // British National Grid
	DisplayPositionDutchGrid            DisplayPosition = 5  // Dutch grid system
	DisplayPositionHungarianGrid        DisplayPosition = 6  // Hungarian grid system
	DisplayPositionFinnishGrid          DisplayPosition = 7  // Finnish grid system Zone3 KKJ27
	DisplayPositionGermanGrid           DisplayPosition = 8  // Gausss Krueger (German)
	DisplayPositionIcelandicGrid        DisplayPosition = 9  // Icelandic Grid
	DisplayPositionIndonesianEquatorial DisplayPosition = 10 // Indonesian Equatorial LCO
	DisplayPositionIndonesianIrian      DisplayPosition = 11 // Indonesian Irian LCO
	DisplayPositionIndonesianSouthern   DisplayPosition = 12 // Indonesian Southern LCO
	DisplayPositionIndiaZone0           DisplayPosition = 13 // India zone 0
	DisplayPositionIndiaZoneIA          DisplayPosition = 14 // India zone IA
	DisplayPositionIndiaZoneIB          DisplayPosition = 15 // India zone IB
	DisplayPositionIndiaZoneIIA         DisplayPosition = 16 // India zone IIA
	DisplayPositionIndiaZoneIIB         DisplayPosition = 17 // India zone IIB
	DisplayPositionIndiaZoneIIIA        DisplayPosition = 18 // India zone IIIA
	DisplayPositionIndiaZoneIIIB        DisplayPosition = 19 // India zone IIIB
	DisplayPositionIndiaZoneIVA         DisplayPosition = 20 // India zone IVA
	DisplayPositionIndiaZoneIVB         DisplayPosition = 21 // India zone IVB
	DisplayPositionIrishTransverse      DisplayPosition = 22 // Irish Transverse Mercator
	DisplayPositionIrishGrid            DisplayPosition = 23 // Irish Grid
	DisplayPositionLoran                DisplayPosition = 24 // Loran TD
	DisplayPositionMaidenheadGrid       DisplayPosition = 25 // Maidenhead grid system
	DisplayPositionMgrsGrid             DisplayPosition = 26 // MGRS grid system
	DisplayPositionNewZealandGrid       DisplayPosition = 27 // New Zealand grid system
	DisplayPositionNewZealandTransverse DisplayPosition = 28 // New Zealand Transverse Mercator
	DisplayPositionQatarGrid            DisplayPosition = 29 // Qatar National Grid
	DisplayPositionModifiedSwedishGrid  DisplayPosition = 30 // Modified RT-90 (Sweden)
	DisplayPositionSwedishGrid          DisplayPosition = 31 // RT-90 (Sweden)
	DisplayPositionSouthAfricanGrid     DisplayPosition = 32 // South African Grid
	DisplayPositionSwissGrid            DisplayPosition = 33 // Swiss CH-1903 grid
	DisplayPositionTaiwanGrid           DisplayPosition = 34 // Taiwan Grid
	DisplayPositionUnitedStatesGrid     DisplayPosition = 35 // United States National Grid
	DisplayPositionUtmUpsGrid           DisplayPosition = 36 // UTM/UPS grid system
	DisplayPositionWestMalayan          DisplayPosition = 37 // West Malayan RSO
	DisplayPositionBorneoRso            DisplayPosition = 38 // Borneo RSO
	DisplayPositionEstonianGrid         DisplayPosition = 39 // Estonian grid system
	DisplayPositionLatvianGrid          DisplayPosition = 40 // Latvian Transverse Mercator
	DisplayPositionSwedishRef99Grid     DisplayPosition = 41 // Reference Grid 99 TM (Swedish)
	DisplayPositionInvalid              DisplayPosition = 0xFF
)

func (DisplayPosition) String

func (i DisplayPosition) String() string

type DisplayPower

type DisplayPower byte

DisplayPower represents the display_power FIT type.

const (
	DisplayPowerWatts      DisplayPower = 0
	DisplayPowerPercentFtp DisplayPower = 1
	DisplayPowerInvalid    DisplayPower = 0xFF
)

func (DisplayPower) String

func (i DisplayPower) String() string

type DiveAlarmMsg

type DiveAlarmMsg struct {
}

DiveAlarmMsg represents the dive_alarm FIT message type.

func NewDiveAlarmMsg

func NewDiveAlarmMsg() *DiveAlarmMsg

NewDiveAlarmMsg returns a dive_alarm FIT message initialized to all-invalid values.

type DiveAlarmType

type DiveAlarmType byte

DiveAlarmType represents the dive_alarm_type FIT type.

const (
	DiveAlarmTypeDepth   DiveAlarmType = 0 // Alarm when a certain depth is crossed
	DiveAlarmTypeTime    DiveAlarmType = 1 // Alarm when a certain time has transpired
	DiveAlarmTypeInvalid DiveAlarmType = 0xFF
)

func (DiveAlarmType) String

func (i DiveAlarmType) String() string

type DiveBacklightMode

type DiveBacklightMode byte

DiveBacklightMode represents the dive_backlight_mode FIT type.

const (
	DiveBacklightModeAtDepth  DiveBacklightMode = 0
	DiveBacklightModeAlwaysOn DiveBacklightMode = 1
	DiveBacklightModeInvalid  DiveBacklightMode = 0xFF
)

func (DiveBacklightMode) String

func (i DiveBacklightMode) String() string

type DiveGasMsg

type DiveGasMsg struct {
}

DiveGasMsg represents the dive_gas FIT message type.

func NewDiveGasMsg

func NewDiveGasMsg() *DiveGasMsg

NewDiveGasMsg returns a dive_gas FIT message initialized to all-invalid values.

type DiveGasStatus

type DiveGasStatus byte

DiveGasStatus represents the dive_gas_status FIT type.

const (
	DiveGasStatusDisabled   DiveGasStatus = 0
	DiveGasStatusEnabled    DiveGasStatus = 1
	DiveGasStatusBackupOnly DiveGasStatus = 2
	DiveGasStatusInvalid    DiveGasStatus = 0xFF
)

func (DiveGasStatus) String

func (i DiveGasStatus) String() string

type DiveSettingsMsg

type DiveSettingsMsg struct {
	Name                string
	HeartRateSourceType SourceType
	HeartRateSource     uint8
}

DiveSettingsMsg represents the dive_settings FIT message type.

func NewDiveSettingsMsg

func NewDiveSettingsMsg() *DiveSettingsMsg

NewDiveSettingsMsg returns a dive_settings FIT message initialized to all-invalid values.

func (*DiveSettingsMsg) GetHeartRateSource

func (x *DiveSettingsMsg) GetHeartRateSource() interface{}

GetHeartRateSource returns the appropriate HeartRateSource subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

type DiveSummaryMsg

type DiveSummaryMsg struct {
}

DiveSummaryMsg represents the dive_summary FIT message type.

func NewDiveSummaryMsg

func NewDiveSummaryMsg() *DiveSummaryMsg

NewDiveSummaryMsg returns a dive_summary FIT message initialized to all-invalid values.

type Event

type Event byte

Event represents the event FIT type.

const (
	EventTimer                 Event = 0  // Group 0. Start / stop_all
	EventWorkout               Event = 3  // start / stop
	EventWorkoutStep           Event = 4  // Start at beginning of workout. Stop at end of each step.
	EventPowerDown             Event = 5  // stop_all group 0
	EventPowerUp               Event = 6  // stop_all group 0
	EventOffCourse             Event = 7  // start / stop group 0
	EventSession               Event = 8  // Stop at end of each session.
	EventLap                   Event = 9  // Stop at end of each lap.
	EventCoursePoint           Event = 10 // marker
	EventBattery               Event = 11 // marker
	EventVirtualPartnerPace    Event = 12 // Group 1. Start at beginning of activity if VP enabled, when VP pace is changed during activity or VP enabled mid activity. stop_disable when VP disabled.
	EventHrHighAlert           Event = 13 // Group 0. Start / stop when in alert condition.
	EventHrLowAlert            Event = 14 // Group 0. Start / stop when in alert condition.
	EventSpeedHighAlert        Event = 15 // Group 0. Start / stop when in alert condition.
	EventSpeedLowAlert         Event = 16 // Group 0. Start / stop when in alert condition.
	EventCadHighAlert          Event = 17 // Group 0. Start / stop when in alert condition.
	EventCadLowAlert           Event = 18 // Group 0. Start / stop when in alert condition.
	EventPowerHighAlert        Event = 19 // Group 0. Start / stop when in alert condition.
	EventPowerLowAlert         Event = 20 // Group 0. Start / stop when in alert condition.
	EventRecoveryHr            Event = 21 // marker
	EventBatteryLow            Event = 22 // marker
	EventTimeDurationAlert     Event = 23 // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
	EventDistanceDurationAlert Event = 24 // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
	EventCalorieDurationAlert  Event = 25 // Group 1. Start if enabled mid activity (not required at start of activity). Stop when duration is reached. stop_disable if disabled.
	EventActivity              Event = 26 // Group 1.. Stop at end of activity.
	EventFitnessEquipment      Event = 27 // marker
	EventLength                Event = 28 // Stop at end of each length.
	EventUserMarker            Event = 32 // marker
	EventSportPoint            Event = 33 // marker
	EventCalibration           Event = 36 // start/stop/marker
	EventFrontGearChange       Event = 42 // marker
	EventRearGearChange        Event = 43 // marker
	EventRiderPositionChange   Event = 44 // marker
	EventElevHighAlert         Event = 45 // Group 0. Start / stop when in alert condition.
	EventElevLowAlert          Event = 46 // Group 0. Start / stop when in alert condition.
	EventCommTimeout           Event = 47 // marker
	EventRadarThreatAlert      Event = 75 // start/stop/marker
	EventInvalid               Event = 0xFF
)

func (Event) String

func (i Event) String() string

type EventMsg

type EventMsg struct {
	Timestamp           time.Time
	Event               Event
	EventType           EventType
	Data16              uint16
	Data                uint32
	EventGroup          uint8
	Score               uint16               // Do not populate directly. Autogenerated by decoder for sport_point subfield components
	OpponentScore       uint16               // Do not populate directly. Autogenerated by decoder for sport_point subfield components
	FrontGearNum        uint8                // Do not populate directly. Autogenerated by decoder for gear_change subfield components. Front gear number. 1 is innermost.
	FrontGear           uint8                // Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of front teeth.
	RearGearNum         uint8                // Do not populate directly. Autogenerated by decoder for gear_change subfield components. Rear gear number. 1 is innermost.
	RearGear            uint8                // Do not populate directly. Autogenerated by decoder for gear_change subfield components. Number of rear teeth.
	RadarThreatLevelMax RadarThreatLevelType // Do not populate directly. Autogenerated by decoder for threat_alert subfield components.
	RadarThreatCount    uint8                // Do not populate directly. Autogenerated by decoder for threat_alert subfield components.
}

EventMsg represents the event FIT message type.

func NewEventMsg

func NewEventMsg() *EventMsg

NewEventMsg returns a event FIT message initialized to all-invalid values.

func (*EventMsg) GetData

func (x *EventMsg) GetData() interface{}

GetData returns the appropriate Data subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

type EventType

type EventType byte

EventType represents the event_type FIT type.

const (
	EventTypeStart                  EventType = 0
	EventTypeStop                   EventType = 1
	EventTypeConsecutiveDepreciated EventType = 2
	EventTypeMarker                 EventType = 3
	EventTypeStopAll                EventType = 4
	EventTypeBeginDepreciated       EventType = 5
	EventTypeEndDepreciated         EventType = 6
	EventTypeEndAllDepreciated      EventType = 7
	EventTypeStopDisable            EventType = 8
	EventTypeStopDisableAll         EventType = 9
	EventTypeInvalid                EventType = 0xFF
)

func (EventType) String

func (i EventType) String() string

type ExdDataConceptConfigurationMsg

type ExdDataConceptConfigurationMsg struct {
	ScreenIndex  uint8
	ConceptField byte
	FieldId      uint8
	ConceptIndex uint8
	DataPage     uint8
	ConceptKey   uint8
	Scaling      uint8
	DataUnits    ExdDataUnits
	Qualifier    ExdQualifiers
	Descriptor   ExdDescriptors
	IsSigned     Bool
}

ExdDataConceptConfigurationMsg represents the exd_data_concept_configuration FIT message type.

func NewExdDataConceptConfigurationMsg

func NewExdDataConceptConfigurationMsg() *ExdDataConceptConfigurationMsg

NewExdDataConceptConfigurationMsg returns a exd_data_concept_configuration FIT message initialized to all-invalid values.

type ExdDataFieldConfigurationMsg

type ExdDataFieldConfigurationMsg struct {
	ScreenIndex  uint8
	ConceptField byte
	FieldId      uint8
	ConceptCount uint8
	DisplayType  ExdDisplayType
	Title        []string
}

ExdDataFieldConfigurationMsg represents the exd_data_field_configuration FIT message type.

func NewExdDataFieldConfigurationMsg

func NewExdDataFieldConfigurationMsg() *ExdDataFieldConfigurationMsg

NewExdDataFieldConfigurationMsg returns a exd_data_field_configuration FIT message initialized to all-invalid values.

type ExdDataUnits

type ExdDataUnits byte

ExdDataUnits represents the exd_data_units FIT type.

const (
	ExdDataUnitsNoUnits                        ExdDataUnits = 0
	ExdDataUnitsLaps                           ExdDataUnits = 1
	ExdDataUnitsMilesPerHour                   ExdDataUnits = 2
	ExdDataUnitsKilometersPerHour              ExdDataUnits = 3
	ExdDataUnitsFeetPerHour                    ExdDataUnits = 4
	ExdDataUnitsMetersPerHour                  ExdDataUnits = 5
	ExdDataUnitsDegreesCelsius                 ExdDataUnits = 6
	ExdDataUnitsDegreesFarenheit               ExdDataUnits = 7
	ExdDataUnitsZone                           ExdDataUnits = 8
	ExdDataUnitsGear                           ExdDataUnits = 9
	ExdDataUnitsRpm                            ExdDataUnits = 10
	ExdDataUnitsBpm                            ExdDataUnits = 11
	ExdDataUnitsDegrees                        ExdDataUnits = 12
	ExdDataUnitsMillimeters                    ExdDataUnits = 13
	ExdDataUnitsMeters                         ExdDataUnits = 14
	ExdDataUnitsKilometers                     ExdDataUnits = 15
	ExdDataUnitsFeet                           ExdDataUnits = 16
	ExdDataUnitsYards                          ExdDataUnits = 17
	ExdDataUnitsKilofeet                       ExdDataUnits = 18
	ExdDataUnitsMiles                          ExdDataUnits = 19
	ExdDataUnitsTime                           ExdDataUnits = 20
	ExdDataUnitsEnumTurnType                   ExdDataUnits = 21
	ExdDataUnitsPercent                        ExdDataUnits = 22
	ExdDataUnitsWatts                          ExdDataUnits = 23
	ExdDataUnitsWattsPerKilogram               ExdDataUnits = 24
	ExdDataUnitsEnumBatteryStatus              ExdDataUnits = 25
	ExdDataUnitsEnumBikeLightBeamAngleMode     ExdDataUnits = 26
	ExdDataUnitsEnumBikeLightBatteryStatus     ExdDataUnits = 27
	ExdDataUnitsEnumBikeLightNetworkConfigType ExdDataUnits = 28
	ExdDataUnitsLights                         ExdDataUnits = 29
	ExdDataUnitsSeconds                        ExdDataUnits = 30
	ExdDataUnitsMinutes                        ExdDataUnits = 31
	ExdDataUnitsHours                          ExdDataUnits = 32
	ExdDataUnitsCalories                       ExdDataUnits = 33
	ExdDataUnitsKilojoules                     ExdDataUnits = 34
	ExdDataUnitsMilliseconds                   ExdDataUnits = 35
	ExdDataUnitsSecondPerMile                  ExdDataUnits = 36
	ExdDataUnitsSecondPerKilometer             ExdDataUnits = 37
	ExdDataUnitsCentimeter                     ExdDataUnits = 38
	ExdDataUnitsEnumCoursePoint                ExdDataUnits = 39
	ExdDataUnitsBradians                       ExdDataUnits = 40
	ExdDataUnitsEnumSport                      ExdDataUnits = 41
	ExdDataUnitsInchesHg                       ExdDataUnits = 42
	ExdDataUnitsMmHg                           ExdDataUnits = 43
	ExdDataUnitsMbars                          ExdDataUnits = 44
	ExdDataUnitsHectoPascals                   ExdDataUnits = 45
	ExdDataUnitsFeetPerMin                     ExdDataUnits = 46
	ExdDataUnitsMetersPerMin                   ExdDataUnits = 47
	ExdDataUnitsMetersPerSec                   ExdDataUnits = 48
	ExdDataUnitsEightCardinal                  ExdDataUnits = 49
	ExdDataUnitsInvalid                        ExdDataUnits = 0xFF
)

func (ExdDataUnits) String

func (i ExdDataUnits) String() string

type ExdDescriptors

type ExdDescriptors byte

ExdDescriptors represents the exd_descriptors FIT type.

const (
	ExdDescriptorsBikeLightBatteryStatus           ExdDescriptors = 0
	ExdDescriptorsBeamAngleStatus                  ExdDescriptors = 1
	ExdDescriptorsBateryLevel                      ExdDescriptors = 2
	ExdDescriptorsLightNetworkMode                 ExdDescriptors = 3
	ExdDescriptorsNumberLightsConnected            ExdDescriptors = 4
	ExdDescriptorsCadence                          ExdDescriptors = 5
	ExdDescriptorsDistance                         ExdDescriptors = 6
	ExdDescriptorsEstimatedTimeOfArrival           ExdDescriptors = 7
	ExdDescriptorsHeading                          ExdDescriptors = 8
	ExdDescriptorsTime                             ExdDescriptors = 9
	ExdDescriptorsBatteryLevel                     ExdDescriptors = 10
	ExdDescriptorsTrainerResistance                ExdDescriptors = 11
	ExdDescriptorsTrainerTargetPower               ExdDescriptors = 12
	ExdDescriptorsTimeSeated                       ExdDescriptors = 13
	ExdDescriptorsTimeStanding                     ExdDescriptors = 14
	ExdDescriptorsElevation                        ExdDescriptors = 15
	ExdDescriptorsGrade                            ExdDescriptors = 16
	ExdDescriptorsAscent                           ExdDescriptors = 17
	ExdDescriptorsDescent                          ExdDescriptors = 18
	ExdDescriptorsVerticalSpeed                    ExdDescriptors = 19
	ExdDescriptorsDi2BatteryLevel                  ExdDescriptors = 20
	ExdDescriptorsFrontGear                        ExdDescriptors = 21
	ExdDescriptorsRearGear                         ExdDescriptors = 22
	ExdDescriptorsGearRatio                        ExdDescriptors = 23
	ExdDescriptorsHeartRate                        ExdDescriptors = 24
	ExdDescriptorsHeartRateZone                    ExdDescriptors = 25
	ExdDescriptorsTimeInHeartRateZone              ExdDescriptors = 26
	ExdDescriptorsHeartRateReserve                 ExdDescriptors = 27
	ExdDescriptorsCalories                         ExdDescriptors = 28
	ExdDescriptorsGpsAccuracy                      ExdDescriptors = 29
	ExdDescriptorsGpsSignalStrength                ExdDescriptors = 30
	ExdDescriptorsTemperature                      ExdDescriptors = 31
	ExdDescriptorsTimeOfDay                        ExdDescriptors = 32
	ExdDescriptorsBalance                          ExdDescriptors = 33
	ExdDescriptorsPedalSmoothness                  ExdDescriptors = 34
	ExdDescriptorsPower                            ExdDescriptors = 35
	ExdDescriptorsFunctionalThresholdPower         ExdDescriptors = 36
	ExdDescriptorsIntensityFactor                  ExdDescriptors = 37
	ExdDescriptorsWork                             ExdDescriptors = 38
	ExdDescriptorsPowerRatio                       ExdDescriptors = 39
	ExdDescriptorsNormalizedPower                  ExdDescriptors = 40
	ExdDescriptorsTrainingStressScore              ExdDescriptors = 41
	ExdDescriptorsTimeOnZone                       ExdDescriptors = 42
	ExdDescriptorsSpeed                            ExdDescriptors = 43
	ExdDescriptorsLaps                             ExdDescriptors = 44
	ExdDescriptorsReps                             ExdDescriptors = 45
	ExdDescriptorsWorkoutStep                      ExdDescriptors = 46
	ExdDescriptorsCourseDistance                   ExdDescriptors = 47
	ExdDescriptorsNavigationDistance               ExdDescriptors = 48
	ExdDescriptorsCourseEstimatedTimeOfArrival     ExdDescriptors = 49
	ExdDescriptorsNavigationEstimatedTimeOfArrival ExdDescriptors = 50
	ExdDescriptorsCourseTime                       ExdDescriptors = 51
	ExdDescriptorsNavigationTime                   ExdDescriptors = 52
	ExdDescriptorsCourseHeading                    ExdDescriptors = 53
	ExdDescriptorsNavigationHeading                ExdDescriptors = 54
	ExdDescriptorsPowerZone                        ExdDescriptors = 55
	ExdDescriptorsTorqueEffectiveness              ExdDescriptors = 56
	ExdDescriptorsTimerTime                        ExdDescriptors = 57
	ExdDescriptorsPowerWeightRatio                 ExdDescriptors = 58
	ExdDescriptorsLeftPlatformCenterOffset         ExdDescriptors = 59
	ExdDescriptorsRightPlatformCenterOffset        ExdDescriptors = 60
	ExdDescriptorsLeftPowerPhaseStartAngle         ExdDescriptors = 61
	ExdDescriptorsRightPowerPhaseStartAngle        ExdDescriptors = 62
	ExdDescriptorsLeftPowerPhaseFinishAngle        ExdDescriptors = 63
	ExdDescriptorsRightPowerPhaseFinishAngle       ExdDescriptors = 64
	ExdDescriptorsGears                            ExdDescriptors = 65 // Combined gear information
	ExdDescriptorsPace                             ExdDescriptors = 66
	ExdDescriptorsTrainingEffect                   ExdDescriptors = 67
	ExdDescriptorsVerticalOscillation              ExdDescriptors = 68
	ExdDescriptorsVerticalRatio                    ExdDescriptors = 69
	ExdDescriptorsGroundContactTime                ExdDescriptors = 70
	ExdDescriptorsLeftGroundContactTimeBalance     ExdDescriptors = 71
	ExdDescriptorsRightGroundContactTimeBalance    ExdDescriptors = 72
	ExdDescriptorsStrideLength                     ExdDescriptors = 73
	ExdDescriptorsRunningCadence                   ExdDescriptors = 74
	ExdDescriptorsPerformanceCondition             ExdDescriptors = 75
	ExdDescriptorsCourseType                       ExdDescriptors = 76
	ExdDescriptorsTimeInPowerZone                  ExdDescriptors = 77
	ExdDescriptorsNavigationTurn                   ExdDescriptors = 78
	ExdDescriptorsCourseLocation                   ExdDescriptors = 79
	ExdDescriptorsNavigationLocation               ExdDescriptors = 80
	ExdDescriptorsCompass                          ExdDescriptors = 81
	ExdDescriptorsGearCombo                        ExdDescriptors = 82
	ExdDescriptorsMuscleOxygen                     ExdDescriptors = 83
	ExdDescriptorsIcon                             ExdDescriptors = 84
	ExdDescriptorsCompassHeading                   ExdDescriptors = 85
	ExdDescriptorsGpsHeading                       ExdDescriptors = 86
	ExdDescriptorsGpsElevation                     ExdDescriptors = 87
	ExdDescriptorsAnaerobicTrainingEffect          ExdDescriptors = 88
	ExdDescriptorsCourse                           ExdDescriptors = 89
	ExdDescriptorsOffCourse                        ExdDescriptors = 90
	ExdDescriptorsGlideRatio                       ExdDescriptors = 91
	ExdDescriptorsVerticalDistance                 ExdDescriptors = 92
	ExdDescriptorsVmg                              ExdDescriptors = 93
	ExdDescriptorsAmbientPressure                  ExdDescriptors = 94
	ExdDescriptorsPressure                         ExdDescriptors = 95
	ExdDescriptorsVam                              ExdDescriptors = 96
	ExdDescriptorsInvalid                          ExdDescriptors = 0xFF
)

func (ExdDescriptors) String

func (i ExdDescriptors) String() string

type ExdDisplayType

type ExdDisplayType byte

ExdDisplayType represents the exd_display_type FIT type.

const (
	ExdDisplayTypeNumerical         ExdDisplayType = 0
	ExdDisplayTypeSimple            ExdDisplayType = 1
	ExdDisplayTypeGraph             ExdDisplayType = 2
	ExdDisplayTypeBar               ExdDisplayType = 3
	ExdDisplayTypeCircleGraph       ExdDisplayType = 4
	ExdDisplayTypeVirtualPartner    ExdDisplayType = 5
	ExdDisplayTypeBalance           ExdDisplayType = 6
	ExdDisplayTypeStringList        ExdDisplayType = 7
	ExdDisplayTypeString            ExdDisplayType = 8
	ExdDisplayTypeSimpleDynamicIcon ExdDisplayType = 9
	ExdDisplayTypeGauge             ExdDisplayType = 10
	ExdDisplayTypeInvalid           ExdDisplayType = 0xFF
)

func (ExdDisplayType) String

func (i ExdDisplayType) String() string

type ExdLayout

type ExdLayout byte

ExdLayout represents the exd_layout FIT type.

const (
	ExdLayoutFullScreen                ExdLayout = 0
	ExdLayoutHalfVertical              ExdLayout = 1
	ExdLayoutHalfHorizontal            ExdLayout = 2
	ExdLayoutHalfVerticalRightSplit    ExdLayout = 3
	ExdLayoutHalfHorizontalBottomSplit ExdLayout = 4
	ExdLayoutFullQuarterSplit          ExdLayout = 5
	ExdLayoutHalfVerticalLeftSplit     ExdLayout = 6
	ExdLayoutHalfHorizontalTopSplit    ExdLayout = 7
	ExdLayoutDynamic                   ExdLayout = 8 // The EXD may display the configured concepts in any layout it sees fit.
	ExdLayoutInvalid                   ExdLayout = 0xFF
)

func (ExdLayout) String

func (i ExdLayout) String() string

type ExdQualifiers

type ExdQualifiers byte

ExdQualifiers represents the exd_qualifiers FIT type.

const (
	ExdQualifiersNoQualifier              ExdQualifiers = 0
	ExdQualifiersInstantaneous            ExdQualifiers = 1
	ExdQualifiersAverage                  ExdQualifiers = 2
	ExdQualifiersLap                      ExdQualifiers = 3
	ExdQualifiersMaximum                  ExdQualifiers = 4
	ExdQualifiersMaximumAverage           ExdQualifiers = 5
	ExdQualifiersMaximumLap               ExdQualifiers = 6
	ExdQualifiersLastLap                  ExdQualifiers = 7
	ExdQualifiersAverageLap               ExdQualifiers = 8
	ExdQualifiersToDestination            ExdQualifiers = 9
	ExdQualifiersToGo                     ExdQualifiers = 10
	ExdQualifiersToNext                   ExdQualifiers = 11
	ExdQualifiersNextCoursePoint          ExdQualifiers = 12
	ExdQualifiersTotal                    ExdQualifiers = 13
	ExdQualifiersThreeSecondAverage       ExdQualifiers = 14
	ExdQualifiersTenSecondAverage         ExdQualifiers = 15
	ExdQualifiersThirtySecondAverage      ExdQualifiers = 16
	ExdQualifiersPercentMaximum           ExdQualifiers = 17
	ExdQualifiersPercentMaximumAverage    ExdQualifiers = 18
	ExdQualifiersLapPercentMaximum        ExdQualifiers = 19
	ExdQualifiersElapsed                  ExdQualifiers = 20
	ExdQualifiersSunrise                  ExdQualifiers = 21
	ExdQualifiersSunset                   ExdQualifiers = 22
	ExdQualifiersComparedToVirtualPartner ExdQualifiers = 23
	ExdQualifiersMaximum24h               ExdQualifiers = 24
	ExdQualifiersMinimum24h               ExdQualifiers = 25
	ExdQualifiersMinimum                  ExdQualifiers = 26
	ExdQualifiersFirst                    ExdQualifiers = 27
	ExdQualifiersSecond                   ExdQualifiers = 28
	ExdQualifiersThird                    ExdQualifiers = 29
	ExdQualifiersShifter                  ExdQualifiers = 30
	ExdQualifiersLastSport                ExdQualifiers = 31
	ExdQualifiersMoving                   ExdQualifiers = 32
	ExdQualifiersStopped                  ExdQualifiers = 33
	ExdQualifiersEstimatedTotal           ExdQualifiers = 34
	ExdQualifiersZone9                    ExdQualifiers = 242
	ExdQualifiersZone8                    ExdQualifiers = 243
	ExdQualifiersZone7                    ExdQualifiers = 244
	ExdQualifiersZone6                    ExdQualifiers = 245
	ExdQualifiersZone5                    ExdQualifiers = 246
	ExdQualifiersZone4                    ExdQualifiers = 247
	ExdQualifiersZone3                    ExdQualifiers = 248
	ExdQualifiersZone2                    ExdQualifiers = 249
	ExdQualifiersZone1                    ExdQualifiers = 250
	ExdQualifiersInvalid                  ExdQualifiers = 0xFF
)

func (ExdQualifiers) String

func (i ExdQualifiers) String() string

type ExdScreenConfigurationMsg

type ExdScreenConfigurationMsg struct {
	ScreenIndex   uint8
	FieldCount    uint8 // number of fields in screen
	Layout        ExdLayout
	ScreenEnabled Bool
}

ExdScreenConfigurationMsg represents the exd_screen_configuration FIT message type.

func NewExdScreenConfigurationMsg

func NewExdScreenConfigurationMsg() *ExdScreenConfigurationMsg

NewExdScreenConfigurationMsg returns a exd_screen_configuration FIT message initialized to all-invalid values.

type ExerciseCategory

type ExerciseCategory uint16

ExerciseCategory represents the exercise_category FIT type.

const (
	ExerciseCategoryBenchPress        ExerciseCategory = 0
	ExerciseCategoryCalfRaise         ExerciseCategory = 1
	ExerciseCategoryCardio            ExerciseCategory = 2
	ExerciseCategoryCarry             ExerciseCategory = 3
	ExerciseCategoryChop              ExerciseCategory = 4
	ExerciseCategoryCore              ExerciseCategory = 5
	ExerciseCategoryCrunch            ExerciseCategory = 6
	ExerciseCategoryCurl              ExerciseCategory = 7
	ExerciseCategoryDeadlift          ExerciseCategory = 8
	ExerciseCategoryFlye              ExerciseCategory = 9
	ExerciseCategoryHipRaise          ExerciseCategory = 10
	ExerciseCategoryHipStability      ExerciseCategory = 11
	ExerciseCategoryHipSwing          ExerciseCategory = 12
	ExerciseCategoryHyperextension    ExerciseCategory = 13
	ExerciseCategoryLateralRaise      ExerciseCategory = 14
	ExerciseCategoryLegCurl           ExerciseCategory = 15
	ExerciseCategoryLegRaise          ExerciseCategory = 16
	ExerciseCategoryLunge             ExerciseCategory = 17
	ExerciseCategoryOlympicLift       ExerciseCategory = 18
	ExerciseCategoryPlank             ExerciseCategory = 19
	ExerciseCategoryPlyo              ExerciseCategory = 20
	ExerciseCategoryPullUp            ExerciseCategory = 21
	ExerciseCategoryPushUp            ExerciseCategory = 22
	ExerciseCategoryRow               ExerciseCategory = 23
	ExerciseCategoryShoulderPress     ExerciseCategory = 24
	ExerciseCategoryShoulderStability ExerciseCategory = 25
	ExerciseCategoryShrug             ExerciseCategory = 26
	ExerciseCategorySitUp             ExerciseCategory = 27
	ExerciseCategorySquat             ExerciseCategory = 28
	ExerciseCategoryTotalBody         ExerciseCategory = 29
	ExerciseCategoryTricepsExtension  ExerciseCategory = 30
	ExerciseCategoryWarmUp            ExerciseCategory = 31
	ExerciseCategoryRun               ExerciseCategory = 32
	ExerciseCategoryUnknown           ExerciseCategory = 65534
	ExerciseCategoryInvalid           ExerciseCategory = 0xFFFF
)

func (ExerciseCategory) String

func (i ExerciseCategory) String() string

type ExerciseTitleMsg

type ExerciseTitleMsg struct {
	MessageIndex     MessageIndex
	ExerciseCategory ExerciseCategory
	ExerciseName     uint16
	WktStepName      []string
}

ExerciseTitleMsg represents the exercise_title FIT message type.

func NewExerciseTitleMsg

func NewExerciseTitleMsg() *ExerciseTitleMsg

NewExerciseTitleMsg returns a exercise_title FIT message initialized to all-invalid values.

type FaveroProduct

type FaveroProduct uint16

FaveroProduct represents the favero_product FIT type.

const (
	FaveroProductAssiomaUno FaveroProduct = 10
	FaveroProductAssiomaDuo FaveroProduct = 12
	FaveroProductInvalid    FaveroProduct = 0xFFFF
)

func (FaveroProduct) String

func (i FaveroProduct) String() string

type FieldCapabilitiesMsg

type FieldCapabilitiesMsg struct {
	MessageIndex MessageIndex
	File         FileType
	MesgNum      MesgNum
	FieldNum     uint8
	Count        uint16
}

FieldCapabilitiesMsg represents the field_capabilities FIT message type.

func NewFieldCapabilitiesMsg

func NewFieldCapabilitiesMsg() *FieldCapabilitiesMsg

NewFieldCapabilitiesMsg returns a field_capabilities FIT message initialized to all-invalid values.

type FieldDescriptionMsg

type FieldDescriptionMsg struct {
	DeveloperDataIndex    uint8
	FieldDefinitionNumber uint8
	FitBaseTypeId         FitBaseType
	FieldName             []string
	Scale                 uint8
	Offset                int8
	Units                 []string
	FitBaseUnitId         FitBaseUnit
	NativeMesgNum         MesgNum
	NativeFieldNum        uint8
}

FieldDescriptionMsg represents the field_description FIT message type.

func NewFieldDescriptionMsg

func NewFieldDescriptionMsg() *FieldDescriptionMsg

NewFieldDescriptionMsg returns a field_description FIT message initialized to all-invalid values.

type File

type File struct {
	// Header is the FIT file header.
	Header Header

	// CRC is the FIT file CRC.
	CRC uint16

	// FileId is a message required for all FIT files.
	FileId FileIdMsg

	// Common messages for all FIT file types.
	FileCreator          *FileCreatorMsg
	TimestampCorrelation *TimestampCorrelationMsg

	// UnknownMessages is a slice of unknown messages encountered during
	// decoding. It is sorted by message number.
	UnknownMessages []UnknownMessage

	// UnknownFields is a slice of unknown fields for known messages
	// encountered during decoding. It is sorted by message number.
	UnknownFields []UnknownField
	// contains filtered or unexported fields
}

File represents a decoded FIT file.

func Decode

func Decode(r io.Reader, opts ...DecodeOption) (*File, error)

Decode reads a FIT file from r and returns it as a *File. If error is non-nil, all data decoded before the error was encountered is also returned.

func DecodeChained

func DecodeChained(r io.Reader, opts ...DecodeOption) ([]*File, error)

DecodeChained reads chained FIT files from r until an error is encountered or no more data is available. If error is non-nil, all data decoded before the error was encountered is also returned for the last file read.

func NewFile

func NewFile(t FileType, h Header) (*File, error)

NewFile creates a new File of the given type.

func (*File) Activity

func (f *File) Activity() (*ActivityFile, error)

Activity returns f's Activity file. An error is returned if the FIT file is not of type activity.

func (*File) ActivitySummary

func (f *File) ActivitySummary() (*ActivitySummaryFile, error)

ActivitySummary returns f's ActivitySummary file. An error is returned if the FIT file is not of type activity summary.

func (*File) BloodPressure

func (f *File) BloodPressure() (*BloodPressureFile, error)

BloodPressure returns f's BloodPressure file. An error is returned if the FIT file is not of type blood pressure.

func (*File) Course

func (f *File) Course() (*CourseFile, error)

Course returns f's Course file. An error is returned if the FIT file is not of type course.

func (*File) Device

func (f *File) Device() (*DeviceFile, error)

Device returns f's Device file. An error is returned if the FIT file is not of type device.

func (*File) Goals

func (f *File) Goals() (*GoalsFile, error)

Goals returns f's Goals file. An error is returned if the FIT file is not of type goals.

func (*File) MonitoringA

func (f *File) MonitoringA() (*MonitoringAFile, error)

MonitoringA returns f's MonitoringA file. An error is returned if the FIT file is not of type monitoring A.

func (*File) MonitoringB

func (f *File) MonitoringB() (*MonitoringBFile, error)

MonitoringB returns f's MonitoringB file. An error is returned if the FIT file is not of type monitoring B.

func (*File) MonitoringDaily

func (f *File) MonitoringDaily() (*MonitoringDailyFile, error)

MonitoringDaily returns f's MonitoringDaily file. An error is returned if the FIT file is not of type monitoring daily.

func (*File) Schedules

func (f *File) Schedules() (*SchedulesFile, error)

Schedules returns f's Schedules file. An error is returned if the FIT file is not of type schedules.

func (*File) Segment

func (f *File) Segment() (*SegmentFile, error)

Segment returns f's Segment file. An error is returned if the FIT file is not of type segment.

func (*File) SegmentList

func (f *File) SegmentList() (*SegmentListFile, error)

SegmentList returns f's SegmentList file. An error is returned if the FIT file is not of type segment list.

func (*File) Settings

func (f *File) Settings() (*SettingsFile, error)

Settings returns f's Settings file. An error is returned if the FIT file is not of type settings.

func (*File) Sport

func (f *File) Sport() (*SportFile, error)

Sport returns f's Sport file. An error is returned if the FIT file is not of type sport.

func (*File) Totals

func (f *File) Totals() (*TotalsFile, error)

Totals returns f's Totals file. An error is returned if the FIT file is not of type totals.

func (*File) Type

func (f *File) Type() FileType

Type returns the FIT file type.

func (*File) Weight

func (f *File) Weight() (*WeightFile, error)

Weight returns f's Weight file. An error is returned if the FIT file is not of type weight.

func (*File) Workout

func (f *File) Workout() (*WorkoutFile, error)

Workout returns f's Workout file. An error is returned if the FIT file is not of type workout.

type FileCapabilitiesMsg

type FileCapabilitiesMsg struct {
	MessageIndex MessageIndex
	Type         FileType
	Flags        FileFlags
	Directory    string
	MaxCount     uint16
	MaxSize      uint32
}

FileCapabilitiesMsg represents the file_capabilities FIT message type.

func NewFileCapabilitiesMsg

func NewFileCapabilitiesMsg() *FileCapabilitiesMsg

NewFileCapabilitiesMsg returns a file_capabilities FIT message initialized to all-invalid values.

type FileCreatorMsg

type FileCreatorMsg struct {
	SoftwareVersion uint16
	HardwareVersion uint8
}

FileCreatorMsg represents the file_creator FIT message type.

func NewFileCreatorMsg

func NewFileCreatorMsg() *FileCreatorMsg

NewFileCreatorMsg returns a file_creator FIT message initialized to all-invalid values.

type FileFlags

type FileFlags uint8

FileFlags represents the file_flags FIT type.

const (
	FileFlagsRead    FileFlags = 0x02
	FileFlagsWrite   FileFlags = 0x04
	FileFlagsErase   FileFlags = 0x08
	FileFlagsInvalid FileFlags = 0x00
)

func (FileFlags) String

func (i FileFlags) String() string

type FileIdMsg

type FileIdMsg struct {
	Type         FileType
	Manufacturer Manufacturer
	Product      uint16
	SerialNumber uint32
	TimeCreated  time.Time // Only set for files that are can be created/erased.
	Number       uint16    // Only set for files that are not created/erased.
	ProductName  string    // Optional free form string to indicate the devices name or model
}

FileIdMsg represents the file_id FIT message type.

func NewFileIdMsg

func NewFileIdMsg() *FileIdMsg

NewFileIdMsg returns a file_id FIT message initialized to all-invalid values.

func (*FileIdMsg) GetProduct

func (x *FileIdMsg) GetProduct() interface{}

GetProduct returns the appropriate Product subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

type FileType

type FileType byte

FileType represents the file FIT type.

const (
	FileTypeDevice           FileType = 1  // Read only, single file. Must be in root directory.
	FileTypeSettings         FileType = 2  // Read/write, single file. Directory=Settings
	FileTypeSport            FileType = 3  // Read/write, multiple files, file number = sport type. Directory=Sports
	FileTypeActivity         FileType = 4  // Read/erase, multiple files. Directory=Activities
	FileTypeWorkout          FileType = 5  // Read/write/erase, multiple files. Directory=Workouts
	FileTypeCourse           FileType = 6  // Read/write/erase, multiple files. Directory=Courses
	FileTypeSchedules        FileType = 7  // Read/write, single file. Directory=Schedules
	FileTypeWeight           FileType = 9  // Read only, single file. Circular buffer. All message definitions at start of file. Directory=Weight
	FileTypeTotals           FileType = 10 // Read only, single file. Directory=Totals
	FileTypeGoals            FileType = 11 // Read/write, single file. Directory=Goals
	FileTypeBloodPressure    FileType = 14 // Read only. Directory=Blood Pressure
	FileTypeMonitoringA      FileType = 15 // Read only. Directory=Monitoring. File number=sub type.
	FileTypeActivitySummary  FileType = 20 // Read/erase, multiple files. Directory=Activities
	FileTypeMonitoringDaily  FileType = 28
	FileTypeMonitoringB      FileType = 32   // Read only. Directory=Monitoring. File number=identifier
	FileTypeSegment          FileType = 34   // Read/write/erase. Multiple Files. Directory=Segments
	FileTypeSegmentList      FileType = 35   // Read/write/erase. Single File. Directory=Segments
	FileTypeExdConfiguration FileType = 40   // Read/write/erase. Single File. Directory=Settings
	FileTypeMfgRangeMin      FileType = 0xF7 // 0xF7 - 0xFE reserved for manufacturer specific file types
	FileTypeMfgRangeMax      FileType = 0xFE // 0xF7 - 0xFE reserved for manufacturer specific file types
	FileTypeInvalid          FileType = 0xFF
)

func (FileType) String

func (i FileType) String() string

type FitBaseType

type FitBaseType uint8

FitBaseType represents the fit_base_type FIT type.

const (
	FitBaseTypeEnum    FitBaseType = 0
	FitBaseTypeSint8   FitBaseType = 1
	FitBaseTypeUint8   FitBaseType = 2
	FitBaseTypeSint16  FitBaseType = 131
	FitBaseTypeUint16  FitBaseType = 132
	FitBaseTypeSint32  FitBaseType = 133
	FitBaseTypeUint32  FitBaseType = 134
	FitBaseTypeString  FitBaseType = 7
	FitBaseTypeFloat32 FitBaseType = 136
	FitBaseTypeFloat64 FitBaseType = 137
	FitBaseTypeUint8z  FitBaseType = 10
	FitBaseTypeUint16z FitBaseType = 139
	FitBaseTypeUint32z FitBaseType = 140
	FitBaseTypeByte    FitBaseType = 13
	FitBaseTypeSint64  FitBaseType = 142
	FitBaseTypeUint64  FitBaseType = 143
	FitBaseTypeUint64z FitBaseType = 144
	FitBaseTypeInvalid FitBaseType = 0xFF
)

func (FitBaseType) String

func (i FitBaseType) String() string

type FitBaseUnit

type FitBaseUnit uint16

FitBaseUnit represents the fit_base_unit FIT type.

const (
	FitBaseUnitOther    FitBaseUnit = 0
	FitBaseUnitKilogram FitBaseUnit = 1
	FitBaseUnitPound    FitBaseUnit = 2
	FitBaseUnitInvalid  FitBaseUnit = 0xFFFF
)

func (FitBaseUnit) String

func (i FitBaseUnit) String() string

type FitnessEquipmentState

type FitnessEquipmentState byte

FitnessEquipmentState represents the fitness_equipment_state FIT type.

const (
	FitnessEquipmentStateReady   FitnessEquipmentState = 0
	FitnessEquipmentStateInUse   FitnessEquipmentState = 1
	FitnessEquipmentStatePaused  FitnessEquipmentState = 2
	FitnessEquipmentStateUnknown FitnessEquipmentState = 3 // lost connection to fitness equipment
	FitnessEquipmentStateInvalid FitnessEquipmentState = 0xFF
)

func (FitnessEquipmentState) String

func (i FitnessEquipmentState) String() string

type FlyeExerciseName

type FlyeExerciseName uint16

FlyeExerciseName represents the flye_exercise_name FIT type.

const (
	FlyeExerciseNameCableCrossover                    FlyeExerciseName = 0
	FlyeExerciseNameDeclineDumbbellFlye               FlyeExerciseName = 1
	FlyeExerciseNameDumbbellFlye                      FlyeExerciseName = 2
	FlyeExerciseNameInclineDumbbellFlye               FlyeExerciseName = 3
	FlyeExerciseNameKettlebellFlye                    FlyeExerciseName = 4
	FlyeExerciseNameKneelingRearFlye                  FlyeExerciseName = 5
	FlyeExerciseNameSingleArmStandingCableReverseFlye FlyeExerciseName = 6
	FlyeExerciseNameSwissBallDumbbellFlye             FlyeExerciseName = 7
	FlyeExerciseNameArmRotations                      FlyeExerciseName = 8
	FlyeExerciseNameHugATree                          FlyeExerciseName = 9
	FlyeExerciseNameInvalid                           FlyeExerciseName = 0xFFFF
)

func (FlyeExerciseName) String

func (i FlyeExerciseName) String() string

type FormatError

type FormatError string

A FormatError reports that the input is not valid FIT.

func (FormatError) Error

func (e FormatError) Error() string

type GarminProduct

type GarminProduct uint16

GarminProduct represents the garmin_product FIT type.

const (
	GarminProductHrm1                       GarminProduct = 1
	GarminProductAxh01                      GarminProduct = 2 // AXH01 HRM chipset
	GarminProductAxb01                      GarminProduct = 3
	GarminProductAxb02                      GarminProduct = 4
	GarminProductHrm2ss                     GarminProduct = 5
	GarminProductDsiAlf02                   GarminProduct = 6
	GarminProductHrm3ss                     GarminProduct = 7
	GarminProductHrmRunSingleByteProductId  GarminProduct = 8   // hrm_run model for HRM ANT+ messaging
	GarminProductBsm                        GarminProduct = 9   // BSM model for ANT+ messaging
	GarminProductBcm                        GarminProduct = 10  // BCM model for ANT+ messaging
	GarminProductAxs01                      GarminProduct = 11  // AXS01 HRM Bike Chipset model for ANT+ messaging
	GarminProductHrmTriSingleByteProductId  GarminProduct = 12  // hrm_tri model for HRM ANT+ messaging
	GarminProductHrm4RunSingleByteProductId GarminProduct = 13  // hrm4 run model for HRM ANT+ messaging
	GarminProductFr225SingleByteProductId   GarminProduct = 14  // fr225 model for HRM ANT+ messaging
	GarminProductGen3BsmSingleByteProductId GarminProduct = 15  // gen3_bsm model for Bike Speed ANT+ messaging
	GarminProductGen3BcmSingleByteProductId GarminProduct = 16  // gen3_bcm model for Bike Cadence ANT+ messaging
	GarminProductOHR                        GarminProduct = 255 // Garmin Wearable Optical Heart Rate Sensor for ANT+ HR Profile Broadcasting
	GarminProductFr301China                 GarminProduct = 473
	GarminProductFr301Japan                 GarminProduct = 474
	GarminProductFr301Korea                 GarminProduct = 475
	GarminProductFr301Taiwan                GarminProduct = 494
	GarminProductFr405                      GarminProduct = 717 // Forerunner 405
	GarminProductFr50                       GarminProduct = 782 // Forerunner 50
	GarminProductFr405Japan                 GarminProduct = 987
	GarminProductFr60                       GarminProduct = 988 // Forerunner 60
	GarminProductDsiAlf01                   GarminProduct = 1011
	GarminProductFr310xt                    GarminProduct = 1018 // Forerunner 310
	GarminProductEdge500                    GarminProduct = 1036
	GarminProductFr110                      GarminProduct = 1124 // Forerunner 110
	GarminProductEdge800                    GarminProduct = 1169
	GarminProductEdge500Taiwan              GarminProduct = 1199
	GarminProductEdge500Japan               GarminProduct = 1213
	GarminProductChirp                      GarminProduct = 1253
	GarminProductFr110Japan                 GarminProduct = 1274
	GarminProductEdge200                    GarminProduct = 1325
	GarminProductFr910xt                    GarminProduct = 1328
	GarminProductEdge800Taiwan              GarminProduct = 1333
	GarminProductEdge800Japan               GarminProduct = 1334
	GarminProductAlf04                      GarminProduct = 1341
	GarminProductFr610                      GarminProduct = 1345
	GarminProductFr210Japan                 GarminProduct = 1360
	GarminProductVectorSs                   GarminProduct = 1380
	GarminProductVectorCp                   GarminProduct = 1381
	GarminProductEdge800China               GarminProduct = 1386
	GarminProductEdge500China               GarminProduct = 1387
	GarminProductApproachG10                GarminProduct = 1405
	GarminProductFr610Japan                 GarminProduct = 1410
	GarminProductEdge500Korea               GarminProduct = 1422
	GarminProductFr70                       GarminProduct = 1436
	GarminProductFr310xt4t                  GarminProduct = 1446
	GarminProductAmx                        GarminProduct = 1461
	GarminProductFr10                       GarminProduct = 1482
	GarminProductEdge800Korea               GarminProduct = 1497
	GarminProductSwim                       GarminProduct = 1499
	GarminProductFr910xtChina               GarminProduct = 1537
	GarminProductFenix                      GarminProduct = 1551
	GarminProductEdge200Taiwan              GarminProduct = 1555
	GarminProductEdge510                    GarminProduct = 1561
	GarminProductEdge810                    GarminProduct = 1567
	GarminProductTempe                      GarminProduct = 1570
	GarminProductFr910xtJapan               GarminProduct = 1600
	GarminProductFr620                      GarminProduct = 1623
	GarminProductFr220                      GarminProduct = 1632
	GarminProductFr910xtKorea               GarminProduct = 1664
	GarminProductFr10Japan                  GarminProduct = 1688
	GarminProductEdge810Japan               GarminProduct = 1721
	GarminProductVirbElite                  GarminProduct = 1735
	GarminProductEdgeTouring                GarminProduct = 1736 // Also Edge Touring Plus
	GarminProductEdge510Japan               GarminProduct = 1742
	GarminProductHrmTri                     GarminProduct = 1743 // Also HRM-Swim
	GarminProductHrmRun                     GarminProduct = 1752
	GarminProductFr920xt                    GarminProduct = 1765
	GarminProductEdge510Asia                GarminProduct = 1821
	GarminProductEdge810China               GarminProduct = 1822
	GarminProductEdge810Taiwan              GarminProduct = 1823
	GarminProductEdge1000                   GarminProduct = 1836
	GarminProductVivoFit                    GarminProduct = 1837
	GarminProductVirbRemote                 GarminProduct = 1853
	GarminProductVivoKi                     GarminProduct = 1885
	GarminProductFr15                       GarminProduct = 1903
	GarminProductVivoActive                 GarminProduct = 1907
	GarminProductEdge510Korea               GarminProduct = 1918
	GarminProductFr620Japan                 GarminProduct = 1928
	GarminProductFr620China                 GarminProduct = 1929
	GarminProductFr220Japan                 GarminProduct = 1930
	GarminProductFr220China                 GarminProduct = 1931
	GarminProductApproachS6                 GarminProduct = 1936
	GarminProductVivoSmart                  GarminProduct = 1956
	GarminProductFenix2                     GarminProduct = 1967
	GarminProductEpix                       GarminProduct = 1988
	GarminProductFenix3                     GarminProduct = 2050
	GarminProductEdge1000Taiwan             GarminProduct = 2052
	GarminProductEdge1000Japan              GarminProduct = 2053
	GarminProductFr15Japan                  GarminProduct = 2061
	GarminProductEdge520                    GarminProduct = 2067
	GarminProductEdge1000China              GarminProduct = 2070
	GarminProductFr620Russia                GarminProduct = 2072
	GarminProductFr220Russia                GarminProduct = 2073
	GarminProductVectorS                    GarminProduct = 2079
	GarminProductEdge1000Korea              GarminProduct = 2100
	GarminProductFr920xtTaiwan              GarminProduct = 2130
	GarminProductFr920xtChina               GarminProduct = 2131
	GarminProductFr920xtJapan               GarminProduct = 2132
	GarminProductVirbx                      GarminProduct = 2134
	GarminProductVivoSmartApac              GarminProduct = 2135
	GarminProductEtrexTouch                 GarminProduct = 2140
	GarminProductEdge25                     GarminProduct = 2147
	GarminProductFr25                       GarminProduct = 2148
	GarminProductVivoFit2                   GarminProduct = 2150
	GarminProductFr225                      GarminProduct = 2153
	GarminProductFr630                      GarminProduct = 2156
	GarminProductFr230                      GarminProduct = 2157
	GarminProductFr735xt                    GarminProduct = 2158
	GarminProductVivoActiveApac             GarminProduct = 2160
	GarminProductVector2                    GarminProduct = 2161
	GarminProductVector2s                   GarminProduct = 2162
	GarminProductVirbxe                     GarminProduct = 2172
	GarminProductFr620Taiwan                GarminProduct = 2173
	GarminProductFr220Taiwan                GarminProduct = 2174
	GarminProductTruswing                   GarminProduct = 2175
	GarminProductD2airvenu                  GarminProduct = 2187
	GarminProductFenix3China                GarminProduct = 2188
	GarminProductFenix3Twn                  GarminProduct = 2189
	GarminProductVariaHeadlight             GarminProduct = 2192
	GarminProductVariaTaillightOld          GarminProduct = 2193
	GarminProductEdgeExplore1000            GarminProduct = 2204
	GarminProductFr225Asia                  GarminProduct = 2219
	GarminProductVariaRadarTaillight        GarminProduct = 2225
	GarminProductVariaRadarDisplay          GarminProduct = 2226
	GarminProductEdge20                     GarminProduct = 2238
	GarminProductEdge520Asia                GarminProduct = 2260
	GarminProductEdge520Japan               GarminProduct = 2261
	GarminProductD2Bravo                    GarminProduct = 2262
	GarminProductApproachS20                GarminProduct = 2266
	GarminProductVivoSmart2                 GarminProduct = 2271
	GarminProductEdge1000Thai               GarminProduct = 2274
	GarminProductVariaRemote                GarminProduct = 2276
	GarminProductEdge25Asia                 GarminProduct = 2288
	GarminProductEdge25Jpn                  GarminProduct = 2289
	GarminProductEdge20Asia                 GarminProduct = 2290
	GarminProductApproachX40                GarminProduct = 2292
	GarminProductFenix3Japan                GarminProduct = 2293
	GarminProductVivoSmartEmea              GarminProduct = 2294
	GarminProductFr630Asia                  GarminProduct = 2310
	GarminProductFr630Jpn                   GarminProduct = 2311
	GarminProductFr230Jpn                   GarminProduct = 2313
	GarminProductHrm4Run                    GarminProduct = 2327
	GarminProductEpixJapan                  GarminProduct = 2332
	GarminProductVivoActiveHr               GarminProduct = 2337
	GarminProductVivoSmartGpsHr             GarminProduct = 2347
	GarminProductVivoSmartHr                GarminProduct = 2348
	GarminProductVivoSmartHrAsia            GarminProduct = 2361
	GarminProductVivoSmartGpsHrAsia         GarminProduct = 2362
	GarminProductVivoMove                   GarminProduct = 2368
	GarminProductVariaTaillight             GarminProduct = 2379
	GarminProductFr235Asia                  GarminProduct = 2396
	GarminProductFr235Japan                 GarminProduct = 2397
	GarminProductVariaVision                GarminProduct = 2398
	GarminProductVivoFit3                   GarminProduct = 2406
	GarminProductFenix3Korea                GarminProduct = 2407
	GarminProductFenix3Sea                  GarminProduct = 2408
	GarminProductFenix3Hr                   GarminProduct = 2413
	GarminProductVirbUltra30                GarminProduct = 2417
	GarminProductIndexSmartScale            GarminProduct = 2429
	GarminProductFr235                      GarminProduct = 2431
	GarminProductFenix3Chronos              GarminProduct = 2432
	GarminProductOregon7xx                  GarminProduct = 2441
	GarminProductRino7xx                    GarminProduct = 2444
	GarminProductEpixKorea                  GarminProduct = 2457
	GarminProductFenix3HrChn                GarminProduct = 2473
	GarminProductFenix3HrTwn                GarminProduct = 2474
	GarminProductFenix3HrJpn                GarminProduct = 2475
	GarminProductFenix3HrSea                GarminProduct = 2476
	GarminProductFenix3HrKor                GarminProduct = 2477
	GarminProductNautix                     GarminProduct = 2496
	GarminProductVivoActiveHrApac           GarminProduct = 2497
	GarminProductOregon7xxWw                GarminProduct = 2512
	GarminProductEdge820                    GarminProduct = 2530
	GarminProductEdgeExplore820             GarminProduct = 2531
	GarminProductFr735xtApac                GarminProduct = 2533
	GarminProductFr735xtJapan               GarminProduct = 2534
	GarminProductFenix5s                    GarminProduct = 2544
	GarminProductD2BravoTitanium            GarminProduct = 2547
	GarminProductVariaUt800                 GarminProduct = 2567 // Varia UT 800 SW
	GarminProductRunningDynamicsPod         GarminProduct = 2593
	GarminProductEdge820China               GarminProduct = 2599
	GarminProductEdge820Japan               GarminProduct = 2600
	GarminProductFenix5x                    GarminProduct = 2604
	GarminProductVivoFitJr                  GarminProduct = 2606
	GarminProductVivoSmart3                 GarminProduct = 2622
	GarminProductVivoSport                  GarminProduct = 2623
	GarminProductEdge820Taiwan              GarminProduct = 2628
	GarminProductEdge820Korea               GarminProduct = 2629
	GarminProductEdge820Sea                 GarminProduct = 2630
	GarminProductFr35Hebrew                 GarminProduct = 2650
	GarminProductApproachS60                GarminProduct = 2656
	GarminProductFr35Apac                   GarminProduct = 2667
	GarminProductFr35Japan                  GarminProduct = 2668
	GarminProductFenix3ChronosAsia          GarminProduct = 2675
	GarminProductVirb360                    GarminProduct = 2687
	GarminProductFr935                      GarminProduct = 2691
	GarminProductFenix5                     GarminProduct = 2697
	GarminProductVivoactive3                GarminProduct = 2700
	GarminProductFr235ChinaNfc              GarminProduct = 2733
	GarminProductForetrex601701             GarminProduct = 2769
	GarminProductVivoMoveHr                 GarminProduct = 2772
	GarminProductEdge1030                   GarminProduct = 2713
	GarminProductFr35Sea                    GarminProduct = 2727
	GarminProductVector3                    GarminProduct = 2787
	GarminProductFenix5Asia                 GarminProduct = 2796
	GarminProductFenix5sAsia                GarminProduct = 2797
	GarminProductFenix5xAsia                GarminProduct = 2798
	GarminProductApproachZ80                GarminProduct = 2806
	GarminProductFr35Korea                  GarminProduct = 2814
	GarminProductD2charlie                  GarminProduct = 2819
	GarminProductVivoSmart3Apac             GarminProduct = 2831
	GarminProductVivoSportApac              GarminProduct = 2832
	GarminProductFr935Asia                  GarminProduct = 2833
	GarminProductDescent                    GarminProduct = 2859
	GarminProductVivoFit4                   GarminProduct = 2878
	GarminProductFr645                      GarminProduct = 2886
	GarminProductFr645m                     GarminProduct = 2888
	GarminProductFr30                       GarminProduct = 2891
	GarminProductFenix5sPlus                GarminProduct = 2900
	GarminProductEdge130                    GarminProduct = 2909
	GarminProductEdge1030Asia               GarminProduct = 2924
	GarminProductVivosmart4                 GarminProduct = 2927
	GarminProductVivoMoveHrAsia             GarminProduct = 2945
	GarminProductApproachX10                GarminProduct = 2962
	GarminProductFr30Asia                   GarminProduct = 2977
	GarminProductVivoactive3mW              GarminProduct = 2988
	GarminProductFr645Asia                  GarminProduct = 3003
	GarminProductFr645mAsia                 GarminProduct = 3004
	GarminProductEdgeExplore                GarminProduct = 3011
	GarminProductGpsmap66                   GarminProduct = 3028
	GarminProductApproachS10                GarminProduct = 3049
	GarminProductVivoactive3mL              GarminProduct = 3066
	GarminProductApproachG80                GarminProduct = 3085
	GarminProductEdge130Asia                GarminProduct = 3092
	GarminProductEdge1030Bontrager          GarminProduct = 3095
	GarminProductFenix5Plus                 GarminProduct = 3110
	GarminProductFenix5xPlus                GarminProduct = 3111
	GarminProductEdge520Plus                GarminProduct = 3112
	GarminProductFr945                      GarminProduct = 3113
	GarminProductEdge530                    GarminProduct = 3121
	GarminProductEdge830                    GarminProduct = 3122
	GarminProductInstinctEsports            GarminProduct = 3126
	GarminProductFenix5sPlusApac            GarminProduct = 3134
	GarminProductFenix5xPlusApac            GarminProduct = 3135
	GarminProductEdge520PlusApac            GarminProduct = 3142
	GarminProductFr235lAsia                 GarminProduct = 3144
	GarminProductFr245Asia                  GarminProduct = 3145
	GarminProductVivoActive3mApac           GarminProduct = 3163
	GarminProductGen3Bsm                    GarminProduct = 3192 // gen3 bike speed sensor
	GarminProductGen3Bcm                    GarminProduct = 3193 // gen3 bike cadence sensor
	GarminProductVivoSmart4Asia             GarminProduct = 3218
	GarminProductVivoactive4Small           GarminProduct = 3224
	GarminProductVivoactive4Large           GarminProduct = 3225
	GarminProductVenu                       GarminProduct = 3226
	GarminProductMarqDriver                 GarminProduct = 3246
	GarminProductMarqAviator                GarminProduct = 3247
	GarminProductMarqCaptain                GarminProduct = 3248
	GarminProductMarqCommander              GarminProduct = 3249
	GarminProductMarqExpedition             GarminProduct = 3250
	GarminProductMarqAthlete                GarminProduct = 3251
	GarminProductDescentMk2                 GarminProduct = 3258
	GarminProductGpsmap66i                  GarminProduct = 3284
	GarminProductFenix6SSport               GarminProduct = 3287
	GarminProductFenix6S                    GarminProduct = 3288
	GarminProductFenix6Sport                GarminProduct = 3289
	GarminProductFenix6                     GarminProduct = 3290
	GarminProductFenix6x                    GarminProduct = 3291
	GarminProductHrmDual                    GarminProduct = 3299 // HRM-Dual
	GarminProductHrmPro                     GarminProduct = 3300 // HRM-Pro
	GarminProductVivoMove3Premium           GarminProduct = 3308
	GarminProductApproachS40                GarminProduct = 3314
	GarminProductFr245mAsia                 GarminProduct = 3321
	GarminProductEdge530Apac                GarminProduct = 3349
	GarminProductEdge830Apac                GarminProduct = 3350
	GarminProductVivoMove3                  GarminProduct = 3378
	GarminProductVivoActive4SmallAsia       GarminProduct = 3387
	GarminProductVivoActive4LargeAsia       GarminProduct = 3388
	GarminProductVivoActive4OledAsia        GarminProduct = 3389
	GarminProductSwim2                      GarminProduct = 3405
	GarminProductMarqDriverAsia             GarminProduct = 3420
	GarminProductMarqAviatorAsia            GarminProduct = 3421
	GarminProductVivoMove3Asia              GarminProduct = 3422
	GarminProductFr945Asia                  GarminProduct = 3441
	GarminProductVivoActive3tChn            GarminProduct = 3446
	GarminProductMarqCaptainAsia            GarminProduct = 3448
	GarminProductMarqCommanderAsia          GarminProduct = 3449
	GarminProductMarqExpeditionAsia         GarminProduct = 3450
	GarminProductMarqAthleteAsia            GarminProduct = 3451
	GarminProductInstinctSolar              GarminProduct = 3466
	GarminProductFr45Asia                   GarminProduct = 3469
	GarminProductVivoactive3Daimler         GarminProduct = 3473
	GarminProductLegacyRey                  GarminProduct = 3498
	GarminProductLegacyDarthVader           GarminProduct = 3499
	GarminProductLegacyCaptainMarvel        GarminProduct = 3500
	GarminProductLegacyFirstAvenger         GarminProduct = 3501
	GarminProductFenix6sSportAsia           GarminProduct = 3512
	GarminProductFenix6sAsia                GarminProduct = 3513
	GarminProductFenix6SportAsia            GarminProduct = 3514
	GarminProductFenix6Asia                 GarminProduct = 3515
	GarminProductFenix6xAsia                GarminProduct = 3516
	GarminProductLegacyCaptainMarvelAsia    GarminProduct = 3535
	GarminProductLegacyFirstAvengerAsia     GarminProduct = 3536
	GarminProductLegacyReyAsia              GarminProduct = 3537
	GarminProductLegacyDarthVaderAsia       GarminProduct = 3538
	GarminProductDescentMk2s                GarminProduct = 3542
	GarminProductEdge130Plus                GarminProduct = 3558
	GarminProductEdge1030Plus               GarminProduct = 3570
	GarminProductRally200                   GarminProduct = 3578 // Rally 100/200 Power Meter Series
	GarminProductFr745                      GarminProduct = 3589
	GarminProductVenusq                     GarminProduct = 3600
	GarminProductLily                       GarminProduct = 3615
	GarminProductMarqAdventurer             GarminProduct = 3624
	GarminProductEnduro                     GarminProduct = 3638
	GarminProductSwim2Apac                  GarminProduct = 3639
	GarminProductMarqAdventurerAsia         GarminProduct = 3648
	GarminProductFr945Lte                   GarminProduct = 3652
	GarminProductDescentMk2Asia             GarminProduct = 3702 // Mk2 and Mk2i
	GarminProductVenu2                      GarminProduct = 3703
	GarminProductVenu2s                     GarminProduct = 3704
	GarminProductVenuDaimlerAsia            GarminProduct = 3737
	GarminProductMarqGolfer                 GarminProduct = 3739
	GarminProductVenuDaimler                GarminProduct = 3740
	GarminProductFr745Asia                  GarminProduct = 3794
	GarminProductLilyAsia                   GarminProduct = 3809
	GarminProductEdge1030PlusAsia           GarminProduct = 3812
	GarminProductEdge130PlusAsia            GarminProduct = 3813
	GarminProductApproachS12                GarminProduct = 3823
	GarminProductEnduroAsia                 GarminProduct = 3872
	GarminProductVenusqAsia                 GarminProduct = 3837
	GarminProductEdge1040                   GarminProduct = 3843
	GarminProductMarqGolferAsia             GarminProduct = 3850
	GarminProductVenu2Plus                  GarminProduct = 3851
	GarminProductFr55                       GarminProduct = 3869
	GarminProductInstinct2                  GarminProduct = 3888
	GarminProductFenix7s                    GarminProduct = 3905
	GarminProductFenix7                     GarminProduct = 3906
	GarminProductFenix7x                    GarminProduct = 3907
	GarminProductFenix7sApac                GarminProduct = 3908
	GarminProductFenix7Apac                 GarminProduct = 3909
	GarminProductFenix7xApac                GarminProduct = 3910
	GarminProductApproachG12                GarminProduct = 3927
	GarminProductDescentMk2sAsia            GarminProduct = 3930
	GarminProductApproachS42                GarminProduct = 3934
	GarminProductEpixGen2                   GarminProduct = 3943
	GarminProductEpixGen2Apac               GarminProduct = 3944
	GarminProductVenu2sAsia                 GarminProduct = 3949
	GarminProductVenu2Asia                  GarminProduct = 3950
	GarminProductFr945LteAsia               GarminProduct = 3978
	GarminProductVivoMoveSport              GarminProduct = 3982
	GarminProductApproachS12Asia            GarminProduct = 3986
	GarminProductFr255Music                 GarminProduct = 3990
	GarminProductFr255SmallMusic            GarminProduct = 3991
	GarminProductFr255                      GarminProduct = 3992
	GarminProductFr255Small                 GarminProduct = 3993
	GarminProductApproachG12Asia            GarminProduct = 4001
	GarminProductApproachS42Asia            GarminProduct = 4002
	GarminProductDescentG1                  GarminProduct = 4005
	GarminProductVenu2PlusAsia              GarminProduct = 4017
	GarminProductFr955                      GarminProduct = 4024
	GarminProductFr55Asia                   GarminProduct = 4033
	GarminProductVivosmart5                 GarminProduct = 4063
	GarminProductInstinct2Asia              GarminProduct = 4071
	GarminProductVenusq2                    GarminProduct = 4115
	GarminProductVenusq2music               GarminProduct = 4116
	GarminProductD2AirX10                   GarminProduct = 4125
	GarminProductHrmProPlus                 GarminProduct = 4130
	GarminProductDescentG1Asia              GarminProduct = 4132
	GarminProductTactix7                    GarminProduct = 4135
	GarminProductEdgeExplore2               GarminProduct = 4169
	GarminProductTacxNeoSmart               GarminProduct = 4265 // Neo Smart, Tacx
	GarminProductTacxNeo2Smart              GarminProduct = 4266 // Neo 2 Smart, Tacx
	GarminProductTacxNeo2TSmart             GarminProduct = 4267 // Neo 2T Smart, Tacx
	GarminProductTacxNeoSmartBike           GarminProduct = 4268 // Neo Smart Bike, Tacx
	GarminProductTacxSatoriSmart            GarminProduct = 4269 // Satori Smart, Tacx
	GarminProductTacxFlowSmart              GarminProduct = 4270 // Flow Smart, Tacx
	GarminProductTacxVortexSmart            GarminProduct = 4271 // Vortex Smart, Tacx
	GarminProductTacxBushidoSmart           GarminProduct = 4272 // Bushido Smart, Tacx
	GarminProductTacxGeniusSmart            GarminProduct = 4273 // Genius Smart, Tacx
	GarminProductTacxFluxFluxSSmart         GarminProduct = 4274 // Flux/Flux S Smart, Tacx
	GarminProductTacxFlux2Smart             GarminProduct = 4275 // Flux 2 Smart, Tacx
	GarminProductTacxMagnum                 GarminProduct = 4276 // Magnum, Tacx
	GarminProductEdge1040Asia               GarminProduct = 4305
	GarminProductEnduro2                    GarminProduct = 4341
	GarminProductSdm4                       GarminProduct = 10007 // SDM4 footpod
	GarminProductEdgeRemote                 GarminProduct = 10014
	GarminProductTacxTrainingAppWin         GarminProduct = 20533
	GarminProductTacxTrainingAppMac         GarminProduct = 20534
	GarminProductTacxTrainingAppMacCatalyst GarminProduct = 20565
	GarminProductTrainingCenter             GarminProduct = 20119
	GarminProductTacxTrainingAppAndroid     GarminProduct = 30045
	GarminProductTacxTrainingAppIos         GarminProduct = 30046
	GarminProductTacxTrainingAppLegacy      GarminProduct = 30047
	GarminProductConnectiqSimulator         GarminProduct = 65531
	GarminProductAndroidAntplusPlugin       GarminProduct = 65532
	GarminProductConnect                    GarminProduct = 65534 // Garmin Connect website
	GarminProductInvalid                    GarminProduct = 0xFFFF
)

func (GarminProduct) String

func (i GarminProduct) String() string

type Gender

type Gender byte

Gender represents the gender FIT type.

const (
	GenderFemale  Gender = 0
	GenderMale    Gender = 1
	GenderInvalid Gender = 0xFF
)

func (Gender) String

func (i Gender) String() string

type Goal

type Goal byte

Goal represents the goal FIT type.

const (
	GoalTime          Goal = 0
	GoalDistance      Goal = 1
	GoalCalories      Goal = 2
	GoalFrequency     Goal = 3
	GoalSteps         Goal = 4
	GoalAscent        Goal = 5
	GoalActiveMinutes Goal = 6
	GoalInvalid       Goal = 0xFF
)

func (Goal) String

func (i Goal) String() string

type GoalMsg

type GoalMsg struct {
	MessageIndex    MessageIndex
	Sport           Sport
	SubSport        SubSport
	StartDate       time.Time
	EndDate         time.Time
	Type            Goal
	Value           uint32
	Repeat          Bool
	TargetValue     uint32
	Recurrence      GoalRecurrence
	RecurrenceValue uint16
	Enabled         Bool
	Source          GoalSource
}

GoalMsg represents the goal FIT message type.

func NewGoalMsg

func NewGoalMsg() *GoalMsg

NewGoalMsg returns a goal FIT message initialized to all-invalid values.

type GoalRecurrence

type GoalRecurrence byte

GoalRecurrence represents the goal_recurrence FIT type.

const (
	GoalRecurrenceOff     GoalRecurrence = 0
	GoalRecurrenceDaily   GoalRecurrence = 1
	GoalRecurrenceWeekly  GoalRecurrence = 2
	GoalRecurrenceMonthly GoalRecurrence = 3
	GoalRecurrenceYearly  GoalRecurrence = 4
	GoalRecurrenceCustom  GoalRecurrence = 5
	GoalRecurrenceInvalid GoalRecurrence = 0xFF
)

func (GoalRecurrence) String

func (i GoalRecurrence) String() string

type GoalSource

type GoalSource byte

GoalSource represents the goal_source FIT type.

const (
	GoalSourceAuto      GoalSource = 0 // Device generated
	GoalSourceCommunity GoalSource = 1 // Social network sourced goal
	GoalSourceUser      GoalSource = 2 // Manually generated
	GoalSourceInvalid   GoalSource = 0xFF
)

func (GoalSource) String

func (i GoalSource) String() string

type GoalsFile

type GoalsFile struct {
	Goals []*GoalMsg
}

GoalsFile represents the Goals FIT file type. Describes a user’s exercise/health goals.

type GpsMetadataMsg

type GpsMetadataMsg struct {
}

GpsMetadataMsg represents the gps_metadata FIT message type.

func NewGpsMetadataMsg

func NewGpsMetadataMsg() *GpsMetadataMsg

NewGpsMetadataMsg returns a gps_metadata FIT message initialized to all-invalid values.

type GyroscopeDataMsg

type GyroscopeDataMsg struct {
}

GyroscopeDataMsg represents the gyroscope_data FIT message type.

func NewGyroscopeDataMsg

func NewGyroscopeDataMsg() *GyroscopeDataMsg

NewGyroscopeDataMsg returns a gyroscope_data FIT message initialized to all-invalid values.

type Header struct {
	Size            byte
	ProtocolVersion byte
	ProfileVersion  uint16
	DataSize        uint32
	DataType        [4]byte
	CRC             uint16
}

Header represents a FIT file header.

func DecodeHeader

func DecodeHeader(r io.Reader) (Header, error)

DecodeHeader returns the FIT file header without decoding the entire FIT file.

func NewHeader

func NewHeader(v ProtocolVersion, crc bool) Header

NewHeader creates a new Header with required info.

func (Header) CheckIntegrity

func (h Header) CheckIntegrity() error

CheckIntegrity verifies the FIT header CRC.

func (Header) MarshalBinary

func (h Header) MarshalBinary() ([]byte, error)

MarshalBinary implements the encoding.BinaryMarshaler interface.

func (Header) MarshalJSON

func (h Header) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface.

func (Header) String

func (h Header) String() string

type HipRaiseExerciseName

type HipRaiseExerciseName uint16

HipRaiseExerciseName represents the hip_raise_exercise_name FIT type.

const (
	HipRaiseExerciseNameBarbellHipThrustOnFloor                         HipRaiseExerciseName = 0
	HipRaiseExerciseNameBarbellHipThrustWithBench                       HipRaiseExerciseName = 1
	HipRaiseExerciseNameBentKneeSwissBallReverseHipRaise                HipRaiseExerciseName = 2
	HipRaiseExerciseNameWeightedBentKneeSwissBallReverseHipRaise        HipRaiseExerciseName = 3
	HipRaiseExerciseNameBridgeWithLegExtension                          HipRaiseExerciseName = 4
	HipRaiseExerciseNameWeightedBridgeWithLegExtension                  HipRaiseExerciseName = 5
	HipRaiseExerciseNameClamBridge                                      HipRaiseExerciseName = 6
	HipRaiseExerciseNameFrontKickTabletop                               HipRaiseExerciseName = 7
	HipRaiseExerciseNameWeightedFrontKickTabletop                       HipRaiseExerciseName = 8
	HipRaiseExerciseNameHipExtensionAndCross                            HipRaiseExerciseName = 9
	HipRaiseExerciseNameWeightedHipExtensionAndCross                    HipRaiseExerciseName = 10
	HipRaiseExerciseNameHipRaise                                        HipRaiseExerciseName = 11
	HipRaiseExerciseNameWeightedHipRaise                                HipRaiseExerciseName = 12
	HipRaiseExerciseNameHipRaiseWithFeetOnSwissBall                     HipRaiseExerciseName = 13
	HipRaiseExerciseNameWeightedHipRaiseWithFeetOnSwissBall             HipRaiseExerciseName = 14
	HipRaiseExerciseNameHipRaiseWithHeadOnBosuBall                      HipRaiseExerciseName = 15
	HipRaiseExerciseNameWeightedHipRaiseWithHeadOnBosuBall              HipRaiseExerciseName = 16
	HipRaiseExerciseNameHipRaiseWithHeadOnSwissBall                     HipRaiseExerciseName = 17
	HipRaiseExerciseNameWeightedHipRaiseWithHeadOnSwissBall             HipRaiseExerciseName = 18
	HipRaiseExerciseNameHipRaiseWithKneeSqueeze                         HipRaiseExerciseName = 19
	HipRaiseExerciseNameWeightedHipRaiseWithKneeSqueeze                 HipRaiseExerciseName = 20
	HipRaiseExerciseNameInclineRearLegExtension                         HipRaiseExerciseName = 21
	HipRaiseExerciseNameWeightedInclineRearLegExtension                 HipRaiseExerciseName = 22
	HipRaiseExerciseNameKettlebellSwing                                 HipRaiseExerciseName = 23
	HipRaiseExerciseNameMarchingHipRaise                                HipRaiseExerciseName = 24
	HipRaiseExerciseNameWeightedMarchingHipRaise                        HipRaiseExerciseName = 25
	HipRaiseExerciseNameMarchingHipRaiseWithFeetOnASwissBall            HipRaiseExerciseName = 26
	HipRaiseExerciseNameWeightedMarchingHipRaiseWithFeetOnASwissBall    HipRaiseExerciseName = 27
	HipRaiseExerciseNameReverseHipRaise                                 HipRaiseExerciseName = 28
	HipRaiseExerciseNameWeightedReverseHipRaise                         HipRaiseExerciseName = 29
	HipRaiseExerciseNameSingleLegHipRaise                               HipRaiseExerciseName = 30
	HipRaiseExerciseNameWeightedSingleLegHipRaise                       HipRaiseExerciseName = 31
	HipRaiseExerciseNameSingleLegHipRaiseWithFootOnBench                HipRaiseExerciseName = 32
	HipRaiseExerciseNameWeightedSingleLegHipRaiseWithFootOnBench        HipRaiseExerciseName = 33
	HipRaiseExerciseNameSingleLegHipRaiseWithFootOnBosuBall             HipRaiseExerciseName = 34
	HipRaiseExerciseNameWeightedSingleLegHipRaiseWithFootOnBosuBall     HipRaiseExerciseName = 35
	HipRaiseExerciseNameSingleLegHipRaiseWithFootOnFoamRoller           HipRaiseExerciseName = 36
	HipRaiseExerciseNameWeightedSingleLegHipRaiseWithFootOnFoamRoller   HipRaiseExerciseName = 37
	HipRaiseExerciseNameSingleLegHipRaiseWithFootOnMedicineBall         HipRaiseExerciseName = 38
	HipRaiseExerciseNameWeightedSingleLegHipRaiseWithFootOnMedicineBall HipRaiseExerciseName = 39
	HipRaiseExerciseNameSingleLegHipRaiseWithHeadOnBosuBall             HipRaiseExerciseName = 40
	HipRaiseExerciseNameWeightedSingleLegHipRaiseWithHeadOnBosuBall     HipRaiseExerciseName = 41
	HipRaiseExerciseNameWeightedClamBridge                              HipRaiseExerciseName = 42
	HipRaiseExerciseNameSingleLegSwissBallHipRaiseAndLegCurl            HipRaiseExerciseName = 43
	HipRaiseExerciseNameClams                                           HipRaiseExerciseName = 44
	HipRaiseExerciseNameInnerThighCircles                               HipRaiseExerciseName = 45 // Deprecated do not use
	HipRaiseExerciseNameInnerThighSideLift                              HipRaiseExerciseName = 46 // Deprecated do not use
	HipRaiseExerciseNameLegCircles                                      HipRaiseExerciseName = 47
	HipRaiseExerciseNameLegLift                                         HipRaiseExerciseName = 48
	HipRaiseExerciseNameLegLiftInExternalRotation                       HipRaiseExerciseName = 49
	HipRaiseExerciseNameInvalid                                         HipRaiseExerciseName = 0xFFFF
)

func (HipRaiseExerciseName) String

func (i HipRaiseExerciseName) String() string

type HipStabilityExerciseName

type HipStabilityExerciseName uint16

HipStabilityExerciseName represents the hip_stability_exercise_name FIT type.

const (
	HipStabilityExerciseNameBandSideLyingLegRaise             HipStabilityExerciseName = 0
	HipStabilityExerciseNameDeadBug                           HipStabilityExerciseName = 1
	HipStabilityExerciseNameWeightedDeadBug                   HipStabilityExerciseName = 2
	HipStabilityExerciseNameExternalHipRaise                  HipStabilityExerciseName = 3
	HipStabilityExerciseNameWeightedExternalHipRaise          HipStabilityExerciseName = 4
	HipStabilityExerciseNameFireHydrantKicks                  HipStabilityExerciseName = 5
	HipStabilityExerciseNameWeightedFireHydrantKicks          HipStabilityExerciseName = 6
	HipStabilityExerciseNameHipCircles                        HipStabilityExerciseName = 7
	HipStabilityExerciseNameWeightedHipCircles                HipStabilityExerciseName = 8
	HipStabilityExerciseNameInnerThighLift                    HipStabilityExerciseName = 9
	HipStabilityExerciseNameWeightedInnerThighLift            HipStabilityExerciseName = 10
	HipStabilityExerciseNameLateralWalksWithBandAtAnkles      HipStabilityExerciseName = 11
	HipStabilityExerciseNamePretzelSideKick                   HipStabilityExerciseName = 12
	HipStabilityExerciseNameWeightedPretzelSideKick           HipStabilityExerciseName = 13
	HipStabilityExerciseNameProneHipInternalRotation          HipStabilityExerciseName = 14
	HipStabilityExerciseNameWeightedProneHipInternalRotation  HipStabilityExerciseName = 15
	HipStabilityExerciseNameQuadruped                         HipStabilityExerciseName = 16
	HipStabilityExerciseNameQuadrupedHipExtension             HipStabilityExerciseName = 17
	HipStabilityExerciseNameWeightedQuadrupedHipExtension     HipStabilityExerciseName = 18
	HipStabilityExerciseNameQuadrupedWithLegLift              HipStabilityExerciseName = 19
	HipStabilityExerciseNameWeightedQuadrupedWithLegLift      HipStabilityExerciseName = 20
	HipStabilityExerciseNameSideLyingLegRaise                 HipStabilityExerciseName = 21
	HipStabilityExerciseNameWeightedSideLyingLegRaise         HipStabilityExerciseName = 22
	HipStabilityExerciseNameSlidingHipAdduction               HipStabilityExerciseName = 23
	HipStabilityExerciseNameWeightedSlidingHipAdduction       HipStabilityExerciseName = 24
	HipStabilityExerciseNameStandingAdduction                 HipStabilityExerciseName = 25
	HipStabilityExerciseNameWeightedStandingAdduction         HipStabilityExerciseName = 26
	HipStabilityExerciseNameStandingCableHipAbduction         HipStabilityExerciseName = 27
	HipStabilityExerciseNameStandingHipAbduction              HipStabilityExerciseName = 28
	HipStabilityExerciseNameWeightedStandingHipAbduction      HipStabilityExerciseName = 29
	HipStabilityExerciseNameStandingRearLegRaise              HipStabilityExerciseName = 30
	HipStabilityExerciseNameWeightedStandingRearLegRaise      HipStabilityExerciseName = 31
	HipStabilityExerciseNameSupineHipInternalRotation         HipStabilityExerciseName = 32
	HipStabilityExerciseNameWeightedSupineHipInternalRotation HipStabilityExerciseName = 33
	HipStabilityExerciseNameInvalid                           HipStabilityExerciseName = 0xFFFF
)

func (HipStabilityExerciseName) String

func (i HipStabilityExerciseName) String() string

type HipSwingExerciseName

type HipSwingExerciseName uint16

HipSwingExerciseName represents the hip_swing_exercise_name FIT type.

const (
	HipSwingExerciseNameSingleArmKettlebellSwing HipSwingExerciseName = 0
	HipSwingExerciseNameSingleArmDumbbellSwing   HipSwingExerciseName = 1
	HipSwingExerciseNameStepOutSwing             HipSwingExerciseName = 2
	HipSwingExerciseNameInvalid                  HipSwingExerciseName = 0xFFFF
)

func (HipSwingExerciseName) String

func (i HipSwingExerciseName) String() string

type HrMsg

type HrMsg struct {
	Timestamp           time.Time
	FractionalTimestamp uint16
	Time256             uint8
	FilteredBpm         []uint8
	EventTimestamp      []uint32
	EventTimestamp12    []byte
}

HrMsg represents the hr FIT message type.

func NewHrMsg

func NewHrMsg() *HrMsg

NewHrMsg returns a hr FIT message initialized to all-invalid values.

func (*HrMsg) GetEventTimestampScaled

func (x *HrMsg) GetEventTimestampScaled() []float64

GetEventTimestampScaled returns EventTimestamp as a slice with scale and any offset applied to every element. Units: s

func (*HrMsg) GetFractionalTimestampScaled

func (x *HrMsg) GetFractionalTimestampScaled() float64

GetFractionalTimestampScaled returns FractionalTimestamp with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*HrMsg) GetTime256Scaled

func (x *HrMsg) GetTime256Scaled() float64

GetTime256Scaled returns Time256 with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

type HrType

type HrType byte

HrType represents the hr_type FIT type.

const (
	HrTypeNormal    HrType = 0
	HrTypeIrregular HrType = 1
	HrTypeInvalid   HrType = 0xFF
)

func (HrType) String

func (i HrType) String() string

type HrZoneCalc

type HrZoneCalc byte

HrZoneCalc represents the hr_zone_calc FIT type.

const (
	HrZoneCalcCustom       HrZoneCalc = 0
	HrZoneCalcPercentMaxHr HrZoneCalc = 1
	HrZoneCalcPercentHrr   HrZoneCalc = 2
	HrZoneCalcInvalid      HrZoneCalc = 0xFF
)

func (HrZoneCalc) String

func (i HrZoneCalc) String() string

type HrZoneMsg

type HrZoneMsg struct {
	MessageIndex MessageIndex
	HighBpm      uint8
	Name         string
}

HrZoneMsg represents the hr_zone FIT message type.

func NewHrZoneMsg

func NewHrZoneMsg() *HrZoneMsg

NewHrZoneMsg returns a hr_zone FIT message initialized to all-invalid values.

type HrmProfileMsg

type HrmProfileMsg struct {
	MessageIndex      MessageIndex
	Enabled           Bool
	HrmAntId          uint16
	LogHrv            Bool
	HrmAntIdTransType uint8
}

HrmProfileMsg represents the hrm_profile FIT message type.

func NewHrmProfileMsg

func NewHrmProfileMsg() *HrmProfileMsg

NewHrmProfileMsg returns a hrm_profile FIT message initialized to all-invalid values.

type HrvMsg

type HrvMsg struct {
	Time []uint16 // Time between beats
}

HrvMsg represents the hrv FIT message type.

func NewHrvMsg

func NewHrvMsg() *HrvMsg

NewHrvMsg returns a hrv FIT message initialized to all-invalid values.

func (*HrvMsg) GetTimeScaled

func (x *HrvMsg) GetTimeScaled() []float64

GetTimeScaled returns Time as a slice with scale and any offset applied to every element. Units: s

type HyperextensionExerciseName

type HyperextensionExerciseName uint16

HyperextensionExerciseName represents the hyperextension_exercise_name FIT type.

const (
	HyperextensionExerciseNameBackExtensionWithOppositeArmAndLegReach         HyperextensionExerciseName = 0
	HyperextensionExerciseNameWeightedBackExtensionWithOppositeArmAndLegReach HyperextensionExerciseName = 1
	HyperextensionExerciseNameBaseRotations                                   HyperextensionExerciseName = 2
	HyperextensionExerciseNameWeightedBaseRotations                           HyperextensionExerciseName = 3
	HyperextensionExerciseNameBentKneeReverseHyperextension                   HyperextensionExerciseName = 4
	HyperextensionExerciseNameWeightedBentKneeReverseHyperextension           HyperextensionExerciseName = 5
	HyperextensionExerciseNameHollowHoldAndRoll                               HyperextensionExerciseName = 6
	HyperextensionExerciseNameWeightedHollowHoldAndRoll                       HyperextensionExerciseName = 7
	HyperextensionExerciseNameKicks                                           HyperextensionExerciseName = 8
	HyperextensionExerciseNameWeightedKicks                                   HyperextensionExerciseName = 9
	HyperextensionExerciseNameKneeRaises                                      HyperextensionExerciseName = 10
	HyperextensionExerciseNameWeightedKneeRaises                              HyperextensionExerciseName = 11
	HyperextensionExerciseNameKneelingSuperman                                HyperextensionExerciseName = 12
	HyperextensionExerciseNameWeightedKneelingSuperman                        HyperextensionExerciseName = 13
	HyperextensionExerciseNameLatPullDownWithRow                              HyperextensionExerciseName = 14
	HyperextensionExerciseNameMedicineBallDeadliftToReach                     HyperextensionExerciseName = 15
	HyperextensionExerciseNameOneArmOneLegRow                                 HyperextensionExerciseName = 16
	HyperextensionExerciseNameOneArmRowWithBand                               HyperextensionExerciseName = 17
	HyperextensionExerciseNameOverheadLungeWithMedicineBall                   HyperextensionExerciseName = 18
	HyperextensionExerciseNamePlankKneeTucks                                  HyperextensionExerciseName = 19
	HyperextensionExerciseNameWeightedPlankKneeTucks                          HyperextensionExerciseName = 20
	HyperextensionExerciseNameSideStep                                        HyperextensionExerciseName = 21
	HyperextensionExerciseNameWeightedSideStep                                HyperextensionExerciseName = 22
	HyperextensionExerciseNameSingleLegBackExtension                          HyperextensionExerciseName = 23
	HyperextensionExerciseNameWeightedSingleLegBackExtension                  HyperextensionExerciseName = 24
	HyperextensionExerciseNameSpineExtension                                  HyperextensionExerciseName = 25
	HyperextensionExerciseNameWeightedSpineExtension                          HyperextensionExerciseName = 26
	HyperextensionExerciseNameStaticBackExtension                             HyperextensionExerciseName = 27
	HyperextensionExerciseNameWeightedStaticBackExtension                     HyperextensionExerciseName = 28
	HyperextensionExerciseNameSupermanFromFloor                               HyperextensionExerciseName = 29
	HyperextensionExerciseNameWeightedSupermanFromFloor                       HyperextensionExerciseName = 30
	HyperextensionExerciseNameSwissBallBackExtension                          HyperextensionExerciseName = 31
	HyperextensionExerciseNameWeightedSwissBallBackExtension                  HyperextensionExerciseName = 32
	HyperextensionExerciseNameSwissBallHyperextension                         HyperextensionExerciseName = 33
	HyperextensionExerciseNameWeightedSwissBallHyperextension                 HyperextensionExerciseName = 34
	HyperextensionExerciseNameSwissBallOppositeArmAndLegLift                  HyperextensionExerciseName = 35
	HyperextensionExerciseNameWeightedSwissBallOppositeArmAndLegLift          HyperextensionExerciseName = 36
	HyperextensionExerciseNameSupermanOnSwissBall                             HyperextensionExerciseName = 37
	HyperextensionExerciseNameCobra                                           HyperextensionExerciseName = 38
	HyperextensionExerciseNameSupineFloorBarre                                HyperextensionExerciseName = 39 // Deprecated do not use
	HyperextensionExerciseNameInvalid                                         HyperextensionExerciseName = 0xFFFF
)

func (HyperextensionExerciseName) String

type IntegrityError

type IntegrityError string

An IntegrityError reports that a header or file CRC check failed.

func (IntegrityError) Error

func (e IntegrityError) Error() string

type Intensity

type Intensity byte

Intensity represents the intensity FIT type.

const (
	IntensityActive   Intensity = 0
	IntensityRest     Intensity = 1
	IntensityWarmup   Intensity = 2
	IntensityCooldown Intensity = 3
	IntensityRecovery Intensity = 4
	IntensityInterval Intensity = 5
	IntensityOther    Intensity = 6
	IntensityInvalid  Intensity = 0xFF
)

func (Intensity) String

func (i Intensity) String() string

type JumpMsg

type JumpMsg struct {
}

JumpMsg represents the jump FIT message type.

func NewJumpMsg

func NewJumpMsg() *JumpMsg

NewJumpMsg returns a jump FIT message initialized to all-invalid values.

type Language

type Language byte

Language represents the language FIT type.

const (
	LanguageEnglish             Language = 0
	LanguageFrench              Language = 1
	LanguageItalian             Language = 2
	LanguageGerman              Language = 3
	LanguageSpanish             Language = 4
	LanguageCroatian            Language = 5
	LanguageCzech               Language = 6
	LanguageDanish              Language = 7
	LanguageDutch               Language = 8
	LanguageFinnish             Language = 9
	LanguageGreek               Language = 10
	LanguageHungarian           Language = 11
	LanguageNorwegian           Language = 12
	LanguagePolish              Language = 13
	LanguagePortuguese          Language = 14
	LanguageSlovakian           Language = 15
	LanguageSlovenian           Language = 16
	LanguageSwedish             Language = 17
	LanguageRussian             Language = 18
	LanguageTurkish             Language = 19
	LanguageLatvian             Language = 20
	LanguageUkrainian           Language = 21
	LanguageArabic              Language = 22
	LanguageFarsi               Language = 23
	LanguageBulgarian           Language = 24
	LanguageRomanian            Language = 25
	LanguageChinese             Language = 26
	LanguageJapanese            Language = 27
	LanguageKorean              Language = 28
	LanguageTaiwanese           Language = 29
	LanguageThai                Language = 30
	LanguageHebrew              Language = 31
	LanguageBrazilianPortuguese Language = 32
	LanguageIndonesian          Language = 33
	LanguageMalaysian           Language = 34
	LanguageVietnamese          Language = 35
	LanguageBurmese             Language = 36
	LanguageMongolian           Language = 37
	LanguageCustom              Language = 254
	LanguageInvalid             Language = 0xFF
)

func (Language) String

func (i Language) String() string

type LanguageBits0

type LanguageBits0 uint8

LanguageBits0 represents the language_bits_0 FIT type.

const (
	LanguageBits0English  LanguageBits0 = 0x01
	LanguageBits0French   LanguageBits0 = 0x02
	LanguageBits0Italian  LanguageBits0 = 0x04
	LanguageBits0German   LanguageBits0 = 0x08
	LanguageBits0Spanish  LanguageBits0 = 0x10
	LanguageBits0Croatian LanguageBits0 = 0x20
	LanguageBits0Czech    LanguageBits0 = 0x40
	LanguageBits0Danish   LanguageBits0 = 0x80
	LanguageBits0Invalid  LanguageBits0 = 0x00
)

func (LanguageBits0) String

func (i LanguageBits0) String() string

type LanguageBits1

type LanguageBits1 uint8

LanguageBits1 represents the language_bits_1 FIT type.

const (
	LanguageBits1Dutch      LanguageBits1 = 0x01
	LanguageBits1Finnish    LanguageBits1 = 0x02
	LanguageBits1Greek      LanguageBits1 = 0x04
	LanguageBits1Hungarian  LanguageBits1 = 0x08
	LanguageBits1Norwegian  LanguageBits1 = 0x10
	LanguageBits1Polish     LanguageBits1 = 0x20
	LanguageBits1Portuguese LanguageBits1 = 0x40
	LanguageBits1Slovakian  LanguageBits1 = 0x80
	LanguageBits1Invalid    LanguageBits1 = 0x00
)

func (LanguageBits1) String

func (i LanguageBits1) String() string

type LanguageBits2

type LanguageBits2 uint8

LanguageBits2 represents the language_bits_2 FIT type.

const (
	LanguageBits2Slovenian LanguageBits2 = 0x01
	LanguageBits2Swedish   LanguageBits2 = 0x02
	LanguageBits2Russian   LanguageBits2 = 0x04
	LanguageBits2Turkish   LanguageBits2 = 0x08
	LanguageBits2Latvian   LanguageBits2 = 0x10
	LanguageBits2Ukrainian LanguageBits2 = 0x20
	LanguageBits2Arabic    LanguageBits2 = 0x40
	LanguageBits2Farsi     LanguageBits2 = 0x80
	LanguageBits2Invalid   LanguageBits2 = 0x00
)

func (LanguageBits2) String

func (i LanguageBits2) String() string

type LanguageBits3

type LanguageBits3 uint8

LanguageBits3 represents the language_bits_3 FIT type.

const (
	LanguageBits3Bulgarian LanguageBits3 = 0x01
	LanguageBits3Romanian  LanguageBits3 = 0x02
	LanguageBits3Chinese   LanguageBits3 = 0x04
	LanguageBits3Japanese  LanguageBits3 = 0x08
	LanguageBits3Korean    LanguageBits3 = 0x10
	LanguageBits3Taiwanese LanguageBits3 = 0x20
	LanguageBits3Thai      LanguageBits3 = 0x40
	LanguageBits3Hebrew    LanguageBits3 = 0x80
	LanguageBits3Invalid   LanguageBits3 = 0x00
)

func (LanguageBits3) String

func (i LanguageBits3) String() string

type LanguageBits4

type LanguageBits4 uint8

LanguageBits4 represents the language_bits_4 FIT type.

const (
	LanguageBits4BrazilianPortuguese LanguageBits4 = 0x01
	LanguageBits4Indonesian          LanguageBits4 = 0x02
	LanguageBits4Malaysian           LanguageBits4 = 0x04
	LanguageBits4Vietnamese          LanguageBits4 = 0x08
	LanguageBits4Burmese             LanguageBits4 = 0x10
	LanguageBits4Mongolian           LanguageBits4 = 0x20
	LanguageBits4Invalid             LanguageBits4 = 0x00
)

func (LanguageBits4) String

func (i LanguageBits4) String() string

type LapMsg

type LapMsg struct {
	MessageIndex                  MessageIndex
	Timestamp                     time.Time // Lap end time.
	Event                         Event
	EventType                     EventType
	StartTime                     time.Time
	StartPositionLat              Latitude
	StartPositionLong             Longitude
	EndPositionLat                Latitude
	EndPositionLong               Longitude
	TotalElapsedTime              uint32 // Time (includes pauses)
	TotalTimerTime                uint32 // Timer Time (excludes pauses)
	TotalDistance                 uint32
	TotalCycles                   uint32
	TotalCalories                 uint16
	TotalFatCalories              uint16 // If New Leaf
	AvgSpeed                      uint16
	MaxSpeed                      uint16
	AvgHeartRate                  uint8
	MaxHeartRate                  uint8
	AvgCadence                    uint8 // total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time
	MaxCadence                    uint8
	AvgPower                      uint16 // total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time
	MaxPower                      uint16
	TotalAscent                   uint16
	TotalDescent                  uint16
	Intensity                     Intensity
	LapTrigger                    LapTrigger
	Sport                         Sport
	EventGroup                    uint8
	NumLengths                    uint16 // # of lengths of swim pool
	NormalizedPower               uint16
	LeftRightBalance              LeftRightBalance100
	FirstLengthIndex              uint16
	AvgStrokeDistance             uint16
	SwimStroke                    SwimStroke
	SubSport                      SubSport
	NumActiveLengths              uint16 // # of active lengths of swim pool
	TotalWork                     uint32
	AvgAltitude                   uint16
	MaxAltitude                   uint16
	GpsAccuracy                   uint8
	AvgGrade                      int16
	AvgPosGrade                   int16
	AvgNegGrade                   int16
	MaxPosGrade                   int16
	MaxNegGrade                   int16
	AvgTemperature                int8
	MaxTemperature                int8
	TotalMovingTime               uint32
	AvgPosVerticalSpeed           int16
	AvgNegVerticalSpeed           int16
	MaxPosVerticalSpeed           int16
	MaxNegVerticalSpeed           int16
	TimeInHrZone                  []uint32
	TimeInSpeedZone               []uint32
	TimeInCadenceZone             []uint32
	TimeInPowerZone               []uint32
	RepetitionNum                 uint16
	MinAltitude                   uint16
	MinHeartRate                  uint8
	WktStepIndex                  MessageIndex
	OpponentScore                 uint16
	StrokeCount                   []uint16 // stroke_type enum used as the index
	ZoneCount                     []uint16 // zone number used as the index
	AvgVerticalOscillation        uint16
	AvgStanceTimePercent          uint16
	AvgStanceTime                 uint16
	AvgFractionalCadence          uint8 // fractional part of the avg_cadence
	MaxFractionalCadence          uint8 // fractional part of the max_cadence
	TotalFractionalCycles         uint8 // fractional part of the total_cycles
	PlayerScore                   uint16
	AvgTotalHemoglobinConc        []uint16 // Avg saturated and unsaturated hemoglobin
	MinTotalHemoglobinConc        []uint16 // Min saturated and unsaturated hemoglobin
	MaxTotalHemoglobinConc        []uint16 // Max saturated and unsaturated hemoglobin
	AvgSaturatedHemoglobinPercent []uint16 // Avg percentage of hemoglobin saturated with oxygen
	MinSaturatedHemoglobinPercent []uint16 // Min percentage of hemoglobin saturated with oxygen
	MaxSaturatedHemoglobinPercent []uint16 // Max percentage of hemoglobin saturated with oxygen
	EnhancedAvgSpeed              uint32
	EnhancedMaxSpeed              uint32
	EnhancedAvgAltitude           uint32
	EnhancedMinAltitude           uint32
	EnhancedMaxAltitude           uint32
	AvgVam                        uint16
}

LapMsg represents the lap FIT message type.

func NewLapMsg

func NewLapMsg() *LapMsg

NewLapMsg returns a lap FIT message initialized to all-invalid values.

func (*LapMsg) GetAvgAltitudeScaled

func (x *LapMsg) GetAvgAltitudeScaled() float64

GetAvgAltitudeScaled returns AvgAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*LapMsg) GetAvgCadence

func (x *LapMsg) GetAvgCadence() interface{}

GetAvgCadence returns the appropriate AvgCadence subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*LapMsg) GetAvgFractionalCadenceScaled

func (x *LapMsg) GetAvgFractionalCadenceScaled() float64

GetAvgFractionalCadenceScaled returns AvgFractionalCadence with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: rpm

func (*LapMsg) GetAvgGradeScaled

func (x *LapMsg) GetAvgGradeScaled() float64

GetAvgGradeScaled returns AvgGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*LapMsg) GetAvgNegGradeScaled

func (x *LapMsg) GetAvgNegGradeScaled() float64

GetAvgNegGradeScaled returns AvgNegGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*LapMsg) GetAvgNegVerticalSpeedScaled

func (x *LapMsg) GetAvgNegVerticalSpeedScaled() float64

GetAvgNegVerticalSpeedScaled returns AvgNegVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LapMsg) GetAvgPosGradeScaled

func (x *LapMsg) GetAvgPosGradeScaled() float64

GetAvgPosGradeScaled returns AvgPosGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*LapMsg) GetAvgPosVerticalSpeedScaled

func (x *LapMsg) GetAvgPosVerticalSpeedScaled() float64

GetAvgPosVerticalSpeedScaled returns AvgPosVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LapMsg) GetAvgSaturatedHemoglobinPercentScaled

func (x *LapMsg) GetAvgSaturatedHemoglobinPercentScaled() []float64

GetAvgSaturatedHemoglobinPercentScaled returns AvgSaturatedHemoglobinPercent as a slice with scale and any offset applied to every element. Units: %

func (*LapMsg) GetAvgSpeedScaled

func (x *LapMsg) GetAvgSpeedScaled() float64

GetAvgSpeedScaled returns AvgSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LapMsg) GetAvgStanceTimePercentScaled

func (x *LapMsg) GetAvgStanceTimePercentScaled() float64

GetAvgStanceTimePercentScaled returns AvgStanceTimePercent with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*LapMsg) GetAvgStanceTimeScaled

func (x *LapMsg) GetAvgStanceTimeScaled() float64

GetAvgStanceTimeScaled returns AvgStanceTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: ms

func (*LapMsg) GetAvgStrokeDistanceScaled

func (x *LapMsg) GetAvgStrokeDistanceScaled() float64

GetAvgStrokeDistanceScaled returns AvgStrokeDistance with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*LapMsg) GetAvgTotalHemoglobinConcScaled

func (x *LapMsg) GetAvgTotalHemoglobinConcScaled() []float64

GetAvgTotalHemoglobinConcScaled returns AvgTotalHemoglobinConc as a slice with scale and any offset applied to every element. Units: g/dL

func (*LapMsg) GetAvgVamScaled

func (x *LapMsg) GetAvgVamScaled() float64

GetAvgVamScaled returns AvgVam with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LapMsg) GetAvgVerticalOscillationScaled

func (x *LapMsg) GetAvgVerticalOscillationScaled() float64

GetAvgVerticalOscillationScaled returns AvgVerticalOscillation with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: mm

func (*LapMsg) GetEnhancedAvgAltitudeScaled

func (x *LapMsg) GetEnhancedAvgAltitudeScaled() float64

GetEnhancedAvgAltitudeScaled returns EnhancedAvgAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*LapMsg) GetEnhancedAvgSpeedScaled

func (x *LapMsg) GetEnhancedAvgSpeedScaled() float64

GetEnhancedAvgSpeedScaled returns EnhancedAvgSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LapMsg) GetEnhancedMaxAltitudeScaled

func (x *LapMsg) GetEnhancedMaxAltitudeScaled() float64

GetEnhancedMaxAltitudeScaled returns EnhancedMaxAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*LapMsg) GetEnhancedMaxSpeedScaled

func (x *LapMsg) GetEnhancedMaxSpeedScaled() float64

GetEnhancedMaxSpeedScaled returns EnhancedMaxSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LapMsg) GetEnhancedMinAltitudeScaled

func (x *LapMsg) GetEnhancedMinAltitudeScaled() float64

GetEnhancedMinAltitudeScaled returns EnhancedMinAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*LapMsg) GetMaxAltitudeScaled

func (x *LapMsg) GetMaxAltitudeScaled() float64

GetMaxAltitudeScaled returns MaxAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*LapMsg) GetMaxCadence

func (x *LapMsg) GetMaxCadence() interface{}

GetMaxCadence returns the appropriate MaxCadence subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*LapMsg) GetMaxFractionalCadenceScaled

func (x *LapMsg) GetMaxFractionalCadenceScaled() float64

GetMaxFractionalCadenceScaled returns MaxFractionalCadence with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: rpm

func (*LapMsg) GetMaxNegGradeScaled

func (x *LapMsg) GetMaxNegGradeScaled() float64

GetMaxNegGradeScaled returns MaxNegGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*LapMsg) GetMaxNegVerticalSpeedScaled

func (x *LapMsg) GetMaxNegVerticalSpeedScaled() float64

GetMaxNegVerticalSpeedScaled returns MaxNegVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LapMsg) GetMaxPosGradeScaled

func (x *LapMsg) GetMaxPosGradeScaled() float64

GetMaxPosGradeScaled returns MaxPosGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*LapMsg) GetMaxPosVerticalSpeedScaled

func (x *LapMsg) GetMaxPosVerticalSpeedScaled() float64

GetMaxPosVerticalSpeedScaled returns MaxPosVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LapMsg) GetMaxSaturatedHemoglobinPercentScaled

func (x *LapMsg) GetMaxSaturatedHemoglobinPercentScaled() []float64

GetMaxSaturatedHemoglobinPercentScaled returns MaxSaturatedHemoglobinPercent as a slice with scale and any offset applied to every element. Units: %

func (*LapMsg) GetMaxSpeedScaled

func (x *LapMsg) GetMaxSpeedScaled() float64

GetMaxSpeedScaled returns MaxSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LapMsg) GetMaxTotalHemoglobinConcScaled

func (x *LapMsg) GetMaxTotalHemoglobinConcScaled() []float64

GetMaxTotalHemoglobinConcScaled returns MaxTotalHemoglobinConc as a slice with scale and any offset applied to every element. Units: g/dL

func (*LapMsg) GetMinAltitudeScaled

func (x *LapMsg) GetMinAltitudeScaled() float64

GetMinAltitudeScaled returns MinAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*LapMsg) GetMinSaturatedHemoglobinPercentScaled

func (x *LapMsg) GetMinSaturatedHemoglobinPercentScaled() []float64

GetMinSaturatedHemoglobinPercentScaled returns MinSaturatedHemoglobinPercent as a slice with scale and any offset applied to every element. Units: %

func (*LapMsg) GetMinTotalHemoglobinConcScaled

func (x *LapMsg) GetMinTotalHemoglobinConcScaled() []float64

GetMinTotalHemoglobinConcScaled returns MinTotalHemoglobinConc as a slice with scale and any offset applied to every element. Units: g/dL

func (*LapMsg) GetTimeInCadenceZoneScaled

func (x *LapMsg) GetTimeInCadenceZoneScaled() []float64

GetTimeInCadenceZoneScaled returns TimeInCadenceZone as a slice with scale and any offset applied to every element. Units: s

func (*LapMsg) GetTimeInHrZoneScaled

func (x *LapMsg) GetTimeInHrZoneScaled() []float64

GetTimeInHrZoneScaled returns TimeInHrZone as a slice with scale and any offset applied to every element. Units: s

func (*LapMsg) GetTimeInPowerZoneScaled

func (x *LapMsg) GetTimeInPowerZoneScaled() []float64

GetTimeInPowerZoneScaled returns TimeInPowerZone as a slice with scale and any offset applied to every element. Units: s

func (*LapMsg) GetTimeInSpeedZoneScaled

func (x *LapMsg) GetTimeInSpeedZoneScaled() []float64

GetTimeInSpeedZoneScaled returns TimeInSpeedZone as a slice with scale and any offset applied to every element. Units: s

func (*LapMsg) GetTotalCycles

func (x *LapMsg) GetTotalCycles() interface{}

GetTotalCycles returns the appropriate TotalCycles subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*LapMsg) GetTotalDistanceScaled

func (x *LapMsg) GetTotalDistanceScaled() float64

GetTotalDistanceScaled returns TotalDistance with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*LapMsg) GetTotalElapsedTimeScaled

func (x *LapMsg) GetTotalElapsedTimeScaled() float64

GetTotalElapsedTimeScaled returns TotalElapsedTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*LapMsg) GetTotalFractionalCyclesScaled

func (x *LapMsg) GetTotalFractionalCyclesScaled() float64

GetTotalFractionalCyclesScaled returns TotalFractionalCycles with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: cycles

func (*LapMsg) GetTotalMovingTimeScaled

func (x *LapMsg) GetTotalMovingTimeScaled() float64

GetTotalMovingTimeScaled returns TotalMovingTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*LapMsg) GetTotalTimerTimeScaled

func (x *LapMsg) GetTotalTimerTimeScaled() float64

GetTotalTimerTimeScaled returns TotalTimerTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

type LapTrigger

type LapTrigger byte

LapTrigger represents the lap_trigger FIT type.

const (
	LapTriggerManual           LapTrigger = 0
	LapTriggerTime             LapTrigger = 1
	LapTriggerDistance         LapTrigger = 2
	LapTriggerPositionStart    LapTrigger = 3
	LapTriggerPositionLap      LapTrigger = 4
	LapTriggerPositionWaypoint LapTrigger = 5
	LapTriggerPositionMarked   LapTrigger = 6
	LapTriggerSessionEnd       LapTrigger = 7
	LapTriggerFitnessEquipment LapTrigger = 8
	LapTriggerInvalid          LapTrigger = 0xFF
)

func (LapTrigger) String

func (i LapTrigger) String() string

type LateralRaiseExerciseName

type LateralRaiseExerciseName uint16

LateralRaiseExerciseName represents the lateral_raise_exercise_name FIT type.

const (
	LateralRaiseExerciseName45DegreeCableExternalRotation         LateralRaiseExerciseName = 0
	LateralRaiseExerciseNameAlternatingLateralRaiseWithStaticHold LateralRaiseExerciseName = 1
	LateralRaiseExerciseNameBarMuscleUp                           LateralRaiseExerciseName = 2
	LateralRaiseExerciseNameBentOverLateralRaise                  LateralRaiseExerciseName = 3
	LateralRaiseExerciseNameCableDiagonalRaise                    LateralRaiseExerciseName = 4
	LateralRaiseExerciseNameCableFrontRaise                       LateralRaiseExerciseName = 5
	LateralRaiseExerciseNameCalorieRow                            LateralRaiseExerciseName = 6
	LateralRaiseExerciseNameComboShoulderRaise                    LateralRaiseExerciseName = 7
	LateralRaiseExerciseNameDumbbellDiagonalRaise                 LateralRaiseExerciseName = 8
	LateralRaiseExerciseNameDumbbellVRaise                        LateralRaiseExerciseName = 9
	LateralRaiseExerciseNameFrontRaise                            LateralRaiseExerciseName = 10
	LateralRaiseExerciseNameLeaningDumbbellLateralRaise           LateralRaiseExerciseName = 11
	LateralRaiseExerciseNameLyingDumbbellRaise                    LateralRaiseExerciseName = 12
	LateralRaiseExerciseNameMuscleUp                              LateralRaiseExerciseName = 13
	LateralRaiseExerciseNameOneArmCableLateralRaise               LateralRaiseExerciseName = 14
	LateralRaiseExerciseNameOverhandGripRearLateralRaise          LateralRaiseExerciseName = 15
	LateralRaiseExerciseNamePlateRaises                           LateralRaiseExerciseName = 16
	LateralRaiseExerciseNameRingDip                               LateralRaiseExerciseName = 17
	LateralRaiseExerciseNameWeightedRingDip                       LateralRaiseExerciseName = 18
	LateralRaiseExerciseNameRingMuscleUp                          LateralRaiseExerciseName = 19
	LateralRaiseExerciseNameWeightedRingMuscleUp                  LateralRaiseExerciseName = 20
	LateralRaiseExerciseNameRopeClimb                             LateralRaiseExerciseName = 21
	LateralRaiseExerciseNameWeightedRopeClimb                     LateralRaiseExerciseName = 22
	LateralRaiseExerciseNameScaption                              LateralRaiseExerciseName = 23
	LateralRaiseExerciseNameSeatedLateralRaise                    LateralRaiseExerciseName = 24
	LateralRaiseExerciseNameSeatedRearLateralRaise                LateralRaiseExerciseName = 25
	LateralRaiseExerciseNameSideLyingLateralRaise                 LateralRaiseExerciseName = 26
	LateralRaiseExerciseNameStandingLift                          LateralRaiseExerciseName = 27
	LateralRaiseExerciseNameSuspendedRow                          LateralRaiseExerciseName = 28
	LateralRaiseExerciseNameUnderhandGripRearLateralRaise         LateralRaiseExerciseName = 29
	LateralRaiseExerciseNameWallSlide                             LateralRaiseExerciseName = 30
	LateralRaiseExerciseNameWeightedWallSlide                     LateralRaiseExerciseName = 31
	LateralRaiseExerciseNameArmCircles                            LateralRaiseExerciseName = 32
	LateralRaiseExerciseNameShavingTheHead                        LateralRaiseExerciseName = 33
	LateralRaiseExerciseNameInvalid                               LateralRaiseExerciseName = 0xFFFF
)

func (LateralRaiseExerciseName) String

func (i LateralRaiseExerciseName) String() string

type Latitude

type Latitude struct {
	// contains filtered or unexported fields
}

Latitude represents the geographical coordinate latitude.

func NewLatitude

func NewLatitude(semicircles int32) Latitude

NewLatitude returns a new latitude from a semicircle. If semicircles is outside the range of a latitude, (math.MinInt32/2, math.MaxInt32/2) then an invalid latitude is returned.

func NewLatitudeDegrees

func NewLatitudeDegrees(degrees float64) Latitude

NewLatitudeDegrees returns a new latitude from a degree. If degrees is outside the range of a latitude (+/- 90°) then an invalid latitude is returned.

func NewLatitudeInvalid

func NewLatitudeInvalid() Latitude

NewLatitudeInvalid returns an invalid latitude. The underlying storage is set to the invalid value of the FIT base type (sint32) used to represent a latitude.

func (Latitude) Degrees

func (l Latitude) Degrees() float64

Degrees returns l in degrees. If l is invalid then NaN is returned.

func (Latitude) Invalid

func (l Latitude) Invalid() bool

Invalid reports whether l represents an invalid latitude.

func (Latitude) Semicircles

func (l Latitude) Semicircles() int32

Semicircles returns l in semicircles.

func (Latitude) String

func (l Latitude) String() string

String returns a string representation of l in degrees with 5 decimal places. If l is invalid then the string "Invalid" is returned.

type LeftRightBalance

type LeftRightBalance uint8

LeftRightBalance represents the left_right_balance FIT type.

const (
	LeftRightBalanceMask    LeftRightBalance = 0x7F // % contribution
	LeftRightBalanceRight   LeftRightBalance = 0x80 // data corresponds to right if set, otherwise unknown
	LeftRightBalanceInvalid LeftRightBalance = 0xFF
)

func (LeftRightBalance) String

func (i LeftRightBalance) String() string

type LeftRightBalance100

type LeftRightBalance100 uint16

LeftRightBalance100 represents the left_right_balance_100 FIT type.

const (
	LeftRightBalance100Mask    LeftRightBalance100 = 0x3FFF // % contribution scaled by 100
	LeftRightBalance100Right   LeftRightBalance100 = 0x8000 // data corresponds to right if set, otherwise unknown
	LeftRightBalance100Invalid LeftRightBalance100 = 0xFFFF
)

func (LeftRightBalance100) String

func (i LeftRightBalance100) String() string

type LegCurlExerciseName

type LegCurlExerciseName uint16

LegCurlExerciseName represents the leg_curl_exercise_name FIT type.

const (
	LegCurlExerciseNameLegCurl                     LegCurlExerciseName = 0
	LegCurlExerciseNameWeightedLegCurl             LegCurlExerciseName = 1
	LegCurlExerciseNameGoodMorning                 LegCurlExerciseName = 2
	LegCurlExerciseNameSeatedBarbellGoodMorning    LegCurlExerciseName = 3
	LegCurlExerciseNameSingleLegBarbellGoodMorning LegCurlExerciseName = 4
	LegCurlExerciseNameSingleLegSlidingLegCurl     LegCurlExerciseName = 5
	LegCurlExerciseNameSlidingLegCurl              LegCurlExerciseName = 6
	LegCurlExerciseNameSplitBarbellGoodMorning     LegCurlExerciseName = 7
	LegCurlExerciseNameSplitStanceExtension        LegCurlExerciseName = 8
	LegCurlExerciseNameStaggeredStanceGoodMorning  LegCurlExerciseName = 9
	LegCurlExerciseNameSwissBallHipRaiseAndLegCurl LegCurlExerciseName = 10
	LegCurlExerciseNameZercherGoodMorning          LegCurlExerciseName = 11
	LegCurlExerciseNameInvalid                     LegCurlExerciseName = 0xFFFF
)

func (LegCurlExerciseName) String

func (i LegCurlExerciseName) String() string

type LegRaiseExerciseName

type LegRaiseExerciseName uint16

LegRaiseExerciseName represents the leg_raise_exercise_name FIT type.

const (
	LegRaiseExerciseNameHangingKneeRaise                   LegRaiseExerciseName = 0
	LegRaiseExerciseNameHangingLegRaise                    LegRaiseExerciseName = 1
	LegRaiseExerciseNameWeightedHangingLegRaise            LegRaiseExerciseName = 2
	LegRaiseExerciseNameHangingSingleLegRaise              LegRaiseExerciseName = 3
	LegRaiseExerciseNameWeightedHangingSingleLegRaise      LegRaiseExerciseName = 4
	LegRaiseExerciseNameKettlebellLegRaises                LegRaiseExerciseName = 5
	LegRaiseExerciseNameLegLoweringDrill                   LegRaiseExerciseName = 6
	LegRaiseExerciseNameWeightedLegLoweringDrill           LegRaiseExerciseName = 7
	LegRaiseExerciseNameLyingStraightLegRaise              LegRaiseExerciseName = 8
	LegRaiseExerciseNameWeightedLyingStraightLegRaise      LegRaiseExerciseName = 9
	LegRaiseExerciseNameMedicineBallLegDrops               LegRaiseExerciseName = 10
	LegRaiseExerciseNameQuadrupedLegRaise                  LegRaiseExerciseName = 11
	LegRaiseExerciseNameWeightedQuadrupedLegRaise          LegRaiseExerciseName = 12
	LegRaiseExerciseNameReverseLegRaise                    LegRaiseExerciseName = 13
	LegRaiseExerciseNameWeightedReverseLegRaise            LegRaiseExerciseName = 14
	LegRaiseExerciseNameReverseLegRaiseOnSwissBall         LegRaiseExerciseName = 15
	LegRaiseExerciseNameWeightedReverseLegRaiseOnSwissBall LegRaiseExerciseName = 16
	LegRaiseExerciseNameSingleLegLoweringDrill             LegRaiseExerciseName = 17
	LegRaiseExerciseNameWeightedSingleLegLoweringDrill     LegRaiseExerciseName = 18
	LegRaiseExerciseNameWeightedHangingKneeRaise           LegRaiseExerciseName = 19
	LegRaiseExerciseNameLateralStepover                    LegRaiseExerciseName = 20
	LegRaiseExerciseNameWeightedLateralStepover            LegRaiseExerciseName = 21
	LegRaiseExerciseNameInvalid                            LegRaiseExerciseName = 0xFFFF
)

func (LegRaiseExerciseName) String

func (i LegRaiseExerciseName) String() string

type LengthMsg

type LengthMsg struct {
	MessageIndex       MessageIndex
	Timestamp          time.Time
	Event              Event
	EventType          EventType
	StartTime          time.Time
	TotalElapsedTime   uint32
	TotalTimerTime     uint32
	TotalStrokes       uint16
	AvgSpeed           uint16
	SwimStroke         SwimStroke
	AvgSwimmingCadence uint8
	EventGroup         uint8
	TotalCalories      uint16
	LengthType         LengthType
	PlayerScore        uint16
	OpponentScore      uint16
	StrokeCount        []uint16 // stroke_type enum used as the index
	ZoneCount          []uint16 // zone number used as the index
}

LengthMsg represents the length FIT message type.

func NewLengthMsg

func NewLengthMsg() *LengthMsg

NewLengthMsg returns a length FIT message initialized to all-invalid values.

func (*LengthMsg) GetAvgSpeedScaled

func (x *LengthMsg) GetAvgSpeedScaled() float64

GetAvgSpeedScaled returns AvgSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*LengthMsg) GetTotalElapsedTimeScaled

func (x *LengthMsg) GetTotalElapsedTimeScaled() float64

GetTotalElapsedTimeScaled returns TotalElapsedTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*LengthMsg) GetTotalTimerTimeScaled

func (x *LengthMsg) GetTotalTimerTimeScaled() float64

GetTotalTimerTimeScaled returns TotalTimerTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

type LengthType

type LengthType byte

LengthType represents the length_type FIT type.

const (
	LengthTypeIdle    LengthType = 0 // Rest period. Length with no strokes
	LengthTypeActive  LengthType = 1 // Length with strokes.
	LengthTypeInvalid LengthType = 0xFF
)

func (LengthType) String

func (i LengthType) String() string

type LocalDeviceType

type LocalDeviceType uint8

LocalDeviceType represents the local_device_type FIT type.

const (
	LocalDeviceTypeInvalid LocalDeviceType = 0xFF
)

func (LocalDeviceType) String

func (i LocalDeviceType) String() string

type LocaltimeIntoDay

type LocaltimeIntoDay uint32

LocaltimeIntoDay represents the localtime_into_day FIT type.

const (
	LocaltimeIntoDayInvalid LocaltimeIntoDay = 0xFFFFFFFF
)

func (LocaltimeIntoDay) String

func (i LocaltimeIntoDay) String() string

type Logger

type Logger interface {
	Print(args ...interface{})
	Printf(format string, args ...interface{})
	Println(args ...interface{})
}

Logger mimics a subset of golang's standard Logger as an interface.

type Longitude

type Longitude struct {
	// contains filtered or unexported fields
}

Longitude represents the geographical coordinate longitude.

func NewLongitude

func NewLongitude(semicircles int32) Longitude

NewLongitude returns a new longitude from a semicircle.

func NewLongitudeDegrees

func NewLongitudeDegrees(degrees float64) Longitude

NewLongitudeDegrees returns a new longitude from a degree. If degrees is outside the range of a longitude (+/- 180°) then an invalid longitude is returned.

func NewLongitudeInvalid

func NewLongitudeInvalid() Longitude

NewLongitudeInvalid returns an invalid longitude. The underlying storage is set to the invalid value of the FIT base type (sint32) used to represent a longitude.

func (Longitude) Degrees

func (l Longitude) Degrees() float64

Degrees returns l in degrees. If l is invalid then NaN is returned.

func (Longitude) Invalid

func (l Longitude) Invalid() bool

Invalid reports whether l represents an invalid longitude.

func (Longitude) Semicircles

func (l Longitude) Semicircles() int32

Semicircles returns l in semicircles.

func (Longitude) String

func (l Longitude) String() string

String returns a string representation of l in degrees with 5 decimal places. If l is invalid then the string "Invalid" is returned.

type LungeExerciseName

type LungeExerciseName uint16

LungeExerciseName represents the lunge_exercise_name FIT type.

const (
	LungeExerciseNameOverheadLunge                                 LungeExerciseName = 0
	LungeExerciseNameLungeMatrix                                   LungeExerciseName = 1
	LungeExerciseNameWeightedLungeMatrix                           LungeExerciseName = 2
	LungeExerciseNameAlternatingBarbellForwardLunge                LungeExerciseName = 3
	LungeExerciseNameAlternatingDumbbellLungeWithReach             LungeExerciseName = 4
	LungeExerciseNameBackFootElevatedDumbbellSplitSquat            LungeExerciseName = 5
	LungeExerciseNameBarbellBoxLunge                               LungeExerciseName = 6
	LungeExerciseNameBarbellBulgarianSplitSquat                    LungeExerciseName = 7
	LungeExerciseNameBarbellCrossoverLunge                         LungeExerciseName = 8
	LungeExerciseNameBarbellFrontSplitSquat                        LungeExerciseName = 9
	LungeExerciseNameBarbellLunge                                  LungeExerciseName = 10
	LungeExerciseNameBarbellReverseLunge                           LungeExerciseName = 11
	LungeExerciseNameBarbellSideLunge                              LungeExerciseName = 12
	LungeExerciseNameBarbellSplitSquat                             LungeExerciseName = 13
	LungeExerciseNameCoreControlRearLunge                          LungeExerciseName = 14
	LungeExerciseNameDiagonalLunge                                 LungeExerciseName = 15
	LungeExerciseNameDropLunge                                     LungeExerciseName = 16
	LungeExerciseNameDumbbellBoxLunge                              LungeExerciseName = 17
	LungeExerciseNameDumbbellBulgarianSplitSquat                   LungeExerciseName = 18
	LungeExerciseNameDumbbellCrossoverLunge                        LungeExerciseName = 19
	LungeExerciseNameDumbbellDiagonalLunge                         LungeExerciseName = 20
	LungeExerciseNameDumbbellLunge                                 LungeExerciseName = 21
	LungeExerciseNameDumbbellLungeAndRotation                      LungeExerciseName = 22
	LungeExerciseNameDumbbellOverheadBulgarianSplitSquat           LungeExerciseName = 23
	LungeExerciseNameDumbbellReverseLungeToHighKneeAndPress        LungeExerciseName = 24
	LungeExerciseNameDumbbellSideLunge                             LungeExerciseName = 25
	LungeExerciseNameElevatedFrontFootBarbellSplitSquat            LungeExerciseName = 26
	LungeExerciseNameFrontFootElevatedDumbbellSplitSquat           LungeExerciseName = 27
	LungeExerciseNameGunslingerLunge                               LungeExerciseName = 28
	LungeExerciseNameLawnmowerLunge                                LungeExerciseName = 29
	LungeExerciseNameLowLungeWithIsometricAdduction                LungeExerciseName = 30
	LungeExerciseNameLowSideToSideLunge                            LungeExerciseName = 31
	LungeExerciseNameLunge                                         LungeExerciseName = 32
	LungeExerciseNameWeightedLunge                                 LungeExerciseName = 33
	LungeExerciseNameLungeWithArmReach                             LungeExerciseName = 34
	LungeExerciseNameLungeWithDiagonalReach                        LungeExerciseName = 35
	LungeExerciseNameLungeWithSideBend                             LungeExerciseName = 36
	LungeExerciseNameOffsetDumbbellLunge                           LungeExerciseName = 37
	LungeExerciseNameOffsetDumbbellReverseLunge                    LungeExerciseName = 38
	LungeExerciseNameOverheadBulgarianSplitSquat                   LungeExerciseName = 39
	LungeExerciseNameOverheadDumbbellReverseLunge                  LungeExerciseName = 40
	LungeExerciseNameOverheadDumbbellSplitSquat                    LungeExerciseName = 41
	LungeExerciseNameOverheadLungeWithRotation                     LungeExerciseName = 42
	LungeExerciseNameReverseBarbellBoxLunge                        LungeExerciseName = 43
	LungeExerciseNameReverseBoxLunge                               LungeExerciseName = 44
	LungeExerciseNameReverseDumbbellBoxLunge                       LungeExerciseName = 45
	LungeExerciseNameReverseDumbbellCrossoverLunge                 LungeExerciseName = 46
	LungeExerciseNameReverseDumbbellDiagonalLunge                  LungeExerciseName = 47
	LungeExerciseNameReverseLungeWithReachBack                     LungeExerciseName = 48
	LungeExerciseNameWeightedReverseLungeWithReachBack             LungeExerciseName = 49
	LungeExerciseNameReverseLungeWithTwistAndOverheadReach         LungeExerciseName = 50
	LungeExerciseNameWeightedReverseLungeWithTwistAndOverheadReach LungeExerciseName = 51
	LungeExerciseNameReverseSlidingBoxLunge                        LungeExerciseName = 52
	LungeExerciseNameWeightedReverseSlidingBoxLunge                LungeExerciseName = 53
	LungeExerciseNameReverseSlidingLunge                           LungeExerciseName = 54
	LungeExerciseNameWeightedReverseSlidingLunge                   LungeExerciseName = 55
	LungeExerciseNameRunnersLungeToBalance                         LungeExerciseName = 56
	LungeExerciseNameWeightedRunnersLungeToBalance                 LungeExerciseName = 57
	LungeExerciseNameShiftingSideLunge                             LungeExerciseName = 58
	LungeExerciseNameSideAndCrossoverLunge                         LungeExerciseName = 59
	LungeExerciseNameWeightedSideAndCrossoverLunge                 LungeExerciseName = 60
	LungeExerciseNameSideLunge                                     LungeExerciseName = 61
	LungeExerciseNameWeightedSideLunge                             LungeExerciseName = 62
	LungeExerciseNameSideLungeAndPress                             LungeExerciseName = 63
	LungeExerciseNameSideLungeJumpOff                              LungeExerciseName = 64
	LungeExerciseNameSideLungeSweep                                LungeExerciseName = 65
	LungeExerciseNameWeightedSideLungeSweep                        LungeExerciseName = 66
	LungeExerciseNameSideLungeToCrossoverTap                       LungeExerciseName = 67
	LungeExerciseNameWeightedSideLungeToCrossoverTap               LungeExerciseName = 68
	LungeExerciseNameSideToSideLungeChops                          LungeExerciseName = 69
	LungeExerciseNameWeightedSideToSideLungeChops                  LungeExerciseName = 70
	LungeExerciseNameSiffJumpLunge                                 LungeExerciseName = 71
	LungeExerciseNameWeightedSiffJumpLunge                         LungeExerciseName = 72
	LungeExerciseNameSingleArmReverseLungeAndPress                 LungeExerciseName = 73
	LungeExerciseNameSlidingLateralLunge                           LungeExerciseName = 74
	LungeExerciseNameWeightedSlidingLateralLunge                   LungeExerciseName = 75
	LungeExerciseNameWalkingBarbellLunge                           LungeExerciseName = 76
	LungeExerciseNameWalkingDumbbellLunge                          LungeExerciseName = 77
	LungeExerciseNameWalkingLunge                                  LungeExerciseName = 78
	LungeExerciseNameWeightedWalkingLunge                          LungeExerciseName = 79
	LungeExerciseNameWideGripOverheadBarbellSplitSquat             LungeExerciseName = 80
	LungeExerciseNameInvalid                                       LungeExerciseName = 0xFFFF
)

func (LungeExerciseName) String

func (i LungeExerciseName) String() string

type MagnetometerDataMsg

type MagnetometerDataMsg struct {
}

MagnetometerDataMsg represents the magnetometer_data FIT message type.

func NewMagnetometerDataMsg

func NewMagnetometerDataMsg() *MagnetometerDataMsg

NewMagnetometerDataMsg returns a magnetometer_data FIT message initialized to all-invalid values.

type Manufacturer

type Manufacturer uint16

Manufacturer represents the manufacturer FIT type.

const (
	ManufacturerGarmin                 Manufacturer = 1
	ManufacturerGarminFr405Antfs       Manufacturer = 2 // Do not use. Used by FR405 for ANTFS man id.
	ManufacturerZephyr                 Manufacturer = 3
	ManufacturerDayton                 Manufacturer = 4
	ManufacturerIdt                    Manufacturer = 5
	ManufacturerSrm                    Manufacturer = 6
	ManufacturerQuarq                  Manufacturer = 7
	ManufacturerIbike                  Manufacturer = 8
	ManufacturerSaris                  Manufacturer = 9
	ManufacturerSparkHk                Manufacturer = 10
	ManufacturerTanita                 Manufacturer = 11
	ManufacturerEchowell               Manufacturer = 12
	ManufacturerDynastreamOem          Manufacturer = 13
	ManufacturerNautilus               Manufacturer = 14
	ManufacturerDynastream             Manufacturer = 15
	ManufacturerTimex                  Manufacturer = 16
	ManufacturerMetrigear              Manufacturer = 17
	ManufacturerXelic                  Manufacturer = 18
	ManufacturerBeurer                 Manufacturer = 19
	ManufacturerCardiosport            Manufacturer = 20
	ManufacturerAAndD                  Manufacturer = 21
	ManufacturerHmm                    Manufacturer = 22
	ManufacturerSuunto                 Manufacturer = 23
	ManufacturerThitaElektronik        Manufacturer = 24
	ManufacturerGpulse                 Manufacturer = 25
	ManufacturerCleanMobile            Manufacturer = 26
	ManufacturerPedalBrain             Manufacturer = 27
	ManufacturerPeaksware              Manufacturer = 28
	ManufacturerSaxonar                Manufacturer = 29
	ManufacturerLemondFitness          Manufacturer = 30
	ManufacturerDexcom                 Manufacturer = 31
	ManufacturerWahooFitness           Manufacturer = 32
	ManufacturerOctaneFitness          Manufacturer = 33
	ManufacturerArchinoetics           Manufacturer = 34
	ManufacturerTheHurtBox             Manufacturer = 35
	ManufacturerCitizenSystems         Manufacturer = 36
	ManufacturerMagellan               Manufacturer = 37
	ManufacturerOsynce                 Manufacturer = 38
	ManufacturerHolux                  Manufacturer = 39
	ManufacturerConcept2               Manufacturer = 40
	ManufacturerShimano                Manufacturer = 41
	ManufacturerOneGiantLeap           Manufacturer = 42
	ManufacturerAceSensor              Manufacturer = 43
	ManufacturerBrimBrothers           Manufacturer = 44
	ManufacturerXplova                 Manufacturer = 45
	ManufacturerPerceptionDigital      Manufacturer = 46
	ManufacturerBf1systems             Manufacturer = 47
	ManufacturerPioneer                Manufacturer = 48
	ManufacturerSpantec                Manufacturer = 49
	ManufacturerMetalogics             Manufacturer = 50
	Manufacturer4iiiis                 Manufacturer = 51
	ManufacturerSeikoEpson             Manufacturer = 52
	ManufacturerSeikoEpsonOem          Manufacturer = 53
	ManufacturerIforPowell             Manufacturer = 54
	ManufacturerMaxwellGuider          Manufacturer = 55
	ManufacturerStarTrac               Manufacturer = 56
	ManufacturerBreakaway              Manufacturer = 57
	ManufacturerAlatechTechnologyLtd   Manufacturer = 58
	ManufacturerMioTechnologyEurope    Manufacturer = 59
	ManufacturerRotor                  Manufacturer = 60
	ManufacturerGeonaute               Manufacturer = 61
	ManufacturerIdBike                 Manufacturer = 62
	ManufacturerSpecialized            Manufacturer = 63
	ManufacturerWtek                   Manufacturer = 64
	ManufacturerPhysicalEnterprises    Manufacturer = 65
	ManufacturerNorthPoleEngineering   Manufacturer = 66
	ManufacturerBkool                  Manufacturer = 67
	ManufacturerCateye                 Manufacturer = 68
	ManufacturerStagesCycling          Manufacturer = 69
	ManufacturerSigmasport             Manufacturer = 70
	ManufacturerTomtom                 Manufacturer = 71
	ManufacturerPeripedal              Manufacturer = 72
	ManufacturerWattbike               Manufacturer = 73
	ManufacturerMoxy                   Manufacturer = 76
	ManufacturerCiclosport             Manufacturer = 77
	ManufacturerPowerbahn              Manufacturer = 78
	ManufacturerAcornProjectsAps       Manufacturer = 79
	ManufacturerLifebeam               Manufacturer = 80
	ManufacturerBontrager              Manufacturer = 81
	ManufacturerWellgo                 Manufacturer = 82
	ManufacturerScosche                Manufacturer = 83
	ManufacturerMagura                 Manufacturer = 84
	ManufacturerWoodway                Manufacturer = 85
	ManufacturerElite                  Manufacturer = 86
	ManufacturerNielsenKellerman       Manufacturer = 87
	ManufacturerDkCity                 Manufacturer = 88
	ManufacturerTacx                   Manufacturer = 89
	ManufacturerDirectionTechnology    Manufacturer = 90
	ManufacturerMagtonic               Manufacturer = 91
	Manufacturer1partcarbon            Manufacturer = 92
	ManufacturerInsideRideTechnologies Manufacturer = 93
	ManufacturerSoundOfMotion          Manufacturer = 94
	ManufacturerStryd                  Manufacturer = 95
	ManufacturerIcg                    Manufacturer = 96 // Indoorcycling Group
	ManufacturerMiPulse                Manufacturer = 97
	ManufacturerBsxAthletics           Manufacturer = 98
	ManufacturerLook                   Manufacturer = 99
	ManufacturerCampagnoloSrl          Manufacturer = 100
	ManufacturerBodyBikeSmart          Manufacturer = 101
	ManufacturerPraxisworks            Manufacturer = 102
	ManufacturerLimitsTechnology       Manufacturer = 103 // Limits Technology Ltd.
	ManufacturerTopactionTechnology    Manufacturer = 104 // TopAction Technology Inc.
	ManufacturerCosinuss               Manufacturer = 105
	ManufacturerFitcare                Manufacturer = 106
	ManufacturerMagene                 Manufacturer = 107
	ManufacturerGiantManufacturingCo   Manufacturer = 108
	ManufacturerTigrasport             Manufacturer = 109 // Tigrasport
	ManufacturerSalutron               Manufacturer = 110
	ManufacturerTechnogym              Manufacturer = 111
	ManufacturerBrytonSensors          Manufacturer = 112
	ManufacturerLatitudeLimited        Manufacturer = 113
	ManufacturerSoaringTechnology      Manufacturer = 114
	ManufacturerIgpsport               Manufacturer = 115
	ManufacturerThinkrider             Manufacturer = 116
	ManufacturerGopherSport            Manufacturer = 117
	ManufacturerWaterrower             Manufacturer = 118
	ManufacturerOrangetheory           Manufacturer = 119
	ManufacturerInpeak                 Manufacturer = 120
	ManufacturerKinetic                Manufacturer = 121
	ManufacturerJohnsonHealthTech      Manufacturer = 122
	ManufacturerPolarElectro           Manufacturer = 123
	ManufacturerSeesense               Manufacturer = 124
	ManufacturerNciTechnology          Manufacturer = 125
	ManufacturerIqsquare               Manufacturer = 126
	ManufacturerLeomo                  Manufacturer = 127
	ManufacturerIfitCom                Manufacturer = 128
	ManufacturerCorosByte              Manufacturer = 129
	ManufacturerVersaDesign            Manufacturer = 130
	ManufacturerChileaf                Manufacturer = 131
	ManufacturerCycplus                Manufacturer = 132
	ManufacturerGravaaByte             Manufacturer = 133
	ManufacturerSigeyi                 Manufacturer = 134
	ManufacturerCoospo                 Manufacturer = 135
	ManufacturerGeoid                  Manufacturer = 136
	ManufacturerBosch                  Manufacturer = 137
	ManufacturerKyto                   Manufacturer = 138
	ManufacturerKineticSports          Manufacturer = 139
	ManufacturerDecathlonByte          Manufacturer = 140
	ManufacturerTqSystems              Manufacturer = 141
	ManufacturerTagHeuer               Manufacturer = 142
	ManufacturerKeiserFitness          Manufacturer = 143
	ManufacturerZwiftByte              Manufacturer = 144
	ManufacturerDevelopment            Manufacturer = 255
	ManufacturerHealthandlife          Manufacturer = 257
	ManufacturerLezyne                 Manufacturer = 258
	ManufacturerScribeLabs             Manufacturer = 259
	ManufacturerZwift                  Manufacturer = 260
	ManufacturerWatteam                Manufacturer = 261
	ManufacturerRecon                  Manufacturer = 262
	ManufacturerFaveroElectronics      Manufacturer = 263
	ManufacturerDynovelo               Manufacturer = 264
	ManufacturerStrava                 Manufacturer = 265
	ManufacturerPrecor                 Manufacturer = 266 // Amer Sports
	ManufacturerBryton                 Manufacturer = 267
	ManufacturerSram                   Manufacturer = 268
	ManufacturerNavman                 Manufacturer = 269 // MiTAC Global Corporation (Mio Technology)
	ManufacturerCobi                   Manufacturer = 270 // COBI GmbH
	ManufacturerSpivi                  Manufacturer = 271
	ManufacturerMioMagellan            Manufacturer = 272
	ManufacturerEvesports              Manufacturer = 273
	ManufacturerSensitivusGauge        Manufacturer = 274
	ManufacturerPodoon                 Manufacturer = 275
	ManufacturerLifeTimeFitness        Manufacturer = 276
	ManufacturerFalcoEMotors           Manufacturer = 277 // Falco eMotors Inc.
	ManufacturerMinoura                Manufacturer = 278
	ManufacturerCycliq                 Manufacturer = 279
	ManufacturerLuxottica              Manufacturer = 280
	ManufacturerTrainerRoad            Manufacturer = 281
	ManufacturerTheSufferfest          Manufacturer = 282
	ManufacturerFullspeedahead         Manufacturer = 283
	ManufacturerVirtualtraining        Manufacturer = 284
	ManufacturerFeedbacksports         Manufacturer = 285
	ManufacturerOmata                  Manufacturer = 286
	ManufacturerVdo                    Manufacturer = 287
	ManufacturerMagneticdays           Manufacturer = 288
	ManufacturerHammerhead             Manufacturer = 289
	ManufacturerKineticByKurt          Manufacturer = 290
	ManufacturerShapelog               Manufacturer = 291
	ManufacturerDabuziduo              Manufacturer = 292
	ManufacturerJetblack               Manufacturer = 293
	ManufacturerCoros                  Manufacturer = 294
	ManufacturerVirtugo                Manufacturer = 295
	ManufacturerVelosense              Manufacturer = 296
	ManufacturerCycligentinc           Manufacturer = 297
	ManufacturerTrailforks             Manufacturer = 298
	ManufacturerMahleEbikemotion       Manufacturer = 299
	ManufacturerNurvv                  Manufacturer = 300
	ManufacturerMicroprogram           Manufacturer = 301
	ManufacturerZone5cloud             Manufacturer = 302
	ManufacturerGreenteg               Manufacturer = 303
	ManufacturerYamahaMotors           Manufacturer = 304
	ManufacturerWhoop                  Manufacturer = 305
	ManufacturerGravaa                 Manufacturer = 306
	ManufacturerOnelap                 Manufacturer = 307
	ManufacturerMonarkExercise         Manufacturer = 308
	ManufacturerForm                   Manufacturer = 309
	ManufacturerDecathlon              Manufacturer = 310
	ManufacturerSyncros                Manufacturer = 311
	ManufacturerHeatup                 Manufacturer = 312
	ManufacturerCannondale             Manufacturer = 313
	ManufacturerTrueFitness            Manufacturer = 314
	ManufacturerRGTCycling             Manufacturer = 315
	ManufacturerVasa                   Manufacturer = 316
	ManufacturerRaceRepublic           Manufacturer = 317
	ManufacturerFazua                  Manufacturer = 318
	ManufacturerOrekaTraining          Manufacturer = 319
	ManufacturerIsec                   Manufacturer = 320 // Lishun Electric & Communication
	ManufacturerLululemonStudio        Manufacturer = 321
	ManufacturerActigraphcorp          Manufacturer = 5759
	ManufacturerInvalid                Manufacturer = 0xFFFF
)

func (Manufacturer) String

func (i Manufacturer) String() string

type MemoGlobMsg

type MemoGlobMsg struct {
}

MemoGlobMsg represents the memo_glob FIT message type.

func NewMemoGlobMsg

func NewMemoGlobMsg() *MemoGlobMsg

NewMemoGlobMsg returns a memo_glob FIT message initialized to all-invalid values.

type MesgCapabilitiesMsg

type MesgCapabilitiesMsg struct {
	MessageIndex MessageIndex
	File         FileType
	MesgNum      MesgNum
	CountType    MesgCount
	Count        uint16
}

MesgCapabilitiesMsg represents the mesg_capabilities FIT message type.

func NewMesgCapabilitiesMsg

func NewMesgCapabilitiesMsg() *MesgCapabilitiesMsg

NewMesgCapabilitiesMsg returns a mesg_capabilities FIT message initialized to all-invalid values.

func (*MesgCapabilitiesMsg) GetCount

func (x *MesgCapabilitiesMsg) GetCount() interface{}

GetCount returns the appropriate Count subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

type MesgCount

type MesgCount byte

MesgCount represents the mesg_count FIT type.

const (
	MesgCountNumPerFile     MesgCount = 0
	MesgCountMaxPerFile     MesgCount = 1
	MesgCountMaxPerFileType MesgCount = 2
	MesgCountInvalid        MesgCount = 0xFF
)

func (MesgCount) String

func (i MesgCount) String() string

type MesgNum

type MesgNum uint16

MesgNum represents the mesg_num FIT type.

const (
	MesgNumFileId                      MesgNum = 0
	MesgNumCapabilities                MesgNum = 1
	MesgNumDeviceSettings              MesgNum = 2
	MesgNumUserProfile                 MesgNum = 3
	MesgNumHrmProfile                  MesgNum = 4
	MesgNumSdmProfile                  MesgNum = 5
	MesgNumBikeProfile                 MesgNum = 6
	MesgNumZonesTarget                 MesgNum = 7
	MesgNumHrZone                      MesgNum = 8
	MesgNumPowerZone                   MesgNum = 9
	MesgNumMetZone                     MesgNum = 10
	MesgNumSport                       MesgNum = 12
	MesgNumGoal                        MesgNum = 15
	MesgNumSession                     MesgNum = 18
	MesgNumLap                         MesgNum = 19
	MesgNumRecord                      MesgNum = 20
	MesgNumEvent                       MesgNum = 21
	MesgNumDeviceInfo                  MesgNum = 23
	MesgNumWorkout                     MesgNum = 26
	MesgNumWorkoutStep                 MesgNum = 27
	MesgNumSchedule                    MesgNum = 28
	MesgNumWeightScale                 MesgNum = 30
	MesgNumCourse                      MesgNum = 31
	MesgNumCoursePoint                 MesgNum = 32
	MesgNumTotals                      MesgNum = 33
	MesgNumActivity                    MesgNum = 34
	MesgNumSoftware                    MesgNum = 35
	MesgNumFileCapabilities            MesgNum = 37
	MesgNumMesgCapabilities            MesgNum = 38
	MesgNumFieldCapabilities           MesgNum = 39
	MesgNumFileCreator                 MesgNum = 49
	MesgNumBloodPressure               MesgNum = 51
	MesgNumSpeedZone                   MesgNum = 53
	MesgNumMonitoring                  MesgNum = 55
	MesgNumTrainingFile                MesgNum = 72
	MesgNumHrv                         MesgNum = 78
	MesgNumAntRx                       MesgNum = 80
	MesgNumAntTx                       MesgNum = 81
	MesgNumAntChannelId                MesgNum = 82
	MesgNumLength                      MesgNum = 101
	MesgNumMonitoringInfo              MesgNum = 103
	MesgNumPad                         MesgNum = 105
	MesgNumSlaveDevice                 MesgNum = 106
	MesgNumConnectivity                MesgNum = 127
	MesgNumWeatherConditions           MesgNum = 128
	MesgNumWeatherAlert                MesgNum = 129
	MesgNumCadenceZone                 MesgNum = 131
	MesgNumHr                          MesgNum = 132
	MesgNumSegmentLap                  MesgNum = 142
	MesgNumMemoGlob                    MesgNum = 145
	MesgNumSegmentId                   MesgNum = 148
	MesgNumSegmentLeaderboardEntry     MesgNum = 149
	MesgNumSegmentPoint                MesgNum = 150
	MesgNumSegmentFile                 MesgNum = 151
	MesgNumWorkoutSession              MesgNum = 158
	MesgNumWatchfaceSettings           MesgNum = 159
	MesgNumGpsMetadata                 MesgNum = 160
	MesgNumCameraEvent                 MesgNum = 161
	MesgNumTimestampCorrelation        MesgNum = 162
	MesgNumGyroscopeData               MesgNum = 164
	MesgNumAccelerometerData           MesgNum = 165
	MesgNumThreeDSensorCalibration     MesgNum = 167
	MesgNumVideoFrame                  MesgNum = 169
	MesgNumObdiiData                   MesgNum = 174
	MesgNumNmeaSentence                MesgNum = 177
	MesgNumAviationAttitude            MesgNum = 178
	MesgNumVideo                       MesgNum = 184
	MesgNumVideoTitle                  MesgNum = 185
	MesgNumVideoDescription            MesgNum = 186
	MesgNumVideoClip                   MesgNum = 187
	MesgNumOhrSettings                 MesgNum = 188
	MesgNumExdScreenConfiguration      MesgNum = 200
	MesgNumExdDataFieldConfiguration   MesgNum = 201
	MesgNumExdDataConceptConfiguration MesgNum = 202
	MesgNumFieldDescription            MesgNum = 206
	MesgNumDeveloperDataId             MesgNum = 207
	MesgNumMagnetometerData            MesgNum = 208
	MesgNumBarometerData               MesgNum = 209
	MesgNumOneDSensorCalibration       MesgNum = 210
	MesgNumSet                         MesgNum = 225
	MesgNumStressLevel                 MesgNum = 227
	MesgNumDiveSettings                MesgNum = 258
	MesgNumDiveGas                     MesgNum = 259
	MesgNumDiveAlarm                   MesgNum = 262
	MesgNumExerciseTitle               MesgNum = 264
	MesgNumDiveSummary                 MesgNum = 268
	MesgNumJump                        MesgNum = 285
	MesgNumClimbPro                    MesgNum = 317
	MesgNumDeviceAuxBatteryInfo        MesgNum = 375
	MesgNumMfgRangeMin                 MesgNum = 0xFF00 // 0xFF00 - 0xFFFE reserved for manufacturer specific messages
	MesgNumMfgRangeMax                 MesgNum = 0xFFFE // 0xFF00 - 0xFFFE reserved for manufacturer specific messages
	MesgNumInvalid                     MesgNum = 0xFFFF
)

func (MesgNum) String

func (i MesgNum) String() string

type MessageIndex

type MessageIndex uint16

MessageIndex represents the message_index FIT type.

const (
	MessageIndexSelected MessageIndex = 0x8000 // message is selected if set
	MessageIndexReserved MessageIndex = 0x7000 // reserved (default 0)
	MessageIndexMask     MessageIndex = 0x0FFF // index
	MessageIndexInvalid  MessageIndex = 0xFFFF
)

func (MessageIndex) String

func (i MessageIndex) String() string

type MetZoneMsg

type MetZoneMsg struct {
	MessageIndex MessageIndex
	HighBpm      uint8
	Calories     uint16
	FatCalories  uint8
}

MetZoneMsg represents the met_zone FIT message type.

func NewMetZoneMsg

func NewMetZoneMsg() *MetZoneMsg

NewMetZoneMsg returns a met_zone FIT message initialized to all-invalid values.

func (*MetZoneMsg) GetCaloriesScaled

func (x *MetZoneMsg) GetCaloriesScaled() float64

GetCaloriesScaled returns Calories with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kcal / min

func (*MetZoneMsg) GetFatCaloriesScaled

func (x *MetZoneMsg) GetFatCaloriesScaled() float64

GetFatCaloriesScaled returns FatCalories with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kcal / min

type MonitoringAFile

type MonitoringAFile struct {
	MonitoringInfo *MonitoringInfoMsg
	Monitorings    []*MonitoringMsg
	DeviceInfos    []*DeviceInfoMsg
}

MonitoringAFile represents the MonitoringA FIT file type. Records detailed monitoring data (i.e. logging interval < 24 Hr).

type MonitoringBFile

type MonitoringBFile struct {
	MonitoringInfo *MonitoringInfoMsg
	Monitorings    []*MonitoringMsg
	DeviceInfos    []*DeviceInfoMsg
}

MonitoringBFile represents the MonitoringB FIT file type. Records detailed monitoring data (i.e. logging interval < 24 Hr).

type MonitoringDailyFile

type MonitoringDailyFile struct {
	MonitoringInfo *MonitoringInfoMsg
	Monitorings    []*MonitoringMsg
}

MonitoringDailyFile represents the Daily Monitoring FIT file type. Records daily summary monitoring data (i.e. logging interval = 24 hour).

type MonitoringInfoMsg

type MonitoringInfoMsg struct {
	Timestamp      time.Time
	LocalTimestamp time.Time // Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction.
}

MonitoringInfoMsg represents the monitoring_info FIT message type.

func NewMonitoringInfoMsg

func NewMonitoringInfoMsg() *MonitoringInfoMsg

NewMonitoringInfoMsg returns a monitoring_info FIT message initialized to all-invalid values.

type MonitoringMsg

type MonitoringMsg struct {
	Timestamp       time.Time   // Must align to logging interval, for example, time must be 00:00:00 for daily log.
	DeviceIndex     DeviceIndex // Associates this data to device_info message. Not required for file with single device (sensor).
	Calories        uint16      // Accumulated total calories. Maintained by MonitoringReader for each activity_type. See SDK documentation
	Distance        uint32      // Accumulated distance. Maintained by MonitoringReader for each activity_type. See SDK documentation.
	Cycles          uint32      // Accumulated cycles. Maintained by MonitoringReader for each activity_type. See SDK documentation.
	ActiveTime      uint32
	ActivityType    ActivityType
	ActivitySubtype ActivitySubtype
	Distance16      uint16
	Cycles16        uint16
	ActiveTime16    uint16
	LocalTimestamp  time.Time // Must align to logging interval, for example, time must be 00:00:00 for daily log.
}

MonitoringMsg represents the monitoring FIT message type.

func NewMonitoringMsg

func NewMonitoringMsg() *MonitoringMsg

NewMonitoringMsg returns a monitoring FIT message initialized to all-invalid values.

func (*MonitoringMsg) GetActiveTimeScaled

func (x *MonitoringMsg) GetActiveTimeScaled() float64

GetActiveTimeScaled returns ActiveTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*MonitoringMsg) GetCycles

func (x *MonitoringMsg) GetCycles() interface{}

GetCycles returns the appropriate Cycles subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*MonitoringMsg) GetCyclesScaled

func (x *MonitoringMsg) GetCyclesScaled() float64

GetCyclesScaled returns Cycles with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: cycles

func (*MonitoringMsg) GetDistanceScaled

func (x *MonitoringMsg) GetDistanceScaled() float64

GetDistanceScaled returns Distance with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

type NmeaSentenceMsg

type NmeaSentenceMsg struct {
	Timestamp   time.Time // Timestamp message was output
	TimestampMs uint16    // Fractional part of timestamp, added to timestamp
	Sentence    string    // NMEA sentence
}

NmeaSentenceMsg represents the nmea_sentence FIT message type.

func NewNmeaSentenceMsg

func NewNmeaSentenceMsg() *NmeaSentenceMsg

NewNmeaSentenceMsg returns a nmea_sentence FIT message initialized to all-invalid values.

type NotSupportedError

type NotSupportedError string

A NotSupportedError reports that the input uses a valid but unimplemented FIT feature.

func (NotSupportedError) Error

func (e NotSupportedError) Error() string

type ObdiiDataMsg

type ObdiiDataMsg struct {
}

ObdiiDataMsg represents the obdii_data FIT message type.

func NewObdiiDataMsg

func NewObdiiDataMsg() *ObdiiDataMsg

NewObdiiDataMsg returns a obdii_data FIT message initialized to all-invalid values.

type OhrSettingsMsg

type OhrSettingsMsg struct {
}

OhrSettingsMsg represents the ohr_settings FIT message type.

func NewOhrSettingsMsg

func NewOhrSettingsMsg() *OhrSettingsMsg

NewOhrSettingsMsg returns a ohr_settings FIT message initialized to all-invalid values.

type OlympicLiftExerciseName

type OlympicLiftExerciseName uint16

OlympicLiftExerciseName represents the olympic_lift_exercise_name FIT type.

const (
	OlympicLiftExerciseNameBarbellHangPowerClean      OlympicLiftExerciseName = 0
	OlympicLiftExerciseNameBarbellHangSquatClean      OlympicLiftExerciseName = 1
	OlympicLiftExerciseNameBarbellPowerClean          OlympicLiftExerciseName = 2
	OlympicLiftExerciseNameBarbellPowerSnatch         OlympicLiftExerciseName = 3
	OlympicLiftExerciseNameBarbellSquatClean          OlympicLiftExerciseName = 4
	OlympicLiftExerciseNameCleanAndJerk               OlympicLiftExerciseName = 5
	OlympicLiftExerciseNameBarbellHangPowerSnatch     OlympicLiftExerciseName = 6
	OlympicLiftExerciseNameBarbellHangPull            OlympicLiftExerciseName = 7
	OlympicLiftExerciseNameBarbellHighPull            OlympicLiftExerciseName = 8
	OlympicLiftExerciseNameBarbellSnatch              OlympicLiftExerciseName = 9
	OlympicLiftExerciseNameBarbellSplitJerk           OlympicLiftExerciseName = 10
	OlympicLiftExerciseNameClean                      OlympicLiftExerciseName = 11
	OlympicLiftExerciseNameDumbbellClean              OlympicLiftExerciseName = 12
	OlympicLiftExerciseNameDumbbellHangPull           OlympicLiftExerciseName = 13
	OlympicLiftExerciseNameOneHandDumbbellSplitSnatch OlympicLiftExerciseName = 14
	OlympicLiftExerciseNamePushJerk                   OlympicLiftExerciseName = 15
	OlympicLiftExerciseNameSingleArmDumbbellSnatch    OlympicLiftExerciseName = 16
	OlympicLiftExerciseNameSingleArmHangSnatch        OlympicLiftExerciseName = 17
	OlympicLiftExerciseNameSingleArmKettlebellSnatch  OlympicLiftExerciseName = 18
	OlympicLiftExerciseNameSplitJerk                  OlympicLiftExerciseName = 19
	OlympicLiftExerciseNameSquatCleanAndJerk          OlympicLiftExerciseName = 20
	OlympicLiftExerciseNameInvalid                    OlympicLiftExerciseName = 0xFFFF
)

func (OlympicLiftExerciseName) String

func (i OlympicLiftExerciseName) String() string

type OneDSensorCalibrationMsg

type OneDSensorCalibrationMsg struct {
}

OneDSensorCalibrationMsg represents the one_d_sensor_calibration FIT message type.

func NewOneDSensorCalibrationMsg

func NewOneDSensorCalibrationMsg() *OneDSensorCalibrationMsg

NewOneDSensorCalibrationMsg returns a one_d_sensor_calibration FIT message initialized to all-invalid values.

type PlankExerciseName

type PlankExerciseName uint16

PlankExerciseName represents the plank_exercise_name FIT type.

const (
	PlankExerciseName45DegreePlank                                    PlankExerciseName = 0
	PlankExerciseNameWeighted45DegreePlank                            PlankExerciseName = 1
	PlankExerciseName90DegreeStaticHold                               PlankExerciseName = 2
	PlankExerciseNameWeighted90DegreeStaticHold                       PlankExerciseName = 3
	PlankExerciseNameBearCrawl                                        PlankExerciseName = 4
	PlankExerciseNameWeightedBearCrawl                                PlankExerciseName = 5
	PlankExerciseNameCrossBodyMountainClimber                         PlankExerciseName = 6
	PlankExerciseNameWeightedCrossBodyMountainClimber                 PlankExerciseName = 7
	PlankExerciseNameElbowPlankPikeJacks                              PlankExerciseName = 8
	PlankExerciseNameWeightedElbowPlankPikeJacks                      PlankExerciseName = 9
	PlankExerciseNameElevatedFeetPlank                                PlankExerciseName = 10
	PlankExerciseNameWeightedElevatedFeetPlank                        PlankExerciseName = 11
	PlankExerciseNameElevatorAbs                                      PlankExerciseName = 12
	PlankExerciseNameWeightedElevatorAbs                              PlankExerciseName = 13
	PlankExerciseNameExtendedPlank                                    PlankExerciseName = 14
	PlankExerciseNameWeightedExtendedPlank                            PlankExerciseName = 15
	PlankExerciseNameFullPlankPasseTwist                              PlankExerciseName = 16
	PlankExerciseNameWeightedFullPlankPasseTwist                      PlankExerciseName = 17
	PlankExerciseNameInchingElbowPlank                                PlankExerciseName = 18
	PlankExerciseNameWeightedInchingElbowPlank                        PlankExerciseName = 19
	PlankExerciseNameInchwormToSidePlank                              PlankExerciseName = 20
	PlankExerciseNameWeightedInchwormToSidePlank                      PlankExerciseName = 21
	PlankExerciseNameKneelingPlank                                    PlankExerciseName = 22
	PlankExerciseNameWeightedKneelingPlank                            PlankExerciseName = 23
	PlankExerciseNameKneelingSidePlankWithLegLift                     PlankExerciseName = 24
	PlankExerciseNameWeightedKneelingSidePlankWithLegLift             PlankExerciseName = 25
	PlankExerciseNameLateralRoll                                      PlankExerciseName = 26
	PlankExerciseNameWeightedLateralRoll                              PlankExerciseName = 27
	PlankExerciseNameLyingReversePlank                                PlankExerciseName = 28
	PlankExerciseNameWeightedLyingReversePlank                        PlankExerciseName = 29
	PlankExerciseNameMedicineBallMountainClimber                      PlankExerciseName = 30
	PlankExerciseNameWeightedMedicineBallMountainClimber              PlankExerciseName = 31
	PlankExerciseNameModifiedMountainClimberAndExtension              PlankExerciseName = 32
	PlankExerciseNameWeightedModifiedMountainClimberAndExtension      PlankExerciseName = 33
	PlankExerciseNameMountainClimber                                  PlankExerciseName = 34
	PlankExerciseNameWeightedMountainClimber                          PlankExerciseName = 35
	PlankExerciseNameMountainClimberOnSlidingDiscs                    PlankExerciseName = 36
	PlankExerciseNameWeightedMountainClimberOnSlidingDiscs            PlankExerciseName = 37
	PlankExerciseNameMountainClimberWithFeetOnBosuBall                PlankExerciseName = 38
	PlankExerciseNameWeightedMountainClimberWithFeetOnBosuBall        PlankExerciseName = 39
	PlankExerciseNameMountainClimberWithHandsOnBench                  PlankExerciseName = 40
	PlankExerciseNameMountainClimberWithHandsOnSwissBall              PlankExerciseName = 41
	PlankExerciseNameWeightedMountainClimberWithHandsOnSwissBall      PlankExerciseName = 42
	PlankExerciseNamePlank                                            PlankExerciseName = 43
	PlankExerciseNamePlankJacksWithFeetOnSlidingDiscs                 PlankExerciseName = 44
	PlankExerciseNameWeightedPlankJacksWithFeetOnSlidingDiscs         PlankExerciseName = 45
	PlankExerciseNamePlankKneeTwist                                   PlankExerciseName = 46
	PlankExerciseNameWeightedPlankKneeTwist                           PlankExerciseName = 47
	PlankExerciseNamePlankPikeJumps                                   PlankExerciseName = 48
	PlankExerciseNameWeightedPlankPikeJumps                           PlankExerciseName = 49
	PlankExerciseNamePlankPikes                                       PlankExerciseName = 50
	PlankExerciseNameWeightedPlankPikes                               PlankExerciseName = 51
	PlankExerciseNamePlankToStandUp                                   PlankExerciseName = 52
	PlankExerciseNameWeightedPlankToStandUp                           PlankExerciseName = 53
	PlankExerciseNamePlankWithArmRaise                                PlankExerciseName = 54
	PlankExerciseNameWeightedPlankWithArmRaise                        PlankExerciseName = 55
	PlankExerciseNamePlankWithKneeToElbow                             PlankExerciseName = 56
	PlankExerciseNameWeightedPlankWithKneeToElbow                     PlankExerciseName = 57
	PlankExerciseNamePlankWithObliqueCrunch                           PlankExerciseName = 58
	PlankExerciseNameWeightedPlankWithObliqueCrunch                   PlankExerciseName = 59
	PlankExerciseNamePlyometricSidePlank                              PlankExerciseName = 60
	PlankExerciseNameWeightedPlyometricSidePlank                      PlankExerciseName = 61
	PlankExerciseNameRollingSidePlank                                 PlankExerciseName = 62
	PlankExerciseNameWeightedRollingSidePlank                         PlankExerciseName = 63
	PlankExerciseNameSideKickPlank                                    PlankExerciseName = 64
	PlankExerciseNameWeightedSideKickPlank                            PlankExerciseName = 65
	PlankExerciseNameSidePlank                                        PlankExerciseName = 66
	PlankExerciseNameWeightedSidePlank                                PlankExerciseName = 67
	PlankExerciseNameSidePlankAndRow                                  PlankExerciseName = 68
	PlankExerciseNameWeightedSidePlankAndRow                          PlankExerciseName = 69
	PlankExerciseNameSidePlankLift                                    PlankExerciseName = 70
	PlankExerciseNameWeightedSidePlankLift                            PlankExerciseName = 71
	PlankExerciseNameSidePlankWithElbowOnBosuBall                     PlankExerciseName = 72
	PlankExerciseNameWeightedSidePlankWithElbowOnBosuBall             PlankExerciseName = 73
	PlankExerciseNameSidePlankWithFeetOnBench                         PlankExerciseName = 74
	PlankExerciseNameWeightedSidePlankWithFeetOnBench                 PlankExerciseName = 75
	PlankExerciseNameSidePlankWithKneeCircle                          PlankExerciseName = 76
	PlankExerciseNameWeightedSidePlankWithKneeCircle                  PlankExerciseName = 77
	PlankExerciseNameSidePlankWithKneeTuck                            PlankExerciseName = 78
	PlankExerciseNameWeightedSidePlankWithKneeTuck                    PlankExerciseName = 79
	PlankExerciseNameSidePlankWithLegLift                             PlankExerciseName = 80
	PlankExerciseNameWeightedSidePlankWithLegLift                     PlankExerciseName = 81
	PlankExerciseNameSidePlankWithReachUnder                          PlankExerciseName = 82
	PlankExerciseNameWeightedSidePlankWithReachUnder                  PlankExerciseName = 83
	PlankExerciseNameSingleLegElevatedFeetPlank                       PlankExerciseName = 84
	PlankExerciseNameWeightedSingleLegElevatedFeetPlank               PlankExerciseName = 85
	PlankExerciseNameSingleLegFlexAndExtend                           PlankExerciseName = 86
	PlankExerciseNameWeightedSingleLegFlexAndExtend                   PlankExerciseName = 87
	PlankExerciseNameSingleLegSidePlank                               PlankExerciseName = 88
	PlankExerciseNameWeightedSingleLegSidePlank                       PlankExerciseName = 89
	PlankExerciseNameSpidermanPlank                                   PlankExerciseName = 90
	PlankExerciseNameWeightedSpidermanPlank                           PlankExerciseName = 91
	PlankExerciseNameStraightArmPlank                                 PlankExerciseName = 92
	PlankExerciseNameWeightedStraightArmPlank                         PlankExerciseName = 93
	PlankExerciseNameStraightArmPlankWithShoulderTouch                PlankExerciseName = 94
	PlankExerciseNameWeightedStraightArmPlankWithShoulderTouch        PlankExerciseName = 95
	PlankExerciseNameSwissBallPlank                                   PlankExerciseName = 96
	PlankExerciseNameWeightedSwissBallPlank                           PlankExerciseName = 97
	PlankExerciseNameSwissBallPlankLegLift                            PlankExerciseName = 98
	PlankExerciseNameWeightedSwissBallPlankLegLift                    PlankExerciseName = 99
	PlankExerciseNameSwissBallPlankLegLiftAndHold                     PlankExerciseName = 100
	PlankExerciseNameSwissBallPlankWithFeetOnBench                    PlankExerciseName = 101
	PlankExerciseNameWeightedSwissBallPlankWithFeetOnBench            PlankExerciseName = 102
	PlankExerciseNameSwissBallProneJackknife                          PlankExerciseName = 103
	PlankExerciseNameWeightedSwissBallProneJackknife                  PlankExerciseName = 104
	PlankExerciseNameSwissBallSidePlank                               PlankExerciseName = 105
	PlankExerciseNameWeightedSwissBallSidePlank                       PlankExerciseName = 106
	PlankExerciseNameThreeWayPlank                                    PlankExerciseName = 107
	PlankExerciseNameWeightedThreeWayPlank                            PlankExerciseName = 108
	PlankExerciseNameTowelPlankAndKneeIn                              PlankExerciseName = 109
	PlankExerciseNameWeightedTowelPlankAndKneeIn                      PlankExerciseName = 110
	PlankExerciseNameTStabilization                                   PlankExerciseName = 111
	PlankExerciseNameWeightedTStabilization                           PlankExerciseName = 112
	PlankExerciseNameTurkishGetUpToSidePlank                          PlankExerciseName = 113
	PlankExerciseNameWeightedTurkishGetUpToSidePlank                  PlankExerciseName = 114
	PlankExerciseNameTwoPointPlank                                    PlankExerciseName = 115
	PlankExerciseNameWeightedTwoPointPlank                            PlankExerciseName = 116
	PlankExerciseNameWeightedPlank                                    PlankExerciseName = 117
	PlankExerciseNameWideStancePlankWithDiagonalArmLift               PlankExerciseName = 118
	PlankExerciseNameWeightedWideStancePlankWithDiagonalArmLift       PlankExerciseName = 119
	PlankExerciseNameWideStancePlankWithDiagonalLegLift               PlankExerciseName = 120
	PlankExerciseNameWeightedWideStancePlankWithDiagonalLegLift       PlankExerciseName = 121
	PlankExerciseNameWideStancePlankWithLegLift                       PlankExerciseName = 122
	PlankExerciseNameWeightedWideStancePlankWithLegLift               PlankExerciseName = 123
	PlankExerciseNameWideStancePlankWithOppositeArmAndLegLift         PlankExerciseName = 124
	PlankExerciseNameWeightedMountainClimberWithHandsOnBench          PlankExerciseName = 125
	PlankExerciseNameWeightedSwissBallPlankLegLiftAndHold             PlankExerciseName = 126
	PlankExerciseNameWeightedWideStancePlankWithOppositeArmAndLegLift PlankExerciseName = 127
	PlankExerciseNamePlankWithFeetOnSwissBall                         PlankExerciseName = 128
	PlankExerciseNameSidePlankToPlankWithReachUnder                   PlankExerciseName = 129
	PlankExerciseNameBridgeWithGluteLowerLift                         PlankExerciseName = 130
	PlankExerciseNameBridgeOneLegBridge                               PlankExerciseName = 131
	PlankExerciseNamePlankWithArmVariations                           PlankExerciseName = 132
	PlankExerciseNamePlankWithLegLift                                 PlankExerciseName = 133
	PlankExerciseNameReversePlankWithLegPull                          PlankExerciseName = 134
	PlankExerciseNameInvalid                                          PlankExerciseName = 0xFFFF
)

func (PlankExerciseName) String

func (i PlankExerciseName) String() string

type PlyoExerciseName

type PlyoExerciseName uint16

PlyoExerciseName represents the plyo_exercise_name FIT type.

const (
	PlyoExerciseNameAlternatingJumpLunge                  PlyoExerciseName = 0
	PlyoExerciseNameWeightedAlternatingJumpLunge          PlyoExerciseName = 1
	PlyoExerciseNameBarbellJumpSquat                      PlyoExerciseName = 2
	PlyoExerciseNameBodyWeightJumpSquat                   PlyoExerciseName = 3
	PlyoExerciseNameWeightedJumpSquat                     PlyoExerciseName = 4
	PlyoExerciseNameCrossKneeStrike                       PlyoExerciseName = 5
	PlyoExerciseNameWeightedCrossKneeStrike               PlyoExerciseName = 6
	PlyoExerciseNameDepthJump                             PlyoExerciseName = 7
	PlyoExerciseNameWeightedDepthJump                     PlyoExerciseName = 8
	PlyoExerciseNameDumbbellJumpSquat                     PlyoExerciseName = 9
	PlyoExerciseNameDumbbellSplitJump                     PlyoExerciseName = 10
	PlyoExerciseNameFrontKneeStrike                       PlyoExerciseName = 11
	PlyoExerciseNameWeightedFrontKneeStrike               PlyoExerciseName = 12
	PlyoExerciseNameHighBoxJump                           PlyoExerciseName = 13
	PlyoExerciseNameWeightedHighBoxJump                   PlyoExerciseName = 14
	PlyoExerciseNameIsometricExplosiveBodyWeightJumpSquat PlyoExerciseName = 15
	PlyoExerciseNameWeightedIsometricExplosiveJumpSquat   PlyoExerciseName = 16
	PlyoExerciseNameLateralLeapAndHop                     PlyoExerciseName = 17
	PlyoExerciseNameWeightedLateralLeapAndHop             PlyoExerciseName = 18
	PlyoExerciseNameLateralPlyoSquats                     PlyoExerciseName = 19
	PlyoExerciseNameWeightedLateralPlyoSquats             PlyoExerciseName = 20
	PlyoExerciseNameLateralSlide                          PlyoExerciseName = 21
	PlyoExerciseNameWeightedLateralSlide                  PlyoExerciseName = 22
	PlyoExerciseNameMedicineBallOverheadThrows            PlyoExerciseName = 23
	PlyoExerciseNameMedicineBallSideThrow                 PlyoExerciseName = 24
	PlyoExerciseNameMedicineBallSlam                      PlyoExerciseName = 25
	PlyoExerciseNameSideToSideMedicineBallThrows          PlyoExerciseName = 26
	PlyoExerciseNameSideToSideShuffleJump                 PlyoExerciseName = 27
	PlyoExerciseNameWeightedSideToSideShuffleJump         PlyoExerciseName = 28
	PlyoExerciseNameSquatJumpOntoBox                      PlyoExerciseName = 29
	PlyoExerciseNameWeightedSquatJumpOntoBox              PlyoExerciseName = 30
	PlyoExerciseNameSquatJumpsInAndOut                    PlyoExerciseName = 31
	PlyoExerciseNameWeightedSquatJumpsInAndOut            PlyoExerciseName = 32
	PlyoExerciseNameInvalid                               PlyoExerciseName = 0xFFFF
)

func (PlyoExerciseName) String

func (i PlyoExerciseName) String() string

type PowerPhaseType

type PowerPhaseType byte

PowerPhaseType represents the power_phase_type FIT type.

const (
	PowerPhaseTypePowerPhaseStartAngle PowerPhaseType = 0
	PowerPhaseTypePowerPhaseEndAngle   PowerPhaseType = 1
	PowerPhaseTypePowerPhaseArcLength  PowerPhaseType = 2
	PowerPhaseTypePowerPhaseCenter     PowerPhaseType = 3
	PowerPhaseTypeInvalid              PowerPhaseType = 0xFF
)

func (PowerPhaseType) String

func (i PowerPhaseType) String() string

type PowerZoneMsg

type PowerZoneMsg struct {
	MessageIndex MessageIndex
	HighValue    uint16
	Name         string
}

PowerZoneMsg represents the power_zone FIT message type.

func NewPowerZoneMsg

func NewPowerZoneMsg() *PowerZoneMsg

NewPowerZoneMsg returns a power_zone FIT message initialized to all-invalid values.

type ProtocolVersion

type ProtocolVersion byte

ProtocolVersion represents the FIT protocol version.

const (
	V10 ProtocolVersion = 0x10
	V20 ProtocolVersion = 0x20
)

FIT protocol versions.

func CurrentProtocolVersion

func CurrentProtocolVersion() ProtocolVersion

CurrentProtocolVersion returns the current supported FIT protocol version.

func (ProtocolVersion) Major

func (p ProtocolVersion) Major() byte

Major returns the major FIT protocol version.

func (ProtocolVersion) Minor

func (p ProtocolVersion) Minor() byte

Minor returns the minor FIT protocol version.

func (ProtocolVersion) String

func (p ProtocolVersion) String() string

func (ProtocolVersion) Version

func (p ProtocolVersion) Version() byte

Version returns the full FIT protocol version encoded as a single byte.

type PullUpExerciseName

type PullUpExerciseName uint16

PullUpExerciseName represents the pull_up_exercise_name FIT type.

const (
	PullUpExerciseNameBandedPullUps                    PullUpExerciseName = 0
	PullUpExerciseName30DegreeLatPulldown              PullUpExerciseName = 1
	PullUpExerciseNameBandAssistedChinUp               PullUpExerciseName = 2
	PullUpExerciseNameCloseGripChinUp                  PullUpExerciseName = 3
	PullUpExerciseNameWeightedCloseGripChinUp          PullUpExerciseName = 4
	PullUpExerciseNameCloseGripLatPulldown             PullUpExerciseName = 5
	PullUpExerciseNameCrossoverChinUp                  PullUpExerciseName = 6
	PullUpExerciseNameWeightedCrossoverChinUp          PullUpExerciseName = 7
	PullUpExerciseNameEzBarPullover                    PullUpExerciseName = 8
	PullUpExerciseNameHangingHurdle                    PullUpExerciseName = 9
	PullUpExerciseNameWeightedHangingHurdle            PullUpExerciseName = 10
	PullUpExerciseNameKneelingLatPulldown              PullUpExerciseName = 11
	PullUpExerciseNameKneelingUnderhandGripLatPulldown PullUpExerciseName = 12
	PullUpExerciseNameLatPulldown                      PullUpExerciseName = 13
	PullUpExerciseNameMixedGripChinUp                  PullUpExerciseName = 14
	PullUpExerciseNameWeightedMixedGripChinUp          PullUpExerciseName = 15
	PullUpExerciseNameMixedGripPullUp                  PullUpExerciseName = 16
	PullUpExerciseNameWeightedMixedGripPullUp          PullUpExerciseName = 17
	PullUpExerciseNameReverseGripPulldown              PullUpExerciseName = 18
	PullUpExerciseNameStandingCablePullover            PullUpExerciseName = 19
	PullUpExerciseNameStraightArmPulldown              PullUpExerciseName = 20
	PullUpExerciseNameSwissBallEzBarPullover           PullUpExerciseName = 21
	PullUpExerciseNameTowelPullUp                      PullUpExerciseName = 22
	PullUpExerciseNameWeightedTowelPullUp              PullUpExerciseName = 23
	PullUpExerciseNameWeightedPullUp                   PullUpExerciseName = 24
	PullUpExerciseNameWideGripLatPulldown              PullUpExerciseName = 25
	PullUpExerciseNameWideGripPullUp                   PullUpExerciseName = 26
	PullUpExerciseNameWeightedWideGripPullUp           PullUpExerciseName = 27
	PullUpExerciseNameBurpeePullUp                     PullUpExerciseName = 28
	PullUpExerciseNameWeightedBurpeePullUp             PullUpExerciseName = 29
	PullUpExerciseNameJumpingPullUps                   PullUpExerciseName = 30
	PullUpExerciseNameWeightedJumpingPullUps           PullUpExerciseName = 31
	PullUpExerciseNameKippingPullUp                    PullUpExerciseName = 32
	PullUpExerciseNameWeightedKippingPullUp            PullUpExerciseName = 33
	PullUpExerciseNameLPullUp                          PullUpExerciseName = 34
	PullUpExerciseNameWeightedLPullUp                  PullUpExerciseName = 35
	PullUpExerciseNameSuspendedChinUp                  PullUpExerciseName = 36
	PullUpExerciseNameWeightedSuspendedChinUp          PullUpExerciseName = 37
	PullUpExerciseNamePullUp                           PullUpExerciseName = 38
	PullUpExerciseNameInvalid                          PullUpExerciseName = 0xFFFF
)

func (PullUpExerciseName) String

func (i PullUpExerciseName) String() string

type PushUpExerciseName

type PushUpExerciseName uint16

PushUpExerciseName represents the push_up_exercise_name FIT type.

const (
	PushUpExerciseNameChestPressWithBand                         PushUpExerciseName = 0
	PushUpExerciseNameAlternatingStaggeredPushUp                 PushUpExerciseName = 1
	PushUpExerciseNameWeightedAlternatingStaggeredPushUp         PushUpExerciseName = 2
	PushUpExerciseNameAlternatingHandsMedicineBallPushUp         PushUpExerciseName = 3
	PushUpExerciseNameWeightedAlternatingHandsMedicineBallPushUp PushUpExerciseName = 4
	PushUpExerciseNameBosuBallPushUp                             PushUpExerciseName = 5
	PushUpExerciseNameWeightedBosuBallPushUp                     PushUpExerciseName = 6
	PushUpExerciseNameClappingPushUp                             PushUpExerciseName = 7
	PushUpExerciseNameWeightedClappingPushUp                     PushUpExerciseName = 8
	PushUpExerciseNameCloseGripMedicineBallPushUp                PushUpExerciseName = 9
	PushUpExerciseNameWeightedCloseGripMedicineBallPushUp        PushUpExerciseName = 10
	PushUpExerciseNameCloseHandsPushUp                           PushUpExerciseName = 11
	PushUpExerciseNameWeightedCloseHandsPushUp                   PushUpExerciseName = 12
	PushUpExerciseNameDeclinePushUp                              PushUpExerciseName = 13
	PushUpExerciseNameWeightedDeclinePushUp                      PushUpExerciseName = 14
	PushUpExerciseNameDiamondPushUp                              PushUpExerciseName = 15
	PushUpExerciseNameWeightedDiamondPushUp                      PushUpExerciseName = 16
	PushUpExerciseNameExplosiveCrossoverPushUp                   PushUpExerciseName = 17
	PushUpExerciseNameWeightedExplosiveCrossoverPushUp           PushUpExerciseName = 18
	PushUpExerciseNameExplosivePushUp                            PushUpExerciseName = 19
	PushUpExerciseNameWeightedExplosivePushUp                    PushUpExerciseName = 20
	PushUpExerciseNameFeetElevatedSideToSidePushUp               PushUpExerciseName = 21
	PushUpExerciseNameWeightedFeetElevatedSideToSidePushUp       PushUpExerciseName = 22
	PushUpExerciseNameHandReleasePushUp                          PushUpExerciseName = 23
	PushUpExerciseNameWeightedHandReleasePushUp                  PushUpExerciseName = 24
	PushUpExerciseNameHandstandPushUp                            PushUpExerciseName = 25
	PushUpExerciseNameWeightedHandstandPushUp                    PushUpExerciseName = 26
	PushUpExerciseNameInclinePushUp                              PushUpExerciseName = 27
	PushUpExerciseNameWeightedInclinePushUp                      PushUpExerciseName = 28
	PushUpExerciseNameIsometricExplosivePushUp                   PushUpExerciseName = 29
	PushUpExerciseNameWeightedIsometricExplosivePushUp           PushUpExerciseName = 30
	PushUpExerciseNameJudoPushUp                                 PushUpExerciseName = 31
	PushUpExerciseNameWeightedJudoPushUp                         PushUpExerciseName = 32
	PushUpExerciseNameKneelingPushUp                             PushUpExerciseName = 33
	PushUpExerciseNameWeightedKneelingPushUp                     PushUpExerciseName = 34
	PushUpExerciseNameMedicineBallChestPass                      PushUpExerciseName = 35
	PushUpExerciseNameMedicineBallPushUp                         PushUpExerciseName = 36
	PushUpExerciseNameWeightedMedicineBallPushUp                 PushUpExerciseName = 37
	PushUpExerciseNameOneArmPushUp                               PushUpExerciseName = 38
	PushUpExerciseNameWeightedOneArmPushUp                       PushUpExerciseName = 39
	PushUpExerciseNameWeightedPushUp                             PushUpExerciseName = 40
	PushUpExerciseNamePushUpAndRow                               PushUpExerciseName = 41
	PushUpExerciseNameWeightedPushUpAndRow                       PushUpExerciseName = 42
	PushUpExerciseNamePushUpPlus                                 PushUpExerciseName = 43
	PushUpExerciseNameWeightedPushUpPlus                         PushUpExerciseName = 44
	PushUpExerciseNamePushUpWithFeetOnSwissBall                  PushUpExerciseName = 45
	PushUpExerciseNameWeightedPushUpWithFeetOnSwissBall          PushUpExerciseName = 46
	PushUpExerciseNamePushUpWithOneHandOnMedicineBall            PushUpExerciseName = 47
	PushUpExerciseNameWeightedPushUpWithOneHandOnMedicineBall    PushUpExerciseName = 48
	PushUpExerciseNameShoulderPushUp                             PushUpExerciseName = 49
	PushUpExerciseNameWeightedShoulderPushUp                     PushUpExerciseName = 50
	PushUpExerciseNameSingleArmMedicineBallPushUp                PushUpExerciseName = 51
	PushUpExerciseNameWeightedSingleArmMedicineBallPushUp        PushUpExerciseName = 52
	PushUpExerciseNameSpidermanPushUp                            PushUpExerciseName = 53
	PushUpExerciseNameWeightedSpidermanPushUp                    PushUpExerciseName = 54
	PushUpExerciseNameStackedFeetPushUp                          PushUpExerciseName = 55
	PushUpExerciseNameWeightedStackedFeetPushUp                  PushUpExerciseName = 56
	PushUpExerciseNameStaggeredHandsPushUp                       PushUpExerciseName = 57
	PushUpExerciseNameWeightedStaggeredHandsPushUp               PushUpExerciseName = 58
	PushUpExerciseNameSuspendedPushUp                            PushUpExerciseName = 59
	PushUpExerciseNameWeightedSuspendedPushUp                    PushUpExerciseName = 60
	PushUpExerciseNameSwissBallPushUp                            PushUpExerciseName = 61
	PushUpExerciseNameWeightedSwissBallPushUp                    PushUpExerciseName = 62
	PushUpExerciseNameSwissBallPushUpPlus                        PushUpExerciseName = 63
	PushUpExerciseNameWeightedSwissBallPushUpPlus                PushUpExerciseName = 64
	PushUpExerciseNameTPushUp                                    PushUpExerciseName = 65
	PushUpExerciseNameWeightedTPushUp                            PushUpExerciseName = 66
	PushUpExerciseNameTripleStopPushUp                           PushUpExerciseName = 67
	PushUpExerciseNameWeightedTripleStopPushUp                   PushUpExerciseName = 68
	PushUpExerciseNameWideHandsPushUp                            PushUpExerciseName = 69
	PushUpExerciseNameWeightedWideHandsPushUp                    PushUpExerciseName = 70
	PushUpExerciseNameParalletteHandstandPushUp                  PushUpExerciseName = 71
	PushUpExerciseNameWeightedParalletteHandstandPushUp          PushUpExerciseName = 72
	PushUpExerciseNameRingHandstandPushUp                        PushUpExerciseName = 73
	PushUpExerciseNameWeightedRingHandstandPushUp                PushUpExerciseName = 74
	PushUpExerciseNameRingPushUp                                 PushUpExerciseName = 75
	PushUpExerciseNameWeightedRingPushUp                         PushUpExerciseName = 76
	PushUpExerciseNamePushUp                                     PushUpExerciseName = 77
	PushUpExerciseNamePilatesPushup                              PushUpExerciseName = 78
	PushUpExerciseNameInvalid                                    PushUpExerciseName = 0xFFFF
)

func (PushUpExerciseName) String

func (i PushUpExerciseName) String() string

type PwrZoneCalc

type PwrZoneCalc byte

PwrZoneCalc represents the pwr_zone_calc FIT type.

const (
	PwrZoneCalcCustom     PwrZoneCalc = 0
	PwrZoneCalcPercentFtp PwrZoneCalc = 1
	PwrZoneCalcInvalid    PwrZoneCalc = 0xFF
)

func (PwrZoneCalc) String

func (i PwrZoneCalc) String() string

type RadarThreatLevelType

type RadarThreatLevelType byte

RadarThreatLevelType represents the radar_threat_level_type FIT type.

const (
	RadarThreatLevelTypeThreatUnknown         RadarThreatLevelType = 0
	RadarThreatLevelTypeThreatNone            RadarThreatLevelType = 1
	RadarThreatLevelTypeThreatApproaching     RadarThreatLevelType = 2
	RadarThreatLevelTypeThreatApproachingFast RadarThreatLevelType = 3
	RadarThreatLevelTypeInvalid               RadarThreatLevelType = 0xFF
)

func (RadarThreatLevelType) String

func (i RadarThreatLevelType) String() string

type RecordMsg

type RecordMsg struct {
	Timestamp                     time.Time
	PositionLat                   Latitude
	PositionLong                  Longitude
	Altitude                      uint16
	HeartRate                     uint8
	Cadence                       uint8
	Distance                      uint32
	Speed                         uint16
	Power                         uint16
	CompressedSpeedDistance       []byte
	Grade                         int16
	Resistance                    uint8 // Relative. 0 is none 254 is Max.
	TimeFromCourse                int32
	CycleLength                   uint8
	Temperature                   int8
	Speed1s                       []uint8 // Speed at 1s intervals. Timestamp field indicates time of last array element.
	Cycles                        uint8
	TotalCycles                   uint32
	CompressedAccumulatedPower    uint16
	AccumulatedPower              uint32
	LeftRightBalance              LeftRightBalance
	GpsAccuracy                   uint8
	VerticalSpeed                 int16
	Calories                      uint16
	VerticalOscillation           uint16
	StanceTimePercent             uint16
	StanceTime                    uint16
	ActivityType                  ActivityType
	LeftTorqueEffectiveness       uint8
	RightTorqueEffectiveness      uint8
	LeftPedalSmoothness           uint8
	RightPedalSmoothness          uint8
	CombinedPedalSmoothness       uint8
	Time128                       uint8
	StrokeType                    StrokeType
	Zone                          uint8
	BallSpeed                     uint16
	Cadence256                    uint16 // Log cadence and fractional cadence for backwards compatability
	FractionalCadence             uint8
	TotalHemoglobinConc           uint16 // Total saturated and unsaturated hemoglobin
	TotalHemoglobinConcMin        uint16 // Min saturated and unsaturated hemoglobin
	TotalHemoglobinConcMax        uint16 // Max saturated and unsaturated hemoglobin
	SaturatedHemoglobinPercent    uint16 // Percentage of hemoglobin saturated with oxygen
	SaturatedHemoglobinPercentMin uint16 // Min percentage of hemoglobin saturated with oxygen
	SaturatedHemoglobinPercentMax uint16 // Max percentage of hemoglobin saturated with oxygen
	DeviceIndex                   DeviceIndex
	EnhancedSpeed                 uint32
	EnhancedAltitude              uint32
}

RecordMsg represents the record FIT message type.

func NewRecordMsg

func NewRecordMsg() *RecordMsg

NewRecordMsg returns a record FIT message initialized to all-invalid values.

func (*RecordMsg) GetAltitudeScaled

func (x *RecordMsg) GetAltitudeScaled() float64

GetAltitudeScaled returns Altitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*RecordMsg) GetBallSpeedScaled

func (x *RecordMsg) GetBallSpeedScaled() float64

GetBallSpeedScaled returns BallSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*RecordMsg) GetCadence256Scaled

func (x *RecordMsg) GetCadence256Scaled() float64

GetCadence256Scaled returns Cadence256 with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: rpm

func (*RecordMsg) GetCombinedPedalSmoothnessScaled

func (x *RecordMsg) GetCombinedPedalSmoothnessScaled() float64

GetCombinedPedalSmoothnessScaled returns CombinedPedalSmoothness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*RecordMsg) GetCycleLengthScaled

func (x *RecordMsg) GetCycleLengthScaled() float64

GetCycleLengthScaled returns CycleLength with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*RecordMsg) GetDistanceFromCompressedSpeedDistance

func (x *RecordMsg) GetDistanceFromCompressedSpeedDistance() float64

GetDistanceFromCompressedSpeedDistance returns Distance with the scale and offset defined by the "Distance" component in the CompressedSpeedDistance field. NaN is if the field has an invalid value (i.e. has not been set).

func (*RecordMsg) GetDistanceScaled

func (x *RecordMsg) GetDistanceScaled() float64

GetDistanceScaled returns Distance with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*RecordMsg) GetEnhancedAltitudeScaled

func (x *RecordMsg) GetEnhancedAltitudeScaled() float64

GetEnhancedAltitudeScaled returns EnhancedAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*RecordMsg) GetEnhancedSpeedScaled

func (x *RecordMsg) GetEnhancedSpeedScaled() float64

GetEnhancedSpeedScaled returns EnhancedSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*RecordMsg) GetFractionalCadenceScaled

func (x *RecordMsg) GetFractionalCadenceScaled() float64

GetFractionalCadenceScaled returns FractionalCadence with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: rpm

func (*RecordMsg) GetGradeScaled

func (x *RecordMsg) GetGradeScaled() float64

GetGradeScaled returns Grade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*RecordMsg) GetLeftPedalSmoothnessScaled

func (x *RecordMsg) GetLeftPedalSmoothnessScaled() float64

GetLeftPedalSmoothnessScaled returns LeftPedalSmoothness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*RecordMsg) GetLeftTorqueEffectivenessScaled

func (x *RecordMsg) GetLeftTorqueEffectivenessScaled() float64

GetLeftTorqueEffectivenessScaled returns LeftTorqueEffectiveness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*RecordMsg) GetRightPedalSmoothnessScaled

func (x *RecordMsg) GetRightPedalSmoothnessScaled() float64

GetRightPedalSmoothnessScaled returns RightPedalSmoothness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*RecordMsg) GetRightTorqueEffectivenessScaled

func (x *RecordMsg) GetRightTorqueEffectivenessScaled() float64

GetRightTorqueEffectivenessScaled returns RightTorqueEffectiveness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*RecordMsg) GetSaturatedHemoglobinPercentMaxScaled

func (x *RecordMsg) GetSaturatedHemoglobinPercentMaxScaled() float64

GetSaturatedHemoglobinPercentMaxScaled returns SaturatedHemoglobinPercentMax with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*RecordMsg) GetSaturatedHemoglobinPercentMinScaled

func (x *RecordMsg) GetSaturatedHemoglobinPercentMinScaled() float64

GetSaturatedHemoglobinPercentMinScaled returns SaturatedHemoglobinPercentMin with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*RecordMsg) GetSaturatedHemoglobinPercentScaled

func (x *RecordMsg) GetSaturatedHemoglobinPercentScaled() float64

GetSaturatedHemoglobinPercentScaled returns SaturatedHemoglobinPercent with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*RecordMsg) GetSpeed1sScaled

func (x *RecordMsg) GetSpeed1sScaled() []float64

GetSpeed1sScaled returns Speed1s as a slice with scale and any offset applied to every element. Units: m/s

func (*RecordMsg) GetSpeedFromCompressedSpeedDistance

func (x *RecordMsg) GetSpeedFromCompressedSpeedDistance() float64

GetSpeedFromCompressedSpeedDistance returns Speed with the scale and offset defined by the "Speed" component in the CompressedSpeedDistance field. NaN is if the field has an invalid value (i.e. has not been set).

func (*RecordMsg) GetSpeedScaled

func (x *RecordMsg) GetSpeedScaled() float64

GetSpeedScaled returns Speed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*RecordMsg) GetStanceTimePercentScaled

func (x *RecordMsg) GetStanceTimePercentScaled() float64

GetStanceTimePercentScaled returns StanceTimePercent with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*RecordMsg) GetStanceTimeScaled

func (x *RecordMsg) GetStanceTimeScaled() float64

GetStanceTimeScaled returns StanceTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: ms

func (*RecordMsg) GetTime128Scaled

func (x *RecordMsg) GetTime128Scaled() float64

GetTime128Scaled returns Time128 with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*RecordMsg) GetTimeFromCourseScaled

func (x *RecordMsg) GetTimeFromCourseScaled() float64

GetTimeFromCourseScaled returns TimeFromCourse with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*RecordMsg) GetTotalHemoglobinConcMaxScaled

func (x *RecordMsg) GetTotalHemoglobinConcMaxScaled() float64

GetTotalHemoglobinConcMaxScaled returns TotalHemoglobinConcMax with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: g/dL

func (*RecordMsg) GetTotalHemoglobinConcMinScaled

func (x *RecordMsg) GetTotalHemoglobinConcMinScaled() float64

GetTotalHemoglobinConcMinScaled returns TotalHemoglobinConcMin with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: g/dL

func (*RecordMsg) GetTotalHemoglobinConcScaled

func (x *RecordMsg) GetTotalHemoglobinConcScaled() float64

GetTotalHemoglobinConcScaled returns TotalHemoglobinConc with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: g/dL

func (*RecordMsg) GetVerticalOscillationScaled

func (x *RecordMsg) GetVerticalOscillationScaled() float64

GetVerticalOscillationScaled returns VerticalOscillation with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: mm

func (*RecordMsg) GetVerticalSpeedScaled

func (x *RecordMsg) GetVerticalSpeedScaled() float64

GetVerticalSpeedScaled returns VerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

type RiderPositionType

type RiderPositionType byte

RiderPositionType represents the rider_position_type FIT type.

const (
	RiderPositionTypeSeated               RiderPositionType = 0
	RiderPositionTypeStanding             RiderPositionType = 1
	RiderPositionTypeTransitionToSeated   RiderPositionType = 2
	RiderPositionTypeTransitionToStanding RiderPositionType = 3
	RiderPositionTypeInvalid              RiderPositionType = 0xFF
)

func (RiderPositionType) String

func (i RiderPositionType) String() string

type RowExerciseName

type RowExerciseName uint16

RowExerciseName represents the row_exercise_name FIT type.

const (
	RowExerciseNameBarbellStraightLegDeadliftToRow            RowExerciseName = 0
	RowExerciseNameCableRowStanding                           RowExerciseName = 1
	RowExerciseNameDumbbellRow                                RowExerciseName = 2
	RowExerciseNameElevatedFeetInvertedRow                    RowExerciseName = 3
	RowExerciseNameWeightedElevatedFeetInvertedRow            RowExerciseName = 4
	RowExerciseNameFacePull                                   RowExerciseName = 5
	RowExerciseNameFacePullWithExternalRotation               RowExerciseName = 6
	RowExerciseNameInvertedRowWithFeetOnSwissBall             RowExerciseName = 7
	RowExerciseNameWeightedInvertedRowWithFeetOnSwissBall     RowExerciseName = 8
	RowExerciseNameKettlebellRow                              RowExerciseName = 9
	RowExerciseNameModifiedInvertedRow                        RowExerciseName = 10
	RowExerciseNameWeightedModifiedInvertedRow                RowExerciseName = 11
	RowExerciseNameNeutralGripAlternatingDumbbellRow          RowExerciseName = 12
	RowExerciseNameOneArmBentOverRow                          RowExerciseName = 13
	RowExerciseNameOneLeggedDumbbellRow                       RowExerciseName = 14
	RowExerciseNameRenegadeRow                                RowExerciseName = 15
	RowExerciseNameReverseGripBarbellRow                      RowExerciseName = 16
	RowExerciseNameRopeHandleCableRow                         RowExerciseName = 17
	RowExerciseNameSeatedCableRow                             RowExerciseName = 18
	RowExerciseNameSeatedDumbbellRow                          RowExerciseName = 19
	RowExerciseNameSingleArmCableRow                          RowExerciseName = 20
	RowExerciseNameSingleArmCableRowAndRotation               RowExerciseName = 21
	RowExerciseNameSingleArmInvertedRow                       RowExerciseName = 22
	RowExerciseNameWeightedSingleArmInvertedRow               RowExerciseName = 23
	RowExerciseNameSingleArmNeutralGripDumbbellRow            RowExerciseName = 24
	RowExerciseNameSingleArmNeutralGripDumbbellRowAndRotation RowExerciseName = 25
	RowExerciseNameSuspendedInvertedRow                       RowExerciseName = 26
	RowExerciseNameWeightedSuspendedInvertedRow               RowExerciseName = 27
	RowExerciseNameTBarRow                                    RowExerciseName = 28
	RowExerciseNameTowelGripInvertedRow                       RowExerciseName = 29
	RowExerciseNameWeightedTowelGripInvertedRow               RowExerciseName = 30
	RowExerciseNameUnderhandGripCableRow                      RowExerciseName = 31
	RowExerciseNameVGripCableRow                              RowExerciseName = 32
	RowExerciseNameWideGripSeatedCableRow                     RowExerciseName = 33
	RowExerciseNameInvalid                                    RowExerciseName = 0xFFFF
)

func (RowExerciseName) String

func (i RowExerciseName) String() string

type RunExerciseName

type RunExerciseName uint16

RunExerciseName represents the run_exercise_name FIT type.

const (
	RunExerciseNameRun     RunExerciseName = 0
	RunExerciseNameWalk    RunExerciseName = 1
	RunExerciseNameJog     RunExerciseName = 2
	RunExerciseNameSprint  RunExerciseName = 3
	RunExerciseNameInvalid RunExerciseName = 0xFFFF
)

func (RunExerciseName) String

func (i RunExerciseName) String() string

type Schedule

type Schedule byte

Schedule represents the schedule FIT type.

const (
	ScheduleWorkout Schedule = 0
	ScheduleCourse  Schedule = 1
	ScheduleInvalid Schedule = 0xFF
)

func (Schedule) String

func (i Schedule) String() string

type ScheduleMsg

type ScheduleMsg struct {
	Manufacturer  Manufacturer // Corresponds to file_id of scheduled workout / course.
	Product       uint16       // Corresponds to file_id of scheduled workout / course.
	SerialNumber  uint32       // Corresponds to file_id of scheduled workout / course.
	TimeCreated   time.Time    // Corresponds to file_id of scheduled workout / course.
	Completed     Bool         // TRUE if this activity has been started
	Type          Schedule
	ScheduledTime time.Time
}

ScheduleMsg represents the schedule FIT message type.

func NewScheduleMsg

func NewScheduleMsg() *ScheduleMsg

NewScheduleMsg returns a schedule FIT message initialized to all-invalid values.

func (*ScheduleMsg) GetProduct

func (x *ScheduleMsg) GetProduct() interface{}

GetProduct returns the appropriate Product subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

type SchedulesFile

type SchedulesFile struct {
	Schedules []*ScheduleMsg
}

SchedulesFile represents the Schedules FIT file type. Provides scheduling of workouts and courses.

type SdmProfileMsg

type SdmProfileMsg struct {
	MessageIndex      MessageIndex
	Enabled           Bool
	SdmAntId          uint16
	SdmCalFactor      uint16
	Odometer          uint32
	SpeedSource       Bool // Use footpod for speed source instead of GPS
	SdmAntIdTransType uint8
	OdometerRollover  uint8 // Rollover counter that can be used to extend the odometer
}

SdmProfileMsg represents the sdm_profile FIT message type.

func NewSdmProfileMsg

func NewSdmProfileMsg() *SdmProfileMsg

NewSdmProfileMsg returns a sdm_profile FIT message initialized to all-invalid values.

func (*SdmProfileMsg) GetOdometerScaled

func (x *SdmProfileMsg) GetOdometerScaled() float64

GetOdometerScaled returns Odometer with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SdmProfileMsg) GetSdmCalFactorScaled

func (x *SdmProfileMsg) GetSdmCalFactorScaled() float64

GetSdmCalFactorScaled returns SdmCalFactor with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

type SegmentDeleteStatus

type SegmentDeleteStatus byte

SegmentDeleteStatus represents the segment_delete_status FIT type.

const (
	SegmentDeleteStatusDoNotDelete SegmentDeleteStatus = 0
	SegmentDeleteStatusDeleteOne   SegmentDeleteStatus = 1
	SegmentDeleteStatusDeleteAll   SegmentDeleteStatus = 2
	SegmentDeleteStatusInvalid     SegmentDeleteStatus = 0xFF
)

func (SegmentDeleteStatus) String

func (i SegmentDeleteStatus) String() string

type SegmentFile

type SegmentFile struct {
	SegmentId               *SegmentIdMsg
	SegmentLeaderboardEntry *SegmentLeaderboardEntryMsg
	SegmentLap              *SegmentLapMsg
	SegmentPoints           []*SegmentPointMsg
}

SegmentFile represents the Segment FIT file type. Describes timing data for virtual races.

type SegmentFileMsg

type SegmentFileMsg struct {
	MessageIndex          MessageIndex
	FileUuid              string                   // UUID of the segment file
	Enabled               Bool                     // Enabled state of the segment file
	UserProfilePrimaryKey uint32                   // Primary key of the user that created the segment file
	LeaderType            []SegmentLeaderboardType // Leader type of each leader in the segment file
	LeaderGroupPrimaryKey []uint32                 // Group primary key of each leader in the segment file
	LeaderActivityId      []uint32                 // Activity ID of each leader in the segment file
}

SegmentFileMsg represents the segment_file FIT message type.

func NewSegmentFileMsg

func NewSegmentFileMsg() *SegmentFileMsg

NewSegmentFileMsg returns a segment_file FIT message initialized to all-invalid values.

type SegmentIdMsg

type SegmentIdMsg struct {
	Name                  string               // Friendly name assigned to segment
	Uuid                  string               // UUID of the segment
	Sport                 Sport                // Sport associated with the segment
	Enabled               Bool                 // Segment enabled for evaluation
	UserProfilePrimaryKey uint32               // Primary key of the user that created the segment
	DeviceId              uint32               // ID of the device that created the segment
	DefaultRaceLeader     uint8                // Index for the Leader Board entry selected as the default race participant
	DeleteStatus          SegmentDeleteStatus  // Indicates if any segments should be deleted
	SelectionType         SegmentSelectionType // Indicates how the segment was selected to be sent to the device
}

SegmentIdMsg represents the segment_id FIT message type.

func NewSegmentIdMsg

func NewSegmentIdMsg() *SegmentIdMsg

NewSegmentIdMsg returns a segment_id FIT message initialized to all-invalid values.

type SegmentLapMsg

type SegmentLapMsg struct {
	MessageIndex                MessageIndex
	Timestamp                   time.Time // Lap end time.
	Event                       Event
	EventType                   EventType
	StartTime                   time.Time
	StartPositionLat            Latitude
	StartPositionLong           Longitude
	EndPositionLat              Latitude
	EndPositionLong             Longitude
	TotalElapsedTime            uint32 // Time (includes pauses)
	TotalTimerTime              uint32 // Timer Time (excludes pauses)
	TotalDistance               uint32
	TotalCycles                 uint32
	TotalCalories               uint16
	TotalFatCalories            uint16 // If New Leaf
	AvgSpeed                    uint16
	MaxSpeed                    uint16
	AvgHeartRate                uint8
	MaxHeartRate                uint8
	AvgCadence                  uint8 // total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time
	MaxCadence                  uint8
	AvgPower                    uint16 // total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time
	MaxPower                    uint16
	TotalAscent                 uint16
	TotalDescent                uint16
	Sport                       Sport
	EventGroup                  uint8
	NecLat                      Latitude  // North east corner latitude.
	NecLong                     Longitude // North east corner longitude.
	SwcLat                      Latitude  // South west corner latitude.
	SwcLong                     Longitude // South west corner latitude.
	Name                        string
	NormalizedPower             uint16
	LeftRightBalance            LeftRightBalance100
	SubSport                    SubSport
	TotalWork                   uint32
	AvgAltitude                 uint16
	MaxAltitude                 uint16
	GpsAccuracy                 uint8
	AvgGrade                    int16
	AvgPosGrade                 int16
	AvgNegGrade                 int16
	MaxPosGrade                 int16
	MaxNegGrade                 int16
	AvgTemperature              int8
	MaxTemperature              int8
	TotalMovingTime             uint32
	AvgPosVerticalSpeed         int16
	AvgNegVerticalSpeed         int16
	MaxPosVerticalSpeed         int16
	MaxNegVerticalSpeed         int16
	TimeInHrZone                []uint32
	TimeInSpeedZone             []uint32
	TimeInCadenceZone           []uint32
	TimeInPowerZone             []uint32
	RepetitionNum               uint16
	MinAltitude                 uint16
	MinHeartRate                uint8
	ActiveTime                  uint32
	WktStepIndex                MessageIndex
	SportEvent                  SportEvent
	AvgLeftTorqueEffectiveness  uint8
	AvgRightTorqueEffectiveness uint8
	AvgLeftPedalSmoothness      uint8
	AvgRightPedalSmoothness     uint8
	AvgCombinedPedalSmoothness  uint8
	Status                      SegmentLapStatus
	Uuid                        string
	AvgFractionalCadence        uint8 // fractional part of the avg_cadence
	MaxFractionalCadence        uint8 // fractional part of the max_cadence
	TotalFractionalCycles       uint8 // fractional part of the total_cycles
	FrontGearShiftCount         uint16
	RearGearShiftCount          uint16
}

SegmentLapMsg represents the segment_lap FIT message type.

func NewSegmentLapMsg

func NewSegmentLapMsg() *SegmentLapMsg

NewSegmentLapMsg returns a segment_lap FIT message initialized to all-invalid values.

func (*SegmentLapMsg) GetActiveTimeScaled

func (x *SegmentLapMsg) GetActiveTimeScaled() float64

GetActiveTimeScaled returns ActiveTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*SegmentLapMsg) GetAvgAltitudeScaled

func (x *SegmentLapMsg) GetAvgAltitudeScaled() float64

GetAvgAltitudeScaled returns AvgAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SegmentLapMsg) GetAvgCombinedPedalSmoothnessScaled

func (x *SegmentLapMsg) GetAvgCombinedPedalSmoothnessScaled() float64

GetAvgCombinedPedalSmoothnessScaled returns AvgCombinedPedalSmoothness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*SegmentLapMsg) GetAvgFractionalCadenceScaled

func (x *SegmentLapMsg) GetAvgFractionalCadenceScaled() float64

GetAvgFractionalCadenceScaled returns AvgFractionalCadence with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: rpm

func (*SegmentLapMsg) GetAvgGradeScaled

func (x *SegmentLapMsg) GetAvgGradeScaled() float64

GetAvgGradeScaled returns AvgGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SegmentLapMsg) GetAvgLeftPedalSmoothnessScaled

func (x *SegmentLapMsg) GetAvgLeftPedalSmoothnessScaled() float64

GetAvgLeftPedalSmoothnessScaled returns AvgLeftPedalSmoothness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*SegmentLapMsg) GetAvgLeftTorqueEffectivenessScaled

func (x *SegmentLapMsg) GetAvgLeftTorqueEffectivenessScaled() float64

GetAvgLeftTorqueEffectivenessScaled returns AvgLeftTorqueEffectiveness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*SegmentLapMsg) GetAvgNegGradeScaled

func (x *SegmentLapMsg) GetAvgNegGradeScaled() float64

GetAvgNegGradeScaled returns AvgNegGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SegmentLapMsg) GetAvgNegVerticalSpeedScaled

func (x *SegmentLapMsg) GetAvgNegVerticalSpeedScaled() float64

GetAvgNegVerticalSpeedScaled returns AvgNegVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SegmentLapMsg) GetAvgPosGradeScaled

func (x *SegmentLapMsg) GetAvgPosGradeScaled() float64

GetAvgPosGradeScaled returns AvgPosGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SegmentLapMsg) GetAvgPosVerticalSpeedScaled

func (x *SegmentLapMsg) GetAvgPosVerticalSpeedScaled() float64

GetAvgPosVerticalSpeedScaled returns AvgPosVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SegmentLapMsg) GetAvgRightPedalSmoothnessScaled

func (x *SegmentLapMsg) GetAvgRightPedalSmoothnessScaled() float64

GetAvgRightPedalSmoothnessScaled returns AvgRightPedalSmoothness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*SegmentLapMsg) GetAvgRightTorqueEffectivenessScaled

func (x *SegmentLapMsg) GetAvgRightTorqueEffectivenessScaled() float64

GetAvgRightTorqueEffectivenessScaled returns AvgRightTorqueEffectiveness with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*SegmentLapMsg) GetAvgSpeedScaled

func (x *SegmentLapMsg) GetAvgSpeedScaled() float64

GetAvgSpeedScaled returns AvgSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SegmentLapMsg) GetMaxAltitudeScaled

func (x *SegmentLapMsg) GetMaxAltitudeScaled() float64

GetMaxAltitudeScaled returns MaxAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SegmentLapMsg) GetMaxFractionalCadenceScaled

func (x *SegmentLapMsg) GetMaxFractionalCadenceScaled() float64

GetMaxFractionalCadenceScaled returns MaxFractionalCadence with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: rpm

func (*SegmentLapMsg) GetMaxNegGradeScaled

func (x *SegmentLapMsg) GetMaxNegGradeScaled() float64

GetMaxNegGradeScaled returns MaxNegGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SegmentLapMsg) GetMaxNegVerticalSpeedScaled

func (x *SegmentLapMsg) GetMaxNegVerticalSpeedScaled() float64

GetMaxNegVerticalSpeedScaled returns MaxNegVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SegmentLapMsg) GetMaxPosGradeScaled

func (x *SegmentLapMsg) GetMaxPosGradeScaled() float64

GetMaxPosGradeScaled returns MaxPosGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SegmentLapMsg) GetMaxPosVerticalSpeedScaled

func (x *SegmentLapMsg) GetMaxPosVerticalSpeedScaled() float64

GetMaxPosVerticalSpeedScaled returns MaxPosVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SegmentLapMsg) GetMaxSpeedScaled

func (x *SegmentLapMsg) GetMaxSpeedScaled() float64

GetMaxSpeedScaled returns MaxSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SegmentLapMsg) GetMinAltitudeScaled

func (x *SegmentLapMsg) GetMinAltitudeScaled() float64

GetMinAltitudeScaled returns MinAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SegmentLapMsg) GetTimeInCadenceZoneScaled

func (x *SegmentLapMsg) GetTimeInCadenceZoneScaled() []float64

GetTimeInCadenceZoneScaled returns TimeInCadenceZone as a slice with scale and any offset applied to every element. Units: s

func (*SegmentLapMsg) GetTimeInHrZoneScaled

func (x *SegmentLapMsg) GetTimeInHrZoneScaled() []float64

GetTimeInHrZoneScaled returns TimeInHrZone as a slice with scale and any offset applied to every element. Units: s

func (*SegmentLapMsg) GetTimeInPowerZoneScaled

func (x *SegmentLapMsg) GetTimeInPowerZoneScaled() []float64

GetTimeInPowerZoneScaled returns TimeInPowerZone as a slice with scale and any offset applied to every element. Units: s

func (*SegmentLapMsg) GetTimeInSpeedZoneScaled

func (x *SegmentLapMsg) GetTimeInSpeedZoneScaled() []float64

GetTimeInSpeedZoneScaled returns TimeInSpeedZone as a slice with scale and any offset applied to every element. Units: s

func (*SegmentLapMsg) GetTotalCycles

func (x *SegmentLapMsg) GetTotalCycles() interface{}

GetTotalCycles returns the appropriate TotalCycles subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*SegmentLapMsg) GetTotalDistanceScaled

func (x *SegmentLapMsg) GetTotalDistanceScaled() float64

GetTotalDistanceScaled returns TotalDistance with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SegmentLapMsg) GetTotalElapsedTimeScaled

func (x *SegmentLapMsg) GetTotalElapsedTimeScaled() float64

GetTotalElapsedTimeScaled returns TotalElapsedTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*SegmentLapMsg) GetTotalFractionalCyclesScaled

func (x *SegmentLapMsg) GetTotalFractionalCyclesScaled() float64

GetTotalFractionalCyclesScaled returns TotalFractionalCycles with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: cycles

func (*SegmentLapMsg) GetTotalMovingTimeScaled

func (x *SegmentLapMsg) GetTotalMovingTimeScaled() float64

GetTotalMovingTimeScaled returns TotalMovingTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*SegmentLapMsg) GetTotalTimerTimeScaled

func (x *SegmentLapMsg) GetTotalTimerTimeScaled() float64

GetTotalTimerTimeScaled returns TotalTimerTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

type SegmentLapStatus

type SegmentLapStatus byte

SegmentLapStatus represents the segment_lap_status FIT type.

const (
	SegmentLapStatusEnd     SegmentLapStatus = 0
	SegmentLapStatusFail    SegmentLapStatus = 1
	SegmentLapStatusInvalid SegmentLapStatus = 0xFF
)

func (SegmentLapStatus) String

func (i SegmentLapStatus) String() string

type SegmentLeaderboardEntryMsg

type SegmentLeaderboardEntryMsg struct {
	MessageIndex    MessageIndex
	Name            string                 // Friendly name assigned to leader
	Type            SegmentLeaderboardType // Leader classification
	GroupPrimaryKey uint32                 // Primary user ID of this leader
	ActivityId      uint32                 // ID of the activity associated with this leader time
	SegmentTime     uint32                 // Segment Time (includes pauses)
}

SegmentLeaderboardEntryMsg represents the segment_leaderboard_entry FIT message type.

func NewSegmentLeaderboardEntryMsg

func NewSegmentLeaderboardEntryMsg() *SegmentLeaderboardEntryMsg

NewSegmentLeaderboardEntryMsg returns a segment_leaderboard_entry FIT message initialized to all-invalid values.

func (*SegmentLeaderboardEntryMsg) GetSegmentTimeScaled

func (x *SegmentLeaderboardEntryMsg) GetSegmentTimeScaled() float64

GetSegmentTimeScaled returns SegmentTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

type SegmentLeaderboardType

type SegmentLeaderboardType byte

SegmentLeaderboardType represents the segment_leaderboard_type FIT type.

const (
	SegmentLeaderboardTypeOverall      SegmentLeaderboardType = 0
	SegmentLeaderboardTypePersonalBest SegmentLeaderboardType = 1
	SegmentLeaderboardTypeConnections  SegmentLeaderboardType = 2
	SegmentLeaderboardTypeGroup        SegmentLeaderboardType = 3
	SegmentLeaderboardTypeChallenger   SegmentLeaderboardType = 4
	SegmentLeaderboardTypeKom          SegmentLeaderboardType = 5
	SegmentLeaderboardTypeQom          SegmentLeaderboardType = 6
	SegmentLeaderboardTypePr           SegmentLeaderboardType = 7
	SegmentLeaderboardTypeGoal         SegmentLeaderboardType = 8
	SegmentLeaderboardTypeRival        SegmentLeaderboardType = 9
	SegmentLeaderboardTypeClubLeader   SegmentLeaderboardType = 10
	SegmentLeaderboardTypeInvalid      SegmentLeaderboardType = 0xFF
)

func (SegmentLeaderboardType) String

func (i SegmentLeaderboardType) String() string

type SegmentListFile

type SegmentListFile struct {
	SegmentFiles []*SegmentFileMsg
}

SegmentListFile represents the Segment List FIT file type. Describes available segments.

type SegmentPointMsg

type SegmentPointMsg struct {
	MessageIndex MessageIndex
	PositionLat  Latitude
	PositionLong Longitude
	Distance     uint32   // Accumulated distance along the segment at the described point
	Altitude     uint16   // Accumulated altitude along the segment at the described point
	LeaderTime   []uint32 // Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment.
}

SegmentPointMsg represents the segment_point FIT message type.

func NewSegmentPointMsg

func NewSegmentPointMsg() *SegmentPointMsg

NewSegmentPointMsg returns a segment_point FIT message initialized to all-invalid values.

func (*SegmentPointMsg) GetAltitudeScaled

func (x *SegmentPointMsg) GetAltitudeScaled() float64

GetAltitudeScaled returns Altitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SegmentPointMsg) GetDistanceScaled

func (x *SegmentPointMsg) GetDistanceScaled() float64

GetDistanceScaled returns Distance with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SegmentPointMsg) GetLeaderTimeScaled

func (x *SegmentPointMsg) GetLeaderTimeScaled() []float64

GetLeaderTimeScaled returns LeaderTime as a slice with scale and any offset applied to every element. Units: s

type SegmentSelectionType

type SegmentSelectionType byte

SegmentSelectionType represents the segment_selection_type FIT type.

const (
	SegmentSelectionTypeStarred   SegmentSelectionType = 0
	SegmentSelectionTypeSuggested SegmentSelectionType = 1
	SegmentSelectionTypeInvalid   SegmentSelectionType = 0xFF
)

func (SegmentSelectionType) String

func (i SegmentSelectionType) String() string

type SensorType

type SensorType byte

SensorType represents the sensor_type FIT type.

const (
	SensorTypeAccelerometer SensorType = 0
	SensorTypeGyroscope     SensorType = 1
	SensorTypeCompass       SensorType = 2 // Magnetometer
	SensorTypeBarometer     SensorType = 3
	SensorTypeInvalid       SensorType = 0xFF
)

func (SensorType) String

func (i SensorType) String() string

type SessionMsg

type SessionMsg struct {
	MessageIndex                 MessageIndex // Selected bit is set for the current session.
	Timestamp                    time.Time    // Sesson end time.
	Event                        Event        // session
	EventType                    EventType    // stop
	StartTime                    time.Time
	StartPositionLat             Latitude
	StartPositionLong            Longitude
	Sport                        Sport
	SubSport                     SubSport
	TotalElapsedTime             uint32 // Time (includes pauses)
	TotalTimerTime               uint32 // Timer Time (excludes pauses)
	TotalDistance                uint32
	TotalCycles                  uint32
	TotalCalories                uint16
	TotalFatCalories             uint16
	AvgSpeed                     uint16 // total_distance / total_timer_time
	MaxSpeed                     uint16
	AvgHeartRate                 uint8 // average heart rate (excludes pause time)
	MaxHeartRate                 uint8
	AvgCadence                   uint8 // total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time
	MaxCadence                   uint8
	AvgPower                     uint16 // total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time
	MaxPower                     uint16
	TotalAscent                  uint16
	TotalDescent                 uint16
	TotalTrainingEffect          uint8
	FirstLapIndex                uint16
	NumLaps                      uint16
	EventGroup                   uint8
	Trigger                      SessionTrigger
	NecLat                       Latitude  // North east corner latitude
	NecLong                      Longitude // North east corner longitude
	SwcLat                       Latitude  // South west corner latitude
	SwcLong                      Longitude // South west corner longitude
	NumLengths                   uint16    // # of lengths of swim pool
	NormalizedPower              uint16
	TrainingStressScore          uint16
	IntensityFactor              uint16
	LeftRightBalance             LeftRightBalance100
	AvgStrokeCount               uint32
	AvgStrokeDistance            uint16
	SwimStroke                   SwimStroke
	PoolLength                   uint16
	ThresholdPower               uint16
	PoolLengthUnit               DisplayMeasure
	NumActiveLengths             uint16 // # of active lengths of swim pool
	TotalWork                    uint32
	AvgAltitude                  uint16
	MaxAltitude                  uint16
	GpsAccuracy                  uint8
	AvgGrade                     int16
	AvgPosGrade                  int16
	AvgNegGrade                  int16
	MaxPosGrade                  int16
	MaxNegGrade                  int16
	AvgTemperature               int8
	MaxTemperature               int8
	TotalMovingTime              uint32
	AvgPosVerticalSpeed          int16
	AvgNegVerticalSpeed          int16
	MaxPosVerticalSpeed          int16
	MaxNegVerticalSpeed          int16
	MinHeartRate                 uint8
	TimeInHrZone                 []uint32
	TimeInSpeedZone              []uint32
	TimeInCadenceZone            []uint32
	TimeInPowerZone              []uint32
	AvgLapTime                   uint32
	BestLapIndex                 uint16
	MinAltitude                  uint16
	PlayerScore                  uint16
	OpponentScore                uint16
	OpponentName                 string
	StrokeCount                  []uint16 // stroke_type enum used as the index
	ZoneCount                    []uint16 // zone number used as the index
	MaxBallSpeed                 uint16
	AvgBallSpeed                 uint16
	AvgVerticalOscillation       uint16
	AvgStanceTimePercent         uint16
	AvgStanceTime                uint16
	AvgFractionalCadence         uint8 // fractional part of the avg_cadence
	MaxFractionalCadence         uint8 // fractional part of the max_cadence
	TotalFractionalCycles        uint8 // fractional part of the total_cycles
	SportIndex                   uint8
	EnhancedAvgSpeed             uint32 // total_distance / total_timer_time
	EnhancedMaxSpeed             uint32
	EnhancedAvgAltitude          uint32
	EnhancedMinAltitude          uint32
	EnhancedMaxAltitude          uint32
	TotalAnaerobicTrainingEffect uint8
	AvgVam                       uint16
}

SessionMsg represents the session FIT message type.

func NewSessionMsg

func NewSessionMsg() *SessionMsg

NewSessionMsg returns a session FIT message initialized to all-invalid values.

func (*SessionMsg) GetAvgAltitudeScaled

func (x *SessionMsg) GetAvgAltitudeScaled() float64

GetAvgAltitudeScaled returns AvgAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SessionMsg) GetAvgBallSpeedScaled

func (x *SessionMsg) GetAvgBallSpeedScaled() float64

GetAvgBallSpeedScaled returns AvgBallSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetAvgCadence

func (x *SessionMsg) GetAvgCadence() interface{}

GetAvgCadence returns the appropriate AvgCadence subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*SessionMsg) GetAvgFractionalCadenceScaled

func (x *SessionMsg) GetAvgFractionalCadenceScaled() float64

GetAvgFractionalCadenceScaled returns AvgFractionalCadence with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: rpm

func (*SessionMsg) GetAvgGradeScaled

func (x *SessionMsg) GetAvgGradeScaled() float64

GetAvgGradeScaled returns AvgGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SessionMsg) GetAvgLapTimeScaled

func (x *SessionMsg) GetAvgLapTimeScaled() float64

GetAvgLapTimeScaled returns AvgLapTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*SessionMsg) GetAvgNegGradeScaled

func (x *SessionMsg) GetAvgNegGradeScaled() float64

GetAvgNegGradeScaled returns AvgNegGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SessionMsg) GetAvgNegVerticalSpeedScaled

func (x *SessionMsg) GetAvgNegVerticalSpeedScaled() float64

GetAvgNegVerticalSpeedScaled returns AvgNegVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetAvgPosGradeScaled

func (x *SessionMsg) GetAvgPosGradeScaled() float64

GetAvgPosGradeScaled returns AvgPosGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SessionMsg) GetAvgPosVerticalSpeedScaled

func (x *SessionMsg) GetAvgPosVerticalSpeedScaled() float64

GetAvgPosVerticalSpeedScaled returns AvgPosVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetAvgSpeedScaled

func (x *SessionMsg) GetAvgSpeedScaled() float64

GetAvgSpeedScaled returns AvgSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetAvgStanceTimePercentScaled

func (x *SessionMsg) GetAvgStanceTimePercentScaled() float64

GetAvgStanceTimePercentScaled returns AvgStanceTimePercent with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: percent

func (*SessionMsg) GetAvgStanceTimeScaled

func (x *SessionMsg) GetAvgStanceTimeScaled() float64

GetAvgStanceTimeScaled returns AvgStanceTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: ms

func (*SessionMsg) GetAvgStrokeCountScaled

func (x *SessionMsg) GetAvgStrokeCountScaled() float64

GetAvgStrokeCountScaled returns AvgStrokeCount with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: strokes/lap

func (*SessionMsg) GetAvgStrokeDistanceScaled

func (x *SessionMsg) GetAvgStrokeDistanceScaled() float64

GetAvgStrokeDistanceScaled returns AvgStrokeDistance with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SessionMsg) GetAvgVamScaled

func (x *SessionMsg) GetAvgVamScaled() float64

GetAvgVamScaled returns AvgVam with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetAvgVerticalOscillationScaled

func (x *SessionMsg) GetAvgVerticalOscillationScaled() float64

GetAvgVerticalOscillationScaled returns AvgVerticalOscillation with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: mm

func (*SessionMsg) GetEnhancedAvgAltitudeScaled

func (x *SessionMsg) GetEnhancedAvgAltitudeScaled() float64

GetEnhancedAvgAltitudeScaled returns EnhancedAvgAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SessionMsg) GetEnhancedAvgSpeedScaled

func (x *SessionMsg) GetEnhancedAvgSpeedScaled() float64

GetEnhancedAvgSpeedScaled returns EnhancedAvgSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetEnhancedMaxAltitudeScaled

func (x *SessionMsg) GetEnhancedMaxAltitudeScaled() float64

GetEnhancedMaxAltitudeScaled returns EnhancedMaxAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SessionMsg) GetEnhancedMaxSpeedScaled

func (x *SessionMsg) GetEnhancedMaxSpeedScaled() float64

GetEnhancedMaxSpeedScaled returns EnhancedMaxSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetEnhancedMinAltitudeScaled

func (x *SessionMsg) GetEnhancedMinAltitudeScaled() float64

GetEnhancedMinAltitudeScaled returns EnhancedMinAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SessionMsg) GetIntensityFactorScaled

func (x *SessionMsg) GetIntensityFactorScaled() float64

GetIntensityFactorScaled returns IntensityFactor with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: if

func (*SessionMsg) GetMaxAltitudeScaled

func (x *SessionMsg) GetMaxAltitudeScaled() float64

GetMaxAltitudeScaled returns MaxAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SessionMsg) GetMaxBallSpeedScaled

func (x *SessionMsg) GetMaxBallSpeedScaled() float64

GetMaxBallSpeedScaled returns MaxBallSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetMaxCadence

func (x *SessionMsg) GetMaxCadence() interface{}

GetMaxCadence returns the appropriate MaxCadence subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*SessionMsg) GetMaxFractionalCadenceScaled

func (x *SessionMsg) GetMaxFractionalCadenceScaled() float64

GetMaxFractionalCadenceScaled returns MaxFractionalCadence with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: rpm

func (*SessionMsg) GetMaxNegGradeScaled

func (x *SessionMsg) GetMaxNegGradeScaled() float64

GetMaxNegGradeScaled returns MaxNegGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SessionMsg) GetMaxNegVerticalSpeedScaled

func (x *SessionMsg) GetMaxNegVerticalSpeedScaled() float64

GetMaxNegVerticalSpeedScaled returns MaxNegVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetMaxPosGradeScaled

func (x *SessionMsg) GetMaxPosGradeScaled() float64

GetMaxPosGradeScaled returns MaxPosGrade with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*SessionMsg) GetMaxPosVerticalSpeedScaled

func (x *SessionMsg) GetMaxPosVerticalSpeedScaled() float64

GetMaxPosVerticalSpeedScaled returns MaxPosVerticalSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetMaxSpeedScaled

func (x *SessionMsg) GetMaxSpeedScaled() float64

GetMaxSpeedScaled returns MaxSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

func (*SessionMsg) GetMinAltitudeScaled

func (x *SessionMsg) GetMinAltitudeScaled() float64

GetMinAltitudeScaled returns MinAltitude with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SessionMsg) GetPoolLengthScaled

func (x *SessionMsg) GetPoolLengthScaled() float64

GetPoolLengthScaled returns PoolLength with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SessionMsg) GetTimeInCadenceZoneScaled

func (x *SessionMsg) GetTimeInCadenceZoneScaled() []float64

GetTimeInCadenceZoneScaled returns TimeInCadenceZone as a slice with scale and any offset applied to every element. Units: s

func (*SessionMsg) GetTimeInHrZoneScaled

func (x *SessionMsg) GetTimeInHrZoneScaled() []float64

GetTimeInHrZoneScaled returns TimeInHrZone as a slice with scale and any offset applied to every element. Units: s

func (*SessionMsg) GetTimeInPowerZoneScaled

func (x *SessionMsg) GetTimeInPowerZoneScaled() []float64

GetTimeInPowerZoneScaled returns TimeInPowerZone as a slice with scale and any offset applied to every element. Units: s

func (*SessionMsg) GetTimeInSpeedZoneScaled

func (x *SessionMsg) GetTimeInSpeedZoneScaled() []float64

GetTimeInSpeedZoneScaled returns TimeInSpeedZone as a slice with scale and any offset applied to every element. Units: s

func (*SessionMsg) GetTotalAnaerobicTrainingEffectScaled

func (x *SessionMsg) GetTotalAnaerobicTrainingEffectScaled() float64

GetTotalAnaerobicTrainingEffectScaled returns TotalAnaerobicTrainingEffect with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set).

func (*SessionMsg) GetTotalCycles

func (x *SessionMsg) GetTotalCycles() interface{}

GetTotalCycles returns the appropriate TotalCycles subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*SessionMsg) GetTotalDistanceScaled

func (x *SessionMsg) GetTotalDistanceScaled() float64

GetTotalDistanceScaled returns TotalDistance with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*SessionMsg) GetTotalElapsedTimeScaled

func (x *SessionMsg) GetTotalElapsedTimeScaled() float64

GetTotalElapsedTimeScaled returns TotalElapsedTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*SessionMsg) GetTotalFractionalCyclesScaled

func (x *SessionMsg) GetTotalFractionalCyclesScaled() float64

GetTotalFractionalCyclesScaled returns TotalFractionalCycles with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: cycles

func (*SessionMsg) GetTotalMovingTimeScaled

func (x *SessionMsg) GetTotalMovingTimeScaled() float64

GetTotalMovingTimeScaled returns TotalMovingTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*SessionMsg) GetTotalTimerTimeScaled

func (x *SessionMsg) GetTotalTimerTimeScaled() float64

GetTotalTimerTimeScaled returns TotalTimerTime with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: s

func (*SessionMsg) GetTotalTrainingEffectScaled

func (x *SessionMsg) GetTotalTrainingEffectScaled() float64

GetTotalTrainingEffectScaled returns TotalTrainingEffect with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set).

func (*SessionMsg) GetTrainingStressScoreScaled

func (x *SessionMsg) GetTrainingStressScoreScaled() float64

GetTrainingStressScoreScaled returns TrainingStressScore with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: tss

type SessionTrigger

type SessionTrigger byte

SessionTrigger represents the session_trigger FIT type.

const (
	SessionTriggerActivityEnd      SessionTrigger = 0
	SessionTriggerManual           SessionTrigger = 1 // User changed sport.
	SessionTriggerAutoMultiSport   SessionTrigger = 2 // Auto multi-sport feature is enabled and user pressed lap button to advance session.
	SessionTriggerFitnessEquipment SessionTrigger = 3 // Auto sport change caused by user linking to fitness equipment.
	SessionTriggerInvalid          SessionTrigger = 0xFF
)

func (SessionTrigger) String

func (i SessionTrigger) String() string

type SetMsg

type SetMsg struct {
	WeightDisplayUnit FitBaseUnit
}

SetMsg represents the set FIT message type.

func NewSetMsg

func NewSetMsg() *SetMsg

NewSetMsg returns a set FIT message initialized to all-invalid values.

type SetType

type SetType uint8

SetType represents the set_type FIT type.

const (
	SetTypeRest    SetType = 0
	SetTypeActive  SetType = 1
	SetTypeInvalid SetType = 0xFF
)

func (SetType) String

func (i SetType) String() string

type SettingsFile

type SettingsFile struct {
	UserProfiles   []*UserProfileMsg
	HrmProfiles    []*HrmProfileMsg
	SdmProfiles    []*SdmProfileMsg
	BikeProfiles   []*BikeProfileMsg
	DeviceSettings []*DeviceSettingsMsg
}

SettingsFile represents the Settings FIT file type. Describes a user’s parameters such as Age & Weight as well as device settings.

type ShoulderPressExerciseName

type ShoulderPressExerciseName uint16

ShoulderPressExerciseName represents the shoulder_press_exercise_name FIT type.

const (
	ShoulderPressExerciseNameAlternatingDumbbellShoulderPress         ShoulderPressExerciseName = 0
	ShoulderPressExerciseNameArnoldPress                              ShoulderPressExerciseName = 1
	ShoulderPressExerciseNameBarbellFrontSquatToPushPress             ShoulderPressExerciseName = 2
	ShoulderPressExerciseNameBarbellPushPress                         ShoulderPressExerciseName = 3
	ShoulderPressExerciseNameBarbellShoulderPress                     ShoulderPressExerciseName = 4
	ShoulderPressExerciseNameDeadCurlPress                            ShoulderPressExerciseName = 5
	ShoulderPressExerciseNameDumbbellAlternatingShoulderPressAndTwist ShoulderPressExerciseName = 6
	ShoulderPressExerciseNameDumbbellHammerCurlToLungeToPress         ShoulderPressExerciseName = 7
	ShoulderPressExerciseNameDumbbellPushPress                        ShoulderPressExerciseName = 8
	ShoulderPressExerciseNameFloorInvertedShoulderPress               ShoulderPressExerciseName = 9
	ShoulderPressExerciseNameWeightedFloorInvertedShoulderPress       ShoulderPressExerciseName = 10
	ShoulderPressExerciseNameInvertedShoulderPress                    ShoulderPressExerciseName = 11
	ShoulderPressExerciseNameWeightedInvertedShoulderPress            ShoulderPressExerciseName = 12
	ShoulderPressExerciseNameOneArmPushPress                          ShoulderPressExerciseName = 13
	ShoulderPressExerciseNameOverheadBarbellPress                     ShoulderPressExerciseName = 14
	ShoulderPressExerciseNameOverheadDumbbellPress                    ShoulderPressExerciseName = 15
	ShoulderPressExerciseNameSeatedBarbellShoulderPress               ShoulderPressExerciseName = 16
	ShoulderPressExerciseNameSeatedDumbbellShoulderPress              ShoulderPressExerciseName = 17
	ShoulderPressExerciseNameSingleArmDumbbellShoulderPress           ShoulderPressExerciseName = 18
	ShoulderPressExerciseNameSingleArmStepUpAndPress                  ShoulderPressExerciseName = 19
	ShoulderPressExerciseNameSmithMachineOverheadPress                ShoulderPressExerciseName = 20
	ShoulderPressExerciseNameSplitStanceHammerCurlToPress             ShoulderPressExerciseName = 21
	ShoulderPressExerciseNameSwissBallDumbbellShoulderPress           ShoulderPressExerciseName = 22
	ShoulderPressExerciseNameWeightPlateFrontRaise                    ShoulderPressExerciseName = 23
	ShoulderPressExerciseNameInvalid                                  ShoulderPressExerciseName = 0xFFFF
)

func (ShoulderPressExerciseName) String

func (i ShoulderPressExerciseName) String() string

type ShoulderStabilityExerciseName

type ShoulderStabilityExerciseName uint16

ShoulderStabilityExerciseName represents the shoulder_stability_exercise_name FIT type.

const (
	ShoulderStabilityExerciseName90DegreeCableExternalRotation          ShoulderStabilityExerciseName = 0
	ShoulderStabilityExerciseNameBandExternalRotation                   ShoulderStabilityExerciseName = 1
	ShoulderStabilityExerciseNameBandInternalRotation                   ShoulderStabilityExerciseName = 2
	ShoulderStabilityExerciseNameBentArmLateralRaiseAndExternalRotation ShoulderStabilityExerciseName = 3
	ShoulderStabilityExerciseNameCableExternalRotation                  ShoulderStabilityExerciseName = 4
	ShoulderStabilityExerciseNameDumbbellFacePullWithExternalRotation   ShoulderStabilityExerciseName = 5
	ShoulderStabilityExerciseNameFloorIRaise                            ShoulderStabilityExerciseName = 6
	ShoulderStabilityExerciseNameWeightedFloorIRaise                    ShoulderStabilityExerciseName = 7
	ShoulderStabilityExerciseNameFloorTRaise                            ShoulderStabilityExerciseName = 8
	ShoulderStabilityExerciseNameWeightedFloorTRaise                    ShoulderStabilityExerciseName = 9
	ShoulderStabilityExerciseNameFloorYRaise                            ShoulderStabilityExerciseName = 10
	ShoulderStabilityExerciseNameWeightedFloorYRaise                    ShoulderStabilityExerciseName = 11
	ShoulderStabilityExerciseNameInclineIRaise                          ShoulderStabilityExerciseName = 12
	ShoulderStabilityExerciseNameWeightedInclineIRaise                  ShoulderStabilityExerciseName = 13
	ShoulderStabilityExerciseNameInclineLRaise                          ShoulderStabilityExerciseName = 14
	ShoulderStabilityExerciseNameWeightedInclineLRaise                  ShoulderStabilityExerciseName = 15
	ShoulderStabilityExerciseNameInclineTRaise                          ShoulderStabilityExerciseName = 16
	ShoulderStabilityExerciseNameWeightedInclineTRaise                  ShoulderStabilityExerciseName = 17
	ShoulderStabilityExerciseNameInclineWRaise                          ShoulderStabilityExerciseName = 18
	ShoulderStabilityExerciseNameWeightedInclineWRaise                  ShoulderStabilityExerciseName = 19
	ShoulderStabilityExerciseNameInclineYRaise                          ShoulderStabilityExerciseName = 20
	ShoulderStabilityExerciseNameWeightedInclineYRaise                  ShoulderStabilityExerciseName = 21
	ShoulderStabilityExerciseNameLyingExternalRotation                  ShoulderStabilityExerciseName = 22
	ShoulderStabilityExerciseNameSeatedDumbbellExternalRotation         ShoulderStabilityExerciseName = 23
	ShoulderStabilityExerciseNameStandingLRaise                         ShoulderStabilityExerciseName = 24
	ShoulderStabilityExerciseNameSwissBallIRaise                        ShoulderStabilityExerciseName = 25
	ShoulderStabilityExerciseNameWeightedSwissBallIRaise                ShoulderStabilityExerciseName = 26
	ShoulderStabilityExerciseNameSwissBallTRaise                        ShoulderStabilityExerciseName = 27
	ShoulderStabilityExerciseNameWeightedSwissBallTRaise                ShoulderStabilityExerciseName = 28
	ShoulderStabilityExerciseNameSwissBallWRaise                        ShoulderStabilityExerciseName = 29
	ShoulderStabilityExerciseNameWeightedSwissBallWRaise                ShoulderStabilityExerciseName = 30
	ShoulderStabilityExerciseNameSwissBallYRaise                        ShoulderStabilityExerciseName = 31
	ShoulderStabilityExerciseNameWeightedSwissBallYRaise                ShoulderStabilityExerciseName = 32
	ShoulderStabilityExerciseNameInvalid                                ShoulderStabilityExerciseName = 0xFFFF
)

func (ShoulderStabilityExerciseName) String

type ShrugExerciseName

type ShrugExerciseName uint16

ShrugExerciseName represents the shrug_exercise_name FIT type.

const (
	ShrugExerciseNameBarbellJumpShrug               ShrugExerciseName = 0
	ShrugExerciseNameBarbellShrug                   ShrugExerciseName = 1
	ShrugExerciseNameBarbellUprightRow              ShrugExerciseName = 2
	ShrugExerciseNameBehindTheBackSmithMachineShrug ShrugExerciseName = 3
	ShrugExerciseNameDumbbellJumpShrug              ShrugExerciseName = 4
	ShrugExerciseNameDumbbellShrug                  ShrugExerciseName = 5
	ShrugExerciseNameDumbbellUprightRow             ShrugExerciseName = 6
	ShrugExerciseNameInclineDumbbellShrug           ShrugExerciseName = 7
	ShrugExerciseNameOverheadBarbellShrug           ShrugExerciseName = 8
	ShrugExerciseNameOverheadDumbbellShrug          ShrugExerciseName = 9
	ShrugExerciseNameScaptionAndShrug               ShrugExerciseName = 10
	ShrugExerciseNameScapularRetraction             ShrugExerciseName = 11
	ShrugExerciseNameSerratusChairShrug             ShrugExerciseName = 12
	ShrugExerciseNameWeightedSerratusChairShrug     ShrugExerciseName = 13
	ShrugExerciseNameSerratusShrug                  ShrugExerciseName = 14
	ShrugExerciseNameWeightedSerratusShrug          ShrugExerciseName = 15
	ShrugExerciseNameWideGripJumpShrug              ShrugExerciseName = 16
	ShrugExerciseNameInvalid                        ShrugExerciseName = 0xFFFF
)

func (ShrugExerciseName) String

func (i ShrugExerciseName) String() string

type Side

type Side byte

Side represents the side FIT type.

const (
	SideRight   Side = 0
	SideLeft    Side = 1
	SideInvalid Side = 0xFF
)

func (Side) String

func (i Side) String() string

type SitUpExerciseName

type SitUpExerciseName uint16

SitUpExerciseName represents the sit_up_exercise_name FIT type.

const (
	SitUpExerciseNameAlternatingSitUp                    SitUpExerciseName = 0
	SitUpExerciseNameWeightedAlternatingSitUp            SitUpExerciseName = 1
	SitUpExerciseNameBentKneeVUp                         SitUpExerciseName = 2
	SitUpExerciseNameWeightedBentKneeVUp                 SitUpExerciseName = 3
	SitUpExerciseNameButterflySitUp                      SitUpExerciseName = 4
	SitUpExerciseNameWeightedButterflySitup              SitUpExerciseName = 5
	SitUpExerciseNameCrossPunchRollUp                    SitUpExerciseName = 6
	SitUpExerciseNameWeightedCrossPunchRollUp            SitUpExerciseName = 7
	SitUpExerciseNameCrossedArmsSitUp                    SitUpExerciseName = 8
	SitUpExerciseNameWeightedCrossedArmsSitUp            SitUpExerciseName = 9
	SitUpExerciseNameGetUpSitUp                          SitUpExerciseName = 10
	SitUpExerciseNameWeightedGetUpSitUp                  SitUpExerciseName = 11
	SitUpExerciseNameHoveringSitUp                       SitUpExerciseName = 12
	SitUpExerciseNameWeightedHoveringSitUp               SitUpExerciseName = 13
	SitUpExerciseNameKettlebellSitUp                     SitUpExerciseName = 14
	SitUpExerciseNameMedicineBallAlternatingVUp          SitUpExerciseName = 15
	SitUpExerciseNameMedicineBallSitUp                   SitUpExerciseName = 16
	SitUpExerciseNameMedicineBallVUp                     SitUpExerciseName = 17
	SitUpExerciseNameModifiedSitUp                       SitUpExerciseName = 18
	SitUpExerciseNameNegativeSitUp                       SitUpExerciseName = 19
	SitUpExerciseNameOneArmFullSitUp                     SitUpExerciseName = 20
	SitUpExerciseNameRecliningCircle                     SitUpExerciseName = 21
	SitUpExerciseNameWeightedRecliningCircle             SitUpExerciseName = 22
	SitUpExerciseNameReverseCurlUp                       SitUpExerciseName = 23
	SitUpExerciseNameWeightedReverseCurlUp               SitUpExerciseName = 24
	SitUpExerciseNameSingleLegSwissBallJackknife         SitUpExerciseName = 25
	SitUpExerciseNameWeightedSingleLegSwissBallJackknife SitUpExerciseName = 26
	SitUpExerciseNameTheTeaser                           SitUpExerciseName = 27
	SitUpExerciseNameTheTeaserWeighted                   SitUpExerciseName = 28
	SitUpExerciseNameThreePartRollDown                   SitUpExerciseName = 29
	SitUpExerciseNameWeightedThreePartRollDown           SitUpExerciseName = 30
	SitUpExerciseNameVUp                                 SitUpExerciseName = 31
	SitUpExerciseNameWeightedVUp                         SitUpExerciseName = 32
	SitUpExerciseNameWeightedRussianTwistOnSwissBall     SitUpExerciseName = 33
	SitUpExerciseNameWeightedSitUp                       SitUpExerciseName = 34
	SitUpExerciseNameXAbs                                SitUpExerciseName = 35
	SitUpExerciseNameWeightedXAbs                        SitUpExerciseName = 36
	SitUpExerciseNameSitUp                               SitUpExerciseName = 37
	SitUpExerciseNameInvalid                             SitUpExerciseName = 0xFFFF
)

func (SitUpExerciseName) String

func (i SitUpExerciseName) String() string

type SlaveDeviceMsg

type SlaveDeviceMsg struct {
	Manufacturer Manufacturer
	Product      uint16
}

SlaveDeviceMsg represents the slave_device FIT message type.

func NewSlaveDeviceMsg

func NewSlaveDeviceMsg() *SlaveDeviceMsg

NewSlaveDeviceMsg returns a slave_device FIT message initialized to all-invalid values.

func (*SlaveDeviceMsg) GetProduct

func (x *SlaveDeviceMsg) GetProduct() interface{}

GetProduct returns the appropriate Product subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

type SoftwareMsg

type SoftwareMsg struct {
	MessageIndex MessageIndex
	Version      uint16
	PartNumber   string
}

SoftwareMsg represents the software FIT message type.

func NewSoftwareMsg

func NewSoftwareMsg() *SoftwareMsg

NewSoftwareMsg returns a software FIT message initialized to all-invalid values.

func (*SoftwareMsg) GetVersionScaled

func (x *SoftwareMsg) GetVersionScaled() float64

GetVersionScaled returns Version with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set).

type SourceType

type SourceType byte

SourceType represents the source_type FIT type.

const (
	SourceTypeAnt                SourceType = 0 // External device connected with ANT
	SourceTypeAntplus            SourceType = 1 // External device connected with ANT+
	SourceTypeBluetooth          SourceType = 2 // External device connected with BT
	SourceTypeBluetoothLowEnergy SourceType = 3 // External device connected with BLE
	SourceTypeWifi               SourceType = 4 // External device connected with Wifi
	SourceTypeLocal              SourceType = 5 // Onboard device
	SourceTypeInvalid            SourceType = 0xFF
)

func (SourceType) String

func (i SourceType) String() string

type SpeedZoneMsg

type SpeedZoneMsg struct {
	MessageIndex MessageIndex
	HighValue    uint16
	Name         string
}

SpeedZoneMsg represents the speed_zone FIT message type.

func NewSpeedZoneMsg

func NewSpeedZoneMsg() *SpeedZoneMsg

NewSpeedZoneMsg returns a speed_zone FIT message initialized to all-invalid values.

func (*SpeedZoneMsg) GetHighValueScaled

func (x *SpeedZoneMsg) GetHighValueScaled() float64

GetHighValueScaled returns HighValue with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

type Sport

type Sport byte

Sport represents the sport FIT type.

const (
	SportGeneric               Sport = 0
	SportRunning               Sport = 1
	SportCycling               Sport = 2
	SportTransition            Sport = 3 // Mulitsport transition
	SportFitnessEquipment      Sport = 4
	SportSwimming              Sport = 5
	SportBasketball            Sport = 6
	SportSoccer                Sport = 7
	SportTennis                Sport = 8
	SportAmericanFootball      Sport = 9
	SportTraining              Sport = 10
	SportWalking               Sport = 11
	SportCrossCountrySkiing    Sport = 12
	SportAlpineSkiing          Sport = 13
	SportSnowboarding          Sport = 14
	SportRowing                Sport = 15
	SportMountaineering        Sport = 16
	SportHiking                Sport = 17
	SportMultisport            Sport = 18
	SportPaddling              Sport = 19
	SportFlying                Sport = 20
	SportEBiking               Sport = 21
	SportMotorcycling          Sport = 22
	SportBoating               Sport = 23
	SportDriving               Sport = 24
	SportGolf                  Sport = 25
	SportHangGliding           Sport = 26
	SportHorsebackRiding       Sport = 27
	SportHunting               Sport = 28
	SportFishing               Sport = 29
	SportInlineSkating         Sport = 30
	SportRockClimbing          Sport = 31
	SportSailing               Sport = 32
	SportIceSkating            Sport = 33
	SportSkyDiving             Sport = 34
	SportSnowshoeing           Sport = 35
	SportSnowmobiling          Sport = 36
	SportStandUpPaddleboarding Sport = 37
	SportSurfing               Sport = 38
	SportWakeboarding          Sport = 39
	SportWaterSkiing           Sport = 40
	SportKayaking              Sport = 41
	SportRafting               Sport = 42
	SportWindsurfing           Sport = 43
	SportKitesurfing           Sport = 44
	SportTactical              Sport = 45
	SportJumpmaster            Sport = 46
	SportBoxing                Sport = 47
	SportFloorClimbing         Sport = 48
	SportDiving                Sport = 53
	SportAll                   Sport = 254 // All is for goals only to include all sports.
	SportInvalid               Sport = 0xFF
)

func (Sport) String

func (i Sport) String() string

type SportBits0

type SportBits0 uint8

SportBits0 represents the sport_bits_0 FIT type.

const (
	SportBits0Generic          SportBits0 = 0x01
	SportBits0Running          SportBits0 = 0x02
	SportBits0Cycling          SportBits0 = 0x04
	SportBits0Transition       SportBits0 = 0x08 // Mulitsport transition
	SportBits0FitnessEquipment SportBits0 = 0x10
	SportBits0Swimming         SportBits0 = 0x20
	SportBits0Basketball       SportBits0 = 0x40
	SportBits0Soccer           SportBits0 = 0x80
	SportBits0Invalid          SportBits0 = 0x00
)

func (SportBits0) String

func (i SportBits0) String() string

type SportBits1

type SportBits1 uint8

SportBits1 represents the sport_bits_1 FIT type.

const (
	SportBits1Tennis             SportBits1 = 0x01
	SportBits1AmericanFootball   SportBits1 = 0x02
	SportBits1Training           SportBits1 = 0x04
	SportBits1Walking            SportBits1 = 0x08
	SportBits1CrossCountrySkiing SportBits1 = 0x10
	SportBits1AlpineSkiing       SportBits1 = 0x20
	SportBits1Snowboarding       SportBits1 = 0x40
	SportBits1Rowing             SportBits1 = 0x80
	SportBits1Invalid            SportBits1 = 0x00
)

func (SportBits1) String

func (i SportBits1) String() string

type SportBits2

type SportBits2 uint8

SportBits2 represents the sport_bits_2 FIT type.

const (
	SportBits2Mountaineering SportBits2 = 0x01
	SportBits2Hiking         SportBits2 = 0x02
	SportBits2Multisport     SportBits2 = 0x04
	SportBits2Paddling       SportBits2 = 0x08
	SportBits2Flying         SportBits2 = 0x10
	SportBits2EBiking        SportBits2 = 0x20
	SportBits2Motorcycling   SportBits2 = 0x40
	SportBits2Boating        SportBits2 = 0x80
	SportBits2Invalid        SportBits2 = 0x00
)

func (SportBits2) String

func (i SportBits2) String() string

type SportBits3

type SportBits3 uint8

SportBits3 represents the sport_bits_3 FIT type.

const (
	SportBits3Driving         SportBits3 = 0x01
	SportBits3Golf            SportBits3 = 0x02
	SportBits3HangGliding     SportBits3 = 0x04
	SportBits3HorsebackRiding SportBits3 = 0x08
	SportBits3Hunting         SportBits3 = 0x10
	SportBits3Fishing         SportBits3 = 0x20
	SportBits3InlineSkating   SportBits3 = 0x40
	SportBits3RockClimbing    SportBits3 = 0x80
	SportBits3Invalid         SportBits3 = 0x00
)

func (SportBits3) String

func (i SportBits3) String() string

type SportBits4

type SportBits4 uint8

SportBits4 represents the sport_bits_4 FIT type.

const (
	SportBits4Sailing               SportBits4 = 0x01
	SportBits4IceSkating            SportBits4 = 0x02
	SportBits4SkyDiving             SportBits4 = 0x04
	SportBits4Snowshoeing           SportBits4 = 0x08
	SportBits4Snowmobiling          SportBits4 = 0x10
	SportBits4StandUpPaddleboarding SportBits4 = 0x20
	SportBits4Surfing               SportBits4 = 0x40
	SportBits4Wakeboarding          SportBits4 = 0x80
	SportBits4Invalid               SportBits4 = 0x00
)

func (SportBits4) String

func (i SportBits4) String() string

type SportBits5

type SportBits5 uint8

SportBits5 represents the sport_bits_5 FIT type.

const (
	SportBits5WaterSkiing SportBits5 = 0x01
	SportBits5Kayaking    SportBits5 = 0x02
	SportBits5Rafting     SportBits5 = 0x04
	SportBits5Windsurfing SportBits5 = 0x08
	SportBits5Kitesurfing SportBits5 = 0x10
	SportBits5Tactical    SportBits5 = 0x20
	SportBits5Jumpmaster  SportBits5 = 0x40
	SportBits5Boxing      SportBits5 = 0x80
	SportBits5Invalid     SportBits5 = 0x00
)

func (SportBits5) String

func (i SportBits5) String() string

type SportBits6

type SportBits6 uint8

SportBits6 represents the sport_bits_6 FIT type.

const (
	SportBits6FloorClimbing SportBits6 = 0x01
	SportBits6Invalid       SportBits6 = 0x00
)

func (SportBits6) String

func (i SportBits6) String() string

type SportEvent

type SportEvent byte

SportEvent represents the sport_event FIT type.

const (
	SportEventUncategorized  SportEvent = 0
	SportEventGeocaching     SportEvent = 1
	SportEventFitness        SportEvent = 2
	SportEventRecreation     SportEvent = 3
	SportEventRace           SportEvent = 4
	SportEventSpecialEvent   SportEvent = 5
	SportEventTraining       SportEvent = 6
	SportEventTransportation SportEvent = 7
	SportEventTouring        SportEvent = 8
	SportEventInvalid        SportEvent = 0xFF
)

func (SportEvent) String

func (i SportEvent) String() string

type SportFile

type SportFile struct {
	ZonesTarget  *ZonesTargetMsg
	Sport        *SportMsg
	HrZones      []*HrZoneMsg
	PowerZones   []*PowerZoneMsg
	MetZones     []*MetZoneMsg
	SpeedZones   []*SpeedZoneMsg
	CadenceZones []*CadenceZoneMsg
}

SportFile represents the Sport Settings FIT file type. Describes a user’s desired sport/zone settings.

type SportMsg

type SportMsg struct {
	Sport    Sport
	SubSport SubSport
	Name     string
}

SportMsg represents the sport FIT message type.

func NewSportMsg

func NewSportMsg() *SportMsg

NewSportMsg returns a sport FIT message initialized to all-invalid values.

type SquatExerciseName

type SquatExerciseName uint16

SquatExerciseName represents the squat_exercise_name FIT type.

const (
	SquatExerciseNameLegPress                                        SquatExerciseName = 0
	SquatExerciseNameBackSquatWithBodyBar                            SquatExerciseName = 1
	SquatExerciseNameBackSquats                                      SquatExerciseName = 2
	SquatExerciseNameWeightedBackSquats                              SquatExerciseName = 3
	SquatExerciseNameBalancingSquat                                  SquatExerciseName = 4
	SquatExerciseNameWeightedBalancingSquat                          SquatExerciseName = 5
	SquatExerciseNameBarbellBackSquat                                SquatExerciseName = 6
	SquatExerciseNameBarbellBoxSquat                                 SquatExerciseName = 7
	SquatExerciseNameBarbellFrontSquat                               SquatExerciseName = 8
	SquatExerciseNameBarbellHackSquat                                SquatExerciseName = 9
	SquatExerciseNameBarbellHangSquatSnatch                          SquatExerciseName = 10
	SquatExerciseNameBarbellLateralStepUp                            SquatExerciseName = 11
	SquatExerciseNameBarbellQuarterSquat                             SquatExerciseName = 12
	SquatExerciseNameBarbellSiffSquat                                SquatExerciseName = 13
	SquatExerciseNameBarbellSquatSnatch                              SquatExerciseName = 14
	SquatExerciseNameBarbellSquatWithHeelsRaised                     SquatExerciseName = 15
	SquatExerciseNameBarbellStepover                                 SquatExerciseName = 16
	SquatExerciseNameBarbellStepUp                                   SquatExerciseName = 17
	SquatExerciseNameBenchSquatWithRotationalChop                    SquatExerciseName = 18
	SquatExerciseNameWeightedBenchSquatWithRotationalChop            SquatExerciseName = 19
	SquatExerciseNameBodyWeightWallSquat                             SquatExerciseName = 20
	SquatExerciseNameWeightedWallSquat                               SquatExerciseName = 21
	SquatExerciseNameBoxStepSquat                                    SquatExerciseName = 22
	SquatExerciseNameWeightedBoxStepSquat                            SquatExerciseName = 23
	SquatExerciseNameBracedSquat                                     SquatExerciseName = 24
	SquatExerciseNameCrossedArmBarbellFrontSquat                     SquatExerciseName = 25
	SquatExerciseNameCrossoverDumbbellStepUp                         SquatExerciseName = 26
	SquatExerciseNameDumbbellFrontSquat                              SquatExerciseName = 27
	SquatExerciseNameDumbbellSplitSquat                              SquatExerciseName = 28
	SquatExerciseNameDumbbellSquat                                   SquatExerciseName = 29
	SquatExerciseNameDumbbellSquatClean                              SquatExerciseName = 30
	SquatExerciseNameDumbbellStepover                                SquatExerciseName = 31
	SquatExerciseNameDumbbellStepUp                                  SquatExerciseName = 32
	SquatExerciseNameElevatedSingleLegSquat                          SquatExerciseName = 33
	SquatExerciseNameWeightedElevatedSingleLegSquat                  SquatExerciseName = 34
	SquatExerciseNameFigureFourSquats                                SquatExerciseName = 35
	SquatExerciseNameWeightedFigureFourSquats                        SquatExerciseName = 36
	SquatExerciseNameGobletSquat                                     SquatExerciseName = 37
	SquatExerciseNameKettlebellSquat                                 SquatExerciseName = 38
	SquatExerciseNameKettlebellSwingOverhead                         SquatExerciseName = 39
	SquatExerciseNameKettlebellSwingWithFlipToSquat                  SquatExerciseName = 40
	SquatExerciseNameLateralDumbbellStepUp                           SquatExerciseName = 41
	SquatExerciseNameOneLeggedSquat                                  SquatExerciseName = 42
	SquatExerciseNameOverheadDumbbellSquat                           SquatExerciseName = 43
	SquatExerciseNameOverheadSquat                                   SquatExerciseName = 44
	SquatExerciseNamePartialSingleLegSquat                           SquatExerciseName = 45
	SquatExerciseNameWeightedPartialSingleLegSquat                   SquatExerciseName = 46
	SquatExerciseNamePistolSquat                                     SquatExerciseName = 47
	SquatExerciseNameWeightedPistolSquat                             SquatExerciseName = 48
	SquatExerciseNamePlieSlides                                      SquatExerciseName = 49
	SquatExerciseNameWeightedPlieSlides                              SquatExerciseName = 50
	SquatExerciseNamePlieSquat                                       SquatExerciseName = 51
	SquatExerciseNameWeightedPlieSquat                               SquatExerciseName = 52
	SquatExerciseNamePrisonerSquat                                   SquatExerciseName = 53
	SquatExerciseNameWeightedPrisonerSquat                           SquatExerciseName = 54
	SquatExerciseNameSingleLegBenchGetUp                             SquatExerciseName = 55
	SquatExerciseNameWeightedSingleLegBenchGetUp                     SquatExerciseName = 56
	SquatExerciseNameSingleLegBenchSquat                             SquatExerciseName = 57
	SquatExerciseNameWeightedSingleLegBenchSquat                     SquatExerciseName = 58
	SquatExerciseNameSingleLegSquatOnSwissBall                       SquatExerciseName = 59
	SquatExerciseNameWeightedSingleLegSquatOnSwissBall               SquatExerciseName = 60
	SquatExerciseNameSquat                                           SquatExerciseName = 61
	SquatExerciseNameWeightedSquat                                   SquatExerciseName = 62
	SquatExerciseNameSquatsWithBand                                  SquatExerciseName = 63
	SquatExerciseNameStaggeredSquat                                  SquatExerciseName = 64
	SquatExerciseNameWeightedStaggeredSquat                          SquatExerciseName = 65
	SquatExerciseNameStepUp                                          SquatExerciseName = 66
	SquatExerciseNameWeightedStepUp                                  SquatExerciseName = 67
	SquatExerciseNameSuitcaseSquats                                  SquatExerciseName = 68
	SquatExerciseNameSumoSquat                                       SquatExerciseName = 69
	SquatExerciseNameSumoSquatSlideIn                                SquatExerciseName = 70
	SquatExerciseNameWeightedSumoSquatSlideIn                        SquatExerciseName = 71
	SquatExerciseNameSumoSquatToHighPull                             SquatExerciseName = 72
	SquatExerciseNameSumoSquatToStand                                SquatExerciseName = 73
	SquatExerciseNameWeightedSumoSquatToStand                        SquatExerciseName = 74
	SquatExerciseNameSumoSquatWithRotation                           SquatExerciseName = 75
	SquatExerciseNameWeightedSumoSquatWithRotation                   SquatExerciseName = 76
	SquatExerciseNameSwissBallBodyWeightWallSquat                    SquatExerciseName = 77
	SquatExerciseNameWeightedSwissBallWallSquat                      SquatExerciseName = 78
	SquatExerciseNameThrusters                                       SquatExerciseName = 79
	SquatExerciseNameUnevenSquat                                     SquatExerciseName = 80
	SquatExerciseNameWeightedUnevenSquat                             SquatExerciseName = 81
	SquatExerciseNameWaistSlimmingSquat                              SquatExerciseName = 82
	SquatExerciseNameWallBall                                        SquatExerciseName = 83
	SquatExerciseNameWideStanceBarbellSquat                          SquatExerciseName = 84
	SquatExerciseNameWideStanceGobletSquat                           SquatExerciseName = 85
	SquatExerciseNameZercherSquat                                    SquatExerciseName = 86
	SquatExerciseNameKbsOverhead                                     SquatExerciseName = 87 // Deprecated do not use
	SquatExerciseNameSquatAndSideKick                                SquatExerciseName = 88
	SquatExerciseNameSquatJumpsInNOut                                SquatExerciseName = 89
	SquatExerciseNamePilatesPlieSquatsParallelTurnedOutFlatAndHeels  SquatExerciseName = 90
	SquatExerciseNameReleveStraightLegAndKneeBentWithOneLegVariation SquatExerciseName = 91
	SquatExerciseNameInvalid                                         SquatExerciseName = 0xFFFF
)

func (SquatExerciseName) String

func (i SquatExerciseName) String() string

type StressLevelMsg

type StressLevelMsg struct {
}

StressLevelMsg represents the stress_level FIT message type.

func NewStressLevelMsg

func NewStressLevelMsg() *StressLevelMsg

NewStressLevelMsg returns a stress_level FIT message initialized to all-invalid values.

type StrokeType

type StrokeType byte

StrokeType represents the stroke_type FIT type.

const (
	StrokeTypeNoEvent  StrokeType = 0
	StrokeTypeOther    StrokeType = 1 // stroke was detected but cannot be identified
	StrokeTypeServe    StrokeType = 2
	StrokeTypeForehand StrokeType = 3
	StrokeTypeBackhand StrokeType = 4
	StrokeTypeSmash    StrokeType = 5
	StrokeTypeInvalid  StrokeType = 0xFF
)

func (StrokeType) String

func (i StrokeType) String() string

type SubSport

type SubSport byte

SubSport represents the sub_sport FIT type.

const (
	SubSportGeneric              SubSport = 0
	SubSportTreadmill            SubSport = 1  // Run/Fitness Equipment
	SubSportStreet               SubSport = 2  // Run
	SubSportTrail                SubSport = 3  // Run
	SubSportTrack                SubSport = 4  // Run
	SubSportSpin                 SubSport = 5  // Cycling
	SubSportIndoorCycling        SubSport = 6  // Cycling/Fitness Equipment
	SubSportRoad                 SubSport = 7  // Cycling
	SubSportMountain             SubSport = 8  // Cycling
	SubSportDownhill             SubSport = 9  // Cycling
	SubSportRecumbent            SubSport = 10 // Cycling
	SubSportCyclocross           SubSport = 11 // Cycling
	SubSportHandCycling          SubSport = 12 // Cycling
	SubSportTrackCycling         SubSport = 13 // Cycling
	SubSportIndoorRowing         SubSport = 14 // Fitness Equipment
	SubSportElliptical           SubSport = 15 // Fitness Equipment
	SubSportStairClimbing        SubSport = 16 // Fitness Equipment
	SubSportLapSwimming          SubSport = 17 // Swimming
	SubSportOpenWater            SubSport = 18 // Swimming
	SubSportFlexibilityTraining  SubSport = 19 // Training
	SubSportStrengthTraining     SubSport = 20 // Training
	SubSportWarmUp               SubSport = 21 // Tennis
	SubSportMatch                SubSport = 22 // Tennis
	SubSportExercise             SubSport = 23 // Tennis
	SubSportChallenge            SubSport = 24
	SubSportIndoorSkiing         SubSport = 25 // Fitness Equipment
	SubSportCardioTraining       SubSport = 26 // Training
	SubSportIndoorWalking        SubSport = 27 // Walking/Fitness Equipment
	SubSportEBikeFitness         SubSport = 28 // E-Biking
	SubSportBmx                  SubSport = 29 // Cycling
	SubSportCasualWalking        SubSport = 30 // Walking
	SubSportSpeedWalking         SubSport = 31 // Walking
	SubSportBikeToRunTransition  SubSport = 32 // Transition
	SubSportRunToBikeTransition  SubSport = 33 // Transition
	SubSportSwimToBikeTransition SubSport = 34 // Transition
	SubSportAtv                  SubSport = 35 // Motorcycling
	SubSportMotocross            SubSport = 36 // Motorcycling
	SubSportBackcountry          SubSport = 37 // Alpine Skiing/Snowboarding
	SubSportResort               SubSport = 38 // Alpine Skiing/Snowboarding
	SubSportRcDrone              SubSport = 39 // Flying
	SubSportWingsuit             SubSport = 40 // Flying
	SubSportWhitewater           SubSport = 41 // Kayaking/Rafting
	SubSportSkateSkiing          SubSport = 42 // Cross Country Skiing
	SubSportYoga                 SubSport = 43 // Training
	SubSportPilates              SubSport = 44 // Fitness Equipment
	SubSportIndoorRunning        SubSport = 45 // Run
	SubSportGravelCycling        SubSport = 46 // Cycling
	SubSportEBikeMountain        SubSport = 47 // Cycling
	SubSportCommuting            SubSport = 48 // Cycling
	SubSportMixedSurface         SubSport = 49 // Cycling
	SubSportNavigate             SubSport = 50
	SubSportTrackMe              SubSport = 51
	SubSportMap                  SubSport = 52
	SubSportSingleGasDiving      SubSport = 53 // Diving
	SubSportMultiGasDiving       SubSport = 54 // Diving
	SubSportGaugeDiving          SubSport = 55 // Diving
	SubSportApneaDiving          SubSport = 56 // Diving
	SubSportApneaHunting         SubSport = 57 // Diving
	SubSportVirtualActivity      SubSport = 58
	SubSportObstacle             SubSport = 59 // Used for events where participants run, crawl through mud, climb over walls, etc.
	SubSportBreathing            SubSport = 62
	SubSportSailRace             SubSport = 65 // Sailing
	SubSportUltra                SubSport = 67 // Ultramarathon
	SubSportIndoorClimbing       SubSport = 68 // Climbing
	SubSportBouldering           SubSport = 69 // Climbing
	SubSportAll                  SubSport = 254
	SubSportInvalid              SubSport = 0xFF
)

func (SubSport) String

func (i SubSport) String() string

type SupportedExdScreenLayouts

type SupportedExdScreenLayouts uint32

SupportedExdScreenLayouts represents the supported_exd_screen_layouts FIT type.

const (
	SupportedExdScreenLayoutsFullScreen                SupportedExdScreenLayouts = 0x00000001
	SupportedExdScreenLayoutsHalfVertical              SupportedExdScreenLayouts = 0x00000002
	SupportedExdScreenLayoutsHalfHorizontal            SupportedExdScreenLayouts = 0x00000004
	SupportedExdScreenLayoutsHalfVerticalRightSplit    SupportedExdScreenLayouts = 0x00000008
	SupportedExdScreenLayoutsHalfHorizontalBottomSplit SupportedExdScreenLayouts = 0x00000010
	SupportedExdScreenLayoutsFullQuarterSplit          SupportedExdScreenLayouts = 0x00000020
	SupportedExdScreenLayoutsHalfVerticalLeftSplit     SupportedExdScreenLayouts = 0x00000040
	SupportedExdScreenLayoutsHalfHorizontalTopSplit    SupportedExdScreenLayouts = 0x00000080
	SupportedExdScreenLayoutsInvalid                   SupportedExdScreenLayouts = 0x00000000
)

func (SupportedExdScreenLayouts) String

func (i SupportedExdScreenLayouts) String() string

type SwimStroke

type SwimStroke byte

SwimStroke represents the swim_stroke FIT type.

const (
	SwimStrokeFreestyle    SwimStroke = 0
	SwimStrokeBackstroke   SwimStroke = 1
	SwimStrokeBreaststroke SwimStroke = 2
	SwimStrokeButterfly    SwimStroke = 3
	SwimStrokeDrill        SwimStroke = 4
	SwimStrokeMixed        SwimStroke = 5
	SwimStrokeIm           SwimStroke = 6 // IM is a mixed interval containing the same number of lengths for each of: Butterfly, Backstroke, Breaststroke, Freestyle, swam in that order.
	SwimStrokeInvalid      SwimStroke = 0xFF
)

func (SwimStroke) String

func (i SwimStroke) String() string

type Switch

type Switch byte

Switch represents the switch FIT type.

const (
	SwitchOff     Switch = 0
	SwitchOn      Switch = 1
	SwitchAuto    Switch = 2
	SwitchInvalid Switch = 0xFF
)

func (Switch) String

func (i Switch) String() string

type TapSensitivity

type TapSensitivity byte

TapSensitivity represents the tap_sensitivity FIT type.

const (
	TapSensitivityHigh    TapSensitivity = 0
	TapSensitivityMedium  TapSensitivity = 1
	TapSensitivityLow     TapSensitivity = 2
	TapSensitivityInvalid TapSensitivity = 0xFF
)

func (TapSensitivity) String

func (i TapSensitivity) String() string

type ThreeDSensorCalibrationMsg

type ThreeDSensorCalibrationMsg struct {
}

ThreeDSensorCalibrationMsg represents the three_d_sensor_calibration FIT message type.

func NewThreeDSensorCalibrationMsg

func NewThreeDSensorCalibrationMsg() *ThreeDSensorCalibrationMsg

NewThreeDSensorCalibrationMsg returns a three_d_sensor_calibration FIT message initialized to all-invalid values.

type TimeIntoDay

type TimeIntoDay uint32

TimeIntoDay represents the time_into_day FIT type.

const (
	TimeIntoDayInvalid TimeIntoDay = 0xFFFFFFFF
)

func (TimeIntoDay) String

func (i TimeIntoDay) String() string

type TimeMode

type TimeMode byte

TimeMode represents the time_mode FIT type.

const (
	TimeModeHour12            TimeMode = 0
	TimeModeHour24            TimeMode = 1 // Does not use a leading zero and has a colon
	TimeModeMilitary          TimeMode = 2 // Uses a leading zero and does not have a colon
	TimeModeHour12WithSeconds TimeMode = 3
	TimeModeHour24WithSeconds TimeMode = 4
	TimeModeUtc               TimeMode = 5
	TimeModeInvalid           TimeMode = 0xFF
)

func (TimeMode) String

func (i TimeMode) String() string

type TimeZone

type TimeZone byte

TimeZone represents the time_zone FIT type.

const (
	TimeZoneAlmaty                   TimeZone = 0
	TimeZoneBangkok                  TimeZone = 1
	TimeZoneBombay                   TimeZone = 2
	TimeZoneBrasilia                 TimeZone = 3
	TimeZoneCairo                    TimeZone = 4
	TimeZoneCapeVerdeIs              TimeZone = 5
	TimeZoneDarwin                   TimeZone = 6
	TimeZoneEniwetok                 TimeZone = 7
	TimeZoneFiji                     TimeZone = 8
	TimeZoneHongKong                 TimeZone = 9
	TimeZoneIslamabad                TimeZone = 10
	TimeZoneKabul                    TimeZone = 11
	TimeZoneMagadan                  TimeZone = 12
	TimeZoneMidAtlantic              TimeZone = 13
	TimeZoneMoscow                   TimeZone = 14
	TimeZoneMuscat                   TimeZone = 15
	TimeZoneNewfoundland             TimeZone = 16
	TimeZoneSamoa                    TimeZone = 17
	TimeZoneSydney                   TimeZone = 18
	TimeZoneTehran                   TimeZone = 19
	TimeZoneTokyo                    TimeZone = 20
	TimeZoneUsAlaska                 TimeZone = 21
	TimeZoneUsAtlantic               TimeZone = 22
	TimeZoneUsCentral                TimeZone = 23
	TimeZoneUsEastern                TimeZone = 24
	TimeZoneUsHawaii                 TimeZone = 25
	TimeZoneUsMountain               TimeZone = 26
	TimeZoneUsPacific                TimeZone = 27
	TimeZoneOther                    TimeZone = 28
	TimeZoneAuckland                 TimeZone = 29
	TimeZoneKathmandu                TimeZone = 30
	TimeZoneEuropeWesternWet         TimeZone = 31
	TimeZoneEuropeCentralCet         TimeZone = 32
	TimeZoneEuropeEasternEet         TimeZone = 33
	TimeZoneJakarta                  TimeZone = 34
	TimeZonePerth                    TimeZone = 35
	TimeZoneAdelaide                 TimeZone = 36
	TimeZoneBrisbane                 TimeZone = 37
	TimeZoneTasmania                 TimeZone = 38
	TimeZoneIceland                  TimeZone = 39
	TimeZoneAmsterdam                TimeZone = 40
	TimeZoneAthens                   TimeZone = 41
	TimeZoneBarcelona                TimeZone = 42
	TimeZoneBerlin                   TimeZone = 43
	TimeZoneBrussels                 TimeZone = 44
	TimeZoneBudapest                 TimeZone = 45
	TimeZoneCopenhagen               TimeZone = 46
	TimeZoneDublin                   TimeZone = 47
	TimeZoneHelsinki                 TimeZone = 48
	TimeZoneLisbon                   TimeZone = 49
	TimeZoneLondon                   TimeZone = 50
	TimeZoneMadrid                   TimeZone = 51
	TimeZoneMunich                   TimeZone = 52
	TimeZoneOslo                     TimeZone = 53
	TimeZoneParis                    TimeZone = 54
	TimeZonePrague                   TimeZone = 55
	TimeZoneReykjavik                TimeZone = 56
	TimeZoneRome                     TimeZone = 57
	TimeZoneStockholm                TimeZone = 58
	TimeZoneVienna                   TimeZone = 59
	TimeZoneWarsaw                   TimeZone = 60
	TimeZoneZurich                   TimeZone = 61
	TimeZoneQuebec                   TimeZone = 62
	TimeZoneOntario                  TimeZone = 63
	TimeZoneManitoba                 TimeZone = 64
	TimeZoneSaskatchewan             TimeZone = 65
	TimeZoneAlberta                  TimeZone = 66
	TimeZoneBritishColumbia          TimeZone = 67
	TimeZoneBoise                    TimeZone = 68
	TimeZoneBoston                   TimeZone = 69
	TimeZoneChicago                  TimeZone = 70
	TimeZoneDallas                   TimeZone = 71
	TimeZoneDenver                   TimeZone = 72
	TimeZoneKansasCity               TimeZone = 73
	TimeZoneLasVegas                 TimeZone = 74
	TimeZoneLosAngeles               TimeZone = 75
	TimeZoneMiami                    TimeZone = 76
	TimeZoneMinneapolis              TimeZone = 77
	TimeZoneNewYork                  TimeZone = 78
	TimeZoneNewOrleans               TimeZone = 79
	TimeZonePhoenix                  TimeZone = 80
	TimeZoneSantaFe                  TimeZone = 81
	TimeZoneSeattle                  TimeZone = 82
	TimeZoneWashingtonDc             TimeZone = 83
	TimeZoneUsArizona                TimeZone = 84
	TimeZoneChita                    TimeZone = 85
	TimeZoneEkaterinburg             TimeZone = 86
	TimeZoneIrkutsk                  TimeZone = 87
	TimeZoneKaliningrad              TimeZone = 88
	TimeZoneKrasnoyarsk              TimeZone = 89
	TimeZoneNovosibirsk              TimeZone = 90
	TimeZonePetropavlovskKamchatskiy TimeZone = 91
	TimeZoneSamara                   TimeZone = 92
	TimeZoneVladivostok              TimeZone = 93
	TimeZoneMexicoCentral            TimeZone = 94
	TimeZoneMexicoMountain           TimeZone = 95
	TimeZoneMexicoPacific            TimeZone = 96
	TimeZoneCapeTown                 TimeZone = 97
	TimeZoneWinkhoek                 TimeZone = 98
	TimeZoneLagos                    TimeZone = 99
	TimeZoneRiyahd                   TimeZone = 100
	TimeZoneVenezuela                TimeZone = 101
	TimeZoneAustraliaLh              TimeZone = 102
	TimeZoneSantiago                 TimeZone = 103
	TimeZoneManual                   TimeZone = 253
	TimeZoneAutomatic                TimeZone = 254
	TimeZoneInvalid                  TimeZone = 0xFF
)

func (TimeZone) String

func (i TimeZone) String() string

type TimerTrigger

type TimerTrigger byte

TimerTrigger represents the timer_trigger FIT type.

const (
	TimerTriggerManual           TimerTrigger = 0
	TimerTriggerAuto             TimerTrigger = 1
	TimerTriggerFitnessEquipment TimerTrigger = 2
	TimerTriggerInvalid          TimerTrigger = 0xFF
)

func (TimerTrigger) String

func (i TimerTrigger) String() string

type TimestampCorrelationMsg

type TimestampCorrelationMsg struct {
}

TimestampCorrelationMsg represents the timestamp_correlation FIT message type.

func NewTimestampCorrelationMsg

func NewTimestampCorrelationMsg() *TimestampCorrelationMsg

NewTimestampCorrelationMsg returns a timestamp_correlation FIT message initialized to all-invalid values.

type TissueModelType

type TissueModelType byte

TissueModelType represents the tissue_model_type FIT type.

const (
	TissueModelTypeZhl16c  TissueModelType = 0 // Buhlmann's decompression algorithm, version C
	TissueModelTypeInvalid TissueModelType = 0xFF
)

func (TissueModelType) String

func (i TissueModelType) String() string

type Tone

type Tone byte

Tone represents the tone FIT type.

const (
	ToneOff            Tone = 0
	ToneTone           Tone = 1
	ToneVibrate        Tone = 2
	ToneToneAndVibrate Tone = 3
	ToneInvalid        Tone = 0xFF
)

func (Tone) String

func (i Tone) String() string

type TotalBodyExerciseName

type TotalBodyExerciseName uint16

TotalBodyExerciseName represents the total_body_exercise_name FIT type.

const (
	TotalBodyExerciseNameBurpee                           TotalBodyExerciseName = 0
	TotalBodyExerciseNameWeightedBurpee                   TotalBodyExerciseName = 1
	TotalBodyExerciseNameBurpeeBoxJump                    TotalBodyExerciseName = 2
	TotalBodyExerciseNameWeightedBurpeeBoxJump            TotalBodyExerciseName = 3
	TotalBodyExerciseNameHighPullBurpee                   TotalBodyExerciseName = 4
	TotalBodyExerciseNameManMakers                        TotalBodyExerciseName = 5
	TotalBodyExerciseNameOneArmBurpee                     TotalBodyExerciseName = 6
	TotalBodyExerciseNameSquatThrusts                     TotalBodyExerciseName = 7
	TotalBodyExerciseNameWeightedSquatThrusts             TotalBodyExerciseName = 8
	TotalBodyExerciseNameSquatPlankPushUp                 TotalBodyExerciseName = 9
	TotalBodyExerciseNameWeightedSquatPlankPushUp         TotalBodyExerciseName = 10
	TotalBodyExerciseNameStandingTRotationBalance         TotalBodyExerciseName = 11
	TotalBodyExerciseNameWeightedStandingTRotationBalance TotalBodyExerciseName = 12
	TotalBodyExerciseNameInvalid                          TotalBodyExerciseName = 0xFFFF
)

func (TotalBodyExerciseName) String

func (i TotalBodyExerciseName) String() string

type TotalsFile

type TotalsFile struct {
	Totals []*TotalsMsg
}

TotalsFile represents the Totals FIT file type. Summarizes a user’s total activity, characterized by sport.

type TotalsMsg

type TotalsMsg struct {
	MessageIndex MessageIndex
	Timestamp    time.Time
	TimerTime    uint32 // Excludes pauses
	Distance     uint32
	Calories     uint32
	Sport        Sport
	ElapsedTime  uint32 // Includes pauses
	Sessions     uint16
	ActiveTime   uint32
}

TotalsMsg represents the totals FIT message type.

func NewTotalsMsg

func NewTotalsMsg() *TotalsMsg

NewTotalsMsg returns a totals FIT message initialized to all-invalid values.

type TrainingFileMsg

type TrainingFileMsg struct {
	Timestamp    time.Time
	Type         FileType
	Manufacturer Manufacturer
	Product      uint16
	SerialNumber uint32
	TimeCreated  time.Time
}

TrainingFileMsg represents the training_file FIT message type.

func NewTrainingFileMsg

func NewTrainingFileMsg() *TrainingFileMsg

NewTrainingFileMsg returns a training_file FIT message initialized to all-invalid values.

func (*TrainingFileMsg) GetProduct

func (x *TrainingFileMsg) GetProduct() interface{}

GetProduct returns the appropriate Product subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

type TricepsExtensionExerciseName

type TricepsExtensionExerciseName uint16

TricepsExtensionExerciseName represents the triceps_extension_exercise_name FIT type.

const (
	TricepsExtensionExerciseNameBenchDip                                     TricepsExtensionExerciseName = 0
	TricepsExtensionExerciseNameWeightedBenchDip                             TricepsExtensionExerciseName = 1
	TricepsExtensionExerciseNameBodyWeightDip                                TricepsExtensionExerciseName = 2
	TricepsExtensionExerciseNameCableKickback                                TricepsExtensionExerciseName = 3
	TricepsExtensionExerciseNameCableLyingTricepsExtension                   TricepsExtensionExerciseName = 4
	TricepsExtensionExerciseNameCableOverheadTricepsExtension                TricepsExtensionExerciseName = 5
	TricepsExtensionExerciseNameDumbbellKickback                             TricepsExtensionExerciseName = 6
	TricepsExtensionExerciseNameDumbbellLyingTricepsExtension                TricepsExtensionExerciseName = 7
	TricepsExtensionExerciseNameEzBarOverheadTricepsExtension                TricepsExtensionExerciseName = 8
	TricepsExtensionExerciseNameInclineDip                                   TricepsExtensionExerciseName = 9
	TricepsExtensionExerciseNameWeightedInclineDip                           TricepsExtensionExerciseName = 10
	TricepsExtensionExerciseNameInclineEzBarLyingTricepsExtension            TricepsExtensionExerciseName = 11
	TricepsExtensionExerciseNameLyingDumbbellPulloverToExtension             TricepsExtensionExerciseName = 12
	TricepsExtensionExerciseNameLyingEzBarTricepsExtension                   TricepsExtensionExerciseName = 13
	TricepsExtensionExerciseNameLyingTricepsExtensionToCloseGripBenchPress   TricepsExtensionExerciseName = 14
	TricepsExtensionExerciseNameOverheadDumbbellTricepsExtension             TricepsExtensionExerciseName = 15
	TricepsExtensionExerciseNameRecliningTricepsPress                        TricepsExtensionExerciseName = 16
	TricepsExtensionExerciseNameReverseGripPressdown                         TricepsExtensionExerciseName = 17
	TricepsExtensionExerciseNameReverseGripTricepsPressdown                  TricepsExtensionExerciseName = 18
	TricepsExtensionExerciseNameRopePressdown                                TricepsExtensionExerciseName = 19
	TricepsExtensionExerciseNameSeatedBarbellOverheadTricepsExtension        TricepsExtensionExerciseName = 20
	TricepsExtensionExerciseNameSeatedDumbbellOverheadTricepsExtension       TricepsExtensionExerciseName = 21
	TricepsExtensionExerciseNameSeatedEzBarOverheadTricepsExtension          TricepsExtensionExerciseName = 22
	TricepsExtensionExerciseNameSeatedSingleArmOverheadDumbbellExtension     TricepsExtensionExerciseName = 23
	TricepsExtensionExerciseNameSingleArmDumbbellOverheadTricepsExtension    TricepsExtensionExerciseName = 24
	TricepsExtensionExerciseNameSingleDumbbellSeatedOverheadTricepsExtension TricepsExtensionExerciseName = 25
	TricepsExtensionExerciseNameSingleLegBenchDipAndKick                     TricepsExtensionExerciseName = 26
	TricepsExtensionExerciseNameWeightedSingleLegBenchDipAndKick             TricepsExtensionExerciseName = 27
	TricepsExtensionExerciseNameSingleLegDip                                 TricepsExtensionExerciseName = 28
	TricepsExtensionExerciseNameWeightedSingleLegDip                         TricepsExtensionExerciseName = 29
	TricepsExtensionExerciseNameStaticLyingTricepsExtension                  TricepsExtensionExerciseName = 30
	TricepsExtensionExerciseNameSuspendedDip                                 TricepsExtensionExerciseName = 31
	TricepsExtensionExerciseNameWeightedSuspendedDip                         TricepsExtensionExerciseName = 32
	TricepsExtensionExerciseNameSwissBallDumbbellLyingTricepsExtension       TricepsExtensionExerciseName = 33
	TricepsExtensionExerciseNameSwissBallEzBarLyingTricepsExtension          TricepsExtensionExerciseName = 34
	TricepsExtensionExerciseNameSwissBallEzBarOverheadTricepsExtension       TricepsExtensionExerciseName = 35
	TricepsExtensionExerciseNameTabletopDip                                  TricepsExtensionExerciseName = 36
	TricepsExtensionExerciseNameWeightedTabletopDip                          TricepsExtensionExerciseName = 37
	TricepsExtensionExerciseNameTricepsExtensionOnFloor                      TricepsExtensionExerciseName = 38
	TricepsExtensionExerciseNameTricepsPressdown                             TricepsExtensionExerciseName = 39
	TricepsExtensionExerciseNameWeightedDip                                  TricepsExtensionExerciseName = 40
	TricepsExtensionExerciseNameInvalid                                      TricepsExtensionExerciseName = 0xFFFF
)

func (TricepsExtensionExerciseName) String

type TurnType

type TurnType byte

TurnType represents the turn_type FIT type.

const (
	TurnTypeArrivingIdx             TurnType = 0
	TurnTypeArrivingLeftIdx         TurnType = 1
	TurnTypeArrivingRightIdx        TurnType = 2
	TurnTypeArrivingViaIdx          TurnType = 3
	TurnTypeArrivingViaLeftIdx      TurnType = 4
	TurnTypeArrivingViaRightIdx     TurnType = 5
	TurnTypeBearKeepLeftIdx         TurnType = 6
	TurnTypeBearKeepRightIdx        TurnType = 7
	TurnTypeContinueIdx             TurnType = 8
	TurnTypeExitLeftIdx             TurnType = 9
	TurnTypeExitRightIdx            TurnType = 10
	TurnTypeFerryIdx                TurnType = 11
	TurnTypeRoundabout45Idx         TurnType = 12
	TurnTypeRoundabout90Idx         TurnType = 13
	TurnTypeRoundabout135Idx        TurnType = 14
	TurnTypeRoundabout180Idx        TurnType = 15
	TurnTypeRoundabout225Idx        TurnType = 16
	TurnTypeRoundabout270Idx        TurnType = 17
	TurnTypeRoundabout315Idx        TurnType = 18
	TurnTypeRoundabout360Idx        TurnType = 19
	TurnTypeRoundaboutNeg45Idx      TurnType = 20
	TurnTypeRoundaboutNeg90Idx      TurnType = 21
	TurnTypeRoundaboutNeg135Idx     TurnType = 22
	TurnTypeRoundaboutNeg180Idx     TurnType = 23
	TurnTypeRoundaboutNeg225Idx     TurnType = 24
	TurnTypeRoundaboutNeg270Idx     TurnType = 25
	TurnTypeRoundaboutNeg315Idx     TurnType = 26
	TurnTypeRoundaboutNeg360Idx     TurnType = 27
	TurnTypeRoundaboutGenericIdx    TurnType = 28
	TurnTypeRoundaboutNegGenericIdx TurnType = 29
	TurnTypeSharpTurnLeftIdx        TurnType = 30
	TurnTypeSharpTurnRightIdx       TurnType = 31
	TurnTypeTurnLeftIdx             TurnType = 32
	TurnTypeTurnRightIdx            TurnType = 33
	TurnTypeUturnLeftIdx            TurnType = 34
	TurnTypeUturnRightIdx           TurnType = 35
	TurnTypeIconInvIdx              TurnType = 36
	TurnTypeIconIdxCnt              TurnType = 37
	TurnTypeInvalid                 TurnType = 0xFF
)

func (TurnType) String

func (i TurnType) String() string

type UnknownField

type UnknownField struct {
	MesgNum  MesgNum
	FieldNum byte
	Count    int
}

UnknownField represents an unknown FIT message field for a known message found in the official profile. It contains the message and field number, in addition to how many times the field for a specific message was encountered during decoding.

type UnknownMessage

type UnknownMessage struct {
	MesgNum MesgNum
	Count   int
}

UnknownMessage represents an unknown FIT message not found in the official profile. It contains the message number and how many times the was encountered during decoding.

type UserLocalId

type UserLocalId uint16

UserLocalId represents the user_local_id FIT type.

const (
	UserLocalIdLocalMin      UserLocalId = 0x0000
	UserLocalIdLocalMax      UserLocalId = 0x000F
	UserLocalIdStationaryMin UserLocalId = 0x0010
	UserLocalIdStationaryMax UserLocalId = 0x00FF
	UserLocalIdPortableMin   UserLocalId = 0x0100
	UserLocalIdPortableMax   UserLocalId = 0xFFFE
	UserLocalIdInvalid       UserLocalId = 0xFFFF
)

func (UserLocalId) String

func (i UserLocalId) String() string

type UserProfileMsg

type UserProfileMsg struct {
	MessageIndex               MessageIndex
	FriendlyName               string
	Gender                     Gender
	Age                        uint8
	Height                     uint8
	Weight                     uint16
	Language                   Language
	ElevSetting                DisplayMeasure
	WeightSetting              DisplayMeasure
	RestingHeartRate           uint8
	DefaultMaxRunningHeartRate uint8
	DefaultMaxBikingHeartRate  uint8
	DefaultMaxHeartRate        uint8
	HrSetting                  DisplayHeart
	SpeedSetting               DisplayMeasure
	DistSetting                DisplayMeasure
	PowerSetting               DisplayPower
	ActivityClass              ActivityClass
	PositionSetting            DisplayPosition
	TemperatureSetting         DisplayMeasure
	LocalId                    UserLocalId
	GlobalId                   []byte
	HeightSetting              DisplayMeasure
	UserRunningStepLength      uint16 // User defined running step length set to 0 for auto length
	UserWalkingStepLength      uint16 // User defined walking step length set to 0 for auto length
}

UserProfileMsg represents the user_profile FIT message type.

func NewUserProfileMsg

func NewUserProfileMsg() *UserProfileMsg

NewUserProfileMsg returns a user_profile FIT message initialized to all-invalid values.

func (*UserProfileMsg) GetHeightScaled

func (x *UserProfileMsg) GetHeightScaled() float64

GetHeightScaled returns Height with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*UserProfileMsg) GetUserRunningStepLengthScaled

func (x *UserProfileMsg) GetUserRunningStepLengthScaled() float64

GetUserRunningStepLengthScaled returns UserRunningStepLength with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*UserProfileMsg) GetUserWalkingStepLengthScaled

func (x *UserProfileMsg) GetUserWalkingStepLengthScaled() float64

GetUserWalkingStepLengthScaled returns UserWalkingStepLength with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

func (*UserProfileMsg) GetWeightScaled

func (x *UserProfileMsg) GetWeightScaled() float64

GetWeightScaled returns Weight with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kg

type VideoClipMsg

type VideoClipMsg struct {
}

VideoClipMsg represents the video_clip FIT message type.

func NewVideoClipMsg

func NewVideoClipMsg() *VideoClipMsg

NewVideoClipMsg returns a video_clip FIT message initialized to all-invalid values.

type VideoDescriptionMsg

type VideoDescriptionMsg struct {
	MessageIndex MessageIndex // Long descriptions will be split into multiple parts
	MessageCount uint16       // Total number of description parts
	Text         string
}

VideoDescriptionMsg represents the video_description FIT message type.

func NewVideoDescriptionMsg

func NewVideoDescriptionMsg() *VideoDescriptionMsg

NewVideoDescriptionMsg returns a video_description FIT message initialized to all-invalid values.

type VideoFrameMsg

type VideoFrameMsg struct {
}

VideoFrameMsg represents the video_frame FIT message type.

func NewVideoFrameMsg

func NewVideoFrameMsg() *VideoFrameMsg

NewVideoFrameMsg returns a video_frame FIT message initialized to all-invalid values.

type VideoMsg

type VideoMsg struct {
}

VideoMsg represents the video FIT message type.

func NewVideoMsg

func NewVideoMsg() *VideoMsg

NewVideoMsg returns a video FIT message initialized to all-invalid values.

type VideoTitleMsg

type VideoTitleMsg struct {
	MessageIndex MessageIndex // Long titles will be split into multiple parts
	MessageCount uint16       // Total number of title parts
	Text         string
}

VideoTitleMsg represents the video_title FIT message type.

func NewVideoTitleMsg

func NewVideoTitleMsg() *VideoTitleMsg

NewVideoTitleMsg returns a video_title FIT message initialized to all-invalid values.

type WarmUpExerciseName

type WarmUpExerciseName uint16

WarmUpExerciseName represents the warm_up_exercise_name FIT type.

const (
	WarmUpExerciseNameQuadrupedRocking            WarmUpExerciseName = 0
	WarmUpExerciseNameNeckTilts                   WarmUpExerciseName = 1
	WarmUpExerciseNameAnkleCircles                WarmUpExerciseName = 2
	WarmUpExerciseNameAnkleDorsiflexionWithBand   WarmUpExerciseName = 3
	WarmUpExerciseNameAnkleInternalRotation       WarmUpExerciseName = 4
	WarmUpExerciseNameArmCircles                  WarmUpExerciseName = 5
	WarmUpExerciseNameBentOverReachToSky          WarmUpExerciseName = 6
	WarmUpExerciseNameCatCamel                    WarmUpExerciseName = 7
	WarmUpExerciseNameElbowToFootLunge            WarmUpExerciseName = 8
	WarmUpExerciseNameForwardAndBackwardLegSwings WarmUpExerciseName = 9
	WarmUpExerciseNameGroiners                    WarmUpExerciseName = 10
	WarmUpExerciseNameInvertedHamstringStretch    WarmUpExerciseName = 11
	WarmUpExerciseNameLateralDuckUnder            WarmUpExerciseName = 12
	WarmUpExerciseNameNeckRotations               WarmUpExerciseName = 13
	WarmUpExerciseNameOppositeArmAndLegBalance    WarmUpExerciseName = 14
	WarmUpExerciseNameReachRollAndLift            WarmUpExerciseName = 15
	WarmUpExerciseNameScorpion                    WarmUpExerciseName = 16 // Deprecated do not use
	WarmUpExerciseNameShoulderCircles             WarmUpExerciseName = 17
	WarmUpExerciseNameSideToSideLegSwings         WarmUpExerciseName = 18
	WarmUpExerciseNameSleeperStretch              WarmUpExerciseName = 19
	WarmUpExerciseNameSlideOut                    WarmUpExerciseName = 20
	WarmUpExerciseNameSwissBallHipCrossover       WarmUpExerciseName = 21
	WarmUpExerciseNameSwissBallReachRollAndLift   WarmUpExerciseName = 22
	WarmUpExerciseNameSwissBallWindshieldWipers   WarmUpExerciseName = 23
	WarmUpExerciseNameThoracicRotation            WarmUpExerciseName = 24
	WarmUpExerciseNameWalkingHighKicks            WarmUpExerciseName = 25
	WarmUpExerciseNameWalkingHighKnees            WarmUpExerciseName = 26
	WarmUpExerciseNameWalkingKneeHugs             WarmUpExerciseName = 27
	WarmUpExerciseNameWalkingLegCradles           WarmUpExerciseName = 28
	WarmUpExerciseNameWalkout                     WarmUpExerciseName = 29
	WarmUpExerciseNameWalkoutFromPushUpPosition   WarmUpExerciseName = 30
	WarmUpExerciseNameInvalid                     WarmUpExerciseName = 0xFFFF
)

func (WarmUpExerciseName) String

func (i WarmUpExerciseName) String() string

type WatchfaceMode

type WatchfaceMode byte

WatchfaceMode represents the watchface_mode FIT type.

const (
	WatchfaceModeDigital   WatchfaceMode = 0
	WatchfaceModeAnalog    WatchfaceMode = 1
	WatchfaceModeConnectIq WatchfaceMode = 2
	WatchfaceModeDisabled  WatchfaceMode = 3
	WatchfaceModeInvalid   WatchfaceMode = 0xFF
)

func (WatchfaceMode) String

func (i WatchfaceMode) String() string

type WatchfaceSettingsMsg

type WatchfaceSettingsMsg struct {
}

WatchfaceSettingsMsg represents the watchface_settings FIT message type.

func NewWatchfaceSettingsMsg

func NewWatchfaceSettingsMsg() *WatchfaceSettingsMsg

NewWatchfaceSettingsMsg returns a watchface_settings FIT message initialized to all-invalid values.

type WaterType

type WaterType byte

WaterType represents the water_type FIT type.

const (
	WaterTypeFresh   WaterType = 0
	WaterTypeSalt    WaterType = 1
	WaterTypeEn13319 WaterType = 2
	WaterTypeCustom  WaterType = 3
	WaterTypeInvalid WaterType = 0xFF
)

func (WaterType) String

func (i WaterType) String() string

type WeatherAlertMsg

type WeatherAlertMsg struct {
	Timestamp  time.Time
	ReportId   string            // Unique identifier from GCS report ID string, length is 12
	IssueTime  time.Time         // Time alert was issued
	ExpireTime time.Time         // Time alert expires
	Severity   WeatherSeverity   // Warning, Watch, Advisory, Statement
	Type       WeatherSevereType // Tornado, Severe Thunderstorm, etc.
}

WeatherAlertMsg represents the weather_alert FIT message type.

func NewWeatherAlertMsg

func NewWeatherAlertMsg() *WeatherAlertMsg

NewWeatherAlertMsg returns a weather_alert FIT message initialized to all-invalid values.

type WeatherConditionsMsg

type WeatherConditionsMsg struct {
	Timestamp                time.Time     // time of update for current conditions, else forecast time
	WeatherReport            WeatherReport // Current or forecast
	Temperature              int8
	Condition                WeatherStatus // Corresponds to GSC Response weatherIcon field
	WindDirection            uint16
	WindSpeed                uint16
	PrecipitationProbability uint8 // range 0-100
	TemperatureFeelsLike     int8  // Heat Index if GCS heatIdx above or equal to 90F or wind chill if GCS windChill below or equal to 32F
	RelativeHumidity         uint8
	Location                 string // string corresponding to GCS response location string
	ObservedAtTime           time.Time
	ObservedLocationLat      Latitude
	ObservedLocationLong     Longitude
	DayOfWeek                DayOfWeek
	HighTemperature          int8
	LowTemperature           int8
}

WeatherConditionsMsg represents the weather_conditions FIT message type.

func NewWeatherConditionsMsg

func NewWeatherConditionsMsg() *WeatherConditionsMsg

NewWeatherConditionsMsg returns a weather_conditions FIT message initialized to all-invalid values.

func (*WeatherConditionsMsg) GetWindSpeedScaled

func (x *WeatherConditionsMsg) GetWindSpeedScaled() float64

GetWindSpeedScaled returns WindSpeed with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m/s

type WeatherReport

type WeatherReport byte

WeatherReport represents the weather_report FIT type.

const (
	WeatherReportCurrent        WeatherReport = 0
	WeatherReportForecast       WeatherReport = 1 // Deprecated use hourly_forecast instead
	WeatherReportHourlyForecast WeatherReport = 1
	WeatherReportDailyForecast  WeatherReport = 2
	WeatherReportInvalid        WeatherReport = 0xFF
)

func (WeatherReport) String

func (i WeatherReport) String() string

type WeatherSevereType

type WeatherSevereType byte

WeatherSevereType represents the weather_severe_type FIT type.

const (
	WeatherSevereTypeUnspecified             WeatherSevereType = 0
	WeatherSevereTypeTornado                 WeatherSevereType = 1
	WeatherSevereTypeTsunami                 WeatherSevereType = 2
	WeatherSevereTypeHurricane               WeatherSevereType = 3
	WeatherSevereTypeExtremeWind             WeatherSevereType = 4
	WeatherSevereTypeTyphoon                 WeatherSevereType = 5
	WeatherSevereTypeInlandHurricane         WeatherSevereType = 6
	WeatherSevereTypeHurricaneForceWind      WeatherSevereType = 7
	WeatherSevereTypeWaterspout              WeatherSevereType = 8
	WeatherSevereTypeSevereThunderstorm      WeatherSevereType = 9
	WeatherSevereTypeWreckhouseWinds         WeatherSevereType = 10
	WeatherSevereTypeLesSuetesWind           WeatherSevereType = 11
	WeatherSevereTypeAvalanche               WeatherSevereType = 12
	WeatherSevereTypeFlashFlood              WeatherSevereType = 13
	WeatherSevereTypeTropicalStorm           WeatherSevereType = 14
	WeatherSevereTypeInlandTropicalStorm     WeatherSevereType = 15
	WeatherSevereTypeBlizzard                WeatherSevereType = 16
	WeatherSevereTypeIceStorm                WeatherSevereType = 17
	WeatherSevereTypeFreezingRain            WeatherSevereType = 18
	WeatherSevereTypeDebrisFlow              WeatherSevereType = 19
	WeatherSevereTypeFlashFreeze             WeatherSevereType = 20
	WeatherSevereTypeDustStorm               WeatherSevereType = 21
	WeatherSevereTypeHighWind                WeatherSevereType = 22
	WeatherSevereTypeWinterStorm             WeatherSevereType = 23
	WeatherSevereTypeHeavyFreezingSpray      WeatherSevereType = 24
	WeatherSevereTypeExtremeCold             WeatherSevereType = 25
	WeatherSevereTypeWindChill               WeatherSevereType = 26
	WeatherSevereTypeColdWave                WeatherSevereType = 27
	WeatherSevereTypeHeavySnowAlert          WeatherSevereType = 28
	WeatherSevereTypeLakeEffectBlowingSnow   WeatherSevereType = 29
	WeatherSevereTypeSnowSquall              WeatherSevereType = 30
	WeatherSevereTypeLakeEffectSnow          WeatherSevereType = 31
	WeatherSevereTypeWinterWeather           WeatherSevereType = 32
	WeatherSevereTypeSleet                   WeatherSevereType = 33
	WeatherSevereTypeSnowfall                WeatherSevereType = 34
	WeatherSevereTypeSnowAndBlowingSnow      WeatherSevereType = 35
	WeatherSevereTypeBlowingSnow             WeatherSevereType = 36
	WeatherSevereTypeSnowAlert               WeatherSevereType = 37
	WeatherSevereTypeArcticOutflow           WeatherSevereType = 38
	WeatherSevereTypeFreezingDrizzle         WeatherSevereType = 39
	WeatherSevereTypeStorm                   WeatherSevereType = 40
	WeatherSevereTypeStormSurge              WeatherSevereType = 41
	WeatherSevereTypeRainfall                WeatherSevereType = 42
	WeatherSevereTypeArealFlood              WeatherSevereType = 43
	WeatherSevereTypeCoastalFlood            WeatherSevereType = 44
	WeatherSevereTypeLakeshoreFlood          WeatherSevereType = 45
	WeatherSevereTypeExcessiveHeat           WeatherSevereType = 46
	WeatherSevereTypeHeat                    WeatherSevereType = 47
	WeatherSevereTypeWeather                 WeatherSevereType = 48
	WeatherSevereTypeHighHeatAndHumidity     WeatherSevereType = 49
	WeatherSevereTypeHumidexAndHealth        WeatherSevereType = 50
	WeatherSevereTypeHumidex                 WeatherSevereType = 51
	WeatherSevereTypeGale                    WeatherSevereType = 52
	WeatherSevereTypeFreezingSpray           WeatherSevereType = 53
	WeatherSevereTypeSpecialMarine           WeatherSevereType = 54
	WeatherSevereTypeSquall                  WeatherSevereType = 55
	WeatherSevereTypeStrongWind              WeatherSevereType = 56
	WeatherSevereTypeLakeWind                WeatherSevereType = 57
	WeatherSevereTypeMarineWeather           WeatherSevereType = 58
	WeatherSevereTypeWind                    WeatherSevereType = 59
	WeatherSevereTypeSmallCraftHazardousSeas WeatherSevereType = 60
	WeatherSevereTypeHazardousSeas           WeatherSevereType = 61
	WeatherSevereTypeSmallCraft              WeatherSevereType = 62
	WeatherSevereTypeSmallCraftWinds         WeatherSevereType = 63
	WeatherSevereTypeSmallCraftRoughBar      WeatherSevereType = 64
	WeatherSevereTypeHighWaterLevel          WeatherSevereType = 65
	WeatherSevereTypeAshfall                 WeatherSevereType = 66
	WeatherSevereTypeFreezingFog             WeatherSevereType = 67
	WeatherSevereTypeDenseFog                WeatherSevereType = 68
	WeatherSevereTypeDenseSmoke              WeatherSevereType = 69
	WeatherSevereTypeBlowingDust             WeatherSevereType = 70
	WeatherSevereTypeHardFreeze              WeatherSevereType = 71
	WeatherSevereTypeFreeze                  WeatherSevereType = 72
	WeatherSevereTypeFrost                   WeatherSevereType = 73
	WeatherSevereTypeFireWeather             WeatherSevereType = 74
	WeatherSevereTypeFlood                   WeatherSevereType = 75
	WeatherSevereTypeRipTide                 WeatherSevereType = 76
	WeatherSevereTypeHighSurf                WeatherSevereType = 77
	WeatherSevereTypeSmog                    WeatherSevereType = 78
	WeatherSevereTypeAirQuality              WeatherSevereType = 79
	WeatherSevereTypeBriskWind               WeatherSevereType = 80
	WeatherSevereTypeAirStagnation           WeatherSevereType = 81
	WeatherSevereTypeLowWater                WeatherSevereType = 82
	WeatherSevereTypeHydrological            WeatherSevereType = 83
	WeatherSevereTypeSpecialWeather          WeatherSevereType = 84
	WeatherSevereTypeInvalid                 WeatherSevereType = 0xFF
)

func (WeatherSevereType) String

func (i WeatherSevereType) String() string

type WeatherSeverity

type WeatherSeverity byte

WeatherSeverity represents the weather_severity FIT type.

const (
	WeatherSeverityUnknown   WeatherSeverity = 0
	WeatherSeverityWarning   WeatherSeverity = 1
	WeatherSeverityWatch     WeatherSeverity = 2
	WeatherSeverityAdvisory  WeatherSeverity = 3
	WeatherSeverityStatement WeatherSeverity = 4
	WeatherSeverityInvalid   WeatherSeverity = 0xFF
)

func (WeatherSeverity) String

func (i WeatherSeverity) String() string

type WeatherStatus

type WeatherStatus byte

WeatherStatus represents the weather_status FIT type.

const (
	WeatherStatusClear                  WeatherStatus = 0
	WeatherStatusPartlyCloudy           WeatherStatus = 1
	WeatherStatusMostlyCloudy           WeatherStatus = 2
	WeatherStatusRain                   WeatherStatus = 3
	WeatherStatusSnow                   WeatherStatus = 4
	WeatherStatusWindy                  WeatherStatus = 5
	WeatherStatusThunderstorms          WeatherStatus = 6
	WeatherStatusWintryMix              WeatherStatus = 7
	WeatherStatusFog                    WeatherStatus = 8
	WeatherStatusHazy                   WeatherStatus = 11
	WeatherStatusHail                   WeatherStatus = 12
	WeatherStatusScatteredShowers       WeatherStatus = 13
	WeatherStatusScatteredThunderstorms WeatherStatus = 14
	WeatherStatusUnknownPrecipitation   WeatherStatus = 15
	WeatherStatusLightRain              WeatherStatus = 16
	WeatherStatusHeavyRain              WeatherStatus = 17
	WeatherStatusLightSnow              WeatherStatus = 18
	WeatherStatusHeavySnow              WeatherStatus = 19
	WeatherStatusLightRainSnow          WeatherStatus = 20
	WeatherStatusHeavyRainSnow          WeatherStatus = 21
	WeatherStatusCloudy                 WeatherStatus = 22
	WeatherStatusInvalid                WeatherStatus = 0xFF
)

func (WeatherStatus) String

func (i WeatherStatus) String() string

type Weight

type Weight uint16

Weight represents the weight FIT type.

const (
	WeightCalculating Weight = 0xFFFE
	WeightInvalid     Weight = 0xFFFF
)

func (Weight) String

func (i Weight) String() string

type WeightFile

type WeightFile struct {
	UserProfile  *UserProfileMsg
	WeightScales []*WeightScaleMsg
	DeviceInfos  []*DeviceInfoMsg
}

WeightFile represents the Weight FIT file type. Records weight scale data.

type WeightScaleMsg

type WeightScaleMsg struct {
	Timestamp         time.Time
	Weight            Weight
	PercentFat        uint16
	PercentHydration  uint16
	VisceralFatMass   uint16
	BoneMass          uint16
	MuscleMass        uint16
	BasalMet          uint16
	PhysiqueRating    uint8
	ActiveMet         uint16 // ~4kJ per kcal, 0.25 allows max 16384 kcal
	MetabolicAge      uint8
	VisceralFatRating uint8
	UserProfileIndex  MessageIndex // Associates this weight scale message to a user. This corresponds to the index of the user profile message in the weight scale file.
}

WeightScaleMsg represents the weight_scale FIT message type.

func NewWeightScaleMsg

func NewWeightScaleMsg() *WeightScaleMsg

NewWeightScaleMsg returns a weight_scale FIT message initialized to all-invalid values.

func (*WeightScaleMsg) GetActiveMetScaled

func (x *WeightScaleMsg) GetActiveMetScaled() float64

GetActiveMetScaled returns ActiveMet with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kcal/day

func (*WeightScaleMsg) GetBasalMetScaled

func (x *WeightScaleMsg) GetBasalMetScaled() float64

GetBasalMetScaled returns BasalMet with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kcal/day

func (*WeightScaleMsg) GetBoneMassScaled

func (x *WeightScaleMsg) GetBoneMassScaled() float64

GetBoneMassScaled returns BoneMass with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kg

func (*WeightScaleMsg) GetMuscleMassScaled

func (x *WeightScaleMsg) GetMuscleMassScaled() float64

GetMuscleMassScaled returns MuscleMass with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kg

func (*WeightScaleMsg) GetPercentFatScaled

func (x *WeightScaleMsg) GetPercentFatScaled() float64

GetPercentFatScaled returns PercentFat with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*WeightScaleMsg) GetPercentHydrationScaled

func (x *WeightScaleMsg) GetPercentHydrationScaled() float64

GetPercentHydrationScaled returns PercentHydration with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: %

func (*WeightScaleMsg) GetVisceralFatMassScaled

func (x *WeightScaleMsg) GetVisceralFatMassScaled() float64

GetVisceralFatMassScaled returns VisceralFatMass with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kg

func (*WeightScaleMsg) GetWeightScaled

func (x *WeightScaleMsg) GetWeightScaled() float64

GetWeightScaled returns Weight with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: kg

type WktStepDuration

type WktStepDuration byte

WktStepDuration represents the wkt_step_duration FIT type.

const (
	WktStepDurationTime                               WktStepDuration = 0
	WktStepDurationDistance                           WktStepDuration = 1
	WktStepDurationHrLessThan                         WktStepDuration = 2
	WktStepDurationHrGreaterThan                      WktStepDuration = 3
	WktStepDurationCalories                           WktStepDuration = 4
	WktStepDurationOpen                               WktStepDuration = 5
	WktStepDurationRepeatUntilStepsCmplt              WktStepDuration = 6
	WktStepDurationRepeatUntilTime                    WktStepDuration = 7
	WktStepDurationRepeatUntilDistance                WktStepDuration = 8
	WktStepDurationRepeatUntilCalories                WktStepDuration = 9
	WktStepDurationRepeatUntilHrLessThan              WktStepDuration = 10
	WktStepDurationRepeatUntilHrGreaterThan           WktStepDuration = 11
	WktStepDurationRepeatUntilPowerLessThan           WktStepDuration = 12
	WktStepDurationRepeatUntilPowerGreaterThan        WktStepDuration = 13
	WktStepDurationPowerLessThan                      WktStepDuration = 14
	WktStepDurationPowerGreaterThan                   WktStepDuration = 15
	WktStepDurationTrainingPeaksTss                   WktStepDuration = 16
	WktStepDurationRepeatUntilPowerLastLapLessThan    WktStepDuration = 17
	WktStepDurationRepeatUntilMaxPowerLastLapLessThan WktStepDuration = 18
	WktStepDurationPower3sLessThan                    WktStepDuration = 19
	WktStepDurationPower10sLessThan                   WktStepDuration = 20
	WktStepDurationPower30sLessThan                   WktStepDuration = 21
	WktStepDurationPower3sGreaterThan                 WktStepDuration = 22
	WktStepDurationPower10sGreaterThan                WktStepDuration = 23
	WktStepDurationPower30sGreaterThan                WktStepDuration = 24
	WktStepDurationPowerLapLessThan                   WktStepDuration = 25
	WktStepDurationPowerLapGreaterThan                WktStepDuration = 26
	WktStepDurationRepeatUntilTrainingPeaksTss        WktStepDuration = 27
	WktStepDurationRepetitionTime                     WktStepDuration = 28
	WktStepDurationReps                               WktStepDuration = 29
	WktStepDurationTimeOnly                           WktStepDuration = 31
	WktStepDurationInvalid                            WktStepDuration = 0xFF
)

func (WktStepDuration) String

func (i WktStepDuration) String() string

type WktStepTarget

type WktStepTarget byte

WktStepTarget represents the wkt_step_target FIT type.

const (
	WktStepTargetSpeed        WktStepTarget = 0
	WktStepTargetHeartRate    WktStepTarget = 1
	WktStepTargetOpen         WktStepTarget = 2
	WktStepTargetCadence      WktStepTarget = 3
	WktStepTargetPower        WktStepTarget = 4
	WktStepTargetGrade        WktStepTarget = 5
	WktStepTargetResistance   WktStepTarget = 6
	WktStepTargetPower3s      WktStepTarget = 7
	WktStepTargetPower10s     WktStepTarget = 8
	WktStepTargetPower30s     WktStepTarget = 9
	WktStepTargetPowerLap     WktStepTarget = 10
	WktStepTargetSwimStroke   WktStepTarget = 11
	WktStepTargetSpeedLap     WktStepTarget = 12
	WktStepTargetHeartRateLap WktStepTarget = 13
	WktStepTargetInvalid      WktStepTarget = 0xFF
)

func (WktStepTarget) String

func (i WktStepTarget) String() string

type WorkoutCapabilities

type WorkoutCapabilities uint32

WorkoutCapabilities represents the workout_capabilities FIT type.

const (
	WorkoutCapabilitiesInterval         WorkoutCapabilities = 0x00000001
	WorkoutCapabilitiesCustom           WorkoutCapabilities = 0x00000002
	WorkoutCapabilitiesFitnessEquipment WorkoutCapabilities = 0x00000004
	WorkoutCapabilitiesFirstbeat        WorkoutCapabilities = 0x00000008
	WorkoutCapabilitiesNewLeaf          WorkoutCapabilities = 0x00000010
	WorkoutCapabilitiesTcx              WorkoutCapabilities = 0x00000020 // For backwards compatibility. Watch should add missing id fields then clear flag.
	WorkoutCapabilitiesSpeed            WorkoutCapabilities = 0x00000080 // Speed source required for workout step.
	WorkoutCapabilitiesHeartRate        WorkoutCapabilities = 0x00000100 // Heart rate source required for workout step.
	WorkoutCapabilitiesDistance         WorkoutCapabilities = 0x00000200 // Distance source required for workout step.
	WorkoutCapabilitiesCadence          WorkoutCapabilities = 0x00000400 // Cadence source required for workout step.
	WorkoutCapabilitiesPower            WorkoutCapabilities = 0x00000800 // Power source required for workout step.
	WorkoutCapabilitiesGrade            WorkoutCapabilities = 0x00001000 // Grade source required for workout step.
	WorkoutCapabilitiesResistance       WorkoutCapabilities = 0x00002000 // Resistance source required for workout step.
	WorkoutCapabilitiesProtected        WorkoutCapabilities = 0x00004000
	WorkoutCapabilitiesInvalid          WorkoutCapabilities = 0x00000000
)

func (WorkoutCapabilities) String

func (i WorkoutCapabilities) String() string

type WorkoutEquipment

type WorkoutEquipment byte

WorkoutEquipment represents the workout_equipment FIT type.

const (
	WorkoutEquipmentNone          WorkoutEquipment = 0
	WorkoutEquipmentSwimFins      WorkoutEquipment = 1
	WorkoutEquipmentSwimKickboard WorkoutEquipment = 2
	WorkoutEquipmentSwimPaddles   WorkoutEquipment = 3
	WorkoutEquipmentSwimPullBuoy  WorkoutEquipment = 4
	WorkoutEquipmentSwimSnorkel   WorkoutEquipment = 5
	WorkoutEquipmentInvalid       WorkoutEquipment = 0xFF
)

func (WorkoutEquipment) String

func (i WorkoutEquipment) String() string

type WorkoutFile

type WorkoutFile struct {
	Workout      *WorkoutMsg
	WorkoutSteps []*WorkoutStepMsg
}

WorkoutFile represents the Workout FIT file type. Describes a structured activity that can be designed on a computer and transferred to a display device to guide a user through the activity.

type WorkoutHr

type WorkoutHr uint32

WorkoutHr represents the workout_hr FIT type.

const (
	WorkoutHrBpmOffset WorkoutHr = 100
	WorkoutHrInvalid   WorkoutHr = 0xFFFFFFFF
)

func (WorkoutHr) String

func (i WorkoutHr) String() string

type WorkoutMsg

type WorkoutMsg struct {
	Sport          Sport
	Capabilities   WorkoutCapabilities
	NumValidSteps  uint16 // number of valid steps
	WktName        string
	SubSport       SubSport
	PoolLength     uint16
	PoolLengthUnit DisplayMeasure
}

WorkoutMsg represents the workout FIT message type.

func NewWorkoutMsg

func NewWorkoutMsg() *WorkoutMsg

NewWorkoutMsg returns a workout FIT message initialized to all-invalid values.

func (*WorkoutMsg) GetPoolLengthScaled

func (x *WorkoutMsg) GetPoolLengthScaled() float64

GetPoolLengthScaled returns PoolLength with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

type WorkoutPower

type WorkoutPower uint32

WorkoutPower represents the workout_power FIT type.

const (
	WorkoutPowerWattsOffset WorkoutPower = 1000
	WorkoutPowerInvalid     WorkoutPower = 0xFFFFFFFF
)

func (WorkoutPower) String

func (i WorkoutPower) String() string

type WorkoutSessionMsg

type WorkoutSessionMsg struct {
	MessageIndex   MessageIndex
	Sport          Sport
	SubSport       SubSport
	NumValidSteps  uint16
	FirstStepIndex uint16
	PoolLength     uint16
	PoolLengthUnit DisplayMeasure
}

WorkoutSessionMsg represents the workout_session FIT message type.

func NewWorkoutSessionMsg

func NewWorkoutSessionMsg() *WorkoutSessionMsg

NewWorkoutSessionMsg returns a workout_session FIT message initialized to all-invalid values.

func (*WorkoutSessionMsg) GetPoolLengthScaled

func (x *WorkoutSessionMsg) GetPoolLengthScaled() float64

GetPoolLengthScaled returns PoolLength with scale and any offset applied. NaN is returned if the field has an invalid value (i.e. has not been set). Units: m

type WorkoutStepMsg

type WorkoutStepMsg struct {
	MessageIndex                   MessageIndex
	WktStepName                    string
	DurationType                   WktStepDuration
	DurationValue                  uint32
	TargetType                     WktStepTarget
	TargetValue                    uint32
	CustomTargetValueLow           uint32
	CustomTargetValueHigh          uint32
	Intensity                      Intensity
	Notes                          string
	Equipment                      WorkoutEquipment
	ExerciseCategory               ExerciseCategory
	SecondaryTargetType            WktStepTarget
	SecondaryTargetValue           uint32
	SecondaryCustomTargetValueLow  uint32
	SecondaryCustomTargetValueHigh uint32
}

WorkoutStepMsg represents the workout_step FIT message type.

func NewWorkoutStepMsg

func NewWorkoutStepMsg() *WorkoutStepMsg

NewWorkoutStepMsg returns a workout_step FIT message initialized to all-invalid values.

func (*WorkoutStepMsg) GetCustomTargetValueHigh

func (x *WorkoutStepMsg) GetCustomTargetValueHigh() interface{}

GetCustomTargetValueHigh returns the appropriate CustomTargetValueHigh subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*WorkoutStepMsg) GetCustomTargetValueLow

func (x *WorkoutStepMsg) GetCustomTargetValueLow() interface{}

GetCustomTargetValueLow returns the appropriate CustomTargetValueLow subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*WorkoutStepMsg) GetDurationValue

func (x *WorkoutStepMsg) GetDurationValue() interface{}

GetDurationValue returns the appropriate DurationValue subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*WorkoutStepMsg) GetSecondaryCustomTargetValueHigh

func (x *WorkoutStepMsg) GetSecondaryCustomTargetValueHigh() interface{}

GetSecondaryCustomTargetValueHigh returns the appropriate SecondaryCustomTargetValueHigh subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*WorkoutStepMsg) GetSecondaryCustomTargetValueLow

func (x *WorkoutStepMsg) GetSecondaryCustomTargetValueLow() interface{}

GetSecondaryCustomTargetValueLow returns the appropriate SecondaryCustomTargetValueLow subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*WorkoutStepMsg) GetSecondaryTargetValue

func (x *WorkoutStepMsg) GetSecondaryTargetValue() interface{}

GetSecondaryTargetValue returns the appropriate SecondaryTargetValue subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

func (*WorkoutStepMsg) GetTargetValue

func (x *WorkoutStepMsg) GetTargetValue() interface{}

GetTargetValue returns the appropriate TargetValue subfield if a matching reference field/value combination is found. If none of the reference field/value combinations are true then the main field is returned.

type ZonesTargetMsg

type ZonesTargetMsg struct {
	MaxHeartRate             uint8
	ThresholdHeartRate       uint8
	FunctionalThresholdPower uint16
	HrCalcType               HrZoneCalc
	PwrCalcType              PwrZoneCalc
}

ZonesTargetMsg represents the zones_target FIT message type.

func NewZonesTargetMsg

func NewZonesTargetMsg() *ZonesTargetMsg

NewZonesTargetMsg returns a zones_target FIT message initialized to all-invalid values.

Directories

Path Synopsis
cmd
fitgen/internal/fitstringer
Package fitstringer is a fork of golang.org/x/tools/cmd/stringer used to generate string methods for the FIT types generated by cmd/fitgen.
Package fitstringer is a fork of golang.org/x/tools/cmd/stringer used to generate string methods for the FIT types generated by cmd/fitgen.
Package dyncrc16 implements the Dynastream CRC-16 checksum.
Package dyncrc16 implements the Dynastream CRC-16 checksum.
internal
types
Package types provides the set of base types defined by the FIT protocol.
Package types provides the set of base types defined by the FIT protocol.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL