phpFITFileAnalysis A PHP class for analysing FIT files created by Garmin GPS devices.

This is a demonstration of the phpFITFileAnalysis class available on GitHub

File:
/fit_files/mountain-biking.fit
Device:
Garmin Forerunner 310XT
Sport:
Cycling
Recorded:
Sat, 22-Jun-13 @ 2:26am
Duration:
01:52:50
Distance:
20.53 km

Messages

file_id
file_creator
event
device_info
record
lap
session
activity

Record Fields

timestamp
position_lat
position_long
distance
altitude
speed
heart_rate

Google Map

Google Geocoding API: Error
Google Time Zone API: Error

Google map

Debug Information

Types

keyPHP unpack() formatBytes
0Ctmp1
1ctmp1
2Ctmp1
131vtmp2
132vtmp2
133Vtmp4
134Vtmp4
7a*tmp1
136ftmp4
137dtmp8
10Ctmp1
139vtmp2
140Vtmp4
13Ctmp1
142Ptmp8
143Ptmp8
144Ptmp8



Messages and Fields being listened for

file_id (0)

IDNameScaleOffsetUnits
0type10
1manufacturer10
2product10
3serial_number10
4time_created10
5number10


device_settings (2)

IDNameScaleOffsetUnits
0active_time_zone10
1utc_offset10
5time_zone_offset40hr


user_profile (3)

IDNameScaleOffsetUnits
0friendly_name10
1gender10
2age10years
3height1000m
4weight100kg
5language10
6elev_setting10
7weight_setting10
8resting_heart_rate10bpm
10default_max_biking_heart_rate10bpm
11default_max_heart_rate10bpm
12hr_setting10
13speed_setting10
14dist_setting10
16power_setting10
17activity_class10
18position_setting10
21temperature_setting10


zones_target (7)

IDNameScaleOffsetUnits
1max_heart_rate10
2threshold_heart_rate10
3functional_threshold_power10
5hr_calc_type10
7pwr_calc_type10


sport (12)

IDNameScaleOffsetUnits
0sport10
1sub_sport10
3name10


session (18)

IDNameScaleOffsetUnits
0event10
1event_type10
2start_time10
3start_position_lat10semicircles
4start_position_long10semicircles
5sport10semicircles
6sub_sport10
7total_elapsed_time10000s
8total_timer_time10000s
9total_distance1000m
10total_cycles10cycles
11total_calories10kcal
13total_fat_calories10kcal
14avg_speed10000m/s
15max_speed10000m/s
16avg_heart_rate10bpm
17max_heart_rate10bpm
18avg_cadence10rpm
19max_cadence10rpm
20avg_power10watts
21max_power10watts
22total_ascent10m
23total_descent10m
24total_training_effect100
25first_lap_index10
26num_laps10
27event_group10
28trigger10
29nec_lat10semicircles
30nec_long10semicircles
31swc_lat10semicircles
32swc_long10semicircles
34normalized_power10watts
35training_stress_score100tss
36intensity_factor10000if
37left_right_balance10
41avg_stroke_count100strokes/lap
42avg_stroke_distance1000m
43swim_stroke10swim_stroke
44pool_length1000m
45threshold_power10watts
46pool_length_unit10
47num_active_lengths10lengths
48total_work10J
65time_in_hr_zone10000s
68time_in_power_zone10000s
89avg_vertical_oscillation100mm
90avg_stance_time_percent1000percent
91avg_stance_time100ms
92avg_fractional_cadence1280rpm
93max_fractional_cadence1280rpm
94total_fractional_cycles1280cycles
101avg_left_torque_effectiveness20percent
102avg_right_torque_effectiveness20percent
103avg_left_pedal_smoothness20percent
104avg_right_pedal_smoothness20percent
105avg_combined_pedal_smoothness20percent
111sport_index10
112time_standing10000s
113stand_count10
114avg_left_pco10mm
115avg_right_pco10mm
116avg_left_power_phase0.71111110degrees
117avg_left_power_phase_peak0.71111110degrees
118avg_right_power_phase0.71111110degrees
119avg_right_power_phase_peak0.71111110degrees
120avg_power_position10watts
121max_power_position10watts
122avg_cadence_position10rpm
123max_cadence_position10rpm
253timestamp10s
254message_index10


lap (19)

IDNameScaleOffsetUnits
0event10
1event_type10
2start_time10
3start_position_lat10semicircles
4start_position_long10semicircles
5end_position_lat10semicircles
6end_position_long10semicircles
7total_elapsed_time10000s
8total_timer_time10000s
9total_distance1000m
10total_cycles10cycles
11total_calories10kcal
12total_fat_calories10kcal
13avg_speed10000m/s
14max_speed10000m/s
15avg_heart_rate10bpm
16max_heart_rate10bpm
17avg_cadence10rpm
18max_cadence10rpm
19avg_power10watts
20max_power10watts
21total_ascent10m
22total_descent10m
23intensity10
24lap_trigger10
25sport10
26event_group10
32num_lengths10lengths
33normalized_power10watts
34left_right_balance10
35first_length_index10
37avg_stroke_distance1000m
38swim_stroke10
39sub_sport10
40num_active_lengths10lengths
41total_work10J
57time_in_hr_zone10000s
60time_in_power_zone10000s
71wkt_step_index10
77avg_vertical_oscillation100mm
78avg_stance_time_percent1000percent
79avg_stance_time100ms
80avg_fractional_cadence1280rpm
81max_fractional_cadence1280rpm
82total_fractional_cycles1280cycles
91avg_left_torque_effectiveness20percent
92avg_right_torque_effectiveness20percent
93avg_left_pedal_smoothness20percent
94avg_right_pedal_smoothness20percent
95avg_combined_pedal_smoothness20percent
98time_standing10000s
99stand_count10
100avg_left_pco10mm
101avg_right_pco10mm
102avg_left_power_phase0.71111110degrees
103avg_left_power_phase_peak0.71111110degrees
104avg_right_power_phase0.71111110degrees
105avg_right_power_phase_peak0.71111110degrees
106avg_power_position10watts
107max_power_position10watts
108avg_cadence_position10rpm
109max_cadence_position10rpm
253timestamp10s
254message_index10


record (20)

IDNameScaleOffsetUnits
0position_lat10semicircles
1position_long10semicircles
2altitude5500m
3heart_rate10bpm
4cadence10rpm
5distance1000m
6speed10000m/s
7power10watts
8compressed_speed_distance1000m/s,m
9grade1000percent
10resistance10
11time_from_course10000s
12cycle_length1000m
13temperature10C
17speed_1s160m/s
18cycles10cycles
19total_cycles10cycles
28compressed_accumulated_power10watts
29accumulated_power10watts
30left_right_balance10
31gps_accuracy10m
32vertical_speed10000m/s
33calories10kcal
39vertical_oscillation100mm
40stance_time_percent1000percent
41stance_time100ms
42activity_type10
43left_torque_effectiveness20percent
44right_torque_effectiveness20percent
45left_pedal_smoothness20percent
46right_pedal_smoothness20percent
47combined_pedal_smoothness20percent
48time1281280s
49stroke_type10
50zone10
51ball_speed1000m/s
52cadence2562560rpm
53fractional_cadence1280rpm
54total_hemoglobin_conc1000g/dL
55total_hemoglobin_conc_min1000g/dL
56total_hemoglobin_conc_max1000g/dL
57saturated_hemoglobin_percent100%
58saturated_hemoglobin_percent_min100%
59saturated_hemoglobin_percent_max100%
62device_index10
67left_pco10mm
68right_pco10mm
69left_power_phase0.71111110degrees
70left_power_phase_peak0.71111110degrees
71right_power_phase0.71111110degrees
72right_power_phase_peak0.71111110degrees
73enhanced_speed10000m/s
78enhanced_altitude5500m
81battery_soc20percent
82motor_power10watts
83vertical_ratio1000percent
84stance_time_balance1000percent
85step_length100mm
253timestamp10s


event (21)

IDNameScaleOffsetUnits
0event10
1event_type10
3data10
4event_group10
253timestamp10s


device_info (23)

IDNameScaleOffsetUnits
0device_index10
1device_type10
2manufacturer10
3serial_number10
4product10
5software_version10
6hardware_version10
7cum_operating_time10
10battery_voltage10
11battery_status10
20ant_transmission_type10
21ant_device_number10
22ant_network10
25source_type10
253timestamp10s


activity (34)

IDNameScaleOffsetUnits
0total_timer_time10000s
1num_sessions10
2type10
3event10
4event_type10
5local_timestamp10
6event_group10
253timestamp10s


file_creator (49)

IDNameScaleOffsetUnits
0software_version10
1hardware_version10


hrv (78)

IDNameScaleOffsetUnits
0time10000s


length (101)

IDNameScaleOffsetUnits
0event10
1event_type10
2start_time10
3total_elapsed_time10000s
4total_timer_time10000s
5total_strokes10strokes
6avg_speed10000m/s
7swim_stroke10swim_stroke
9avg_swimming_cadence10strokes/min
10event_group10
11total_calories10kcal
12length_type10
253timestamp10s
254message_index10


hr (132)

IDNameScaleOffsetUnits
0fractional_timestamp327680s
1time2562560s
6filtered_bpm10bpm
9event_timestamp10s
10event_timestamp_1210s
253timestamp10s


segment_lap (142)

IDNameScaleOffsetUnits
0event10
1event_type10
2start_time10
3start_position_lat10semicircles
4start_position_long10semicircles
5end_position_lat10semicircles
6end_position_long10semicircles
7total_elapsed_time10000s
8total_timer_time10000s
9total_distance1000m
10total_cycles10cycles
11total_calories10kcal
12total_fat_calories10kcal
13avg_speed10000m/s
14max_speed10000m/s
15avg_heart_rate10bpm
16max_heart_rate10bpm
17avg_cadence10rpm
18max_cadence10rpm
19avg_power10watts
20max_power10watts
21total_ascent10m
22total_descent10m
23sport10
24event_group10
25nec_lat10semicircles
26nec_long10semicircles
27swc_lat10semicircles
28swc_long10semicircles
29name10
30normalized_power10watts
31left_right_balance10
32sub_sport10
33total_work10J
58sport_event10
59avg_left_torque_effectiveness20percent
60avg_right_torque_effectiveness20percent
61avg_left_pedal_smoothness20percent
62avg_right_pedal_smoothness20percent
63avg_combined_pedal_smoothness20percent
64status10
65uuid10
66avg_fractional_cadence1280rpm
67max_fractional_cadence1280rpm
68total_fractional_cycles1280cycles
69front_gear_shift_count10
70rear_gear_shift_count10
71time_standing10000s
72stand_count10
73avg_left_pco10mm
74avg_right_pco10mm
75avg_left_power_phase0.71111110degrees
76avg_left_power_phase_peak0.71111110degrees
77avg_right_power_phase0.71111110degrees
78avg_right_power_phase_peak0.71111110degrees
79avg_power_position10watts
80max_power_position10watts
81avg_cadence_position10rpm
82max_cadence_position10rpm
253timestamp10s
254message_index10


field_description (206)

IDNameScaleOffsetUnits
0developer_data_index10
1field_definition_number10
2fit_base_type_id10
3field_name10
4array10
5components10
6scale10
7offset10
8units10
9bits10
10accumulate10
13fit_base_unit_id10
14native_mesg_num10
15native_field_num10


developer_data_id (207)

IDNameScaleOffsetUnits
0developer_id10
1application_id10
2manufacturer_id10
3developer_data_index10
4application_version10


dive_settings (258)

IDNameScaleOffsetUnits
0name10
1model10
2gf_low10percent
3gf_high10percent
4water_type10
5water_density10kg/m^3
6po2_warn1000percent
7po2_critical1000percent
8po2_deco1000percent
9safety_stop_enabled10
10bottom_depth10
11bottom_time10
12apnea_countdown_enabled10
13apnea_countdown_time10
14backlight_mode10
15backlight_brightness10
16backlight_timeout10
17repeat_dive_interval10s
18safety_stop_time10s
19heart_rate_source_type10
20heart_rate_source10
254message_index10


dive_gas (259)

IDNameScaleOffsetUnits
0helium_content10percent
1oxygen_content10percent
2status10
254message_index10


dive_alarm (262)

IDNameScaleOffsetUnits
0depth10000m
1time10s
2enabled10
3alarm_type10
4sound10
254message_index10


dive_summary (268)

IDNameScaleOffsetUnits
0reference_mesg10
1reference_index10
2avg_depth10000m
3max_depth10000m
4surface_interval10s
5start_cns10percent
6end_cns10percent
7start_n210percent
8end_n210percent
9o2_toxicity10OTUs
10dive_number10
11bottom_time10000s
253timestamp10s





FIT Definition Messages contained within the file

global_mesg_numnum_fieldsfield defnstotal_size
0 (file_id)6defn: 3; size: 4; type: 140 (serial_number)
defn: 4; size: 4; type: 134 (time_created)
defn: 1; size: 2; type: 132 (manufacturer)
defn: 2; size: 2; type: 132 (product)
defn: 5; size: 2; type: 132 (number)
defn: 0; size: 1; type: 0 (type)
15
18 (session)34defn: 253; size: 4; type: 134 (timestamp)
defn: 2; size: 4; type: 134 (start_time)
defn: 3; size: 4; type: 133 (start_position_lat)
defn: 4; size: 4; type: 133 (start_position_long)
defn: 7; size: 4; type: 134 (total_elapsed_time)
defn: 8; size: 4; type: 134 (total_timer_time)
defn: 9; size: 4; type: 134 (total_distance)
defn: 10; size: 4; type: 134 (total_cycles)
defn: 29; size: 4; type: 133 (nec_lat)
defn: 30; size: 4; type: 133 (nec_long)
defn: 31; size: 4; type: 133 (swc_lat)
defn: 32; size: 4; type: 133 (swc_long)
defn: 254; size: 2; type: 132 (message_index)
defn: 11; size: 2; type: 132 (total_calories)
defn: 13; size: 2; type: 132 (total_fat_calories)
defn: 14; size: 2; type: 132 (avg_speed)
defn: 15; size: 2; type: 132 (max_speed)
defn: 20; size: 2; type: 132 (avg_power)
defn: 21; size: 2; type: 132 (max_power)
defn: 22; size: 2; type: 132 (total_ascent)
defn: 23; size: 2; type: 132 (total_descent)
defn: 25; size: 2; type: 132 (first_lap_index)
defn: 26; size: 2; type: 132 (num_laps)
defn: 0; size: 1; type: 0 (event)
defn: 1; size: 1; type: 0 (event_type)
defn: 5; size: 1; type: 0 (sport)
defn: 6; size: 1; type: 0 (sub_sport)
defn: 16; size: 1; type: 2 (avg_heart_rate)
defn: 17; size: 1; type: 2 (max_heart_rate)
defn: 18; size: 1; type: 2 (avg_cadence)
defn: 19; size: 1; type: 2 (max_cadence)
defn: 24; size: 1; type: 2 (total_training_effect)
defn: 27; size: 1; type: 2 (event_group)
defn: 28; size: 1; type: 0 (trigger)
81
19 (lap)33defn: 253; size: 4; type: 134 (timestamp)
defn: 2; size: 4; type: 134 (start_time)
defn: 3; size: 4; type: 133 (start_position_lat)
defn: 4; size: 4; type: 133 (start_position_long)
defn: 5; size: 4; type: 133 (end_position_lat)
defn: 6; size: 4; type: 133 (end_position_long)
defn: 7; size: 4; type: 134 (total_elapsed_time)
defn: 8; size: 4; type: 134 (total_timer_time)
defn: 9; size: 4; type: 134 (total_distance)
defn: 10; size: 4; type: 134 (total_cycles)
defn: 27; size: 4; type: 133 (unknown)
defn: 28; size: 4; type: 133 (unknown)
defn: 29; size: 4; type: 133 (unknown)
defn: 30; size: 4; type: 133 (unknown)
defn: 254; size: 2; type: 132 (message_index)
defn: 11; size: 2; type: 132 (total_calories)
defn: 12; size: 2; type: 132 (total_fat_calories)
defn: 13; size: 2; type: 132 (avg_speed)
defn: 14; size: 2; type: 132 (max_speed)
defn: 19; size: 2; type: 132 (avg_power)
defn: 20; size: 2; type: 132 (max_power)
defn: 21; size: 2; type: 132 (total_ascent)
defn: 22; size: 2; type: 132 (total_descent)
defn: 0; size: 1; type: 0 (event)
defn: 1; size: 1; type: 0 (event_type)
defn: 15; size: 1; type: 2 (avg_heart_rate)
defn: 16; size: 1; type: 2 (max_heart_rate)
defn: 17; size: 1; type: 2 (avg_cadence)
defn: 18; size: 1; type: 2 (max_cadence)
defn: 23; size: 1; type: 0 (intensity)
defn: 24; size: 1; type: 0 (lap_trigger)
defn: 25; size: 1; type: 0 (sport)
defn: 26; size: 1; type: 2 (event_group)
84
20 (record)7defn: 253; size: 4; type: 134 (timestamp)
defn: 0; size: 4; type: 133 (position_lat)
defn: 1; size: 4; type: 133 (position_long)
defn: 5; size: 4; type: 134 (distance)
defn: 2; size: 2; type: 132 (altitude)
defn: 6; size: 2; type: 132 (speed)
defn: 3; size: 1; type: 2 (heart_rate)
21
21 (event)5defn: 253; size: 4; type: 134 (timestamp)
defn: 3; size: 4; type: 134 (data)
defn: 0; size: 1; type: 0 (event)
defn: 1; size: 1; type: 0 (event_type)
defn: 4; size: 1; type: 2 (event_group)
11
22 (unknown)10defn: 253; size: 4; type: 134 (unknown)
defn: 0; size: 1; type: 2 (unknown)
defn: 1; size: 1; type: 2 (unknown)
defn: 2; size: 1; type: 2 (unknown)
defn: 3; size: 1; type: 2 (unknown)
defn: 4; size: 1; type: 2 (unknown)
defn: 5; size: 1; type: 0 (unknown)
defn: 6; size: 1; type: 2 (unknown)
defn: 7; size: 1; type: 2 (unknown)
defn: 8; size: 1; type: 2 (unknown)
13
23 (device_info)15defn: 253; size: 4; type: 134 (timestamp)
defn: 3; size: 4; type: 140 (serial_number)
defn: 7; size: 4; type: 134 (cum_operating_time)
defn: 8; size: 4; type: 134 (unknown)
defn: 15; size: 4; type: 134 (unknown)
defn: 16; size: 4; type: 134 (unknown)
defn: 2; size: 2; type: 132 (manufacturer)
defn: 4; size: 2; type: 132 (product)
defn: 5; size: 2; type: 132 (software_version)
defn: 10; size: 2; type: 132 (battery_voltage)
defn: 0; size: 1; type: 2 (device_index)
defn: 1; size: 1; type: 2 (device_type)
defn: 6; size: 1; type: 2 (hardware_version)
defn: 9; size: 1; type: 2 (unknown)
defn: 11; size: 1; type: 2 (battery_status)
37
34 (activity)7defn: 253; size: 4; type: 134 (timestamp)
defn: 0; size: 4; type: 134 (total_timer_time)
defn: 1; size: 2; type: 132 (num_sessions)
defn: 2; size: 1; type: 0 (type)
defn: 3; size: 1; type: 0 (event)
defn: 4; size: 1; type: 0 (event_type)
defn: 6; size: 1; type: 2 (event_group)
14
49 (file_creator)2defn: 0; size: 2; type: 132 (software_version)
defn: 1; size: 1; type: 2 (hardware_version)
3
79 (unknown)9defn: 253; size: 4; type: 134 (unknown)
defn: 0; size: 2; type: 132 (unknown)
defn: 3; size: 2; type: 132 (unknown)
defn: 1; size: 1; type: 2 (unknown)
defn: 2; size: 1; type: 2 (unknown)
defn: 4; size: 1; type: 0 (unknown)
defn: 5; size: 1; type: 0 (unknown)
defn: 6; size: 1; type: 2 (unknown)
defn: 7; size: 1; type: 1 (unknown)
14



Messages found in file

file_idcount()