Geo-FIT
view release on metacpan or search on metacpan
lib/Geo/FIT.pm view on Meta::CPAN
254 => +{'name' => 'message_index', 'type_name' => 'message_index'},
1 => +{'name' => 'high_bpm', 'unit' => 'bpm'},
2 => +{'name' => 'calories', 'scale' => 10, 'unit' => 'kcal/min'},
3 => +{'name' => 'fat_calories', 'scale' => 10, 'unit' => 'kcal/min'},
},
'dive_settings' => +{
253 => +{'name' => 'timestamp', 'type_name' => 'date_time'},
254 => +{'name' => 'message_index', 'type_name' => 'message_index'},
0 => +{'name' => 'name'},
1 => +{'name' => 'model', 'type_name' => 'tissue_model_type'},
2 => +{'name' => 'gf_low', 'unit' => '%'},
3 => +{'name' => 'gf_high', 'unit' => '%'},
4 => +{'name' => 'water_type', 'type_name' => 'water_type'},
5 => +{'name' => 'water_density', 'unit' => 'kg/m^3'},
6 => +{'name' => 'po2_warn', 'scale' => 100, 'unit' => '%'},
7 => +{'name' => 'po2_critical', 'scale' => 100, 'unit' => '%'},
8 => +{'name' => 'po2_deco', 'scale' => 100, 'unit' => '%'},
9 => +{'name' => 'safety_stop_enabled', 'type_name' => 'bool'},
10 => +{'name' => 'bottom_depth'},
11 => +{'name' => 'bottom_time'},
12 => +{'name' => 'apnea_countdown_enabled', 'type_name' => 'bool'},
13 => +{'name' => 'apnea_countdown_time'},
14 => +{'name' => 'backlight_mode', 'type_name' => 'dive_backlight_mode'},
15 => +{'name' => 'backlight_brightness'},
16 => +{'name' => 'backlight_timeout', 'type_name' => 'backlight_timeout'},
17 => +{'name' => 'repeat_dive_interval', 'unit' => 's'},
18 => +{'name' => 'safety_stop_time', 'unit' => 's'},
19 => +{'name' => 'heart_rate_source_type', 'type_name' => 'source_type'},
20 => +{
'name' => 'heart_rate_source',
'switch' => +{
'_by' => 'heart_rate_source_type',
'antplus' => +{'name' => 'heart_rate_antplus_device_type', 'type_name' => 'antplus_device_type'},
'local' => +{'name' => 'heart_rate_local_device_type', 'type_name' => 'local_device_type'},
},
},
21 => +{ 'name' => 'travel_gas', 'type_name' => 'message_index' }, # Index of travel dive_gas message
22 => +{ 'name' => 'ccr_low_setpoint_switch_mode', 'type_name' => 'ccr_setpoint_switch_mode' }, # If low PO2 should be switched to automatically
23 => +{ 'name' => 'ccr_low_setpoint', 'scale' => 100 }, # Target PO2 when using low setpoint
24 => +{ 'name' => 'ccr_low_setpoint_depth', 'unit' => 'm', 'scale' => 1000 }, # Depth to switch to low setpoint in automatic mode
25 => +{ 'name' => 'ccr_high_setpoint_switch_mode', 'type' => 'ccr_setpoint_switch_mode' }, # If high PO2 should be switched to automatically
26 => +{ 'name' => 'ccr_high_setpoint', 'unit' => '%', 'scale' => 100 }, # Target PO2 when using high setpoint
27 => +{ 'name' => 'ccr_high_setpoint_depth', 'unit' => 'm', 'scale' => 1000 }, # Depth to switch to high setpoint in automatic mode
29 => +{ 'name' => 'gas_consumption_display', 'type_name' => 'gas_consumption_rate_type' }, # Type of gas consumption rate to display. Some values are only valid if tank volume is known.
30 => +{ 'name' => 'up_key_enabled', 'type_name' => 'bool' }, # Indicates whether the up key is enabled during dives
35 => +{ 'name' => 'dive_sounds', 'type_name' => 'tone' }, # Sounds and vibration enabled or disabled in-dive
36 => +{ 'name' => 'last_stop_multiple', 'scale' => 10 }, # Usually 1.0/1.5/2.0 representing 3/4.5/6m or 10/15/20ft
37 => +{ 'name' => 'no_fly_time_mode', 'type_name' => 'no_fly_time_mode' }, # Indicates which guidelines to use for no-fly surface interval.
},
'dive_alarm' => +{
254 => +{'name' => 'message_index', 'type_name' => 'message_index'},
0 => +{'name' => 'depth', 'scale' => 1000, 'unit' => 'm'},
1 => +{'name' => 'time', 'unit' => 's'},
2 => +{'name' => 'enabled', 'type_name' => 'bool'},
3 => +{'name' => 'alarm_type', 'type_name' => 'dive_alarm_type'},
4 => +{'name' => 'sound', 'type_name' => 'tone'},
5 => +{'name' => 'dive_types', 'type_name' => 'sub_sport'},
6 => +{ 'name' => 'id' }, # Alarm ID
7 => +{ 'name' => 'popup_enabled', 'type_name' => 'bool' }, # Show a visible pop-up for this alarm
8 => +{ 'name' => 'trigger_on_descent', 'type_name' => 'bool' }, # Trigger the alarm on descent
9 => +{ 'name' => 'trigger_on_ascent', 'type_name' => 'bool' }, # Trigger the alarm on ascent
10 => +{ 'name' => 'repeating', 'type_name' => 'bool' }, # Repeat alarm each time threshold is crossed?
11 => +{ 'name' => 'speed', 'scale' => 1000 }, # Ascent/descent rate (mps) setting for speed type alarms
},
'dive_apnea_alarm' => +{
254 => +{'name' => 'message_index', 'type_name' => 'message_index'},
0 => +{ 'name' => 'depth', 'unit' => 'm', 'scale' => 1000 }, # Depth setting (m) for depth type alarms
1 => +{ 'name' => 'time', 'unit' => 's' }, # Time setting (s) for time type alarms
2 => +{ 'name' => 'enabled', 'type_name' => 'bool' }, # Enablement flag
3 => +{ 'name' => 'alarm_type', 'type_name' => 'dive_alarm_type' }, # Alarm type setting
4 => +{ 'name' => 'sound', 'type_name' => 'tone' }, # Tone and Vibe setting for the alarm.
5 => +{ 'name' => 'dive_types', 'type_name' => 'sub_sport' }, # Dive types the alarm will trigger on
6 => +{ 'name' => 'id' }, # Alarm ID
7 => +{ 'name' => 'popup_enabled', 'type_name' => 'bool' }, # Show a visible pop-up for this alarm
8 => +{ 'name' => 'trigger_on_descent', 'type_name' => 'bool' }, # Trigger the alarm on descent
9 => +{ 'name' => 'trigger_on_ascent', 'type_name' => 'bool' }, # Trigger the alarm on ascent
10 => +{ 'name' => 'repeating', 'type_name' => 'bool' }, # Repeat alarm each time threshold is crossed?
11 => +{ 'name' => 'speed', 'unit' => 'mps', 'scale' => 1000 }, # Ascent/descent rate (mps) setting for speed type alarms
},
'dive_gas' => +{
254 => +{'name' => 'message_index', 'type_name' => 'message_index'},
0 => +{'name' => 'helium_content', 'unit' => '%'},
1 => +{'name' => 'oxygen_content', 'unit' => '%'},
2 => +{'name' => 'status', 'type_name' => 'dive_gas_status'},
3 => +{'name' => 'mode', 'type_name' => 'dive_gas_mode'},
},
'goal' => +{ # begins === Goals file messages === section
254 => +{'name' => 'message_index', 'type_name' => 'message_index'},
0 => +{'name' => 'sport', 'type_name' => 'sport'},
1 => +{'name' => 'sub_sport', 'type_name' => 'sub_sport'},
2 => +{'name' => 'start_date', 'type_name' => 'date_time'},
3 => +{'name' => 'end_date', 'type_name' => 'date_time'},
4 => +{'name' => 'type', 'type_name' => 'goal'},
5 => +{'name' => 'value'},
6 => +{'name' => 'repeat', 'type_name' => 'bool'},
7 => +{'name' => 'target_value'},
8 => +{'name' => 'recurrence', 'type_name' => 'goal_recurrence'},
9 => +{'name' => 'recurrence_value'},
10 => +{'name' => 'enabled', 'type_name' => 'bool'},
11 => +{'name' => 'source', 'type_name' => 'goal_source'},
},
'activity' => +{ # begins === Activity file messages === section
253 => +{'name' => 'timestamp', 'type_name' => 'date_time'},
0 => +{'name' => 'total_timer_time', 'scale' => 1000, 'unit' => 's'},
1 => +{'name' => 'num_sessions'},
2 => +{'name' => 'type', 'type_name' => 'activity'},
3 => +{'name' => 'event', 'type_name' => 'event'},
4 => +{'name' => 'event_type', 'type_name' => 'event_type'},
5 => +{'name' => 'local_timestamp', 'type_name' => 'local_date_time'},
6 => +{'name' => 'event_group'},
},
'session' => +{
254 => +{'name' => 'message_index', 'type_name' => 'message_index'},
253 => +{'name' => 'timestamp', 'type_name' => 'date_time'},
0 => +{'name' => 'event', 'type_name' => 'event'},
1 => +{'name' => 'event_type', 'type_name' => 'event_type'},
2 => +{'name' => 'start_time', 'type_name' => 'date_time'},
3 => +{'name' => 'start_position_lat', 'unit' => 'semicircles'},
4 => +{'name' => 'start_position_long', 'unit' => 'semicircles'},
5 => +{'name' => 'sport', 'type_name' => 'sport'},
6 => +{'name' => 'sub_sport', 'type_name' => 'sub_sport'},
7 => +{'name' => 'total_elapsed_time', 'scale' => 1000, 'unit' => 's'},
8 => +{'name' => 'total_timer_time', 'scale' => 1000, 'unit' => 's'},
9 => +{'name' => 'total_distance', 'scale' => 100, 'unit' => 'm'},
10 => +{
'name' => 'total_cycles', 'unit' => 'cycles',
'switch' => +{
'_by' => 'sport',
( run in 0.630 second using v1.01-cache-2.11-cpan-364913b4093 )