#![cfg_attr(rustfmt, rustfmt_skip)]
use crate::profile::ProfileType;
use crate::profile::typedef::{FitBaseType, MesgNum};
use crate::proto::*;
pub(crate) const MAX_COMPONENT_BITS: usize = 240;
const FR_DEF: FieldReference = FieldReference { num: 0, name: "", base_type: FitBaseType(u8::MAX), profile_type: ProfileType(u16::MAX), array: false, accumulate: false, scale: 1.0, offset: 0.0, units: "", components: &[], sub_fields: &[] };
const SF_DEF: SubField = SubField { name: "", profile_type: ProfileType(u16::MAX), scale: 1.0, offset: 0.0, units: "", components: &[], maps: &[] };
pub const fn field_reference<'a>(mesg_num: MesgNum, field_num: u8) -> Option<FieldReference<'a>> {
match mesg_num {
MesgNum::FILE_ID => { match field_num {
0 => Some(FieldReference { name: "type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
1 => Some(FieldReference { name: "manufacturer", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
2 => Some(FieldReference { name: "product", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 263 },
], ..SF_DEF },
SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 1 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 15 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 13 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 89 },
], ..SF_DEF }
], ..FR_DEF }),
3 => Some(FieldReference { name: "serial_number", num: 3, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::UINT32Z, ..FR_DEF }),
4 => Some(FieldReference { name: "time_created", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
5 => Some(FieldReference { name: "number", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
8 => Some(FieldReference { name: "product_name", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::FILE_CREATOR => { match field_num {
0 => Some(FieldReference { name: "software_version", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
1 => Some(FieldReference { name: "hardware_version", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
_ => None,
}},
MesgNum::TIMESTAMP_CORRELATION => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "fractional_timestamp", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "system_timestamp", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
2 => Some(FieldReference { name: "fractional_system_timestamp", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
3 => Some(FieldReference { name: "local_timestamp", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, units: "s", ..FR_DEF }),
4 => Some(FieldReference { name: "timestamp_ms", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
5 => Some(FieldReference { name: "system_timestamp_ms", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
_ => None,
}},
MesgNum::SOFTWARE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
3 => Some(FieldReference { name: "version", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
5 => Some(FieldReference { name: "part_number", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::SLAVE_DEVICE => { match field_num {
0 => Some(FieldReference { name: "manufacturer", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
1 => Some(FieldReference { name: "product", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 263 },
], ..SF_DEF },
SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 1 },
SubFieldMap { ref_field_num: 0 , ref_field_value: 15 },
SubFieldMap { ref_field_num: 0 , ref_field_value: 13 },
SubFieldMap { ref_field_num: 0 , ref_field_value: 89 },
], ..SF_DEF }
], ..FR_DEF }),
_ => None,
}},
MesgNum::CAPABILITIES => { match field_num {
0 => Some(FieldReference { name: "languages", num: 0, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, array: true , ..FR_DEF }),
1 => Some(FieldReference { name: "sports", num: 1, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::SPORT_BITS_0, array: true , ..FR_DEF }),
21 => Some(FieldReference { name: "workouts_supported", num: 21, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::WORKOUT_CAPABILITIES, ..FR_DEF }),
23 => Some(FieldReference { name: "connectivity_supported", num: 23, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::CONNECTIVITY_CAPABILITIES, ..FR_DEF }),
_ => None,
}},
MesgNum::FILE_CAPABILITIES => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
1 => Some(FieldReference { name: "flags", num: 1, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::FILE_FLAGS, ..FR_DEF }),
2 => Some(FieldReference { name: "directory", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
3 => Some(FieldReference { name: "max_count", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
4 => Some(FieldReference { name: "max_size", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "bytes", ..FR_DEF }),
_ => None,
}},
MesgNum::MESG_CAPABILITIES => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "file", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
1 => Some(FieldReference { name: "mesg_num", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
2 => Some(FieldReference { name: "count_type", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::MESG_COUNT, ..FR_DEF }),
3 => Some(FieldReference { name: "count", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
SubField { name: "num_per_file", profile_type: ProfileType::UINT16, maps: &[
SubFieldMap { ref_field_num: 2 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "max_per_file", profile_type: ProfileType::UINT16, maps: &[
SubFieldMap { ref_field_num: 2 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "max_per_file_type", profile_type: ProfileType::UINT16, maps: &[
SubFieldMap { ref_field_num: 2 , ref_field_value: 2 },
], ..SF_DEF }
], ..FR_DEF }),
_ => None,
}},
MesgNum::FIELD_CAPABILITIES => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "file", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
1 => Some(FieldReference { name: "mesg_num", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
2 => Some(FieldReference { name: "field_num", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
3 => Some(FieldReference { name: "count", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
_ => None,
}},
MesgNum::DEVICE_SETTINGS => { match field_num {
0 => Some(FieldReference { name: "active_time_zone", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
1 => Some(FieldReference { name: "utc_offset", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
2 => Some(FieldReference { name: "time_offset", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , units: "s", ..FR_DEF }),
4 => Some(FieldReference { name: "time_mode", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::TIME_MODE, array: true , ..FR_DEF }),
5 => Some(FieldReference { name: "time_zone_offset", num: 5, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, array: true , scale: 4.0, units: "hr", ..FR_DEF }),
12 => Some(FieldReference { name: "backlight_mode", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::BACKLIGHT_MODE, ..FR_DEF }),
36 => Some(FieldReference { name: "activity_tracker_enabled", num: 36, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
39 => Some(FieldReference { name: "clock_time", num: 39, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
40 => Some(FieldReference { name: "pages_enabled", num: 40, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , ..FR_DEF }),
46 => Some(FieldReference { name: "move_alert_enabled", num: 46, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
47 => Some(FieldReference { name: "date_mode", num: 47, base_type: FitBaseType::ENUM, profile_type: ProfileType::DATE_MODE, ..FR_DEF }),
55 => Some(FieldReference { name: "display_orientation", num: 55, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_ORIENTATION, ..FR_DEF }),
56 => Some(FieldReference { name: "mounting_side", num: 56, base_type: FitBaseType::ENUM, profile_type: ProfileType::SIDE, ..FR_DEF }),
57 => Some(FieldReference { name: "default_page", num: 57, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , ..FR_DEF }),
58 => Some(FieldReference { name: "autosync_min_steps", num: 58, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "steps", ..FR_DEF }),
59 => Some(FieldReference { name: "autosync_min_time", num: 59, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "minutes", ..FR_DEF }),
80 => Some(FieldReference { name: "lactate_threshold_autodetect_enabled", num: 80, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
86 => Some(FieldReference { name: "ble_auto_upload_enabled", num: 86, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
89 => Some(FieldReference { name: "auto_sync_frequency", num: 89, base_type: FitBaseType::ENUM, profile_type: ProfileType::AUTO_SYNC_FREQUENCY, ..FR_DEF }),
90 => Some(FieldReference { name: "auto_activity_detect", num: 90, base_type: FitBaseType::UINT32, profile_type: ProfileType::AUTO_ACTIVITY_DETECT, ..FR_DEF }),
94 => Some(FieldReference { name: "number_of_screens", num: 94, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
95 => Some(FieldReference { name: "smart_notification_display_orientation", num: 95, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_ORIENTATION, ..FR_DEF }),
134 => Some(FieldReference { name: "tap_interface", num: 134, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWITCH, ..FR_DEF }),
174 => Some(FieldReference { name: "tap_sensitivity", num: 174, base_type: FitBaseType::ENUM, profile_type: ProfileType::TAP_SENSITIVITY, ..FR_DEF }),
_ => None,
}},
MesgNum::USER_PROFILE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "friendly_name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
1 => Some(FieldReference { name: "gender", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::GENDER, ..FR_DEF }),
2 => Some(FieldReference { name: "age", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "years", ..FR_DEF }),
3 => Some(FieldReference { name: "height", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
4 => Some(FieldReference { name: "weight", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "kg", ..FR_DEF }),
5 => Some(FieldReference { name: "language", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::LANGUAGE, ..FR_DEF }),
6 => Some(FieldReference { name: "elev_setting", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
7 => Some(FieldReference { name: "weight_setting", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
8 => Some(FieldReference { name: "resting_heart_rate", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
9 => Some(FieldReference { name: "default_max_running_heart_rate", num: 9, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
10 => Some(FieldReference { name: "default_max_biking_heart_rate", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
11 => Some(FieldReference { name: "default_max_heart_rate", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
12 => Some(FieldReference { name: "hr_setting", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_HEART, ..FR_DEF }),
13 => Some(FieldReference { name: "speed_setting", num: 13, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
14 => Some(FieldReference { name: "dist_setting", num: 14, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
16 => Some(FieldReference { name: "power_setting", num: 16, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_POWER, ..FR_DEF }),
17 => Some(FieldReference { name: "activity_class", num: 17, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_CLASS, ..FR_DEF }),
18 => Some(FieldReference { name: "position_setting", num: 18, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_POSITION, ..FR_DEF }),
21 => Some(FieldReference { name: "temperature_setting", num: 21, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
22 => Some(FieldReference { name: "local_id", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::USER_LOCAL_ID, ..FR_DEF }),
23 => Some(FieldReference { name: "global_id", num: 23, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , ..FR_DEF }),
28 => Some(FieldReference { name: "wake_time", num: 28, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCALTIME_INTO_DAY, ..FR_DEF }),
29 => Some(FieldReference { name: "sleep_time", num: 29, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCALTIME_INTO_DAY, ..FR_DEF }),
30 => Some(FieldReference { name: "height_setting", num: 30, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
31 => Some(FieldReference { name: "user_running_step_length", num: 31, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m", ..FR_DEF }),
32 => Some(FieldReference { name: "user_walking_step_length", num: 32, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m", ..FR_DEF }),
47 => Some(FieldReference { name: "depth_setting", num: 47, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
49 => Some(FieldReference { name: "dive_count", num: 49, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
_ => None,
}},
MesgNum::HRM_PROFILE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "enabled", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
1 => Some(FieldReference { name: "hrm_ant_id", num: 1, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
2 => Some(FieldReference { name: "log_hrv", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
3 => Some(FieldReference { name: "hrm_ant_id_trans_type", num: 3, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
_ => None,
}},
MesgNum::SDM_PROFILE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "enabled", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
1 => Some(FieldReference { name: "sdm_ant_id", num: 1, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
2 => Some(FieldReference { name: "sdm_cal_factor", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
3 => Some(FieldReference { name: "odometer", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
4 => Some(FieldReference { name: "speed_source", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
5 => Some(FieldReference { name: "sdm_ant_id_trans_type", num: 5, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
7 => Some(FieldReference { name: "odometer_rollover", num: 7, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
_ => None,
}},
MesgNum::BIKE_PROFILE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
1 => Some(FieldReference { name: "sport", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
2 => Some(FieldReference { name: "sub_sport", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
3 => Some(FieldReference { name: "odometer", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
4 => Some(FieldReference { name: "bike_spd_ant_id", num: 4, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
5 => Some(FieldReference { name: "bike_cad_ant_id", num: 5, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
6 => Some(FieldReference { name: "bike_spdcad_ant_id", num: 6, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
7 => Some(FieldReference { name: "bike_power_ant_id", num: 7, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
8 => Some(FieldReference { name: "custom_wheelsize", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m", ..FR_DEF }),
9 => Some(FieldReference { name: "auto_wheelsize", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m", ..FR_DEF }),
10 => Some(FieldReference { name: "bike_weight", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "kg", ..FR_DEF }),
11 => Some(FieldReference { name: "power_cal_factor", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
12 => Some(FieldReference { name: "auto_wheel_cal", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
13 => Some(FieldReference { name: "auto_power_zero", num: 13, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
14 => Some(FieldReference { name: "id", num: 14, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
15 => Some(FieldReference { name: "spd_enabled", num: 15, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
16 => Some(FieldReference { name: "cad_enabled", num: 16, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
17 => Some(FieldReference { name: "spdcad_enabled", num: 17, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
18 => Some(FieldReference { name: "power_enabled", num: 18, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
19 => Some(FieldReference { name: "crank_length", num: 19, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, offset: -110.0,units: "mm", ..FR_DEF }),
20 => Some(FieldReference { name: "enabled", num: 20, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
21 => Some(FieldReference { name: "bike_spd_ant_id_trans_type", num: 21, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
22 => Some(FieldReference { name: "bike_cad_ant_id_trans_type", num: 22, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
23 => Some(FieldReference { name: "bike_spdcad_ant_id_trans_type", num: 23, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
24 => Some(FieldReference { name: "bike_power_ant_id_trans_type", num: 24, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
37 => Some(FieldReference { name: "odometer_rollover", num: 37, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
38 => Some(FieldReference { name: "front_gear_num", num: 38, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
39 => Some(FieldReference { name: "front_gear", num: 39, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, array: true , ..FR_DEF }),
40 => Some(FieldReference { name: "rear_gear_num", num: 40, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
41 => Some(FieldReference { name: "rear_gear", num: 41, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, array: true , ..FR_DEF }),
44 => Some(FieldReference { name: "shimano_di2_enabled", num: 44, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
_ => None,
}},
MesgNum::CONNECTIVITY => { match field_num {
0 => Some(FieldReference { name: "bluetooth_enabled", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
1 => Some(FieldReference { name: "bluetooth_le_enabled", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
2 => Some(FieldReference { name: "ant_enabled", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
3 => Some(FieldReference { name: "name", num: 3, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
4 => Some(FieldReference { name: "live_tracking_enabled", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
5 => Some(FieldReference { name: "weather_conditions_enabled", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
6 => Some(FieldReference { name: "weather_alerts_enabled", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
7 => Some(FieldReference { name: "auto_activity_upload_enabled", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
8 => Some(FieldReference { name: "course_download_enabled", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
9 => Some(FieldReference { name: "workout_download_enabled", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
10 => Some(FieldReference { name: "gps_ephemeris_download_enabled", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
11 => Some(FieldReference { name: "incident_detection_enabled", num: 11, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
12 => Some(FieldReference { name: "grouptrack_enabled", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
_ => None,
}},
MesgNum::WATCHFACE_SETTINGS => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "mode", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::WATCHFACE_MODE, ..FR_DEF }),
1 => Some(FieldReference { name: "layout", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, sub_fields: &[
SubField { name: "digital_layout", profile_type: ProfileType::DIGITAL_WATCHFACE_LAYOUT, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "analog_layout", profile_type: ProfileType::ANALOG_WATCHFACE_LAYOUT, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 1 },
], ..SF_DEF }
], ..FR_DEF }),
_ => None,
}},
MesgNum::OHR_SETTINGS => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "enabled", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWITCH, ..FR_DEF }),
_ => None,
}},
MesgNum::TIME_IN_ZONE => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "reference_mesg", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
1 => Some(FieldReference { name: "reference_index", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
2 => Some(FieldReference { name: "time_in_hr_zone", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
3 => Some(FieldReference { name: "time_in_speed_zone", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
4 => Some(FieldReference { name: "time_in_cadence_zone", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
5 => Some(FieldReference { name: "time_in_power_zone", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
6 => Some(FieldReference { name: "hr_zone_high_boundary", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "bpm", ..FR_DEF }),
7 => Some(FieldReference { name: "speed_zone_high_boundary", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 1000.0, units: "m/s", ..FR_DEF }),
8 => Some(FieldReference { name: "cadence_zone_high_boundary", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "rpm", ..FR_DEF }),
9 => Some(FieldReference { name: "power_zone_high_boundary", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "watts", ..FR_DEF }),
10 => Some(FieldReference { name: "hr_calc_type", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::HR_ZONE_CALC, ..FR_DEF }),
11 => Some(FieldReference { name: "max_heart_rate", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
12 => Some(FieldReference { name: "resting_heart_rate", num: 12, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
13 => Some(FieldReference { name: "threshold_heart_rate", num: 13, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
14 => Some(FieldReference { name: "pwr_calc_type", num: 14, base_type: FitBaseType::ENUM, profile_type: ProfileType::PWR_ZONE_CALC, ..FR_DEF }),
15 => Some(FieldReference { name: "functional_threshold_power", num: 15, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
_ => None,
}},
MesgNum::ZONES_TARGET => { match field_num {
1 => Some(FieldReference { name: "max_heart_rate", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
2 => Some(FieldReference { name: "threshold_heart_rate", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
3 => Some(FieldReference { name: "functional_threshold_power", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
5 => Some(FieldReference { name: "hr_calc_type", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::HR_ZONE_CALC, ..FR_DEF }),
7 => Some(FieldReference { name: "pwr_calc_type", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::PWR_ZONE_CALC, ..FR_DEF }),
_ => None,
}},
MesgNum::SPORT => { match field_num {
0 => Some(FieldReference { name: "sport", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
1 => Some(FieldReference { name: "sub_sport", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
3 => Some(FieldReference { name: "name", num: 3, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::HR_ZONE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
1 => Some(FieldReference { name: "high_bpm", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
2 => Some(FieldReference { name: "name", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::SPEED_ZONE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "high_value", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
1 => Some(FieldReference { name: "name", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::CADENCE_ZONE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "high_value", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", ..FR_DEF }),
1 => Some(FieldReference { name: "name", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::POWER_ZONE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
1 => Some(FieldReference { name: "high_value", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
2 => Some(FieldReference { name: "name", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::MET_ZONE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
1 => Some(FieldReference { name: "high_bpm", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
2 => Some(FieldReference { name: "calories", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "kcal / min", ..FR_DEF }),
3 => Some(FieldReference { name: "fat_calories", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, units: "kcal / min", ..FR_DEF }),
_ => None,
}},
MesgNum::TRAINING_SETTINGS => { match field_num {
31 => Some(FieldReference { name: "target_distance", num: 31, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
32 => Some(FieldReference { name: "target_speed", num: 32, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
33 => Some(FieldReference { name: "target_time", num: 33, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
153 => Some(FieldReference { name: "precise_target_speed", num: 153, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000000.0, units: "m/s", ..FR_DEF }),
_ => None,
}},
MesgNum::DIVE_SETTINGS => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
1 => Some(FieldReference { name: "model", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::TISSUE_MODEL_TYPE, ..FR_DEF }),
2 => Some(FieldReference { name: "gf_low", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
3 => Some(FieldReference { name: "gf_high", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
4 => Some(FieldReference { name: "water_type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::WATER_TYPE, ..FR_DEF }),
5 => Some(FieldReference { name: "water_density", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kg/m^3", ..FR_DEF }),
6 => Some(FieldReference { name: "po2_warn", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
7 => Some(FieldReference { name: "po2_critical", num: 7, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
8 => Some(FieldReference { name: "po2_deco", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
9 => Some(FieldReference { name: "safety_stop_enabled", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
10 => Some(FieldReference { name: "bottom_depth", num: 10, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
11 => Some(FieldReference { name: "bottom_time", num: 11, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
12 => Some(FieldReference { name: "apnea_countdown_enabled", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
13 => Some(FieldReference { name: "apnea_countdown_time", num: 13, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
14 => Some(FieldReference { name: "backlight_mode", num: 14, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_BACKLIGHT_MODE, ..FR_DEF }),
15 => Some(FieldReference { name: "backlight_brightness", num: 15, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
16 => Some(FieldReference { name: "backlight_timeout", num: 16, base_type: FitBaseType::UINT8, profile_type: ProfileType::BACKLIGHT_TIMEOUT, ..FR_DEF }),
17 => Some(FieldReference { name: "repeat_dive_interval", num: 17, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
18 => Some(FieldReference { name: "safety_stop_time", num: 18, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
19 => Some(FieldReference { name: "heart_rate_source_type", num: 19, base_type: FitBaseType::ENUM, profile_type: ProfileType::SOURCE_TYPE, ..FR_DEF }),
20 => Some(FieldReference { name: "heart_rate_source", num: 20, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, sub_fields: &[
SubField { name: "heart_rate_antplus_device_type", profile_type: ProfileType::ANTPLUS_DEVICE_TYPE, maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "heart_rate_local_device_type", profile_type: ProfileType::LOCAL_DEVICE_TYPE, maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 5 },
], ..SF_DEF }
], ..FR_DEF }),
21 => Some(FieldReference { name: "travel_gas", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
22 => Some(FieldReference { name: "ccr_low_setpoint_switch_mode", num: 22, base_type: FitBaseType::ENUM, profile_type: ProfileType::CCR_SETPOINT_SWITCH_MODE, ..FR_DEF }),
23 => Some(FieldReference { name: "ccr_low_setpoint", num: 23, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
24 => Some(FieldReference { name: "ccr_low_setpoint_depth", num: 24, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
25 => Some(FieldReference { name: "ccr_high_setpoint_switch_mode", num: 25, base_type: FitBaseType::ENUM, profile_type: ProfileType::CCR_SETPOINT_SWITCH_MODE, ..FR_DEF }),
26 => Some(FieldReference { name: "ccr_high_setpoint", num: 26, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
27 => Some(FieldReference { name: "ccr_high_setpoint_depth", num: 27, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
29 => Some(FieldReference { name: "gas_consumption_display", num: 29, base_type: FitBaseType::ENUM, profile_type: ProfileType::GAS_CONSUMPTION_RATE_TYPE, ..FR_DEF }),
30 => Some(FieldReference { name: "up_key_enabled", num: 30, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
35 => Some(FieldReference { name: "dive_sounds", num: 35, base_type: FitBaseType::ENUM, profile_type: ProfileType::TONE, ..FR_DEF }),
36 => Some(FieldReference { name: "last_stop_multiple", num: 36, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, ..FR_DEF }),
37 => Some(FieldReference { name: "no_fly_time_mode", num: 37, base_type: FitBaseType::ENUM, profile_type: ProfileType::NO_FLY_TIME_MODE, ..FR_DEF }),
_ => None,
}},
MesgNum::DIVE_ALARM => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "depth", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
1 => Some(FieldReference { name: "time", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "s", ..FR_DEF }),
2 => Some(FieldReference { name: "enabled", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
3 => Some(FieldReference { name: "alarm_type", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_ALARM_TYPE, ..FR_DEF }),
4 => Some(FieldReference { name: "sound", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::TONE, ..FR_DEF }),
5 => Some(FieldReference { name: "dive_types", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, array: true , ..FR_DEF }),
6 => Some(FieldReference { name: "id", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
7 => Some(FieldReference { name: "popup_enabled", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
8 => Some(FieldReference { name: "trigger_on_descent", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
9 => Some(FieldReference { name: "trigger_on_ascent", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
10 => Some(FieldReference { name: "repeating", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
11 => Some(FieldReference { name: "speed", num: 11, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "mps", ..FR_DEF }),
_ => None,
}},
MesgNum::DIVE_APNEA_ALARM => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "depth", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
1 => Some(FieldReference { name: "time", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "s", ..FR_DEF }),
2 => Some(FieldReference { name: "enabled", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
3 => Some(FieldReference { name: "alarm_type", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_ALARM_TYPE, ..FR_DEF }),
4 => Some(FieldReference { name: "sound", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::TONE, ..FR_DEF }),
5 => Some(FieldReference { name: "dive_types", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, array: true , ..FR_DEF }),
6 => Some(FieldReference { name: "id", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
7 => Some(FieldReference { name: "popup_enabled", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
8 => Some(FieldReference { name: "trigger_on_descent", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
9 => Some(FieldReference { name: "trigger_on_ascent", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
10 => Some(FieldReference { name: "repeating", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
11 => Some(FieldReference { name: "speed", num: 11, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "mps", ..FR_DEF }),
_ => None,
}},
MesgNum::DIVE_GAS => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "helium_content", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
1 => Some(FieldReference { name: "oxygen_content", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
2 => Some(FieldReference { name: "status", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_GAS_STATUS, ..FR_DEF }),
3 => Some(FieldReference { name: "mode", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::DIVE_GAS_MODE, ..FR_DEF }),
_ => None,
}},
MesgNum::GOAL => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "sport", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
1 => Some(FieldReference { name: "sub_sport", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
2 => Some(FieldReference { name: "start_date", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
3 => Some(FieldReference { name: "end_date", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
4 => Some(FieldReference { name: "type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::GOAL, ..FR_DEF }),
5 => Some(FieldReference { name: "value", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
6 => Some(FieldReference { name: "repeat", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
7 => Some(FieldReference { name: "target_value", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
8 => Some(FieldReference { name: "recurrence", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::GOAL_RECURRENCE, ..FR_DEF }),
9 => Some(FieldReference { name: "recurrence_value", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
10 => Some(FieldReference { name: "enabled", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
11 => Some(FieldReference { name: "source", num: 11, base_type: FitBaseType::ENUM, profile_type: ProfileType::GOAL_SOURCE, ..FR_DEF }),
_ => None,
}},
MesgNum::ACTIVITY => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "total_timer_time", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "num_sessions", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
2 => Some(FieldReference { name: "type", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY, ..FR_DEF }),
3 => Some(FieldReference { name: "event", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
4 => Some(FieldReference { name: "event_type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
5 => Some(FieldReference { name: "local_timestamp", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, ..FR_DEF }),
6 => Some(FieldReference { name: "event_group", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
_ => None,
}},
MesgNum::SESSION => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
2 => Some(FieldReference { name: "start_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
3 => Some(FieldReference { name: "start_position_lat", num: 3, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
4 => Some(FieldReference { name: "start_position_long", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
5 => Some(FieldReference { name: "sport", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
6 => Some(FieldReference { name: "sub_sport", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
7 => Some(FieldReference { name: "total_elapsed_time", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
8 => Some(FieldReference { name: "total_timer_time", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
9 => Some(FieldReference { name: "total_distance", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
10 => Some(FieldReference { name: "total_cycles", num: 10, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "cycles", sub_fields: &[
SubField { name: "total_strides", profile_type: ProfileType::UINT32, units: "strides", maps: &[
SubFieldMap { ref_field_num: 5 , ref_field_value: 1 },
SubFieldMap { ref_field_num: 5 , ref_field_value: 11 },
], ..SF_DEF },
SubField { name: "total_strokes", profile_type: ProfileType::UINT32, units: "strokes", maps: &[
SubFieldMap { ref_field_num: 5 , ref_field_value: 2 },
SubFieldMap { ref_field_num: 5 , ref_field_value: 5 },
SubFieldMap { ref_field_num: 5 , ref_field_value: 15 },
SubFieldMap { ref_field_num: 5 , ref_field_value: 37 },
], ..SF_DEF }
], ..FR_DEF }),
11 => Some(FieldReference { name: "total_calories", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
13 => Some(FieldReference { name: "total_fat_calories", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
14 => Some(FieldReference { name: "avg_speed", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
Component { field_num: 124 , scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
15 => Some(FieldReference { name: "max_speed", num: 15, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
Component { field_num: 125 , scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
16 => Some(FieldReference { name: "avg_heart_rate", num: 16, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
17 => Some(FieldReference { name: "max_heart_rate", num: 17, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
18 => Some(FieldReference { name: "avg_cadence", num: 18, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", sub_fields: &[
SubField { name: "avg_running_cadence", profile_type: ProfileType::UINT8, units: "strides/min", maps: &[
SubFieldMap { ref_field_num: 5 , ref_field_value: 1 },
], ..SF_DEF }
], ..FR_DEF }),
19 => Some(FieldReference { name: "max_cadence", num: 19, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", sub_fields: &[
SubField { name: "max_running_cadence", profile_type: ProfileType::UINT8, units: "strides/min", maps: &[
SubFieldMap { ref_field_num: 5 , ref_field_value: 1 },
], ..SF_DEF }
], ..FR_DEF }),
20 => Some(FieldReference { name: "avg_power", num: 20, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
21 => Some(FieldReference { name: "max_power", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
22 => Some(FieldReference { name: "total_ascent", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
23 => Some(FieldReference { name: "total_descent", num: 23, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
24 => Some(FieldReference { name: "total_training_effect", num: 24, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, ..FR_DEF }),
25 => Some(FieldReference { name: "first_lap_index", num: 25, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
26 => Some(FieldReference { name: "num_laps", num: 26, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
27 => Some(FieldReference { name: "event_group", num: 27, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
28 => Some(FieldReference { name: "trigger", num: 28, base_type: FitBaseType::ENUM, profile_type: ProfileType::SESSION_TRIGGER, ..FR_DEF }),
29 => Some(FieldReference { name: "nec_lat", num: 29, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
30 => Some(FieldReference { name: "nec_long", num: 30, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
31 => Some(FieldReference { name: "swc_lat", num: 31, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
32 => Some(FieldReference { name: "swc_long", num: 32, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
33 => Some(FieldReference { name: "num_lengths", num: 33, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "lengths", ..FR_DEF }),
34 => Some(FieldReference { name: "normalized_power", num: 34, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
35 => Some(FieldReference { name: "training_stress_score", num: 35, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "tss", ..FR_DEF }),
36 => Some(FieldReference { name: "intensity_factor", num: 36, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "if", ..FR_DEF }),
37 => Some(FieldReference { name: "left_right_balance", num: 37, base_type: FitBaseType::UINT16, profile_type: ProfileType::LEFT_RIGHT_BALANCE_100, ..FR_DEF }),
38 => Some(FieldReference { name: "end_position_lat", num: 38, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
39 => Some(FieldReference { name: "end_position_long", num: 39, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
41 => Some(FieldReference { name: "avg_stroke_count", num: 41, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 10.0, units: "strokes/lap", ..FR_DEF }),
42 => Some(FieldReference { name: "avg_stroke_distance", num: 42, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
43 => Some(FieldReference { name: "swim_stroke", num: 43, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWIM_STROKE, units: "swim_stroke", ..FR_DEF }),
44 => Some(FieldReference { name: "pool_length", num: 44, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
45 => Some(FieldReference { name: "threshold_power", num: 45, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
46 => Some(FieldReference { name: "pool_length_unit", num: 46, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
47 => Some(FieldReference { name: "num_active_lengths", num: 47, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "lengths", ..FR_DEF }),
48 => Some(FieldReference { name: "total_work", num: 48, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "J", ..FR_DEF }),
49 => Some(FieldReference { name: "avg_altitude", num: 49, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 126 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
50 => Some(FieldReference { name: "max_altitude", num: 50, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 128 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
51 => Some(FieldReference { name: "gps_accuracy", num: 51, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "m", ..FR_DEF }),
52 => Some(FieldReference { name: "avg_grade", num: 52, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
53 => Some(FieldReference { name: "avg_pos_grade", num: 53, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
54 => Some(FieldReference { name: "avg_neg_grade", num: 54, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
55 => Some(FieldReference { name: "max_pos_grade", num: 55, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
56 => Some(FieldReference { name: "max_neg_grade", num: 56, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
57 => Some(FieldReference { name: "avg_temperature", num: 57, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
58 => Some(FieldReference { name: "max_temperature", num: 58, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
59 => Some(FieldReference { name: "total_moving_time", num: 59, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
60 => Some(FieldReference { name: "avg_pos_vertical_speed", num: 60, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
61 => Some(FieldReference { name: "avg_neg_vertical_speed", num: 61, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
62 => Some(FieldReference { name: "max_pos_vertical_speed", num: 62, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
63 => Some(FieldReference { name: "max_neg_vertical_speed", num: 63, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
64 => Some(FieldReference { name: "min_heart_rate", num: 64, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
65 => Some(FieldReference { name: "time_in_hr_zone", num: 65, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
66 => Some(FieldReference { name: "time_in_speed_zone", num: 66, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
67 => Some(FieldReference { name: "time_in_cadence_zone", num: 67, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
68 => Some(FieldReference { name: "time_in_power_zone", num: 68, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
69 => Some(FieldReference { name: "avg_lap_time", num: 69, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
70 => Some(FieldReference { name: "best_lap_index", num: 70, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
71 => Some(FieldReference { name: "min_altitude", num: 71, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 127 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
82 => Some(FieldReference { name: "player_score", num: 82, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
83 => Some(FieldReference { name: "opponent_score", num: 83, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
84 => Some(FieldReference { name: "opponent_name", num: 84, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
85 => Some(FieldReference { name: "stroke_count", num: 85, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
86 => Some(FieldReference { name: "zone_count", num: 86, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
87 => Some(FieldReference { name: "max_ball_speed", num: 87, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m/s", ..FR_DEF }),
88 => Some(FieldReference { name: "avg_ball_speed", num: 88, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m/s", ..FR_DEF }),
89 => Some(FieldReference { name: "avg_vertical_oscillation", num: 89, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
90 => Some(FieldReference { name: "avg_stance_time_percent", num: 90, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
91 => Some(FieldReference { name: "avg_stance_time", num: 91, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "ms", ..FR_DEF }),
92 => Some(FieldReference { name: "avg_fractional_cadence", num: 92, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
93 => Some(FieldReference { name: "max_fractional_cadence", num: 93, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
94 => Some(FieldReference { name: "total_fractional_cycles", num: 94, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "cycles", ..FR_DEF }),
95 => Some(FieldReference { name: "avg_total_hemoglobin_conc", num: 95, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 100.0, units: "g/dL", ..FR_DEF }),
96 => Some(FieldReference { name: "min_total_hemoglobin_conc", num: 96, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 100.0, units: "g/dL", ..FR_DEF }),
97 => Some(FieldReference { name: "max_total_hemoglobin_conc", num: 97, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 100.0, units: "g/dL", ..FR_DEF }),
98 => Some(FieldReference { name: "avg_saturated_hemoglobin_percent", num: 98, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 10.0, units: "%", ..FR_DEF }),
99 => Some(FieldReference { name: "min_saturated_hemoglobin_percent", num: 99, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 10.0, units: "%", ..FR_DEF }),
100 => Some(FieldReference { name: "max_saturated_hemoglobin_percent", num: 100, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 10.0, units: "%", ..FR_DEF }),
101 => Some(FieldReference { name: "avg_left_torque_effectiveness", num: 101, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
102 => Some(FieldReference { name: "avg_right_torque_effectiveness", num: 102, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
103 => Some(FieldReference { name: "avg_left_pedal_smoothness", num: 103, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
104 => Some(FieldReference { name: "avg_right_pedal_smoothness", num: 104, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
105 => Some(FieldReference { name: "avg_combined_pedal_smoothness", num: 105, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
110 => Some(FieldReference { name: "sport_profile_name", num: 110, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
111 => Some(FieldReference { name: "sport_index", num: 111, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
112 => Some(FieldReference { name: "time_standing", num: 112, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
113 => Some(FieldReference { name: "stand_count", num: 113, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
114 => Some(FieldReference { name: "avg_left_pco", num: 114, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
115 => Some(FieldReference { name: "avg_right_pco", num: 115, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
116 => Some(FieldReference { name: "avg_left_power_phase", num: 116, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
117 => Some(FieldReference { name: "avg_left_power_phase_peak", num: 117, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
118 => Some(FieldReference { name: "avg_right_power_phase", num: 118, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
119 => Some(FieldReference { name: "avg_right_power_phase_peak", num: 119, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
120 => Some(FieldReference { name: "avg_power_position", num: 120, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "watts", ..FR_DEF }),
121 => Some(FieldReference { name: "max_power_position", num: 121, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "watts", ..FR_DEF }),
122 => Some(FieldReference { name: "avg_cadence_position", num: 122, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "rpm", ..FR_DEF }),
123 => Some(FieldReference { name: "max_cadence_position", num: 123, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "rpm", ..FR_DEF }),
124 => Some(FieldReference { name: "enhanced_avg_speed", num: 124, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
125 => Some(FieldReference { name: "enhanced_max_speed", num: 125, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
126 => Some(FieldReference { name: "enhanced_avg_altitude", num: 126, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
127 => Some(FieldReference { name: "enhanced_min_altitude", num: 127, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
128 => Some(FieldReference { name: "enhanced_max_altitude", num: 128, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
129 => Some(FieldReference { name: "avg_lev_motor_power", num: 129, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
130 => Some(FieldReference { name: "max_lev_motor_power", num: 130, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
131 => Some(FieldReference { name: "lev_battery_consumption", num: 131, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
132 => Some(FieldReference { name: "avg_vertical_ratio", num: 132, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
133 => Some(FieldReference { name: "avg_stance_time_balance", num: 133, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
134 => Some(FieldReference { name: "avg_step_length", num: 134, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
137 => Some(FieldReference { name: "total_anaerobic_training_effect", num: 137, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, ..FR_DEF }),
139 => Some(FieldReference { name: "avg_vam", num: 139, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
140 => Some(FieldReference { name: "avg_depth", num: 140, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
141 => Some(FieldReference { name: "max_depth", num: 141, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
142 => Some(FieldReference { name: "surface_interval", num: 142, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
143 => Some(FieldReference { name: "start_cns", num: 143, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
144 => Some(FieldReference { name: "end_cns", num: 144, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
145 => Some(FieldReference { name: "start_n2", num: 145, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
146 => Some(FieldReference { name: "end_n2", num: 146, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
147 => Some(FieldReference { name: "avg_respiration_rate", num: 147, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
Component { field_num: 169 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
148 => Some(FieldReference { name: "max_respiration_rate", num: 148, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
Component { field_num: 170 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
149 => Some(FieldReference { name: "min_respiration_rate", num: 149, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
Component { field_num: 180 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
150 => Some(FieldReference { name: "min_temperature", num: 150, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
155 => Some(FieldReference { name: "o2_toxicity", num: 155, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "OTUs", ..FR_DEF }),
156 => Some(FieldReference { name: "dive_number", num: 156, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
168 => Some(FieldReference { name: "training_load_peak", num: 168, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 65536.0, ..FR_DEF }),
169 => Some(FieldReference { name: "enhanced_avg_respiration_rate", num: 169, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
170 => Some(FieldReference { name: "enhanced_max_respiration_rate", num: 170, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
180 => Some(FieldReference { name: "enhanced_min_respiration_rate", num: 180, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
181 => Some(FieldReference { name: "total_grit", num: 181, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
182 => Some(FieldReference { name: "total_flow", num: 182, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
183 => Some(FieldReference { name: "jump_count", num: 183, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
186 => Some(FieldReference { name: "avg_grit", num: 186, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
187 => Some(FieldReference { name: "avg_flow", num: 187, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
192 => Some(FieldReference { name: "workout_feel", num: 192, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
193 => Some(FieldReference { name: "workout_rpe", num: 193, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
194 => Some(FieldReference { name: "avg_spo2", num: 194, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
195 => Some(FieldReference { name: "avg_stress", num: 195, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
196 => Some(FieldReference { name: "metabolic_calories", num: 196, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
197 => Some(FieldReference { name: "sdrr_hrv", num: 197, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "mS", ..FR_DEF }),
198 => Some(FieldReference { name: "rmssd_hrv", num: 198, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "mS", ..FR_DEF }),
199 => Some(FieldReference { name: "total_fractional_ascent", num: 199, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
200 => Some(FieldReference { name: "total_fractional_descent", num: 200, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
208 => Some(FieldReference { name: "avg_core_temperature", num: 208, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
209 => Some(FieldReference { name: "min_core_temperature", num: 209, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
210 => Some(FieldReference { name: "max_core_temperature", num: 210, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
_ => None,
}},
MesgNum::LAP => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
2 => Some(FieldReference { name: "start_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
3 => Some(FieldReference { name: "start_position_lat", num: 3, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
4 => Some(FieldReference { name: "start_position_long", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
5 => Some(FieldReference { name: "end_position_lat", num: 5, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
6 => Some(FieldReference { name: "end_position_long", num: 6, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
7 => Some(FieldReference { name: "total_elapsed_time", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
8 => Some(FieldReference { name: "total_timer_time", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
9 => Some(FieldReference { name: "total_distance", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
10 => Some(FieldReference { name: "total_cycles", num: 10, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "cycles", sub_fields: &[
SubField { name: "total_strides", profile_type: ProfileType::UINT32, units: "strides", maps: &[
SubFieldMap { ref_field_num: 25 , ref_field_value: 1 },
SubFieldMap { ref_field_num: 25 , ref_field_value: 11 },
], ..SF_DEF },
SubField { name: "total_strokes", profile_type: ProfileType::UINT32, units: "strokes", maps: &[
SubFieldMap { ref_field_num: 25 , ref_field_value: 2 },
SubFieldMap { ref_field_num: 25 , ref_field_value: 5 },
SubFieldMap { ref_field_num: 25 , ref_field_value: 15 },
SubFieldMap { ref_field_num: 25 , ref_field_value: 37 },
], ..SF_DEF }
], ..FR_DEF }),
11 => Some(FieldReference { name: "total_calories", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
12 => Some(FieldReference { name: "total_fat_calories", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
13 => Some(FieldReference { name: "avg_speed", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
Component { field_num: 110 , scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
14 => Some(FieldReference { name: "max_speed", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
Component { field_num: 111 , scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
15 => Some(FieldReference { name: "avg_heart_rate", num: 15, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
16 => Some(FieldReference { name: "max_heart_rate", num: 16, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
17 => Some(FieldReference { name: "avg_cadence", num: 17, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", sub_fields: &[
SubField { name: "avg_running_cadence", profile_type: ProfileType::UINT8, units: "strides/min", maps: &[
SubFieldMap { ref_field_num: 25 , ref_field_value: 1 },
], ..SF_DEF }
], ..FR_DEF }),
18 => Some(FieldReference { name: "max_cadence", num: 18, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", sub_fields: &[
SubField { name: "max_running_cadence", profile_type: ProfileType::UINT8, units: "strides/min", maps: &[
SubFieldMap { ref_field_num: 25 , ref_field_value: 1 },
], ..SF_DEF }
], ..FR_DEF }),
19 => Some(FieldReference { name: "avg_power", num: 19, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
20 => Some(FieldReference { name: "max_power", num: 20, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
21 => Some(FieldReference { name: "total_ascent", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
22 => Some(FieldReference { name: "total_descent", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
23 => Some(FieldReference { name: "intensity", num: 23, base_type: FitBaseType::ENUM, profile_type: ProfileType::INTENSITY, ..FR_DEF }),
24 => Some(FieldReference { name: "lap_trigger", num: 24, base_type: FitBaseType::ENUM, profile_type: ProfileType::LAP_TRIGGER, ..FR_DEF }),
25 => Some(FieldReference { name: "sport", num: 25, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
26 => Some(FieldReference { name: "event_group", num: 26, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
32 => Some(FieldReference { name: "num_lengths", num: 32, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "lengths", ..FR_DEF }),
33 => Some(FieldReference { name: "normalized_power", num: 33, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
34 => Some(FieldReference { name: "left_right_balance", num: 34, base_type: FitBaseType::UINT16, profile_type: ProfileType::LEFT_RIGHT_BALANCE_100, ..FR_DEF }),
35 => Some(FieldReference { name: "first_length_index", num: 35, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
37 => Some(FieldReference { name: "avg_stroke_distance", num: 37, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
38 => Some(FieldReference { name: "swim_stroke", num: 38, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWIM_STROKE, ..FR_DEF }),
39 => Some(FieldReference { name: "sub_sport", num: 39, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
40 => Some(FieldReference { name: "num_active_lengths", num: 40, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "lengths", ..FR_DEF }),
41 => Some(FieldReference { name: "total_work", num: 41, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "J", ..FR_DEF }),
42 => Some(FieldReference { name: "avg_altitude", num: 42, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 112 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
43 => Some(FieldReference { name: "max_altitude", num: 43, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 114 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
44 => Some(FieldReference { name: "gps_accuracy", num: 44, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "m", ..FR_DEF }),
45 => Some(FieldReference { name: "avg_grade", num: 45, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
46 => Some(FieldReference { name: "avg_pos_grade", num: 46, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
47 => Some(FieldReference { name: "avg_neg_grade", num: 47, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
48 => Some(FieldReference { name: "max_pos_grade", num: 48, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
49 => Some(FieldReference { name: "max_neg_grade", num: 49, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
50 => Some(FieldReference { name: "avg_temperature", num: 50, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
51 => Some(FieldReference { name: "max_temperature", num: 51, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
52 => Some(FieldReference { name: "total_moving_time", num: 52, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
53 => Some(FieldReference { name: "avg_pos_vertical_speed", num: 53, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
54 => Some(FieldReference { name: "avg_neg_vertical_speed", num: 54, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
55 => Some(FieldReference { name: "max_pos_vertical_speed", num: 55, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
56 => Some(FieldReference { name: "max_neg_vertical_speed", num: 56, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
57 => Some(FieldReference { name: "time_in_hr_zone", num: 57, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
58 => Some(FieldReference { name: "time_in_speed_zone", num: 58, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
59 => Some(FieldReference { name: "time_in_cadence_zone", num: 59, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
60 => Some(FieldReference { name: "time_in_power_zone", num: 60, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
61 => Some(FieldReference { name: "repetition_num", num: 61, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
62 => Some(FieldReference { name: "min_altitude", num: 62, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 113 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
63 => Some(FieldReference { name: "min_heart_rate", num: 63, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
71 => Some(FieldReference { name: "wkt_step_index", num: 71, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
74 => Some(FieldReference { name: "opponent_score", num: 74, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
75 => Some(FieldReference { name: "stroke_count", num: 75, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
76 => Some(FieldReference { name: "zone_count", num: 76, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
77 => Some(FieldReference { name: "avg_vertical_oscillation", num: 77, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
78 => Some(FieldReference { name: "avg_stance_time_percent", num: 78, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
79 => Some(FieldReference { name: "avg_stance_time", num: 79, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "ms", ..FR_DEF }),
80 => Some(FieldReference { name: "avg_fractional_cadence", num: 80, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
81 => Some(FieldReference { name: "max_fractional_cadence", num: 81, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
82 => Some(FieldReference { name: "total_fractional_cycles", num: 82, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "cycles", ..FR_DEF }),
83 => Some(FieldReference { name: "player_score", num: 83, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
84 => Some(FieldReference { name: "avg_total_hemoglobin_conc", num: 84, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 100.0, units: "g/dL", ..FR_DEF }),
85 => Some(FieldReference { name: "min_total_hemoglobin_conc", num: 85, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 100.0, units: "g/dL", ..FR_DEF }),
86 => Some(FieldReference { name: "max_total_hemoglobin_conc", num: 86, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 100.0, units: "g/dL", ..FR_DEF }),
87 => Some(FieldReference { name: "avg_saturated_hemoglobin_percent", num: 87, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 10.0, units: "%", ..FR_DEF }),
88 => Some(FieldReference { name: "min_saturated_hemoglobin_percent", num: 88, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 10.0, units: "%", ..FR_DEF }),
89 => Some(FieldReference { name: "max_saturated_hemoglobin_percent", num: 89, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 10.0, units: "%", ..FR_DEF }),
91 => Some(FieldReference { name: "avg_left_torque_effectiveness", num: 91, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
92 => Some(FieldReference { name: "avg_right_torque_effectiveness", num: 92, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
93 => Some(FieldReference { name: "avg_left_pedal_smoothness", num: 93, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
94 => Some(FieldReference { name: "avg_right_pedal_smoothness", num: 94, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
95 => Some(FieldReference { name: "avg_combined_pedal_smoothness", num: 95, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
98 => Some(FieldReference { name: "time_standing", num: 98, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
99 => Some(FieldReference { name: "stand_count", num: 99, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
100 => Some(FieldReference { name: "avg_left_pco", num: 100, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
101 => Some(FieldReference { name: "avg_right_pco", num: 101, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
102 => Some(FieldReference { name: "avg_left_power_phase", num: 102, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
103 => Some(FieldReference { name: "avg_left_power_phase_peak", num: 103, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
104 => Some(FieldReference { name: "avg_right_power_phase", num: 104, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
105 => Some(FieldReference { name: "avg_right_power_phase_peak", num: 105, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
106 => Some(FieldReference { name: "avg_power_position", num: 106, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "watts", ..FR_DEF }),
107 => Some(FieldReference { name: "max_power_position", num: 107, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "watts", ..FR_DEF }),
108 => Some(FieldReference { name: "avg_cadence_position", num: 108, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "rpm", ..FR_DEF }),
109 => Some(FieldReference { name: "max_cadence_position", num: 109, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "rpm", ..FR_DEF }),
110 => Some(FieldReference { name: "enhanced_avg_speed", num: 110, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
111 => Some(FieldReference { name: "enhanced_max_speed", num: 111, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
112 => Some(FieldReference { name: "enhanced_avg_altitude", num: 112, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
113 => Some(FieldReference { name: "enhanced_min_altitude", num: 113, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
114 => Some(FieldReference { name: "enhanced_max_altitude", num: 114, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
115 => Some(FieldReference { name: "avg_lev_motor_power", num: 115, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
116 => Some(FieldReference { name: "max_lev_motor_power", num: 116, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
117 => Some(FieldReference { name: "lev_battery_consumption", num: 117, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
118 => Some(FieldReference { name: "avg_vertical_ratio", num: 118, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
119 => Some(FieldReference { name: "avg_stance_time_balance", num: 119, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
120 => Some(FieldReference { name: "avg_step_length", num: 120, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
121 => Some(FieldReference { name: "avg_vam", num: 121, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
122 => Some(FieldReference { name: "avg_depth", num: 122, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
123 => Some(FieldReference { name: "max_depth", num: 123, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
124 => Some(FieldReference { name: "min_temperature", num: 124, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
136 => Some(FieldReference { name: "enhanced_avg_respiration_rate", num: 136, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
137 => Some(FieldReference { name: "enhanced_max_respiration_rate", num: 137, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
147 => Some(FieldReference { name: "avg_respiration_rate", num: 147, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
Component { field_num: 136 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
148 => Some(FieldReference { name: "max_respiration_rate", num: 148, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
Component { field_num: 137 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
149 => Some(FieldReference { name: "total_grit", num: 149, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
150 => Some(FieldReference { name: "total_flow", num: 150, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
151 => Some(FieldReference { name: "jump_count", num: 151, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
153 => Some(FieldReference { name: "avg_grit", num: 153, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
154 => Some(FieldReference { name: "avg_flow", num: 154, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
156 => Some(FieldReference { name: "total_fractional_ascent", num: 156, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
157 => Some(FieldReference { name: "total_fractional_descent", num: 157, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
158 => Some(FieldReference { name: "avg_core_temperature", num: 158, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
159 => Some(FieldReference { name: "min_core_temperature", num: 159, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
160 => Some(FieldReference { name: "max_core_temperature", num: 160, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
_ => None,
}},
MesgNum::LENGTH => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
2 => Some(FieldReference { name: "start_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
3 => Some(FieldReference { name: "total_elapsed_time", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
4 => Some(FieldReference { name: "total_timer_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
5 => Some(FieldReference { name: "total_strokes", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "strokes", ..FR_DEF }),
6 => Some(FieldReference { name: "avg_speed", num: 6, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
7 => Some(FieldReference { name: "swim_stroke", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::SWIM_STROKE, units: "swim_stroke", ..FR_DEF }),
9 => Some(FieldReference { name: "avg_swimming_cadence", num: 9, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "strokes/min", ..FR_DEF }),
10 => Some(FieldReference { name: "event_group", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
11 => Some(FieldReference { name: "total_calories", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
12 => Some(FieldReference { name: "length_type", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::LENGTH_TYPE, ..FR_DEF }),
18 => Some(FieldReference { name: "player_score", num: 18, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
19 => Some(FieldReference { name: "opponent_score", num: 19, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
20 => Some(FieldReference { name: "stroke_count", num: 20, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
21 => Some(FieldReference { name: "zone_count", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
22 => Some(FieldReference { name: "enhanced_avg_respiration_rate", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
23 => Some(FieldReference { name: "enhanced_max_respiration_rate", num: 23, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
24 => Some(FieldReference { name: "avg_respiration_rate", num: 24, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
Component { field_num: 22 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
25 => Some(FieldReference { name: "max_respiration_rate", num: 25, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, components: &[
Component { field_num: 23 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
_ => None,
}},
MesgNum::RECORD => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "position_lat", num: 0, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
1 => Some(FieldReference { name: "position_long", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
2 => Some(FieldReference { name: "altitude", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 78 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
3 => Some(FieldReference { name: "heart_rate", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
4 => Some(FieldReference { name: "cadence", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", ..FR_DEF }),
5 => Some(FieldReference { name: "distance", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, accumulate: true, scale: 100.0, units: "m", ..FR_DEF }),
6 => Some(FieldReference { name: "speed", num: 6, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
Component { field_num: 73 , scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
7 => Some(FieldReference { name: "power", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
8 => Some(FieldReference { name: "compressed_speed_distance", num: 8, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , units: "m/s,m", components: &[
Component { field_num: 6 , scale: 100.0, offset: 0.0, accumulate: false, bits: 12 },
Component { field_num: 5 , scale: 16.0, offset: 0.0, accumulate: true, bits: 12 }
], ..FR_DEF }),
9 => Some(FieldReference { name: "grade", num: 9, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
10 => Some(FieldReference { name: "resistance", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
11 => Some(FieldReference { name: "time_from_course", num: 11, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "s", ..FR_DEF }),
12 => Some(FieldReference { name: "cycle_length", num: 12, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
13 => Some(FieldReference { name: "temperature", num: 13, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
17 => Some(FieldReference { name: "speed_1s", num: 17, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 16.0, units: "m/s", ..FR_DEF }),
18 => Some(FieldReference { name: "cycles", num: 18, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, accumulate: true, units: "cycles", components: &[
Component { field_num: 19 , scale: 1.0, offset: 0.0, accumulate: true, bits: 8 }
], ..FR_DEF }),
19 => Some(FieldReference { name: "total_cycles", num: 19, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, accumulate: true, units: "cycles", ..FR_DEF }),
28 => Some(FieldReference { name: "compressed_accumulated_power", num: 28, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, accumulate: true, units: "watts", components: &[
Component { field_num: 29 , scale: 1.0, offset: 0.0, accumulate: true, bits: 16 }
], ..FR_DEF }),
29 => Some(FieldReference { name: "accumulated_power", num: 29, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, accumulate: true, units: "watts", ..FR_DEF }),
30 => Some(FieldReference { name: "left_right_balance", num: 30, base_type: FitBaseType::UINT8, profile_type: ProfileType::LEFT_RIGHT_BALANCE, ..FR_DEF }),
31 => Some(FieldReference { name: "gps_accuracy", num: 31, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "m", ..FR_DEF }),
32 => Some(FieldReference { name: "vertical_speed", num: 32, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
33 => Some(FieldReference { name: "calories", num: 33, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
39 => Some(FieldReference { name: "vertical_oscillation", num: 39, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
40 => Some(FieldReference { name: "stance_time_percent", num: 40, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
41 => Some(FieldReference { name: "stance_time", num: 41, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "ms", ..FR_DEF }),
42 => Some(FieldReference { name: "activity_type", num: 42, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_TYPE, ..FR_DEF }),
43 => Some(FieldReference { name: "left_torque_effectiveness", num: 43, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
44 => Some(FieldReference { name: "right_torque_effectiveness", num: 44, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
45 => Some(FieldReference { name: "left_pedal_smoothness", num: 45, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
46 => Some(FieldReference { name: "right_pedal_smoothness", num: 46, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
47 => Some(FieldReference { name: "combined_pedal_smoothness", num: 47, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
48 => Some(FieldReference { name: "time128", num: 48, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "s", ..FR_DEF }),
49 => Some(FieldReference { name: "stroke_type", num: 49, base_type: FitBaseType::ENUM, profile_type: ProfileType::STROKE_TYPE, ..FR_DEF }),
50 => Some(FieldReference { name: "zone", num: 50, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
51 => Some(FieldReference { name: "ball_speed", num: 51, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m/s", ..FR_DEF }),
52 => Some(FieldReference { name: "cadence256", num: 52, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 256.0, units: "rpm", ..FR_DEF }),
53 => Some(FieldReference { name: "fractional_cadence", num: 53, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
54 => Some(FieldReference { name: "total_hemoglobin_conc", num: 54, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "g/dL", ..FR_DEF }),
55 => Some(FieldReference { name: "total_hemoglobin_conc_min", num: 55, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "g/dL", ..FR_DEF }),
56 => Some(FieldReference { name: "total_hemoglobin_conc_max", num: 56, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "g/dL", ..FR_DEF }),
57 => Some(FieldReference { name: "saturated_hemoglobin_percent", num: 57, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
58 => Some(FieldReference { name: "saturated_hemoglobin_percent_min", num: 58, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
59 => Some(FieldReference { name: "saturated_hemoglobin_percent_max", num: 59, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "%", ..FR_DEF }),
62 => Some(FieldReference { name: "device_index", num: 62, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
67 => Some(FieldReference { name: "left_pco", num: 67, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
68 => Some(FieldReference { name: "right_pco", num: 68, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
69 => Some(FieldReference { name: "left_power_phase", num: 69, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
70 => Some(FieldReference { name: "left_power_phase_peak", num: 70, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
71 => Some(FieldReference { name: "right_power_phase", num: 71, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
72 => Some(FieldReference { name: "right_power_phase_peak", num: 72, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
73 => Some(FieldReference { name: "enhanced_speed", num: 73, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
78 => Some(FieldReference { name: "enhanced_altitude", num: 78, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
81 => Some(FieldReference { name: "battery_soc", num: 81, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
82 => Some(FieldReference { name: "motor_power", num: 82, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
83 => Some(FieldReference { name: "vertical_ratio", num: 83, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
84 => Some(FieldReference { name: "stance_time_balance", num: 84, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "percent", ..FR_DEF }),
85 => Some(FieldReference { name: "step_length", num: 85, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mm", ..FR_DEF }),
87 => Some(FieldReference { name: "cycle_length16", num: 87, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
91 => Some(FieldReference { name: "absolute_pressure", num: 91, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "Pa", ..FR_DEF }),
92 => Some(FieldReference { name: "depth", num: 92, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
93 => Some(FieldReference { name: "next_stop_depth", num: 93, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
94 => Some(FieldReference { name: "next_stop_time", num: 94, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
95 => Some(FieldReference { name: "time_to_surface", num: 95, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
96 => Some(FieldReference { name: "ndl_time", num: 96, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
97 => Some(FieldReference { name: "cns_load", num: 97, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
98 => Some(FieldReference { name: "n2_load", num: 98, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
99 => Some(FieldReference { name: "respiration_rate", num: 99, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "s", components: &[
Component { field_num: 108 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
108 => Some(FieldReference { name: "enhanced_respiration_rate", num: 108, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "Breaths/min", ..FR_DEF }),
114 => Some(FieldReference { name: "grit", num: 114, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
115 => Some(FieldReference { name: "flow", num: 115, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
116 => Some(FieldReference { name: "current_stress", num: 116, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
117 => Some(FieldReference { name: "ebike_travel_range", num: 117, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "km", ..FR_DEF }),
118 => Some(FieldReference { name: "ebike_battery_level", num: 118, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
119 => Some(FieldReference { name: "ebike_assist_mode", num: 119, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "depends on sensor", ..FR_DEF }),
120 => Some(FieldReference { name: "ebike_assist_level_percent", num: 120, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
123 => Some(FieldReference { name: "air_time_remaining", num: 123, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
124 => Some(FieldReference { name: "pressure_sac", num: 124, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar/min", ..FR_DEF }),
125 => Some(FieldReference { name: "volume_sac", num: 125, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "L/min", ..FR_DEF }),
126 => Some(FieldReference { name: "rmv", num: 126, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "L/min", ..FR_DEF }),
127 => Some(FieldReference { name: "ascent_rate", num: 127, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
129 => Some(FieldReference { name: "po2", num: 129, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "percent", ..FR_DEF }),
139 => Some(FieldReference { name: "core_temperature", num: 139, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "C", ..FR_DEF }),
_ => None,
}},
MesgNum::EVENT => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
2 => Some(FieldReference { name: "data16", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, components: &[
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
3 => Some(FieldReference { name: "data", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "timer_trigger", profile_type: ProfileType::TIMER_TRIGGER, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "course_point_index", profile_type: ProfileType::MESSAGE_INDEX, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 10 },
], ..SF_DEF },
SubField { name: "battery_level", profile_type: ProfileType::UINT16, scale: 1000.0, units: "V", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 11 },
], ..SF_DEF },
SubField { name: "virtual_partner_speed", profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 12 },
], ..SF_DEF },
SubField { name: "hr_high_alert", profile_type: ProfileType::UINT8, units: "bpm", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 13 },
], ..SF_DEF },
SubField { name: "hr_low_alert", profile_type: ProfileType::UINT8, units: "bpm", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 14 },
], ..SF_DEF },
SubField { name: "speed_high_alert", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 15 },
], ..SF_DEF },
SubField { name: "speed_low_alert", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 16 },
], ..SF_DEF },
SubField { name: "cad_high_alert", profile_type: ProfileType::UINT16, units: "rpm", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 17 },
], ..SF_DEF },
SubField { name: "cad_low_alert", profile_type: ProfileType::UINT16, units: "rpm", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 18 },
], ..SF_DEF },
SubField { name: "power_high_alert", profile_type: ProfileType::UINT16, units: "watts", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 19 },
], ..SF_DEF },
SubField { name: "power_low_alert", profile_type: ProfileType::UINT16, units: "watts", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 20 },
], ..SF_DEF },
SubField { name: "time_duration_alert", profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 23 },
], ..SF_DEF },
SubField { name: "distance_duration_alert", profile_type: ProfileType::UINT32, scale: 100.0, units: "m", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 24 },
], ..SF_DEF },
SubField { name: "calorie_duration_alert", profile_type: ProfileType::UINT32, units: "calories", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 25 },
], ..SF_DEF },
SubField { name: "fitness_equipment_state", profile_type: ProfileType::FITNESS_EQUIPMENT_STATE, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 27 },
], ..SF_DEF },
SubField { name: "sport_point", profile_type: ProfileType::UINT32, components: &[
Component { field_num: 7 , scale: 1.0, offset: 0.0, accumulate: false, bits: 16 },
Component { field_num: 8 , scale: 1.0, offset: 0.0, accumulate: false, bits: 16 }
], maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 33 },
], ..SF_DEF },
SubField { name: "gear_change_data", profile_type: ProfileType::UINT32, components: &[
Component { field_num: 11 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 12 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 9 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 10 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 42 },
SubFieldMap { ref_field_num: 0 , ref_field_value: 43 },
], ..SF_DEF },
SubField { name: "rider_position", profile_type: ProfileType::RIDER_POSITION_TYPE, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 44 },
], ..SF_DEF },
SubField { name: "comm_timeout", profile_type: ProfileType::COMM_TIMEOUT_TYPE, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 47 },
], ..SF_DEF },
SubField { name: "dive_alert", profile_type: ProfileType::DIVE_ALERT, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 56 },
], ..SF_DEF },
SubField { name: "auto_activity_detect_duration", profile_type: ProfileType::UINT16, units: "min", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 54 },
], ..SF_DEF },
SubField { name: "radar_threat_alert", profile_type: ProfileType::UINT32, components: &[
Component { field_num: 21 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 22 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 23 , scale: 10.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 24 , scale: 10.0, offset: 0.0, accumulate: false, bits: 8 }
], maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 75 },
], ..SF_DEF }
], ..FR_DEF }),
4 => Some(FieldReference { name: "event_group", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
7 => Some(FieldReference { name: "score", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
8 => Some(FieldReference { name: "opponent_score", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
9 => Some(FieldReference { name: "front_gear_num", num: 9, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
10 => Some(FieldReference { name: "front_gear", num: 10, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
11 => Some(FieldReference { name: "rear_gear_num", num: 11, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
12 => Some(FieldReference { name: "rear_gear", num: 12, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
13 => Some(FieldReference { name: "device_index", num: 13, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
14 => Some(FieldReference { name: "activity_type", num: 14, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_TYPE, ..FR_DEF }),
15 => Some(FieldReference { name: "start_timestamp", num: 15, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", sub_fields: &[
SubField { name: "auto_activity_detect_start_timestamp", profile_type: ProfileType::DATE_TIME, units: "s", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 54 },
], ..SF_DEF }
], ..FR_DEF }),
21 => Some(FieldReference { name: "radar_threat_level_max", num: 21, base_type: FitBaseType::ENUM, profile_type: ProfileType::RADAR_THREAT_LEVEL_TYPE, ..FR_DEF }),
22 => Some(FieldReference { name: "radar_threat_count", num: 22, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
23 => Some(FieldReference { name: "radar_threat_avg_approach_speed", num: 23, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, units: "m/s", ..FR_DEF }),
24 => Some(FieldReference { name: "radar_threat_max_approach_speed", num: 24, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, units: "m/s", ..FR_DEF }),
_ => None,
}},
MesgNum::DEVICE_INFO => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "device_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
1 => Some(FieldReference { name: "device_type", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, sub_fields: &[
SubField { name: "ble_device_type", profile_type: ProfileType::BLE_DEVICE_TYPE, maps: &[
SubFieldMap { ref_field_num: 25 , ref_field_value: 3 },
], ..SF_DEF },
SubField { name: "antplus_device_type", profile_type: ProfileType::ANTPLUS_DEVICE_TYPE, maps: &[
SubFieldMap { ref_field_num: 25 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "ant_device_type", profile_type: ProfileType::UINT8, maps: &[
SubFieldMap { ref_field_num: 25 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "local_device_type", profile_type: ProfileType::LOCAL_DEVICE_TYPE, maps: &[
SubFieldMap { ref_field_num: 25 , ref_field_value: 5 },
], ..SF_DEF }
], ..FR_DEF }),
2 => Some(FieldReference { name: "manufacturer", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
3 => Some(FieldReference { name: "serial_number", num: 3, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::UINT32Z, ..FR_DEF }),
4 => Some(FieldReference { name: "product", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 2 , ref_field_value: 263 },
], ..SF_DEF },
SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 2 , ref_field_value: 1 },
SubFieldMap { ref_field_num: 2 , ref_field_value: 15 },
SubFieldMap { ref_field_num: 2 , ref_field_value: 13 },
SubFieldMap { ref_field_num: 2 , ref_field_value: 89 },
], ..SF_DEF }
], ..FR_DEF }),
5 => Some(FieldReference { name: "software_version", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
6 => Some(FieldReference { name: "hardware_version", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
7 => Some(FieldReference { name: "cum_operating_time", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
10 => Some(FieldReference { name: "battery_voltage", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 256.0, units: "V", ..FR_DEF }),
11 => Some(FieldReference { name: "battery_status", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::BATTERY_STATUS, ..FR_DEF }),
18 => Some(FieldReference { name: "sensor_position", num: 18, base_type: FitBaseType::ENUM, profile_type: ProfileType::BODY_LOCATION, ..FR_DEF }),
19 => Some(FieldReference { name: "descriptor", num: 19, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
20 => Some(FieldReference { name: "ant_transmission_type", num: 20, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
21 => Some(FieldReference { name: "ant_device_number", num: 21, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
22 => Some(FieldReference { name: "ant_network", num: 22, base_type: FitBaseType::ENUM, profile_type: ProfileType::ANT_NETWORK, ..FR_DEF }),
25 => Some(FieldReference { name: "source_type", num: 25, base_type: FitBaseType::ENUM, profile_type: ProfileType::SOURCE_TYPE, ..FR_DEF }),
27 => Some(FieldReference { name: "product_name", num: 27, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
32 => Some(FieldReference { name: "battery_level", num: 32, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "%", ..FR_DEF }),
_ => None,
}},
MesgNum::DEVICE_AUX_BATTERY_INFO => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "device_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
1 => Some(FieldReference { name: "battery_voltage", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 256.0, units: "V", ..FR_DEF }),
2 => Some(FieldReference { name: "battery_status", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::BATTERY_STATUS, ..FR_DEF }),
3 => Some(FieldReference { name: "battery_identifier", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
_ => None,
}},
MesgNum::TRAINING_FILE => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::FILE, ..FR_DEF }),
1 => Some(FieldReference { name: "manufacturer", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
2 => Some(FieldReference { name: "product", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 263 },
], ..SF_DEF },
SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 1 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 15 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 13 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 89 },
], ..SF_DEF }
], ..FR_DEF }),
3 => Some(FieldReference { name: "serial_number", num: 3, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::UINT32Z, ..FR_DEF }),
4 => Some(FieldReference { name: "time_created", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
_ => None,
}},
MesgNum::WEATHER_CONDITIONS => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "weather_report", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::WEATHER_REPORT, ..FR_DEF }),
1 => Some(FieldReference { name: "temperature", num: 1, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
2 => Some(FieldReference { name: "condition", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::WEATHER_STATUS, ..FR_DEF }),
3 => Some(FieldReference { name: "wind_direction", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "degrees", ..FR_DEF }),
4 => Some(FieldReference { name: "wind_speed", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
5 => Some(FieldReference { name: "precipitation_probability", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
6 => Some(FieldReference { name: "temperature_feels_like", num: 6, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
7 => Some(FieldReference { name: "relative_humidity", num: 7, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
8 => Some(FieldReference { name: "location", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
9 => Some(FieldReference { name: "observed_at_time", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
10 => Some(FieldReference { name: "observed_location_lat", num: 10, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
11 => Some(FieldReference { name: "observed_location_long", num: 11, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
12 => Some(FieldReference { name: "day_of_week", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::DAY_OF_WEEK, ..FR_DEF }),
13 => Some(FieldReference { name: "high_temperature", num: 13, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
14 => Some(FieldReference { name: "low_temperature", num: 14, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
_ => None,
}},
MesgNum::WEATHER_ALERT => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "report_id", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
1 => Some(FieldReference { name: "issue_time", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
2 => Some(FieldReference { name: "expire_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
3 => Some(FieldReference { name: "severity", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::WEATHER_SEVERITY, ..FR_DEF }),
4 => Some(FieldReference { name: "type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::WEATHER_SEVERE_TYPE, ..FR_DEF }),
_ => None,
}},
MesgNum::GPS_METADATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "position_lat", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
2 => Some(FieldReference { name: "position_long", num: 2, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
3 => Some(FieldReference { name: "enhanced_altitude", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
4 => Some(FieldReference { name: "enhanced_speed", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
5 => Some(FieldReference { name: "heading", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "degrees", ..FR_DEF }),
6 => Some(FieldReference { name: "utc_timestamp", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
7 => Some(FieldReference { name: "velocity", num: 7, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 100.0, units: "m/s", ..FR_DEF }),
_ => None,
}},
MesgNum::CAMERA_EVENT => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "camera_event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::CAMERA_EVENT_TYPE, ..FR_DEF }),
2 => Some(FieldReference { name: "camera_file_uuid", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
3 => Some(FieldReference { name: "camera_orientation", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::CAMERA_ORIENTATION_TYPE, ..FR_DEF }),
_ => None,
}},
MesgNum::GYROSCOPE_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "sample_time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "ms", ..FR_DEF }),
2 => Some(FieldReference { name: "gyro_x", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
3 => Some(FieldReference { name: "gyro_y", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
4 => Some(FieldReference { name: "gyro_z", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
5 => Some(FieldReference { name: "calibrated_gyro_x", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true , units: "deg/s", ..FR_DEF }),
6 => Some(FieldReference { name: "calibrated_gyro_y", num: 6, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true , units: "deg/s", ..FR_DEF }),
7 => Some(FieldReference { name: "calibrated_gyro_z", num: 7, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true , units: "deg/s", ..FR_DEF }),
_ => None,
}},
MesgNum::ACCELEROMETER_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "sample_time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "ms", ..FR_DEF }),
2 => Some(FieldReference { name: "accel_x", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
3 => Some(FieldReference { name: "accel_y", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
4 => Some(FieldReference { name: "accel_z", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
5 => Some(FieldReference { name: "calibrated_accel_x", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true , units: "g", ..FR_DEF }),
6 => Some(FieldReference { name: "calibrated_accel_y", num: 6, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true , units: "g", ..FR_DEF }),
7 => Some(FieldReference { name: "calibrated_accel_z", num: 7, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true , units: "g", ..FR_DEF }),
8 => Some(FieldReference { name: "compressed_calibrated_accel_x", num: 8, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , units: "mG", ..FR_DEF }),
9 => Some(FieldReference { name: "compressed_calibrated_accel_y", num: 9, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , units: "mG", ..FR_DEF }),
10 => Some(FieldReference { name: "compressed_calibrated_accel_z", num: 10, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , units: "mG", ..FR_DEF }),
_ => None,
}},
MesgNum::MAGNETOMETER_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "sample_time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "ms", ..FR_DEF }),
2 => Some(FieldReference { name: "mag_x", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
3 => Some(FieldReference { name: "mag_y", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
4 => Some(FieldReference { name: "mag_z", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "counts", ..FR_DEF }),
5 => Some(FieldReference { name: "calibrated_mag_x", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true , units: "G", ..FR_DEF }),
6 => Some(FieldReference { name: "calibrated_mag_y", num: 6, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true , units: "G", ..FR_DEF }),
7 => Some(FieldReference { name: "calibrated_mag_z", num: 7, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, array: true , units: "G", ..FR_DEF }),
_ => None,
}},
MesgNum::BAROMETER_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "sample_time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "ms", ..FR_DEF }),
2 => Some(FieldReference { name: "baro_pres", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , units: "Pa", ..FR_DEF }),
_ => None,
}},
MesgNum::THREE_D_SENSOR_CALIBRATION => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "sensor_type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SENSOR_TYPE, ..FR_DEF }),
1 => Some(FieldReference { name: "calibration_factor", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "accel_cal_factor", profile_type: ProfileType::UINT32, units: "g", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "gyro_cal_factor", profile_type: ProfileType::UINT32, units: "deg/s", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 1 },
], ..SF_DEF }
], ..FR_DEF }),
2 => Some(FieldReference { name: "calibration_divisor", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "counts", ..FR_DEF }),
3 => Some(FieldReference { name: "level_shift", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
4 => Some(FieldReference { name: "offset_cal", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, array: true , ..FR_DEF }),
5 => Some(FieldReference { name: "orientation_matrix", num: 5, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, array: true , scale: 65535.0, ..FR_DEF }),
_ => None,
}},
MesgNum::ONE_D_SENSOR_CALIBRATION => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "sensor_type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SENSOR_TYPE, ..FR_DEF }),
1 => Some(FieldReference { name: "calibration_factor", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "baro_cal_factor", profile_type: ProfileType::UINT32, units: "Pa", maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 3 },
], ..SF_DEF }
], ..FR_DEF }),
2 => Some(FieldReference { name: "calibration_divisor", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "counts", ..FR_DEF }),
3 => Some(FieldReference { name: "level_shift", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
4 => Some(FieldReference { name: "offset_cal", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, ..FR_DEF }),
_ => None,
}},
MesgNum::VIDEO_FRAME => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "frame_number", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
_ => None,
}},
MesgNum::OBDII_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "time_offset", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "ms", ..FR_DEF }),
2 => Some(FieldReference { name: "pid", num: 2, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, ..FR_DEF }),
3 => Some(FieldReference { name: "raw_data", num: 3, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , ..FR_DEF }),
4 => Some(FieldReference { name: "pid_data_size", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , ..FR_DEF }),
5 => Some(FieldReference { name: "system_time", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , ..FR_DEF }),
6 => Some(FieldReference { name: "start_timestamp", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
7 => Some(FieldReference { name: "start_timestamp_ms", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
_ => None,
}},
MesgNum::NMEA_SENTENCE => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "sentence", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::AVIATION_ATTITUDE => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "system_time", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , units: "ms", ..FR_DEF }),
2 => Some(FieldReference { name: "pitch", num: 2, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 10430.38, units: "radians", ..FR_DEF }),
3 => Some(FieldReference { name: "roll", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 10430.38, units: "radians", ..FR_DEF }),
4 => Some(FieldReference { name: "accel_lateral", num: 4, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 100.0, units: "m/s^2", ..FR_DEF }),
5 => Some(FieldReference { name: "accel_normal", num: 5, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 100.0, units: "m/s^2", ..FR_DEF }),
6 => Some(FieldReference { name: "turn_rate", num: 6, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 1024.0, units: "radians/second", ..FR_DEF }),
7 => Some(FieldReference { name: "stage", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::ATTITUDE_STAGE, array: true , ..FR_DEF }),
8 => Some(FieldReference { name: "attitude_stage_complete", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "%", ..FR_DEF }),
9 => Some(FieldReference { name: "track", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 10430.38, units: "radians", ..FR_DEF }),
10 => Some(FieldReference { name: "validity", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::ATTITUDE_VALIDITY, array: true , ..FR_DEF }),
_ => None,
}},
MesgNum::VIDEO => { match field_num {
0 => Some(FieldReference { name: "url", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
1 => Some(FieldReference { name: "hosting_provider", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
2 => Some(FieldReference { name: "duration", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "ms", ..FR_DEF }),
_ => None,
}},
MesgNum::VIDEO_TITLE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "message_count", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
1 => Some(FieldReference { name: "text", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::VIDEO_DESCRIPTION => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "message_count", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
1 => Some(FieldReference { name: "text", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::VIDEO_CLIP => { match field_num {
0 => Some(FieldReference { name: "clip_number", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
1 => Some(FieldReference { name: "start_timestamp", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
2 => Some(FieldReference { name: "start_timestamp_ms", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
3 => Some(FieldReference { name: "end_timestamp", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
4 => Some(FieldReference { name: "end_timestamp_ms", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
6 => Some(FieldReference { name: "clip_start", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "ms", ..FR_DEF }),
7 => Some(FieldReference { name: "clip_end", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "ms", ..FR_DEF }),
_ => None,
}},
MesgNum::SET => { match field_num {
254 => Some(FieldReference { name: "timestamp", num: 254, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "duration", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
3 => Some(FieldReference { name: "repetitions", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
4 => Some(FieldReference { name: "weight", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 16.0, units: "kg", ..FR_DEF }),
5 => Some(FieldReference { name: "set_type", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::SET_TYPE, ..FR_DEF }),
6 => Some(FieldReference { name: "start_time", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
7 => Some(FieldReference { name: "category", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::EXERCISE_CATEGORY, array: true , ..FR_DEF }),
8 => Some(FieldReference { name: "category_subtype", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , ..FR_DEF }),
9 => Some(FieldReference { name: "weight_display_unit", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::FIT_BASE_UNIT, ..FR_DEF }),
10 => Some(FieldReference { name: "message_index", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
11 => Some(FieldReference { name: "wkt_step_index", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
_ => None,
}},
MesgNum::JUMP => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "distance", num: 0, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "m", ..FR_DEF }),
1 => Some(FieldReference { name: "height", num: 1, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "m", ..FR_DEF }),
2 => Some(FieldReference { name: "rotations", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
3 => Some(FieldReference { name: "hang_time", num: 3, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "s", ..FR_DEF }),
4 => Some(FieldReference { name: "score", num: 4, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
5 => Some(FieldReference { name: "position_lat", num: 5, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
6 => Some(FieldReference { name: "position_long", num: 6, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
7 => Some(FieldReference { name: "speed", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", components: &[
Component { field_num: 8 , scale: 1000.0, offset: 0.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
8 => Some(FieldReference { name: "enhanced_speed", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
_ => None,
}},
MesgNum::SPLIT => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "split_type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPLIT_TYPE, ..FR_DEF }),
1 => Some(FieldReference { name: "total_elapsed_time", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
2 => Some(FieldReference { name: "total_timer_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
3 => Some(FieldReference { name: "total_distance", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
4 => Some(FieldReference { name: "avg_speed", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
9 => Some(FieldReference { name: "start_time", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
13 => Some(FieldReference { name: "total_ascent", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
14 => Some(FieldReference { name: "total_descent", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
21 => Some(FieldReference { name: "start_position_lat", num: 21, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
22 => Some(FieldReference { name: "start_position_long", num: 22, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
23 => Some(FieldReference { name: "end_position_lat", num: 23, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
24 => Some(FieldReference { name: "end_position_long", num: 24, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
25 => Some(FieldReference { name: "max_speed", num: 25, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
26 => Some(FieldReference { name: "avg_vert_speed", num: 26, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
27 => Some(FieldReference { name: "end_time", num: 27, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
28 => Some(FieldReference { name: "total_calories", num: 28, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "kcal", ..FR_DEF }),
74 => Some(FieldReference { name: "start_elevation", num: 74, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
110 => Some(FieldReference { name: "total_moving_time", num: 110, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
_ => None,
}},
MesgNum::SPLIT_SUMMARY => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "split_type", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPLIT_TYPE, ..FR_DEF }),
3 => Some(FieldReference { name: "num_splits", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
4 => Some(FieldReference { name: "total_timer_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
5 => Some(FieldReference { name: "total_distance", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
6 => Some(FieldReference { name: "avg_speed", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
7 => Some(FieldReference { name: "max_speed", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
8 => Some(FieldReference { name: "total_ascent", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
9 => Some(FieldReference { name: "total_descent", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
10 => Some(FieldReference { name: "avg_heart_rate", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
11 => Some(FieldReference { name: "max_heart_rate", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
12 => Some(FieldReference { name: "avg_vert_speed", num: 12, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
13 => Some(FieldReference { name: "total_calories", num: 13, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "kcal", ..FR_DEF }),
77 => Some(FieldReference { name: "total_moving_time", num: 77, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
_ => None,
}},
MesgNum::CLIMB_PRO => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "position_lat", num: 0, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
1 => Some(FieldReference { name: "position_long", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
2 => Some(FieldReference { name: "climb_pro_event", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::CLIMB_PRO_EVENT, ..FR_DEF }),
3 => Some(FieldReference { name: "climb_number", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
4 => Some(FieldReference { name: "climb_category", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
5 => Some(FieldReference { name: "current_dist", num: 5, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "m", ..FR_DEF }),
_ => None,
}},
MesgNum::FIELD_DESCRIPTION => { match field_num {
0 => Some(FieldReference { name: "developer_data_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
1 => Some(FieldReference { name: "field_definition_number", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
2 => Some(FieldReference { name: "fit_base_type_id", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::FIT_BASE_TYPE, ..FR_DEF }),
3 => Some(FieldReference { name: "field_name", num: 3, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true , ..FR_DEF }),
4 => Some(FieldReference { name: "array", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
5 => Some(FieldReference { name: "components", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
6 => Some(FieldReference { name: "scale", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
7 => Some(FieldReference { name: "offset", num: 7, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, ..FR_DEF }),
8 => Some(FieldReference { name: "units", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true , ..FR_DEF }),
9 => Some(FieldReference { name: "bits", num: 9, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
10 => Some(FieldReference { name: "accumulate", num: 10, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
13 => Some(FieldReference { name: "fit_base_unit_id", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::FIT_BASE_UNIT, ..FR_DEF }),
14 => Some(FieldReference { name: "native_mesg_num", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
15 => Some(FieldReference { name: "native_field_num", num: 15, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
_ => None,
}},
MesgNum::DEVELOPER_DATA_ID => { match field_num {
0 => Some(FieldReference { name: "developer_id", num: 0, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , ..FR_DEF }),
1 => Some(FieldReference { name: "application_id", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , ..FR_DEF }),
2 => Some(FieldReference { name: "manufacturer_id", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
3 => Some(FieldReference { name: "developer_data_index", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
4 => Some(FieldReference { name: "application_version", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
_ => None,
}},
MesgNum::COURSE => { match field_num {
4 => Some(FieldReference { name: "sport", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
5 => Some(FieldReference { name: "name", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
6 => Some(FieldReference { name: "capabilities", num: 6, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::COURSE_CAPABILITIES, ..FR_DEF }),
7 => Some(FieldReference { name: "sub_sport", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
_ => None,
}},
MesgNum::COURSE_POINT => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
1 => Some(FieldReference { name: "timestamp", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
2 => Some(FieldReference { name: "position_lat", num: 2, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
3 => Some(FieldReference { name: "position_long", num: 3, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
4 => Some(FieldReference { name: "distance", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
5 => Some(FieldReference { name: "type", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::COURSE_POINT, ..FR_DEF }),
6 => Some(FieldReference { name: "name", num: 6, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
8 => Some(FieldReference { name: "favorite", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
_ => None,
}},
MesgNum::SEGMENT_ID => { match field_num {
0 => Some(FieldReference { name: "name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
1 => Some(FieldReference { name: "uuid", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
2 => Some(FieldReference { name: "sport", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
3 => Some(FieldReference { name: "enabled", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
4 => Some(FieldReference { name: "user_profile_primary_key", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
5 => Some(FieldReference { name: "device_id", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
6 => Some(FieldReference { name: "default_race_leader", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
7 => Some(FieldReference { name: "delete_status", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_DELETE_STATUS, ..FR_DEF }),
8 => Some(FieldReference { name: "selection_type", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_SELECTION_TYPE, ..FR_DEF }),
_ => None,
}},
MesgNum::SEGMENT_LEADERBOARD_ENTRY => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
1 => Some(FieldReference { name: "type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_LEADERBOARD_TYPE, ..FR_DEF }),
2 => Some(FieldReference { name: "group_primary_key", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
3 => Some(FieldReference { name: "activity_id", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
4 => Some(FieldReference { name: "segment_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
5 => Some(FieldReference { name: "activity_id_string", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::SEGMENT_POINT => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
1 => Some(FieldReference { name: "position_lat", num: 1, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
2 => Some(FieldReference { name: "position_long", num: 2, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
3 => Some(FieldReference { name: "distance", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
4 => Some(FieldReference { name: "altitude", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 6 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
5 => Some(FieldReference { name: "leader_time", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
6 => Some(FieldReference { name: "enhanced_altitude", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
_ => None,
}},
MesgNum::SEGMENT_LAP => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "event", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT, ..FR_DEF }),
1 => Some(FieldReference { name: "event_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::EVENT_TYPE, ..FR_DEF }),
2 => Some(FieldReference { name: "start_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
3 => Some(FieldReference { name: "start_position_lat", num: 3, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
4 => Some(FieldReference { name: "start_position_long", num: 4, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
5 => Some(FieldReference { name: "end_position_lat", num: 5, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
6 => Some(FieldReference { name: "end_position_long", num: 6, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
7 => Some(FieldReference { name: "total_elapsed_time", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
8 => Some(FieldReference { name: "total_timer_time", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
9 => Some(FieldReference { name: "total_distance", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
10 => Some(FieldReference { name: "total_cycles", num: 10, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "cycles", sub_fields: &[
SubField { name: "total_strokes", profile_type: ProfileType::UINT32, units: "strokes", maps: &[
SubFieldMap { ref_field_num: 23 , ref_field_value: 2 },
], ..SF_DEF }
], ..FR_DEF }),
11 => Some(FieldReference { name: "total_calories", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
12 => Some(FieldReference { name: "total_fat_calories", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
13 => Some(FieldReference { name: "avg_speed", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
14 => Some(FieldReference { name: "max_speed", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
15 => Some(FieldReference { name: "avg_heart_rate", num: 15, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
16 => Some(FieldReference { name: "max_heart_rate", num: 16, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
17 => Some(FieldReference { name: "avg_cadence", num: 17, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", ..FR_DEF }),
18 => Some(FieldReference { name: "max_cadence", num: 18, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "rpm", ..FR_DEF }),
19 => Some(FieldReference { name: "avg_power", num: 19, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
20 => Some(FieldReference { name: "max_power", num: 20, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
21 => Some(FieldReference { name: "total_ascent", num: 21, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
22 => Some(FieldReference { name: "total_descent", num: 22, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "m", ..FR_DEF }),
23 => Some(FieldReference { name: "sport", num: 23, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
24 => Some(FieldReference { name: "event_group", num: 24, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
25 => Some(FieldReference { name: "nec_lat", num: 25, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
26 => Some(FieldReference { name: "nec_long", num: 26, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
27 => Some(FieldReference { name: "swc_lat", num: 27, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
28 => Some(FieldReference { name: "swc_long", num: 28, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, units: "semicircles", ..FR_DEF }),
29 => Some(FieldReference { name: "name", num: 29, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
30 => Some(FieldReference { name: "normalized_power", num: 30, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "watts", ..FR_DEF }),
31 => Some(FieldReference { name: "left_right_balance", num: 31, base_type: FitBaseType::UINT16, profile_type: ProfileType::LEFT_RIGHT_BALANCE_100, ..FR_DEF }),
32 => Some(FieldReference { name: "sub_sport", num: 32, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
33 => Some(FieldReference { name: "total_work", num: 33, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "J", ..FR_DEF }),
34 => Some(FieldReference { name: "avg_altitude", num: 34, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 91 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
35 => Some(FieldReference { name: "max_altitude", num: 35, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 92 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
36 => Some(FieldReference { name: "gps_accuracy", num: 36, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "m", ..FR_DEF }),
37 => Some(FieldReference { name: "avg_grade", num: 37, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
38 => Some(FieldReference { name: "avg_pos_grade", num: 38, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
39 => Some(FieldReference { name: "avg_neg_grade", num: 39, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
40 => Some(FieldReference { name: "max_pos_grade", num: 40, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
41 => Some(FieldReference { name: "max_neg_grade", num: 41, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "%", ..FR_DEF }),
42 => Some(FieldReference { name: "avg_temperature", num: 42, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
43 => Some(FieldReference { name: "max_temperature", num: 43, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "C", ..FR_DEF }),
44 => Some(FieldReference { name: "total_moving_time", num: 44, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
45 => Some(FieldReference { name: "avg_pos_vertical_speed", num: 45, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
46 => Some(FieldReference { name: "avg_neg_vertical_speed", num: 46, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
47 => Some(FieldReference { name: "max_pos_vertical_speed", num: 47, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
48 => Some(FieldReference { name: "max_neg_vertical_speed", num: 48, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 1000.0, units: "m/s", ..FR_DEF }),
49 => Some(FieldReference { name: "time_in_hr_zone", num: 49, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
50 => Some(FieldReference { name: "time_in_speed_zone", num: 50, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
51 => Some(FieldReference { name: "time_in_cadence_zone", num: 51, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
52 => Some(FieldReference { name: "time_in_power_zone", num: 52, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
53 => Some(FieldReference { name: "repetition_num", num: 53, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
54 => Some(FieldReference { name: "min_altitude", num: 54, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 5.0, offset: 500.0,units: "m", components: &[
Component { field_num: 93 , scale: 5.0, offset: 500.0, accumulate: false, bits: 16 }
], ..FR_DEF }),
55 => Some(FieldReference { name: "min_heart_rate", num: 55, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
56 => Some(FieldReference { name: "active_time", num: 56, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
57 => Some(FieldReference { name: "wkt_step_index", num: 57, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
58 => Some(FieldReference { name: "sport_event", num: 58, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT_EVENT, ..FR_DEF }),
59 => Some(FieldReference { name: "avg_left_torque_effectiveness", num: 59, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
60 => Some(FieldReference { name: "avg_right_torque_effectiveness", num: 60, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
61 => Some(FieldReference { name: "avg_left_pedal_smoothness", num: 61, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
62 => Some(FieldReference { name: "avg_right_pedal_smoothness", num: 62, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
63 => Some(FieldReference { name: "avg_combined_pedal_smoothness", num: 63, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 2.0, units: "percent", ..FR_DEF }),
64 => Some(FieldReference { name: "status", num: 64, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_LAP_STATUS, ..FR_DEF }),
65 => Some(FieldReference { name: "uuid", num: 65, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
66 => Some(FieldReference { name: "avg_fractional_cadence", num: 66, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
67 => Some(FieldReference { name: "max_fractional_cadence", num: 67, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "rpm", ..FR_DEF }),
68 => Some(FieldReference { name: "total_fractional_cycles", num: 68, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 128.0, units: "cycles", ..FR_DEF }),
69 => Some(FieldReference { name: "front_gear_shift_count", num: 69, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
70 => Some(FieldReference { name: "rear_gear_shift_count", num: 70, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
71 => Some(FieldReference { name: "time_standing", num: 71, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
72 => Some(FieldReference { name: "stand_count", num: 72, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
73 => Some(FieldReference { name: "avg_left_pco", num: 73, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
74 => Some(FieldReference { name: "avg_right_pco", num: 74, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, units: "mm", ..FR_DEF }),
75 => Some(FieldReference { name: "avg_left_power_phase", num: 75, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
76 => Some(FieldReference { name: "avg_left_power_phase_peak", num: 76, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
77 => Some(FieldReference { name: "avg_right_power_phase", num: 77, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
78 => Some(FieldReference { name: "avg_right_power_phase_peak", num: 78, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , scale: 0.7111111, units: "degrees", ..FR_DEF }),
79 => Some(FieldReference { name: "avg_power_position", num: 79, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "watts", ..FR_DEF }),
80 => Some(FieldReference { name: "max_power_position", num: 80, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "watts", ..FR_DEF }),
81 => Some(FieldReference { name: "avg_cadence_position", num: 81, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "rpm", ..FR_DEF }),
82 => Some(FieldReference { name: "max_cadence_position", num: 82, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "rpm", ..FR_DEF }),
83 => Some(FieldReference { name: "manufacturer", num: 83, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
84 => Some(FieldReference { name: "total_grit", num: 84, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
85 => Some(FieldReference { name: "total_flow", num: 85, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
86 => Some(FieldReference { name: "avg_grit", num: 86, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "kGrit", ..FR_DEF }),
87 => Some(FieldReference { name: "avg_flow", num: 87, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, units: "Flow", ..FR_DEF }),
89 => Some(FieldReference { name: "total_fractional_ascent", num: 89, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
90 => Some(FieldReference { name: "total_fractional_descent", num: 90, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 100.0, units: "m", ..FR_DEF }),
91 => Some(FieldReference { name: "enhanced_avg_altitude", num: 91, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
92 => Some(FieldReference { name: "enhanced_max_altitude", num: 92, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
93 => Some(FieldReference { name: "enhanced_min_altitude", num: 93, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 5.0, offset: 500.0,units: "m", ..FR_DEF }),
_ => None,
}},
MesgNum::SEGMENT_FILE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
1 => Some(FieldReference { name: "file_uuid", num: 1, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
3 => Some(FieldReference { name: "enabled", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
4 => Some(FieldReference { name: "user_profile_primary_key", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
7 => Some(FieldReference { name: "leader_type", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::SEGMENT_LEADERBOARD_TYPE, array: true , ..FR_DEF }),
8 => Some(FieldReference { name: "leader_group_primary_key", num: 8, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , ..FR_DEF }),
9 => Some(FieldReference { name: "leader_activity_id", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , ..FR_DEF }),
10 => Some(FieldReference { name: "leader_activity_id_string", num: 10, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true , ..FR_DEF }),
11 => Some(FieldReference { name: "default_race_leader", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
_ => None,
}},
MesgNum::WORKOUT => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
4 => Some(FieldReference { name: "sport", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
5 => Some(FieldReference { name: "capabilities", num: 5, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::WORKOUT_CAPABILITIES, ..FR_DEF }),
6 => Some(FieldReference { name: "num_valid_steps", num: 6, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
8 => Some(FieldReference { name: "wkt_name", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
11 => Some(FieldReference { name: "sub_sport", num: 11, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
14 => Some(FieldReference { name: "pool_length", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
15 => Some(FieldReference { name: "pool_length_unit", num: 15, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
17 => Some(FieldReference { name: "wkt_description", num: 17, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
_ => None,
}},
MesgNum::WORKOUT_SESSION => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "sport", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
1 => Some(FieldReference { name: "sub_sport", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
2 => Some(FieldReference { name: "num_valid_steps", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
3 => Some(FieldReference { name: "first_step_index", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
4 => Some(FieldReference { name: "pool_length", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "m", ..FR_DEF }),
5 => Some(FieldReference { name: "pool_length_unit", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::DISPLAY_MEASURE, ..FR_DEF }),
_ => None,
}},
MesgNum::WORKOUT_STEP => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "wkt_step_name", num: 0, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
1 => Some(FieldReference { name: "duration_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::WKT_STEP_DURATION, ..FR_DEF }),
2 => Some(FieldReference { name: "duration_value", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "duration_time", profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 0 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 28 },
], ..SF_DEF },
SubField { name: "duration_distance", profile_type: ProfileType::UINT32, scale: 100.0, units: "m", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "duration_hr", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 2 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 3 },
], ..SF_DEF },
SubField { name: "duration_calories", profile_type: ProfileType::UINT32, units: "calories", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 4 },
], ..SF_DEF },
SubField { name: "duration_step", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 6 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 7 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 8 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 9 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 10 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 11 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 12 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 13 },
], ..SF_DEF },
SubField { name: "duration_power", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 14 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 15 },
], ..SF_DEF },
SubField { name: "duration_reps", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 29 },
], ..SF_DEF }
], ..FR_DEF }),
3 => Some(FieldReference { name: "target_type", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::WKT_STEP_TARGET, ..FR_DEF }),
4 => Some(FieldReference { name: "target_value", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "target_speed_zone", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "target_hr_zone", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "target_cadence_zone", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 3 },
], ..SF_DEF },
SubField { name: "target_power_zone", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 4 },
], ..SF_DEF },
SubField { name: "repeat_steps", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 6 },
], ..SF_DEF },
SubField { name: "repeat_time", profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 7 },
], ..SF_DEF },
SubField { name: "repeat_distance", profile_type: ProfileType::UINT32, scale: 100.0, units: "m", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 8 },
], ..SF_DEF },
SubField { name: "repeat_calories", profile_type: ProfileType::UINT32, units: "calories", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 9 },
], ..SF_DEF },
SubField { name: "repeat_hr", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 10 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 11 },
], ..SF_DEF },
SubField { name: "repeat_power", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
SubFieldMap { ref_field_num: 1 , ref_field_value: 12 },
SubFieldMap { ref_field_num: 1 , ref_field_value: 13 },
], ..SF_DEF },
SubField { name: "target_stroke_type", profile_type: ProfileType::SWIM_STROKE, maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 11 },
], ..SF_DEF }
], ..FR_DEF }),
5 => Some(FieldReference { name: "custom_target_value_low", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "custom_target_speed_low", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "custom_target_heart_rate_low", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "custom_target_cadence_low", profile_type: ProfileType::UINT32, units: "rpm", maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 3 },
], ..SF_DEF },
SubField { name: "custom_target_power_low", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 4 },
], ..SF_DEF }
], ..FR_DEF }),
6 => Some(FieldReference { name: "custom_target_value_high", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "custom_target_speed_high", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "custom_target_heart_rate_high", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "custom_target_cadence_high", profile_type: ProfileType::UINT32, units: "rpm", maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 3 },
], ..SF_DEF },
SubField { name: "custom_target_power_high", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
SubFieldMap { ref_field_num: 3 , ref_field_value: 4 },
], ..SF_DEF }
], ..FR_DEF }),
7 => Some(FieldReference { name: "intensity", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::INTENSITY, ..FR_DEF }),
8 => Some(FieldReference { name: "notes", num: 8, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, ..FR_DEF }),
9 => Some(FieldReference { name: "equipment", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::WORKOUT_EQUIPMENT, ..FR_DEF }),
10 => Some(FieldReference { name: "exercise_category", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::EXERCISE_CATEGORY, ..FR_DEF }),
11 => Some(FieldReference { name: "exercise_name", num: 11, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
12 => Some(FieldReference { name: "exercise_weight", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "kg", ..FR_DEF }),
13 => Some(FieldReference { name: "weight_display_unit", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::FIT_BASE_UNIT, ..FR_DEF }),
19 => Some(FieldReference { name: "secondary_target_type", num: 19, base_type: FitBaseType::ENUM, profile_type: ProfileType::WKT_STEP_TARGET, ..FR_DEF }),
20 => Some(FieldReference { name: "secondary_target_value", num: 20, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "secondary_target_speed_zone", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "secondary_target_hr_zone", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "secondary_target_cadence_zone", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 3 },
], ..SF_DEF },
SubField { name: "secondary_target_power_zone", profile_type: ProfileType::UINT32, maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 4 },
], ..SF_DEF },
SubField { name: "secondary_target_stroke_type", profile_type: ProfileType::SWIM_STROKE, maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 11 },
], ..SF_DEF }
], ..FR_DEF }),
21 => Some(FieldReference { name: "secondary_custom_target_value_low", num: 21, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "secondary_custom_target_speed_low", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "secondary_custom_target_heart_rate_low", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "secondary_custom_target_cadence_low", profile_type: ProfileType::UINT32, units: "rpm", maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 3 },
], ..SF_DEF },
SubField { name: "secondary_custom_target_power_low", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 4 },
], ..SF_DEF }
], ..FR_DEF }),
22 => Some(FieldReference { name: "secondary_custom_target_value_high", num: 22, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, sub_fields: &[
SubField { name: "secondary_custom_target_speed_high", profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 0 },
], ..SF_DEF },
SubField { name: "secondary_custom_target_heart_rate_high", profile_type: ProfileType::WORKOUT_HR, units: "% or bpm", maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "secondary_custom_target_cadence_high", profile_type: ProfileType::UINT32, units: "rpm", maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 3 },
], ..SF_DEF },
SubField { name: "secondary_custom_target_power_high", profile_type: ProfileType::WORKOUT_POWER, units: "% or watts", maps: &[
SubFieldMap { ref_field_num: 19 , ref_field_value: 4 },
], ..SF_DEF }
], ..FR_DEF }),
_ => None,
}},
MesgNum::EXERCISE_TITLE => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
0 => Some(FieldReference { name: "exercise_category", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::EXERCISE_CATEGORY, ..FR_DEF }),
1 => Some(FieldReference { name: "exercise_name", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
2 => Some(FieldReference { name: "wkt_step_name", num: 2, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true , ..FR_DEF }),
_ => None,
}},
MesgNum::SCHEDULE => { match field_num {
0 => Some(FieldReference { name: "manufacturer", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::MANUFACTURER, ..FR_DEF }),
1 => Some(FieldReference { name: "product", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, sub_fields: &[
SubField { name: "favero_product", profile_type: ProfileType::FAVERO_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 263 },
], ..SF_DEF },
SubField { name: "garmin_product", profile_type: ProfileType::GARMIN_PRODUCT, maps: &[
SubFieldMap { ref_field_num: 0 , ref_field_value: 1 },
SubFieldMap { ref_field_num: 0 , ref_field_value: 15 },
SubFieldMap { ref_field_num: 0 , ref_field_value: 13 },
SubFieldMap { ref_field_num: 0 , ref_field_value: 89 },
], ..SF_DEF }
], ..FR_DEF }),
2 => Some(FieldReference { name: "serial_number", num: 2, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::UINT32Z, ..FR_DEF }),
3 => Some(FieldReference { name: "time_created", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
4 => Some(FieldReference { name: "completed", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
5 => Some(FieldReference { name: "type", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SCHEDULE, ..FR_DEF }),
6 => Some(FieldReference { name: "scheduled_time", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, ..FR_DEF }),
_ => None,
}},
MesgNum::TOTALS => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timer_time", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "distance", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "m", ..FR_DEF }),
2 => Some(FieldReference { name: "calories", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "kcal", ..FR_DEF }),
3 => Some(FieldReference { name: "sport", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
4 => Some(FieldReference { name: "elapsed_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
5 => Some(FieldReference { name: "sessions", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
6 => Some(FieldReference { name: "active_time", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
9 => Some(FieldReference { name: "sport_index", num: 9, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
_ => None,
}},
MesgNum::WEIGHT_SCALE => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "weight", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::WEIGHT, scale: 100.0, units: "kg", ..FR_DEF }),
1 => Some(FieldReference { name: "percent_fat", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "%", ..FR_DEF }),
2 => Some(FieldReference { name: "percent_hydration", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "%", ..FR_DEF }),
3 => Some(FieldReference { name: "visceral_fat_mass", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "kg", ..FR_DEF }),
4 => Some(FieldReference { name: "bone_mass", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "kg", ..FR_DEF }),
5 => Some(FieldReference { name: "muscle_mass", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "kg", ..FR_DEF }),
7 => Some(FieldReference { name: "basal_met", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 4.0, units: "kcal/day", ..FR_DEF }),
8 => Some(FieldReference { name: "physique_rating", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
9 => Some(FieldReference { name: "active_met", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 4.0, units: "kcal/day", ..FR_DEF }),
10 => Some(FieldReference { name: "metabolic_age", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "years", ..FR_DEF }),
11 => Some(FieldReference { name: "visceral_fat_rating", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
12 => Some(FieldReference { name: "user_profile_index", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
13 => Some(FieldReference { name: "bmi", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "kg/m^2", ..FR_DEF }),
_ => None,
}},
MesgNum::BLOOD_PRESSURE => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "systolic_pressure", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
1 => Some(FieldReference { name: "diastolic_pressure", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
2 => Some(FieldReference { name: "mean_arterial_pressure", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
3 => Some(FieldReference { name: "map_3_sample_mean", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
4 => Some(FieldReference { name: "map_morning_values", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
5 => Some(FieldReference { name: "map_evening_values", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "mmHg", ..FR_DEF }),
6 => Some(FieldReference { name: "heart_rate", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
7 => Some(FieldReference { name: "heart_rate_type", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::HR_TYPE, ..FR_DEF }),
8 => Some(FieldReference { name: "status", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::BP_STATUS, ..FR_DEF }),
9 => Some(FieldReference { name: "user_profile_index", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
_ => None,
}},
MesgNum::MONITORING_INFO => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "local_timestamp", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "activity_type", num: 1, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_TYPE, array: true , ..FR_DEF }),
3 => Some(FieldReference { name: "cycles_to_distance", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 5000.0, units: "m/cycle", ..FR_DEF }),
4 => Some(FieldReference { name: "cycles_to_calories", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 5000.0, units: "kcal/cycle", ..FR_DEF }),
5 => Some(FieldReference { name: "resting_metabolic_rate", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal / day", ..FR_DEF }),
_ => None,
}},
MesgNum::MONITORING => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "device_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
1 => Some(FieldReference { name: "calories", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
2 => Some(FieldReference { name: "distance", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "m", ..FR_DEF }),
3 => Some(FieldReference { name: "cycles", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 2.0, units: "cycles", sub_fields: &[
SubField { name: "steps", profile_type: ProfileType::UINT32, units: "steps", maps: &[
SubFieldMap { ref_field_num: 5 , ref_field_value: 6 },
SubFieldMap { ref_field_num: 5 , ref_field_value: 1 },
], ..SF_DEF },
SubField { name: "strokes", profile_type: ProfileType::UINT32, scale: 2.0, units: "strokes", maps: &[
SubFieldMap { ref_field_num: 5 , ref_field_value: 2 },
SubFieldMap { ref_field_num: 5 , ref_field_value: 5 },
], ..SF_DEF }
], ..FR_DEF }),
4 => Some(FieldReference { name: "active_time", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
5 => Some(FieldReference { name: "activity_type", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_TYPE, ..FR_DEF }),
6 => Some(FieldReference { name: "activity_subtype", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_SUBTYPE, ..FR_DEF }),
7 => Some(FieldReference { name: "activity_level", num: 7, base_type: FitBaseType::ENUM, profile_type: ProfileType::ACTIVITY_LEVEL, ..FR_DEF }),
8 => Some(FieldReference { name: "distance_16", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "100 * m", ..FR_DEF }),
9 => Some(FieldReference { name: "cycles_16", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "2 * cycles (steps)", ..FR_DEF }),
10 => Some(FieldReference { name: "active_time_16", num: 10, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
11 => Some(FieldReference { name: "local_timestamp", num: 11, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, ..FR_DEF }),
12 => Some(FieldReference { name: "temperature", num: 12, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "C", ..FR_DEF }),
14 => Some(FieldReference { name: "temperature_min", num: 14, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "C", ..FR_DEF }),
15 => Some(FieldReference { name: "temperature_max", num: 15, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "C", ..FR_DEF }),
16 => Some(FieldReference { name: "activity_time", num: 16, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "minutes", ..FR_DEF }),
19 => Some(FieldReference { name: "active_calories", num: 19, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "kcal", ..FR_DEF }),
24 => Some(FieldReference { name: "current_activity_type_intensity", num: 24, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, components: &[
Component { field_num: 5 , scale: 1.0, offset: 0.0, accumulate: false, bits: 5 },
Component { field_num: 28 , scale: 1.0, offset: 0.0, accumulate: false, bits: 3 }
], ..FR_DEF }),
25 => Some(FieldReference { name: "timestamp_min_8", num: 25, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "min", ..FR_DEF }),
26 => Some(FieldReference { name: "timestamp_16", num: 26, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
27 => Some(FieldReference { name: "heart_rate", num: 27, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
28 => Some(FieldReference { name: "intensity", num: 28, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 10.0, ..FR_DEF }),
29 => Some(FieldReference { name: "duration_min", num: 29, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "min", ..FR_DEF }),
30 => Some(FieldReference { name: "duration", num: 30, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
31 => Some(FieldReference { name: "ascent", num: 31, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
32 => Some(FieldReference { name: "descent", num: 32, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
33 => Some(FieldReference { name: "moderate_activity_minutes", num: 33, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "minutes", ..FR_DEF }),
34 => Some(FieldReference { name: "vigorous_activity_minutes", num: 34, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "minutes", ..FR_DEF }),
_ => None,
}},
MesgNum::MONITORING_HR_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "resting_heart_rate", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
1 => Some(FieldReference { name: "current_day_resting_heart_rate", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "bpm", ..FR_DEF }),
_ => None,
}},
MesgNum::SPO2_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "reading_spo2", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
1 => Some(FieldReference { name: "reading_confidence", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
2 => Some(FieldReference { name: "mode", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPO2_MEASUREMENT_TYPE, ..FR_DEF }),
_ => None,
}},
MesgNum::HR => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "fractional_timestamp", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "time256", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, scale: 256.0, units: "s", components: &[
Component { field_num: 0 , scale: 256.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
6 => Some(FieldReference { name: "filtered_bpm", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "bpm", ..FR_DEF }),
9 => Some(FieldReference { name: "event_timestamp", num: 9, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , accumulate: true, scale: 1024.0, units: "s", ..FR_DEF }),
10 => Some(FieldReference { name: "event_timestamp_12", num: 10, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , accumulate: true, units: "s", components: &[
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 },
Component { field_num: 9 , scale: 1024.0, offset: 0.0, accumulate: true, bits: 12 }
], ..FR_DEF }),
_ => None,
}},
MesgNum::STRESS_LEVEL => { match field_num {
0 => Some(FieldReference { name: "stress_level_value", num: 0, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, ..FR_DEF }),
1 => Some(FieldReference { name: "stress_level_time", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
_ => None,
}},
MesgNum::MAX_MET_DATA => { match field_num {
0 => Some(FieldReference { name: "update_time", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
2 => Some(FieldReference { name: "vo2_max", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 10.0, units: "mL/kg/min", ..FR_DEF }),
5 => Some(FieldReference { name: "sport", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::SPORT, ..FR_DEF }),
6 => Some(FieldReference { name: "sub_sport", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::SUB_SPORT, ..FR_DEF }),
8 => Some(FieldReference { name: "max_met_category", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::MAX_MET_CATEGORY, ..FR_DEF }),
9 => Some(FieldReference { name: "calibrated_data", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
12 => Some(FieldReference { name: "hr_source", num: 12, base_type: FitBaseType::ENUM, profile_type: ProfileType::MAX_MET_HEART_RATE_SOURCE, ..FR_DEF }),
13 => Some(FieldReference { name: "speed_source", num: 13, base_type: FitBaseType::ENUM, profile_type: ProfileType::MAX_MET_SPEED_SOURCE, ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_BODY_BATTERY_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "level", num: 1, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, array: true , units: "percent", ..FR_DEF }),
2 => Some(FieldReference { name: "charged", num: 2, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , ..FR_DEF }),
3 => Some(FieldReference { name: "uncharged", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_EVENT => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "event_id", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_ACCELEROMETER_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "sampling_interval", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
2 => Some(FieldReference { name: "accel_x", num: 2, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 1.024, units: "mG", ..FR_DEF }),
3 => Some(FieldReference { name: "accel_y", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 1.024, units: "mG", ..FR_DEF }),
4 => Some(FieldReference { name: "accel_z", num: 4, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 1.024, units: "mG", ..FR_DEF }),
5 => Some(FieldReference { name: "timestamp_32k", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_GYROSCOPE_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "sampling_interval", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "1/32768 s", ..FR_DEF }),
2 => Some(FieldReference { name: "gyro_x", num: 2, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 28.57143, units: "deg/s", ..FR_DEF }),
3 => Some(FieldReference { name: "gyro_y", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 28.57143, units: "deg/s", ..FR_DEF }),
4 => Some(FieldReference { name: "gyro_z", num: 4, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 28.57143, units: "deg/s", ..FR_DEF }),
5 => Some(FieldReference { name: "timestamp_32k", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "1/32768 s", ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_STEP_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "steps", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, array: true , units: "steps", ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_SPO2_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "reading_spo2", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "percent", ..FR_DEF }),
2 => Some(FieldReference { name: "confidence", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_STRESS_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "stress_level", num: 1, base_type: FitBaseType::SINT8, profile_type: ProfileType::SINT8, array: true , units: "s", ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_RESPIRATION_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "respiration_rate", num: 1, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, array: true , scale: 100.0, units: "breaths/min", ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_HEART_RATE_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "status", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
2 => Some(FieldReference { name: "heart_rate", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , units: "bpm", ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_CONFIGURATION_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "data", num: 0, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , ..FR_DEF }),
1 => Some(FieldReference { name: "data_size", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
_ => None,
}},
MesgNum::HSA_WRIST_TEMPERATURE_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "processing_interval", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "value", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 1000.0, units: "degC", ..FR_DEF }),
_ => None,
}},
MesgNum::MEMO_GLOB => { match field_num {
250 => Some(FieldReference { name: "part_index", num: 250, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
0 => Some(FieldReference { name: "memo", num: 0, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , ..FR_DEF }),
1 => Some(FieldReference { name: "mesg_num", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
2 => Some(FieldReference { name: "parent_index", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
3 => Some(FieldReference { name: "field_num", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
4 => Some(FieldReference { name: "data", num: 4, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, array: true , ..FR_DEF }),
_ => None,
}},
MesgNum::SLEEP_LEVEL => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "sleep_level", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SLEEP_LEVEL, ..FR_DEF }),
_ => None,
}},
MesgNum::ANT_CHANNEL_ID => { match field_num {
0 => Some(FieldReference { name: "channel_number", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
1 => Some(FieldReference { name: "device_type", num: 1, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
2 => Some(FieldReference { name: "device_number", num: 2, base_type: FitBaseType::UINT16Z, profile_type: ProfileType::UINT16Z, ..FR_DEF }),
3 => Some(FieldReference { name: "transmission_type", num: 3, base_type: FitBaseType::UINT8Z, profile_type: ProfileType::UINT8Z, ..FR_DEF }),
4 => Some(FieldReference { name: "device_index", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::DEVICE_INDEX, ..FR_DEF }),
_ => None,
}},
MesgNum::ANT_RX => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "fractional_timestamp", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "mesg_id", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, ..FR_DEF }),
2 => Some(FieldReference { name: "mesg_data", num: 2, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , components: &[
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
3 => Some(FieldReference { name: "channel_number", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
4 => Some(FieldReference { name: "data", num: 4, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , ..FR_DEF }),
_ => None,
}},
MesgNum::ANT_TX => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "fractional_timestamp", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 32768.0, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "mesg_id", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, ..FR_DEF }),
2 => Some(FieldReference { name: "mesg_data", num: 2, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , components: &[
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 8 }
], ..FR_DEF }),
3 => Some(FieldReference { name: "channel_number", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
4 => Some(FieldReference { name: "data", num: 4, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, array: true , ..FR_DEF }),
_ => None,
}},
MesgNum::EXD_SCREEN_CONFIGURATION => { match field_num {
0 => Some(FieldReference { name: "screen_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
1 => Some(FieldReference { name: "field_count", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
2 => Some(FieldReference { name: "layout", num: 2, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_LAYOUT, ..FR_DEF }),
3 => Some(FieldReference { name: "screen_enabled", num: 3, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
_ => None,
}},
MesgNum::EXD_DATA_FIELD_CONFIGURATION => { match field_num {
0 => Some(FieldReference { name: "screen_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
1 => Some(FieldReference { name: "concept_field", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, components: &[
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 4 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 4 }
], ..FR_DEF }),
2 => Some(FieldReference { name: "field_id", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
3 => Some(FieldReference { name: "concept_count", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
4 => Some(FieldReference { name: "display_type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_DISPLAY_TYPE, ..FR_DEF }),
5 => Some(FieldReference { name: "title", num: 5, base_type: FitBaseType::STRING, profile_type: ProfileType::STRING, array: true , ..FR_DEF }),
_ => None,
}},
MesgNum::EXD_DATA_CONCEPT_CONFIGURATION => { match field_num {
0 => Some(FieldReference { name: "screen_index", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
1 => Some(FieldReference { name: "concept_field", num: 1, base_type: FitBaseType::BYTE, profile_type: ProfileType::BYTE, components: &[
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 4 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 4 }
], ..FR_DEF }),
2 => Some(FieldReference { name: "field_id", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
3 => Some(FieldReference { name: "concept_index", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
4 => Some(FieldReference { name: "data_page", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
5 => Some(FieldReference { name: "concept_key", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
6 => Some(FieldReference { name: "scaling", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
8 => Some(FieldReference { name: "data_units", num: 8, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_DATA_UNITS, ..FR_DEF }),
9 => Some(FieldReference { name: "qualifier", num: 9, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_QUALIFIERS, ..FR_DEF }),
10 => Some(FieldReference { name: "descriptor", num: 10, base_type: FitBaseType::ENUM, profile_type: ProfileType::EXD_DESCRIPTORS, ..FR_DEF }),
11 => Some(FieldReference { name: "is_signed", num: 11, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
_ => None,
}},
MesgNum::DIVE_SUMMARY => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "reference_mesg", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESG_NUM, ..FR_DEF }),
1 => Some(FieldReference { name: "reference_index", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
2 => Some(FieldReference { name: "avg_depth", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
3 => Some(FieldReference { name: "max_depth", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m", ..FR_DEF }),
4 => Some(FieldReference { name: "surface_interval", num: 4, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, units: "s", ..FR_DEF }),
5 => Some(FieldReference { name: "start_cns", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
6 => Some(FieldReference { name: "end_cns", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, units: "percent", ..FR_DEF }),
7 => Some(FieldReference { name: "start_n2", num: 7, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
8 => Some(FieldReference { name: "end_n2", num: 8, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "percent", ..FR_DEF }),
9 => Some(FieldReference { name: "o2_toxicity", num: 9, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "OTUs", ..FR_DEF }),
10 => Some(FieldReference { name: "dive_number", num: 10, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
11 => Some(FieldReference { name: "bottom_time", num: 11, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
12 => Some(FieldReference { name: "avg_pressure_sac", num: 12, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar/min", ..FR_DEF }),
13 => Some(FieldReference { name: "avg_volume_sac", num: 13, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "L/min", ..FR_DEF }),
14 => Some(FieldReference { name: "avg_rmv", num: 14, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "L/min", ..FR_DEF }),
15 => Some(FieldReference { name: "descent_time", num: 15, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
16 => Some(FieldReference { name: "ascent_time", num: 16, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
17 => Some(FieldReference { name: "avg_ascent_rate", num: 17, base_type: FitBaseType::SINT32, profile_type: ProfileType::SINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
22 => Some(FieldReference { name: "avg_descent_rate", num: 22, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
23 => Some(FieldReference { name: "max_ascent_rate", num: 23, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
24 => Some(FieldReference { name: "max_descent_rate", num: 24, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
25 => Some(FieldReference { name: "hang_time", num: 25, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "s", ..FR_DEF }),
_ => None,
}},
MesgNum::AAD_ACCEL_FEATURES => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "time", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "s", ..FR_DEF }),
1 => Some(FieldReference { name: "energy_total", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, ..FR_DEF }),
2 => Some(FieldReference { name: "zero_cross_cnt", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
3 => Some(FieldReference { name: "instance", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
4 => Some(FieldReference { name: "time_above_threshold", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 25.0, units: "s", ..FR_DEF }),
_ => None,
}},
MesgNum::HRV => { match field_num {
0 => Some(FieldReference { name: "time", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , scale: 1000.0, units: "s", ..FR_DEF }),
_ => None,
}},
MesgNum::BEAT_INTERVALS => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "time", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "ms", ..FR_DEF }),
_ => None,
}},
MesgNum::HRV_STATUS_SUMMARY => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "weekly_average", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "last_night_average", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
2 => Some(FieldReference { name: "last_night_5_min_high", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
3 => Some(FieldReference { name: "baseline_low_upper", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
4 => Some(FieldReference { name: "baseline_balanced_lower", num: 4, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
5 => Some(FieldReference { name: "baseline_balanced_upper", num: 5, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
6 => Some(FieldReference { name: "status", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::HRV_STATUS, ..FR_DEF }),
_ => None,
}},
MesgNum::HRV_VALUE => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "value", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 128.0, units: "ms", ..FR_DEF }),
_ => None,
}},
MesgNum::RAW_BBI => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "timestamp_ms", num: 0, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, units: "ms", ..FR_DEF }),
1 => Some(FieldReference { name: "data", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , components: &[
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 2 , scale: 1.0, offset: 0.0, accumulate: false, bits: 14 },
Component { field_num: 3 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 },
Component { field_num: 4 , scale: 1.0, offset: 0.0, accumulate: false, bits: 1 }
], ..FR_DEF }),
2 => Some(FieldReference { name: "time", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, array: true , units: "ms", ..FR_DEF }),
3 => Some(FieldReference { name: "quality", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , ..FR_DEF }),
4 => Some(FieldReference { name: "gap", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, array: true , ..FR_DEF }),
_ => None,
}},
MesgNum::RESPIRATION_RATE => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "respiration_rate", num: 0, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, scale: 100.0, units: "breaths/min", ..FR_DEF }),
_ => None,
}},
MesgNum::CHRONO_SHOT_SESSION => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "min_speed", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
1 => Some(FieldReference { name: "max_speed", num: 1, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
2 => Some(FieldReference { name: "avg_speed", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
3 => Some(FieldReference { name: "shot_count", num: 3, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
4 => Some(FieldReference { name: "projectile_type", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::PROJECTILE_TYPE, ..FR_DEF }),
5 => Some(FieldReference { name: "grain_weight", num: 5, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 10.0, units: "gr", ..FR_DEF }),
6 => Some(FieldReference { name: "standard_deviation", num: 6, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
_ => None,
}},
MesgNum::CHRONO_SHOT_DATA => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "shot_speed", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 1000.0, units: "m/s", ..FR_DEF }),
1 => Some(FieldReference { name: "shot_num", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, ..FR_DEF }),
_ => None,
}},
MesgNum::TANK_UPDATE => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "sensor", num: 0, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::ANT_CHANNEL_ID, ..FR_DEF }),
1 => Some(FieldReference { name: "pressure", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar", ..FR_DEF }),
_ => None,
}},
MesgNum::TANK_SUMMARY => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "s", ..FR_DEF }),
0 => Some(FieldReference { name: "sensor", num: 0, base_type: FitBaseType::UINT32Z, profile_type: ProfileType::ANT_CHANNEL_ID, ..FR_DEF }),
1 => Some(FieldReference { name: "start_pressure", num: 1, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar", ..FR_DEF }),
2 => Some(FieldReference { name: "end_pressure", num: 2, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, units: "bar", ..FR_DEF }),
3 => Some(FieldReference { name: "volume_used", num: 3, base_type: FitBaseType::UINT32, profile_type: ProfileType::UINT32, scale: 100.0, units: "L", ..FR_DEF }),
_ => None,
}},
MesgNum::SLEEP_ASSESSMENT => { match field_num {
0 => Some(FieldReference { name: "combined_awake_score", num: 0, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
1 => Some(FieldReference { name: "awake_time_score", num: 1, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
2 => Some(FieldReference { name: "awakenings_count_score", num: 2, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
3 => Some(FieldReference { name: "deep_sleep_score", num: 3, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
4 => Some(FieldReference { name: "sleep_duration_score", num: 4, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
5 => Some(FieldReference { name: "light_sleep_score", num: 5, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
6 => Some(FieldReference { name: "overall_sleep_score", num: 6, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
7 => Some(FieldReference { name: "sleep_quality_score", num: 7, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
8 => Some(FieldReference { name: "sleep_recovery_score", num: 8, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
9 => Some(FieldReference { name: "rem_sleep_score", num: 9, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
10 => Some(FieldReference { name: "sleep_restlessness_score", num: 10, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
11 => Some(FieldReference { name: "awakenings_count", num: 11, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
14 => Some(FieldReference { name: "interruptions_score", num: 14, base_type: FitBaseType::UINT8, profile_type: ProfileType::UINT8, ..FR_DEF }),
15 => Some(FieldReference { name: "average_stress_during_sleep", num: 15, base_type: FitBaseType::UINT16, profile_type: ProfileType::UINT16, scale: 100.0, ..FR_DEF }),
_ => None,
}},
MesgNum::SLEEP_DISRUPTION_SEVERITY_PERIOD => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "severity", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SLEEP_DISRUPTION_SEVERITY, ..FR_DEF }),
_ => None,
}},
MesgNum::SLEEP_DISRUPTION_OVERNIGHT_SEVERITY => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "severity", num: 0, base_type: FitBaseType::ENUM, profile_type: ProfileType::SLEEP_DISRUPTION_SEVERITY, ..FR_DEF }),
_ => None,
}},
MesgNum::NAP_EVENT => { match field_num {
254 => Some(FieldReference { name: "message_index", num: 254, base_type: FitBaseType::UINT16, profile_type: ProfileType::MESSAGE_INDEX, ..FR_DEF }),
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "start_time", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "seconds", ..FR_DEF }),
1 => Some(FieldReference { name: "start_timezone_offset", num: 1, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, units: "minutes", ..FR_DEF }),
2 => Some(FieldReference { name: "end_time", num: 2, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, units: "seconds", ..FR_DEF }),
3 => Some(FieldReference { name: "end_timezone_offset", num: 3, base_type: FitBaseType::SINT16, profile_type: ProfileType::SINT16, units: "minutes", ..FR_DEF }),
4 => Some(FieldReference { name: "feedback", num: 4, base_type: FitBaseType::ENUM, profile_type: ProfileType::NAP_PERIOD_FEEDBACK, ..FR_DEF }),
5 => Some(FieldReference { name: "is_deleted", num: 5, base_type: FitBaseType::ENUM, profile_type: ProfileType::BOOL, ..FR_DEF }),
6 => Some(FieldReference { name: "source", num: 6, base_type: FitBaseType::ENUM, profile_type: ProfileType::NAP_SOURCE, ..FR_DEF }),
7 => Some(FieldReference { name: "update_timestamp", num: 7, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
_ => None,
}},
MesgNum::SKIN_TEMP_OVERNIGHT => { match field_num {
253 => Some(FieldReference { name: "timestamp", num: 253, base_type: FitBaseType::UINT32, profile_type: ProfileType::DATE_TIME, ..FR_DEF }),
0 => Some(FieldReference { name: "local_timestamp", num: 0, base_type: FitBaseType::UINT32, profile_type: ProfileType::LOCAL_DATE_TIME, ..FR_DEF }),
1 => Some(FieldReference { name: "average_deviation", num: 1, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
2 => Some(FieldReference { name: "average_7_day_deviation", num: 2, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
4 => Some(FieldReference { name: "nightly_value", num: 4, base_type: FitBaseType::FLOAT32, profile_type: ProfileType::FLOAT32, ..FR_DEF }),
_ => None,
}},
_ => None
}
}