// @generated by fit-codegen. DO NOT EDIT.
// Source: guide/garmin_fit_guide/Profile.xlsx

//! Static metadata for every message in Profile.xlsx.
//!
//! Each message gets a `MESG_<NAME>` static. `ALL_MESSAGES` is an
//! ordered slice over them. Field metadata is shared via interior
//! `&'static [FieldInfo]` slices.

#![allow(non_upper_case_globals, dead_code)]

use crate::profile::{Component, FieldInfo, MesgInfo, SubField};

static SUBFIELDS_FILE_ID_2: &[SubField] = &[
    SubField {
        name: "favero_product",
        type_name: "favero_product",
        conditions: &[("manufacturer", "favero_electronics")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "garmin_product",
        type_name: "garmin_product",
        conditions: &[
            ("manufacturer", "garmin"),
            ("manufacturer", "dynastream"),
            ("manufacturer", "dynastream_oem"),
            ("manufacturer", "tacx"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static FIELDS_FILE_ID: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "type",
        type_name: "file",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "manufacturer",
        type_name: "manufacturer",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "product",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_FILE_ID_2,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "serial_number",
        type_name: "uint32z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "time_created",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "number",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "product_name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_FILE_ID: MesgInfo = MesgInfo {
    name: "file_id",
    fields: FIELDS_FILE_ID,
};

static FIELDS_FILE_CREATOR: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "software_version",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "hardware_version",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_FILE_CREATOR: MesgInfo = MesgInfo {
    name: "file_creator",
    fields: FIELDS_FILE_CREATOR,
};

static FIELDS_TIMESTAMP_CORRELATION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "fractional_timestamp",
        type_name: "uint16",
        array: None,
        scale: Some(32768_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "system_timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "fractional_system_timestamp",
        type_name: "uint16",
        array: None,
        scale: Some(32768_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "local_timestamp",
        type_name: "local_date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "system_timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_TIMESTAMP_CORRELATION: MesgInfo = MesgInfo {
    name: "timestamp_correlation",
    fields: FIELDS_TIMESTAMP_CORRELATION,
};

static FIELDS_SOFTWARE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "version",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "part_number",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SOFTWARE: MesgInfo = MesgInfo {
    name: "software",
    fields: FIELDS_SOFTWARE,
};

static SUBFIELDS_SLAVE_DEVICE_1: &[SubField] = &[
    SubField {
        name: "favero_product",
        type_name: "favero_product",
        conditions: &[("manufacturer", "favero_electronics")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "garmin_product",
        type_name: "garmin_product",
        conditions: &[
            ("manufacturer", "garmin"),
            ("manufacturer", "dynastream"),
            ("manufacturer", "dynastream_oem"),
            ("manufacturer", "tacx"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static FIELDS_SLAVE_DEVICE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "manufacturer",
        type_name: "manufacturer",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "product",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_SLAVE_DEVICE_1,
        accumulate: false,
    },
];

pub static MESG_SLAVE_DEVICE: MesgInfo = MesgInfo {
    name: "slave_device",
    fields: FIELDS_SLAVE_DEVICE,
};

static FIELDS_CAPABILITIES: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "languages",
        type_name: "uint8z",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sports",
        type_name: "sport_bits_0",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "workouts_supported",
        type_name: "workout_capabilities",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "connectivity_supported",
        type_name: "connectivity_capabilities",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_CAPABILITIES: MesgInfo = MesgInfo {
    name: "capabilities",
    fields: FIELDS_CAPABILITIES,
};

static FIELDS_FILE_CAPABILITIES: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "type",
        type_name: "file",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "flags",
        type_name: "file_flags",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "directory",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "max_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "max_size",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("bytes"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_FILE_CAPABILITIES: MesgInfo = MesgInfo {
    name: "file_capabilities",
    fields: FIELDS_FILE_CAPABILITIES,
};

static SUBFIELDS_MESG_CAPABILITIES_4: &[SubField] = &[
    SubField {
        name: "num_per_file",
        type_name: "uint16",
        conditions: &[("count_type", "num_per_file")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "max_per_file",
        type_name: "uint16",
        conditions: &[("count_type", "max_per_file")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "max_per_file_type",
        type_name: "uint16",
        conditions: &[("count_type", "max_per_file_type")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static FIELDS_MESG_CAPABILITIES: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "file",
        type_name: "file",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "mesg_num",
        type_name: "mesg_num",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "count_type",
        type_name: "mesg_count",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_MESG_CAPABILITIES_4,
        accumulate: false,
    },
];

pub static MESG_MESG_CAPABILITIES: MesgInfo = MesgInfo {
    name: "mesg_capabilities",
    fields: FIELDS_MESG_CAPABILITIES,
};

static FIELDS_FIELD_CAPABILITIES: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "file",
        type_name: "file",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "mesg_num",
        type_name: "mesg_num",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "field_num",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_FIELD_CAPABILITIES: MesgInfo = MesgInfo {
    name: "field_capabilities",
    fields: FIELDS_FIELD_CAPABILITIES,
};

static FIELDS_DEVICE_SETTINGS: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "active_time_zone",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "utc_offset",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "time_offset",
        type_name: "uint32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "time_mode",
        type_name: "time_mode",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "time_zone_offset",
        type_name: "sint8",
        array: Some("[N]"),
        scale: Some(4_f64),
        offset: None,
        units: Some("hr"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "backlight_mode",
        type_name: "backlight_mode",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 36,
        name: "activity_tracker_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 39,
        name: "clock_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 40,
        name: "pages_enabled",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 46,
        name: "move_alert_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 47,
        name: "date_mode",
        type_name: "date_mode",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 55,
        name: "display_orientation",
        type_name: "display_orientation",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 56,
        name: "mounting_side",
        type_name: "side",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 57,
        name: "default_page",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 58,
        name: "autosync_min_steps",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("steps"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 59,
        name: "autosync_min_time",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("minutes"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 80,
        name: "lactate_threshold_autodetect_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 86,
        name: "ble_auto_upload_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 89,
        name: "auto_sync_frequency",
        type_name: "auto_sync_frequency",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 90,
        name: "auto_activity_detect",
        type_name: "auto_activity_detect",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 94,
        name: "number_of_screens",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 95,
        name: "smart_notification_display_orientation",
        type_name: "display_orientation",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 134,
        name: "tap_interface",
        type_name: "switch",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 174,
        name: "tap_sensitivity",
        type_name: "tap_sensitivity",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_DEVICE_SETTINGS: MesgInfo = MesgInfo {
    name: "device_settings",
    fields: FIELDS_DEVICE_SETTINGS,
};

static FIELDS_USER_PROFILE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "friendly_name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "gender",
        type_name: "gender",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "age",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("years"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "height",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "weight",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("kg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "language",
        type_name: "language",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "elev_setting",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "weight_setting",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "resting_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "default_max_running_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "default_max_biking_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "default_max_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "hr_setting",
        type_name: "display_heart",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "speed_setting",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "dist_setting",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 16,
        name: "power_setting",
        type_name: "display_power",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 17,
        name: "activity_class",
        type_name: "activity_class",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 18,
        name: "position_setting",
        type_name: "display_position",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "temperature_setting",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "local_id",
        type_name: "user_local_id",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "global_id",
        type_name: "byte",
        array: Some("[6]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 28,
        name: "wake_time",
        type_name: "localtime_into_day",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 29,
        name: "sleep_time",
        type_name: "localtime_into_day",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 30,
        name: "height_setting",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 31,
        name: "user_running_step_length",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 32,
        name: "user_walking_step_length",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 47,
        name: "depth_setting",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 49,
        name: "dive_count",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_USER_PROFILE: MesgInfo = MesgInfo {
    name: "user_profile",
    fields: FIELDS_USER_PROFILE,
};

static FIELDS_HRM_PROFILE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "hrm_ant_id",
        type_name: "uint16z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "log_hrv",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "hrm_ant_id_trans_type",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HRM_PROFILE: MesgInfo = MesgInfo {
    name: "hrm_profile",
    fields: FIELDS_HRM_PROFILE,
};

static FIELDS_SDM_PROFILE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sdm_ant_id",
        type_name: "uint16z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "sdm_cal_factor",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "odometer",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "speed_source",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "sdm_ant_id_trans_type",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "odometer_rollover",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SDM_PROFILE: MesgInfo = MesgInfo {
    name: "sdm_profile",
    fields: FIELDS_SDM_PROFILE,
};

static FIELDS_BIKE_PROFILE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "odometer",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "bike_spd_ant_id",
        type_name: "uint16z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "bike_cad_ant_id",
        type_name: "uint16z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "bike_spdcad_ant_id",
        type_name: "uint16z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "bike_power_ant_id",
        type_name: "uint16z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "custom_wheelsize",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "auto_wheelsize",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "bike_weight",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("kg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "power_cal_factor",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "auto_wheel_cal",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "auto_power_zero",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "id",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "spd_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 16,
        name: "cad_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 17,
        name: "spdcad_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 18,
        name: "power_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 19,
        name: "crank_length",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: Some(-110_f64),
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 20,
        name: "enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "bike_spd_ant_id_trans_type",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "bike_cad_ant_id_trans_type",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "bike_spdcad_ant_id_trans_type",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "bike_power_ant_id_trans_type",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 37,
        name: "odometer_rollover",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 38,
        name: "front_gear_num",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 39,
        name: "front_gear",
        type_name: "uint8z",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 40,
        name: "rear_gear_num",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 41,
        name: "rear_gear",
        type_name: "uint8z",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 44,
        name: "shimano_di2_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_BIKE_PROFILE: MesgInfo = MesgInfo {
    name: "bike_profile",
    fields: FIELDS_BIKE_PROFILE,
};

static FIELDS_CONNECTIVITY: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "bluetooth_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "bluetooth_le_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "ant_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "live_tracking_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "weather_conditions_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "weather_alerts_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "auto_activity_upload_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "course_download_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "workout_download_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "gps_ephemeris_download_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "incident_detection_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "grouptrack_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_CONNECTIVITY: MesgInfo = MesgInfo {
    name: "connectivity",
    fields: FIELDS_CONNECTIVITY,
};

static SUBFIELDS_WATCHFACE_SETTINGS_2: &[SubField] = &[
    SubField {
        name: "digital_layout",
        type_name: "digital_watchface_layout",
        conditions: &[("mode", "digital")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "analog_layout",
        type_name: "analog_watchface_layout",
        conditions: &[("mode", "analog")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static FIELDS_WATCHFACE_SETTINGS: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "mode",
        type_name: "watchface_mode",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "layout",
        type_name: "byte",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_WATCHFACE_SETTINGS_2,
        accumulate: false,
    },
];

pub static MESG_WATCHFACE_SETTINGS: MesgInfo = MesgInfo {
    name: "watchface_settings",
    fields: FIELDS_WATCHFACE_SETTINGS,
};

static FIELDS_OHR_SETTINGS: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "enabled",
        type_name: "switch",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_OHR_SETTINGS: MesgInfo = MesgInfo {
    name: "ohr_settings",
    fields: FIELDS_OHR_SETTINGS,
};

static FIELDS_TIME_IN_ZONE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "reference_mesg",
        type_name: "mesg_num",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "reference_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "time_in_hr_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "time_in_speed_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "time_in_cadence_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "time_in_power_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "hr_zone_high_boundary",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "speed_zone_high_boundary",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "cadence_zone_high_bondary",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "power_zone_high_boundary",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "hr_calc_type",
        type_name: "hr_zone_calc",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "max_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "resting_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "threshold_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "pwr_calc_type",
        type_name: "pwr_zone_calc",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "functional_threshold_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_TIME_IN_ZONE: MesgInfo = MesgInfo {
    name: "time_in_zone",
    fields: FIELDS_TIME_IN_ZONE,
};

static FIELDS_ZONES_TARGET: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 1,
        name: "max_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "threshold_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "functional_threshold_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "hr_calc_type",
        type_name: "hr_zone_calc",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "pwr_calc_type",
        type_name: "pwr_zone_calc",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_ZONES_TARGET: MesgInfo = MesgInfo {
    name: "zones_target",
    fields: FIELDS_ZONES_TARGET,
};

static FIELDS_SPORT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SPORT: MesgInfo = MesgInfo {
    name: "sport",
    fields: FIELDS_SPORT,
};

static FIELDS_HR_ZONE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "high_bpm",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HR_ZONE: MesgInfo = MesgInfo {
    name: "hr_zone",
    fields: FIELDS_HR_ZONE,
};

static FIELDS_SPEED_ZONE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "high_value",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SPEED_ZONE: MesgInfo = MesgInfo {
    name: "speed_zone",
    fields: FIELDS_SPEED_ZONE,
};

static FIELDS_CADENCE_ZONE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "high_value",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_CADENCE_ZONE: MesgInfo = MesgInfo {
    name: "cadence_zone",
    fields: FIELDS_CADENCE_ZONE,
};

static FIELDS_POWER_ZONE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "high_value",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_POWER_ZONE: MesgInfo = MesgInfo {
    name: "power_zone",
    fields: FIELDS_POWER_ZONE,
};

static FIELDS_MET_ZONE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "high_bpm",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "calories",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("kcal / min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "fat_calories",
        type_name: "uint8",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("kcal / min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_MET_ZONE: MesgInfo = MesgInfo {
    name: "met_zone",
    fields: FIELDS_MET_ZONE,
};

static FIELDS_TRAINING_SETTINGS: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 31,
        name: "target_distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 32,
        name: "target_speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 33,
        name: "target_time",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 153,
        name: "precise_target_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_TRAINING_SETTINGS: MesgInfo = MesgInfo {
    name: "training_settings",
    fields: FIELDS_TRAINING_SETTINGS,
};

static SUBFIELDS_DIVE_SETTINGS_22: &[SubField] = &[
    SubField {
        name: "heart_rate_antplus_device_type",
        type_name: "antplus_device_type",
        conditions: &[("heart_rate_source_type", "antplus")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "heart_rate_local_device_type",
        type_name: "local_device_type",
        conditions: &[("heart_rate_source_type", "local")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static FIELDS_DIVE_SETTINGS: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "model",
        type_name: "tissue_model_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "gf_low",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "gf_high",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "water_type",
        type_name: "water_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "water_density",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kg/m^3"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "po2_warn",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "po2_critical",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "po2_deco",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "safety_stop_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "bottom_depth",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "bottom_time",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "apnea_countdown_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "apnea_countdown_time",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "backlight_mode",
        type_name: "dive_backlight_mode",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "backlight_brightness",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 16,
        name: "backlight_timeout",
        type_name: "backlight_timeout",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 17,
        name: "repeat_dive_interval",
        type_name: "uint16",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 18,
        name: "safety_stop_time",
        type_name: "uint16",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 19,
        name: "heart_rate_source_type",
        type_name: "source_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 20,
        name: "heart_rate_source",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_DIVE_SETTINGS_22,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "travel_gas",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "ccr_low_setpoint_switch_mode",
        type_name: "ccr_setpoint_switch_mode",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "ccr_low_setpoint",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "ccr_low_setpoint_depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 25,
        name: "ccr_high_setpoint_switch_mode",
        type_name: "ccr_setpoint_switch_mode",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 26,
        name: "ccr_high_setpoint",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 27,
        name: "ccr_high_setpoint_depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 29,
        name: "gas_consumption_display",
        type_name: "gas_consumption_rate_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 30,
        name: "up_key_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 35,
        name: "dive_sounds",
        type_name: "tone",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 36,
        name: "last_stop_multiple",
        type_name: "uint8",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 37,
        name: "no_fly_time_mode",
        type_name: "no_fly_time_mode",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_DIVE_SETTINGS: MesgInfo = MesgInfo {
    name: "dive_settings",
    fields: FIELDS_DIVE_SETTINGS,
};

static FIELDS_DIVE_ALARM: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "time",
        type_name: "sint32",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "alarm_type",
        type_name: "dive_alarm_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "sound",
        type_name: "tone",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "dive_types",
        type_name: "sub_sport",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "id",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "popup_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "trigger_on_descent",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "trigger_on_ascent",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "repeating",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "speed",
        type_name: "sint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("mps"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_DIVE_ALARM: MesgInfo = MesgInfo {
    name: "dive_alarm",
    fields: FIELDS_DIVE_ALARM,
};

static FIELDS_DIVE_APNEA_ALARM: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "time",
        type_name: "sint32",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "alarm_type",
        type_name: "dive_alarm_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "sound",
        type_name: "tone",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "dive_types",
        type_name: "sub_sport",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "id",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "popup_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "trigger_on_descent",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "trigger_on_ascent",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "repeating",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "speed",
        type_name: "sint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("mps"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_DIVE_APNEA_ALARM: MesgInfo = MesgInfo {
    name: "dive_apnea_alarm",
    fields: FIELDS_DIVE_APNEA_ALARM,
};

static FIELDS_DIVE_GAS: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "helium_content",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "oxygen_content",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "status",
        type_name: "dive_gas_status",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "mode",
        type_name: "dive_gas_mode",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_DIVE_GAS: MesgInfo = MesgInfo {
    name: "dive_gas",
    fields: FIELDS_DIVE_GAS,
};

static FIELDS_GOAL: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "start_date",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "end_date",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "type",
        type_name: "goal",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "value",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "repeat",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "target_value",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "recurrence",
        type_name: "goal_recurrence",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "recurrence_value",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "source",
        type_name: "goal_source",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_GOAL: MesgInfo = MesgInfo {
    name: "goal",
    fields: FIELDS_GOAL,
};

static FIELDS_ACTIVITY: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "total_timer_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "num_sessions",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "type",
        type_name: "activity",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "event",
        type_name: "event",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "event_type",
        type_name: "event_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "local_timestamp",
        type_name: "local_date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "event_group",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_ACTIVITY: MesgInfo = MesgInfo {
    name: "activity",
    fields: FIELDS_ACTIVITY,
};

static SUBFIELDS_SESSION_12: &[SubField] = &[
    SubField {
        name: "total_strides",
        type_name: "uint32",
        conditions: &[("sport", "running"), ("sport", "walking")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("strides"),
    },
    SubField {
        name: "total_strokes",
        type_name: "uint32",
        conditions: &[
            ("sport", "cycling"),
            ("sport", "swimming"),
            ("sport", "rowing"),
            ("sport", "stand_up_paddleboarding"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: Some("strokes"),
    },
];
static COMPONENTS_SESSION_15: &[Component] = &[Component {
    name: "enhanced_avg_speed",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_SESSION_16: &[Component] = &[Component {
    name: "enhanced_max_speed",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static SUBFIELDS_SESSION_19: &[SubField] = &[SubField {
    name: "avg_running_cadence",
    type_name: "uint8",
    conditions: &[("sport", "running")],
    components: &[],
    scale: None,
    offset: None,
    units: Some("strides/min"),
}];
static SUBFIELDS_SESSION_20: &[SubField] = &[SubField {
    name: "max_running_cadence",
    type_name: "uint8",
    conditions: &[("sport", "running")],
    components: &[],
    scale: None,
    offset: None,
    units: Some("strides/min"),
}];
static COMPONENTS_SESSION_49: &[Component] = &[Component {
    name: "enhanced_avg_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_SESSION_50: &[Component] = &[Component {
    name: "enhanced_max_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_SESSION_71: &[Component] = &[Component {
    name: "enhanced_min_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_SESSION_130: &[Component] = &[Component {
    name: "enhanced_avg_respiration_rate",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_SESSION_131: &[Component] = &[Component {
    name: "enhanced_max_respiration_rate",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_SESSION_132: &[Component] = &[Component {
    name: "enhanced_min_respiration_rate",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static FIELDS_SESSION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "event",
        type_name: "event",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "event_type",
        type_name: "event_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "start_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "start_position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "start_position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "total_elapsed_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "total_timer_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "total_distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "total_cycles",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("cycles"),
        components: &[],
        sub_fields: SUBFIELDS_SESSION_12,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "total_calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "total_fat_calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "avg_speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: COMPONENTS_SESSION_15,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "max_speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: COMPONENTS_SESSION_16,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 16,
        name: "avg_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 17,
        name: "max_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 18,
        name: "avg_cadence",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: SUBFIELDS_SESSION_19,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 19,
        name: "max_cadence",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: SUBFIELDS_SESSION_20,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 20,
        name: "avg_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "max_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "total_ascent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "total_descent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "total_training_effect",
        type_name: "uint8",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 25,
        name: "first_lap_index",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 26,
        name: "num_laps",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 27,
        name: "event_group",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 28,
        name: "trigger",
        type_name: "session_trigger",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 29,
        name: "nec_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 30,
        name: "nec_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 31,
        name: "swc_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 32,
        name: "swc_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 33,
        name: "num_lengths",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("lengths"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 34,
        name: "normalized_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 35,
        name: "training_stress_score",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("tss"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 36,
        name: "intensity_factor",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("if"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 37,
        name: "left_right_balance",
        type_name: "left_right_balance_100",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 38,
        name: "end_position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 39,
        name: "end_position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 41,
        name: "avg_stroke_count",
        type_name: "uint32",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("strokes/lap"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 42,
        name: "avg_stroke_distance",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 43,
        name: "swim_stroke",
        type_name: "swim_stroke",
        array: None,
        scale: None,
        offset: None,
        units: Some("swim_stroke"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 44,
        name: "pool_length",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 45,
        name: "threshold_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 46,
        name: "pool_length_unit",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 47,
        name: "num_active_lengths",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("lengths"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 48,
        name: "total_work",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("J"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 49,
        name: "avg_altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_SESSION_49,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 50,
        name: "max_altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_SESSION_50,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 51,
        name: "gps_accuracy",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 52,
        name: "avg_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 53,
        name: "avg_pos_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 54,
        name: "avg_neg_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 55,
        name: "max_pos_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 56,
        name: "max_neg_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 57,
        name: "avg_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 58,
        name: "max_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 59,
        name: "total_moving_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 60,
        name: "avg_pos_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 61,
        name: "avg_neg_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 62,
        name: "max_pos_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 63,
        name: "max_neg_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 64,
        name: "min_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 65,
        name: "time_in_hr_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 66,
        name: "time_in_speed_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 67,
        name: "time_in_cadence_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 68,
        name: "time_in_power_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 69,
        name: "avg_lap_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 70,
        name: "best_lap_index",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 71,
        name: "min_altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_SESSION_71,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 82,
        name: "player_score",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 83,
        name: "opponent_score",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 84,
        name: "opponent_name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 85,
        name: "stroke_count",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 86,
        name: "zone_count",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 87,
        name: "max_ball_speed",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 88,
        name: "avg_ball_speed",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 89,
        name: "avg_vertical_oscillation",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 90,
        name: "avg_stance_time_percent",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 91,
        name: "avg_stance_time",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 92,
        name: "avg_fractional_cadence",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 93,
        name: "max_fractional_cadence",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 94,
        name: "total_fractional_cycles",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("cycles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 95,
        name: "avg_total_hemoglobin_conc",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("g/dL"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 96,
        name: "min_total_hemoglobin_conc",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("g/dL"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 97,
        name: "max_total_hemoglobin_conc",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("g/dL"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 98,
        name: "avg_saturated_hemoglobin_percent",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 99,
        name: "min_saturated_hemoglobin_percent",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 100,
        name: "max_saturated_hemoglobin_percent",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 101,
        name: "avg_left_torque_effectiveness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 102,
        name: "avg_right_torque_effectiveness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 103,
        name: "avg_left_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 104,
        name: "avg_right_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 105,
        name: "avg_combined_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 110,
        name: "sport_profile_name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 111,
        name: "sport_index",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 112,
        name: "time_standing",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 113,
        name: "stand_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 114,
        name: "avg_left_pco",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 115,
        name: "avg_right_pco",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 116,
        name: "avg_left_power_phase",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 117,
        name: "avg_left_power_phase_peak",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 118,
        name: "avg_right_power_phase",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 119,
        name: "avg_right_power_phase_peak",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 120,
        name: "avg_power_position",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 121,
        name: "max_power_position",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 122,
        name: "avg_cadence_position",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 123,
        name: "max_cadence_position",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 124,
        name: "enhanced_avg_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 125,
        name: "enhanced_max_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 126,
        name: "enhanced_avg_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 127,
        name: "enhanced_min_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 128,
        name: "enhanced_max_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 129,
        name: "avg_lev_motor_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 130,
        name: "max_lev_motor_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 131,
        name: "lev_battery_consumption",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 132,
        name: "avg_vertical_ratio",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 133,
        name: "avg_stance_time_balance",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 134,
        name: "avg_step_length",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 137,
        name: "total_anaerobic_training_effect",
        type_name: "uint8",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 139,
        name: "avg_vam",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 140,
        name: "avg_depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 141,
        name: "max_depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 142,
        name: "surface_interval",
        type_name: "uint32",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 143,
        name: "start_cns",
        type_name: "uint8",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 144,
        name: "end_cns",
        type_name: "uint8",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 145,
        name: "start_n2",
        type_name: "uint16",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 146,
        name: "end_n2",
        type_name: "uint16",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 147,
        name: "avg_respiration_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_SESSION_130,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 148,
        name: "max_respiration_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_SESSION_131,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 149,
        name: "min_respiration_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_SESSION_132,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 150,
        name: "min_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 155,
        name: "o2_toxicity",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("OTUs"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 156,
        name: "dive_number",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 168,
        name: "training_load_peak",
        type_name: "sint32",
        array: None,
        scale: Some(65536_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 169,
        name: "enhanced_avg_respiration_rate",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("Breaths/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 170,
        name: "enhanced_max_respiration_rate",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("Breaths/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 180,
        name: "enhanced_min_respiration_rate",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 181,
        name: "total_grit",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kGrit"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 182,
        name: "total_flow",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("Flow"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 183,
        name: "jump_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 186,
        name: "avg_grit",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kGrit"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 187,
        name: "avg_flow",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("Flow"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 192,
        name: "workout_feel",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 193,
        name: "workout_rpe",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 194,
        name: "avg_spo2",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 195,
        name: "avg_stress",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 196,
        name: "metabolic_calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 197,
        name: "sdrr_hrv",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mS"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 198,
        name: "rmssd_hrv",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mS"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 199,
        name: "total_fractional_ascent",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 200,
        name: "total_fractional_descent",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 208,
        name: "avg_core_temperature",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 209,
        name: "min_core_temperature",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 210,
        name: "max_core_temperature",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SESSION: MesgInfo = MesgInfo {
    name: "session",
    fields: FIELDS_SESSION,
};

static SUBFIELDS_LAP_12: &[SubField] = &[
    SubField {
        name: "total_strides",
        type_name: "uint32",
        conditions: &[("sport", "running"), ("sport", "walking")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("strides"),
    },
    SubField {
        name: "total_strokes",
        type_name: "uint32",
        conditions: &[
            ("sport", "cycling"),
            ("sport", "swimming"),
            ("sport", "rowing"),
            ("sport", "stand_up_paddleboarding"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: Some("strokes"),
    },
];
static COMPONENTS_LAP_15: &[Component] = &[Component {
    name: "enhanced_avg_speed",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_LAP_16: &[Component] = &[Component {
    name: "enhanced_max_speed",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static SUBFIELDS_LAP_19: &[SubField] = &[SubField {
    name: "avg_running_cadence",
    type_name: "uint8",
    conditions: &[("sport", "running")],
    components: &[],
    scale: None,
    offset: None,
    units: Some("strides/min"),
}];
static SUBFIELDS_LAP_20: &[SubField] = &[SubField {
    name: "max_running_cadence",
    type_name: "uint8",
    conditions: &[("sport", "running")],
    components: &[],
    scale: None,
    offset: None,
    units: Some("strides/min"),
}];
static COMPONENTS_LAP_38: &[Component] = &[Component {
    name: "enhanced_avg_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_LAP_39: &[Component] = &[Component {
    name: "enhanced_max_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_LAP_58: &[Component] = &[Component {
    name: "enhanced_min_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_LAP_111: &[Component] = &[Component {
    name: "enhanced_avg_respiration_rate",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_LAP_112: &[Component] = &[Component {
    name: "enhanced_max_respiration_rate",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static FIELDS_LAP: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "event",
        type_name: "event",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "event_type",
        type_name: "event_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "start_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "start_position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "start_position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "end_position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "end_position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "total_elapsed_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "total_timer_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "total_distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "total_cycles",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("cycles"),
        components: &[],
        sub_fields: SUBFIELDS_LAP_12,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "total_calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "total_fat_calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "avg_speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: COMPONENTS_LAP_15,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "max_speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: COMPONENTS_LAP_16,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "avg_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 16,
        name: "max_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 17,
        name: "avg_cadence",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: SUBFIELDS_LAP_19,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 18,
        name: "max_cadence",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: SUBFIELDS_LAP_20,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 19,
        name: "avg_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 20,
        name: "max_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "total_ascent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "total_descent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "intensity",
        type_name: "intensity",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "lap_trigger",
        type_name: "lap_trigger",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 25,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 26,
        name: "event_group",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 32,
        name: "num_lengths",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("lengths"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 33,
        name: "normalized_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 34,
        name: "left_right_balance",
        type_name: "left_right_balance_100",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 35,
        name: "first_length_index",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 37,
        name: "avg_stroke_distance",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 38,
        name: "swim_stroke",
        type_name: "swim_stroke",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 39,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 40,
        name: "num_active_lengths",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("lengths"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 41,
        name: "total_work",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("J"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 42,
        name: "avg_altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_LAP_38,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 43,
        name: "max_altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_LAP_39,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 44,
        name: "gps_accuracy",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 45,
        name: "avg_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 46,
        name: "avg_pos_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 47,
        name: "avg_neg_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 48,
        name: "max_pos_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 49,
        name: "max_neg_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 50,
        name: "avg_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 51,
        name: "max_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 52,
        name: "total_moving_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 53,
        name: "avg_pos_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 54,
        name: "avg_neg_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 55,
        name: "max_pos_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 56,
        name: "max_neg_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 57,
        name: "time_in_hr_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 58,
        name: "time_in_speed_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 59,
        name: "time_in_cadence_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 60,
        name: "time_in_power_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 61,
        name: "repetition_num",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 62,
        name: "min_altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_LAP_58,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 63,
        name: "min_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 71,
        name: "wkt_step_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 74,
        name: "opponent_score",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 75,
        name: "stroke_count",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 76,
        name: "zone_count",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 77,
        name: "avg_vertical_oscillation",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 78,
        name: "avg_stance_time_percent",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 79,
        name: "avg_stance_time",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 80,
        name: "avg_fractional_cadence",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 81,
        name: "max_fractional_cadence",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 82,
        name: "total_fractional_cycles",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("cycles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 83,
        name: "player_score",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 84,
        name: "avg_total_hemoglobin_conc",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("g/dL"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 85,
        name: "min_total_hemoglobin_conc",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("g/dL"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 86,
        name: "max_total_hemoglobin_conc",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("g/dL"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 87,
        name: "avg_saturated_hemoglobin_percent",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 88,
        name: "min_saturated_hemoglobin_percent",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 89,
        name: "max_saturated_hemoglobin_percent",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 91,
        name: "avg_left_torque_effectiveness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 92,
        name: "avg_right_torque_effectiveness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 93,
        name: "avg_left_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 94,
        name: "avg_right_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 95,
        name: "avg_combined_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 98,
        name: "time_standing",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 99,
        name: "stand_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 100,
        name: "avg_left_pco",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 101,
        name: "avg_right_pco",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 102,
        name: "avg_left_power_phase",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 103,
        name: "avg_left_power_phase_peak",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 104,
        name: "avg_right_power_phase",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 105,
        name: "avg_right_power_phase_peak",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 106,
        name: "avg_power_position",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 107,
        name: "max_power_position",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 108,
        name: "avg_cadence_position",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 109,
        name: "max_cadence_position",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 110,
        name: "enhanced_avg_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 111,
        name: "enhanced_max_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 112,
        name: "enhanced_avg_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 113,
        name: "enhanced_min_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 114,
        name: "enhanced_max_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 115,
        name: "avg_lev_motor_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 116,
        name: "max_lev_motor_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 117,
        name: "lev_battery_consumption",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 118,
        name: "avg_vertical_ratio",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 119,
        name: "avg_stance_time_balance",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 120,
        name: "avg_step_length",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 121,
        name: "avg_vam",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 122,
        name: "avg_depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 123,
        name: "max_depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 124,
        name: "min_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 136,
        name: "enhanced_avg_respiration_rate",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("Breaths/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 137,
        name: "enhanced_max_respiration_rate",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("Breaths/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 147,
        name: "avg_respiration_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_LAP_111,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 148,
        name: "max_respiration_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_LAP_112,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 149,
        name: "total_grit",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kGrit"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 150,
        name: "total_flow",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("Flow"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 151,
        name: "jump_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 153,
        name: "avg_grit",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kGrit"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 154,
        name: "avg_flow",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("Flow"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 156,
        name: "total_fractional_ascent",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 157,
        name: "total_fractional_descent",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 158,
        name: "avg_core_temperature",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 159,
        name: "min_core_temperature",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 160,
        name: "max_core_temperature",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_LAP: MesgInfo = MesgInfo {
    name: "lap",
    fields: FIELDS_LAP,
};

static COMPONENTS_LENGTH_20: &[Component] = &[Component {
    name: "enhanced_avg_respiration_rate",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_LENGTH_21: &[Component] = &[Component {
    name: "enhanced_max_respiration_rate",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static FIELDS_LENGTH: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "event",
        type_name: "event",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "event_type",
        type_name: "event_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "start_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "total_elapsed_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "total_timer_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "total_strokes",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("strokes"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "avg_speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "swim_stroke",
        type_name: "swim_stroke",
        array: None,
        scale: None,
        offset: None,
        units: Some("swim_stroke"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "avg_swimming_cadence",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("strokes/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "event_group",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "total_calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "length_type",
        type_name: "length_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 18,
        name: "player_score",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 19,
        name: "opponent_score",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 20,
        name: "stroke_count",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "zone_count",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "enhanced_avg_respiration_rate",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("Breaths/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "enhanced_max_respiration_rate",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("Breaths/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "avg_respiration_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_LENGTH_20,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 25,
        name: "max_respiration_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_LENGTH_21,
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_LENGTH: MesgInfo = MesgInfo {
    name: "length",
    fields: FIELDS_LENGTH,
};

static COMPONENTS_RECORD_3: &[Component] = &[Component {
    name: "enhanced_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_RECORD_7: &[Component] = &[Component {
    name: "enhanced_speed",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_RECORD_9: &[Component] = &[
    Component {
        name: "speed",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "distance",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
];
static COMPONENTS_RECORD_16: &[Component] = &[Component {
    name: "total_cycles",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: true,
}];
static COMPONENTS_RECORD_18: &[Component] = &[Component {
    name: "accumulated_power",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: true,
}];
static COMPONENTS_RECORD_68: &[Component] = &[Component {
    name: "enhanced_respiration_rate",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static FIELDS_RECORD: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_RECORD_3,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "cadence",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: COMPONENTS_RECORD_7,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "compressed_speed_distance",
        type_name: "byte",
        array: Some("[3]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("m/s,m"),
        components: COMPONENTS_RECORD_9,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "resistance",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "time_from_course",
        type_name: "sint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "cycle_length",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 17,
        name: "speed_1s",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(16_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 18,
        name: "cycles",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("cycles"),
        components: COMPONENTS_RECORD_16,
        sub_fields: &[],
        accumulate: true,
    },
    FieldInfo {
        field_def_num: 19,
        name: "total_cycles",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("cycles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 28,
        name: "compressed_accumulated_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: COMPONENTS_RECORD_18,
        sub_fields: &[],
        accumulate: true,
    },
    FieldInfo {
        field_def_num: 29,
        name: "accumulated_power",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 30,
        name: "left_right_balance",
        type_name: "left_right_balance",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 31,
        name: "gps_accuracy",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 32,
        name: "vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 33,
        name: "calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 39,
        name: "vertical_oscillation",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 40,
        name: "stance_time_percent",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 41,
        name: "stance_time",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 42,
        name: "activity_type",
        type_name: "activity_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 43,
        name: "left_torque_effectiveness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 44,
        name: "right_torque_effectiveness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 45,
        name: "left_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 46,
        name: "right_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 47,
        name: "combined_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 48,
        name: "time128",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 49,
        name: "stroke_type",
        type_name: "stroke_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 50,
        name: "zone",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 51,
        name: "ball_speed",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 52,
        name: "cadence256",
        type_name: "uint16",
        array: None,
        scale: Some(256_f64),
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 53,
        name: "fractional_cadence",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 54,
        name: "total_hemoglobin_conc",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("g/dL"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 55,
        name: "total_hemoglobin_conc_min",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("g/dL"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 56,
        name: "total_hemoglobin_conc_max",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("g/dL"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 57,
        name: "saturated_hemoglobin_percent",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 58,
        name: "saturated_hemoglobin_percent_min",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 59,
        name: "saturated_hemoglobin_percent_max",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 62,
        name: "device_index",
        type_name: "device_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 67,
        name: "left_pco",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 68,
        name: "right_pco",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 69,
        name: "left_power_phase",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 70,
        name: "left_power_phase_peak",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 71,
        name: "right_power_phase",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 72,
        name: "right_power_phase_peak",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 73,
        name: "enhanced_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 78,
        name: "enhanced_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 81,
        name: "battery_soc",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 82,
        name: "motor_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 83,
        name: "vertical_ratio",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 84,
        name: "stance_time_balance",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 85,
        name: "step_length",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 87,
        name: "cycle_length16",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 91,
        name: "absolute_pressure",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("Pa"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 92,
        name: "depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 93,
        name: "next_stop_depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 94,
        name: "next_stop_time",
        type_name: "uint32",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 95,
        name: "time_to_surface",
        type_name: "uint32",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 96,
        name: "ndl_time",
        type_name: "uint32",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 97,
        name: "cns_load",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 98,
        name: "n2_load",
        type_name: "uint16",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 99,
        name: "respiration_rate",
        type_name: "uint8",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: COMPONENTS_RECORD_68,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 108,
        name: "enhanced_respiration_rate",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("Breaths/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 114,
        name: "grit",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 115,
        name: "flow",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 116,
        name: "current_stress",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 117,
        name: "ebike_travel_range",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("km"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 118,
        name: "ebike_battery_level",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 119,
        name: "ebike_assist_mode",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("depends on sensor"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 120,
        name: "ebike_assist_level_percent",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 123,
        name: "air_time_remaining",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 124,
        name: "pressure_sac",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("bar/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 125,
        name: "volume_sac",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("L/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 126,
        name: "rmv",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("L/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 127,
        name: "ascent_rate",
        type_name: "sint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 129,
        name: "po2",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 139,
        name: "core_temperature",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_RECORD: MesgInfo = MesgInfo {
    name: "record",
    fields: FIELDS_RECORD,
};

static COMPONENTS_EVENT_3: &[Component] = &[Component {
    name: "data",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static SUBFIELD_COMPONENTS_EVENT_4_16: &[Component] = &[
    Component {
        name: "score",
        bits: 16,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "opponent_score",
        bits: 16,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
];
static SUBFIELD_COMPONENTS_EVENT_4_17: &[Component] = &[
    Component {
        name: "rear_gear_num",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "rear_gear",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "front_gear_num",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "front_gear",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
];
static SUBFIELD_COMPONENTS_EVENT_4_22: &[Component] = &[
    Component {
        name: "radar_threat_level_max",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "radar_threat_count",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "radar_threat_avg_approach_speed",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "radar_threat_max_approach_speed",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
];
static SUBFIELDS_EVENT_4: &[SubField] = &[
    SubField {
        name: "timer_trigger",
        type_name: "timer_trigger",
        conditions: &[("event", "timer")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "course_point_index",
        type_name: "message_index",
        conditions: &[("event", "course_point")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "battery_level",
        type_name: "uint16",
        conditions: &[("event", "battery")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("V"),
    },
    SubField {
        name: "virtual_partner_speed",
        type_name: "uint16",
        conditions: &[("event", "virtual_partner_pace")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
    },
    SubField {
        name: "hr_high_alert",
        type_name: "uint8",
        conditions: &[("event", "hr_high_alert")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("bpm"),
    },
    SubField {
        name: "hr_low_alert",
        type_name: "uint8",
        conditions: &[("event", "hr_low_alert")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("bpm"),
    },
    SubField {
        name: "speed_high_alert",
        type_name: "uint32",
        conditions: &[("event", "speed_high_alert")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
    },
    SubField {
        name: "speed_low_alert",
        type_name: "uint32",
        conditions: &[("event", "speed_low_alert")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
    },
    SubField {
        name: "cad_high_alert",
        type_name: "uint16",
        conditions: &[("event", "cad_high_alert")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("rpm"),
    },
    SubField {
        name: "cad_low_alert",
        type_name: "uint16",
        conditions: &[("event", "cad_low_alert")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("rpm"),
    },
    SubField {
        name: "power_high_alert",
        type_name: "uint16",
        conditions: &[("event", "power_high_alert")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("watts"),
    },
    SubField {
        name: "power_low_alert",
        type_name: "uint16",
        conditions: &[("event", "power_low_alert")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("watts"),
    },
    SubField {
        name: "time_duration_alert",
        type_name: "uint32",
        conditions: &[("event", "time_duration_alert")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
    },
    SubField {
        name: "distance_duration_alert",
        type_name: "uint32",
        conditions: &[("event", "distance_duration_alert")],
        components: &[],
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
    },
    SubField {
        name: "calorie_duration_alert",
        type_name: "uint32",
        conditions: &[("event", "calorie_duration_alert")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("calories"),
    },
    SubField {
        name: "fitness_equipment_state",
        type_name: "fitness_equipment_state",
        conditions: &[("event", "fitness_equipment")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "sport_point",
        type_name: "uint32",
        conditions: &[("event", "sport_point")],
        components: SUBFIELD_COMPONENTS_EVENT_4_16,
        scale: Some(1_f64),
        offset: None,
        units: None,
    },
    SubField {
        name: "gear_change_data",
        type_name: "uint32",
        conditions: &[
            ("event", "front_gear_change"),
            ("event", "rear_gear_change"),
        ],
        components: SUBFIELD_COMPONENTS_EVENT_4_17,
        scale: Some(1_f64),
        offset: None,
        units: None,
    },
    SubField {
        name: "rider_position",
        type_name: "rider_position_type",
        conditions: &[("event", "rider_position_change")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "comm_timeout",
        type_name: "comm_timeout_type",
        conditions: &[("event", "comm_timeout")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "dive_alert",
        type_name: "dive_alert",
        conditions: &[("event", "dive_alert")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "auto_activity_detect_duration",
        type_name: "uint16",
        conditions: &[("event", "auto_activity_detect")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("min"),
    },
    SubField {
        name: "radar_threat_alert",
        type_name: "uint32",
        conditions: &[("event", "radar_threat_alert")],
        components: SUBFIELD_COMPONENTS_EVENT_4_22,
        scale: Some(1_f64),
        offset: None,
        units: None,
    },
];
static SUBFIELDS_EVENT_14: &[SubField] = &[SubField {
    name: "auto_activity_detect_start_timestamp",
    type_name: "date_time",
    conditions: &[("event", "auto_activity_detect")],
    components: &[],
    scale: None,
    offset: None,
    units: Some("s"),
}];
static FIELDS_EVENT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "event",
        type_name: "event",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "event_type",
        type_name: "event_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "data16",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_EVENT_3,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "data",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_EVENT_4,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "event_group",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "score",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "opponent_score",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "front_gear_num",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "front_gear",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "rear_gear_num",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "rear_gear",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "device_index",
        type_name: "device_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "activity_type",
        type_name: "activity_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "start_timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: SUBFIELDS_EVENT_14,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "radar_threat_level_max",
        type_name: "radar_threat_level_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "radar_threat_count",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "radar_threat_avg_approach_speed",
        type_name: "uint8",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "radar_threat_max_approach_speed",
        type_name: "uint8",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_EVENT: MesgInfo = MesgInfo {
    name: "event",
    fields: FIELDS_EVENT,
};

static SUBFIELDS_DEVICE_INFO_2: &[SubField] = &[
    SubField {
        name: "ble_device_type",
        type_name: "ble_device_type",
        conditions: &[("source_type", "bluetooth_low_energy")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "antplus_device_type",
        type_name: "antplus_device_type",
        conditions: &[("source_type", "antplus")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "ant_device_type",
        type_name: "uint8",
        conditions: &[("source_type", "ant")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "local_device_type",
        type_name: "local_device_type",
        conditions: &[("source_type", "local")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static SUBFIELDS_DEVICE_INFO_5: &[SubField] = &[
    SubField {
        name: "favero_product",
        type_name: "favero_product",
        conditions: &[("manufacturer", "favero_electronics")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "garmin_product",
        type_name: "garmin_product",
        conditions: &[
            ("manufacturer", "garmin"),
            ("manufacturer", "dynastream"),
            ("manufacturer", "dynastream_oem"),
            ("manufacturer", "tacx"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static FIELDS_DEVICE_INFO: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "device_index",
        type_name: "device_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "device_type",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_DEVICE_INFO_2,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "manufacturer",
        type_name: "manufacturer",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "serial_number",
        type_name: "uint32z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "product",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_DEVICE_INFO_5,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "software_version",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "hardware_version",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "cum_operating_time",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "battery_voltage",
        type_name: "uint16",
        array: None,
        scale: Some(256_f64),
        offset: None,
        units: Some("V"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "battery_status",
        type_name: "battery_status",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 18,
        name: "sensor_position",
        type_name: "body_location",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 19,
        name: "descriptor",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 20,
        name: "ant_transmission_type",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "ant_device_number",
        type_name: "uint16z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "ant_network",
        type_name: "ant_network",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 25,
        name: "source_type",
        type_name: "source_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 27,
        name: "product_name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 32,
        name: "battery_level",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_DEVICE_INFO: MesgInfo = MesgInfo {
    name: "device_info",
    fields: FIELDS_DEVICE_INFO,
};

static FIELDS_DEVICE_AUX_BATTERY_INFO: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "device_index",
        type_name: "device_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "battery_voltage",
        type_name: "uint16",
        array: None,
        scale: Some(256_f64),
        offset: None,
        units: Some("V"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "battery_status",
        type_name: "battery_status",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "battery_identifier",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_DEVICE_AUX_BATTERY_INFO: MesgInfo = MesgInfo {
    name: "device_aux_battery_info",
    fields: FIELDS_DEVICE_AUX_BATTERY_INFO,
};

static SUBFIELDS_TRAINING_FILE_3: &[SubField] = &[
    SubField {
        name: "favero_product",
        type_name: "favero_product",
        conditions: &[("manufacturer", "favero_electronics")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "garmin_product",
        type_name: "garmin_product",
        conditions: &[
            ("manufacturer", "garmin"),
            ("manufacturer", "dynastream"),
            ("manufacturer", "dynastream_oem"),
            ("manufacturer", "tacx"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static FIELDS_TRAINING_FILE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "type",
        type_name: "file",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "manufacturer",
        type_name: "manufacturer",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "product",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_TRAINING_FILE_3,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "serial_number",
        type_name: "uint32z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "time_created",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_TRAINING_FILE: MesgInfo = MesgInfo {
    name: "training_file",
    fields: FIELDS_TRAINING_FILE,
};

static FIELDS_WEATHER_CONDITIONS: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "weather_report",
        type_name: "weather_report",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "condition",
        type_name: "weather_status",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "wind_direction",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "wind_speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "precipitation_probability",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "temperature_feels_like",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "relative_humidity",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "location",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "observed_at_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "observed_location_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "observed_location_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "day_of_week",
        type_name: "day_of_week",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "high_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "low_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_WEATHER_CONDITIONS: MesgInfo = MesgInfo {
    name: "weather_conditions",
    fields: FIELDS_WEATHER_CONDITIONS,
};

static FIELDS_WEATHER_ALERT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "report_id",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "issue_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "expire_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "severity",
        type_name: "weather_severity",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "type",
        type_name: "weather_severe_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_WEATHER_ALERT: MesgInfo = MesgInfo {
    name: "weather_alert",
    fields: FIELDS_WEATHER_ALERT,
};

static FIELDS_GPS_METADATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "enhanced_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "enhanced_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "heading",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "utc_timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "velocity",
        type_name: "sint16",
        array: Some("[3]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_GPS_METADATA: MesgInfo = MesgInfo {
    name: "gps_metadata",
    fields: FIELDS_GPS_METADATA,
};

static FIELDS_CAMERA_EVENT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "camera_event_type",
        type_name: "camera_event_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "camera_file_uuid",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "camera_orientation",
        type_name: "camera_orientation_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_CAMERA_EVENT: MesgInfo = MesgInfo {
    name: "camera_event",
    fields: FIELDS_CAMERA_EVENT,
};

static FIELDS_GYROSCOPE_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sample_time_offset",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "gyro_x",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "gyro_y",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "gyro_z",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "calibrated_gyro_x",
        type_name: "float32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("deg/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "calibrated_gyro_y",
        type_name: "float32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("deg/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "calibrated_gyro_z",
        type_name: "float32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("deg/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_GYROSCOPE_DATA: MesgInfo = MesgInfo {
    name: "gyroscope_data",
    fields: FIELDS_GYROSCOPE_DATA,
};

static FIELDS_ACCELEROMETER_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sample_time_offset",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "accel_x",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "accel_y",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "accel_z",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "calibrated_accel_x",
        type_name: "float32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("g"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "calibrated_accel_y",
        type_name: "float32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("g"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "calibrated_accel_z",
        type_name: "float32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("g"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "compressed_calibrated_accel_x",
        type_name: "sint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("mG"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "compressed_calibrated_accel_y",
        type_name: "sint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("mG"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "compressed_calibrated_accel_z",
        type_name: "sint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("mG"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_ACCELEROMETER_DATA: MesgInfo = MesgInfo {
    name: "accelerometer_data",
    fields: FIELDS_ACCELEROMETER_DATA,
};

static FIELDS_MAGNETOMETER_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sample_time_offset",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "mag_x",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "mag_y",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "mag_z",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "calibrated_mag_x",
        type_name: "float32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("G"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "calibrated_mag_y",
        type_name: "float32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("G"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "calibrated_mag_z",
        type_name: "float32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("G"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_MAGNETOMETER_DATA: MesgInfo = MesgInfo {
    name: "magnetometer_data",
    fields: FIELDS_MAGNETOMETER_DATA,
};

static FIELDS_BAROMETER_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sample_time_offset",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "baro_pres",
        type_name: "uint32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("Pa"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_BAROMETER_DATA: MesgInfo = MesgInfo {
    name: "barometer_data",
    fields: FIELDS_BAROMETER_DATA,
};

static SUBFIELDS_THREE_D_SENSOR_CALIBRATION_2: &[SubField] = &[
    SubField {
        name: "accel_cal_factor",
        type_name: "uint32",
        conditions: &[("sensor_type", "accelerometer")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("g"),
    },
    SubField {
        name: "gyro_cal_factor",
        type_name: "uint32",
        conditions: &[("sensor_type", "gyroscope")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("deg/s"),
    },
];
static FIELDS_THREE_D_SENSOR_CALIBRATION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "sensor_type",
        type_name: "sensor_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "calibration_factor",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_THREE_D_SENSOR_CALIBRATION_2,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "calibration_divisor",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "level_shift",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "offset_cal",
        type_name: "sint32",
        array: Some("[3]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "orientation_matrix",
        type_name: "sint32",
        array: Some("[9]"),
        scale: Some(65535_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_THREE_D_SENSOR_CALIBRATION: MesgInfo = MesgInfo {
    name: "three_d_sensor_calibration",
    fields: FIELDS_THREE_D_SENSOR_CALIBRATION,
};

static SUBFIELDS_ONE_D_SENSOR_CALIBRATION_2: &[SubField] = &[SubField {
    name: "baro_cal_factor",
    type_name: "uint32",
    conditions: &[("sensor_type", "barometer")],
    components: &[],
    scale: None,
    offset: None,
    units: Some("Pa"),
}];
static FIELDS_ONE_D_SENSOR_CALIBRATION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "sensor_type",
        type_name: "sensor_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "calibration_factor",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_ONE_D_SENSOR_CALIBRATION_2,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "calibration_divisor",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("counts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "level_shift",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "offset_cal",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_ONE_D_SENSOR_CALIBRATION: MesgInfo = MesgInfo {
    name: "one_d_sensor_calibration",
    fields: FIELDS_ONE_D_SENSOR_CALIBRATION,
};

static FIELDS_VIDEO_FRAME: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "frame_number",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_VIDEO_FRAME: MesgInfo = MesgInfo {
    name: "video_frame",
    fields: FIELDS_VIDEO_FRAME,
};

static FIELDS_OBDII_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "time_offset",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "pid",
        type_name: "byte",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "raw_data",
        type_name: "byte",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "pid_data_size",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "system_time",
        type_name: "uint32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "start_timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "start_timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_OBDII_DATA: MesgInfo = MesgInfo {
    name: "obdii_data",
    fields: FIELDS_OBDII_DATA,
};

static FIELDS_NMEA_SENTENCE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sentence",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_NMEA_SENTENCE: MesgInfo = MesgInfo {
    name: "nmea_sentence",
    fields: FIELDS_NMEA_SENTENCE,
};

static FIELDS_AVIATION_ATTITUDE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "system_time",
        type_name: "uint32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "pitch",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(10430.38_f64),
        offset: None,
        units: Some("radians"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "roll",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(10430.38_f64),
        offset: None,
        units: Some("radians"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "accel_lateral",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("m/s^2"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "accel_normal",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("m/s^2"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "turn_rate",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(1024_f64),
        offset: None,
        units: Some("radians/second"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "stage",
        type_name: "attitude_stage",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "attitude_stage_complete",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "track",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(10430.38_f64),
        offset: None,
        units: Some("radians"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "validity",
        type_name: "attitude_validity",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_AVIATION_ATTITUDE: MesgInfo = MesgInfo {
    name: "aviation_attitude",
    fields: FIELDS_AVIATION_ATTITUDE,
};

static FIELDS_VIDEO: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "url",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "hosting_provider",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "duration",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_VIDEO: MesgInfo = MesgInfo {
    name: "video",
    fields: FIELDS_VIDEO,
};

static FIELDS_VIDEO_TITLE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "message_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "text",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_VIDEO_TITLE: MesgInfo = MesgInfo {
    name: "video_title",
    fields: FIELDS_VIDEO_TITLE,
};

static FIELDS_VIDEO_DESCRIPTION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "message_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "text",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_VIDEO_DESCRIPTION: MesgInfo = MesgInfo {
    name: "video_description",
    fields: FIELDS_VIDEO_DESCRIPTION,
};

static FIELDS_VIDEO_CLIP: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "clip_number",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "start_timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "start_timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "end_timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "end_timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "clip_start",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "clip_end",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_VIDEO_CLIP: MesgInfo = MesgInfo {
    name: "video_clip",
    fields: FIELDS_VIDEO_CLIP,
};

static FIELDS_SET: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "duration",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "repetitions",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "weight",
        type_name: "uint16",
        array: None,
        scale: Some(16_f64),
        offset: None,
        units: Some("kg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "set_type",
        type_name: "set_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "start_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "category",
        type_name: "exercise_category",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "category_subtype",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "weight_display_unit",
        type_name: "fit_base_unit",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "wkt_step_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SET: MesgInfo = MesgInfo {
    name: "set",
    fields: FIELDS_SET,
};

static COMPONENTS_JUMP_8: &[Component] = &[Component {
    name: "enhanced_speed",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static FIELDS_JUMP: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "distance",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "height",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "rotations",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "hang_time",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "score",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: COMPONENTS_JUMP_8,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "enhanced_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_JUMP: MesgInfo = MesgInfo {
    name: "jump",
    fields: FIELDS_JUMP,
};

static FIELDS_SPLIT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "split_type",
        type_name: "split_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "total_elapsed_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "total_timer_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "total_distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "avg_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "start_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "total_ascent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "total_descent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "start_position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "start_position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "end_position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "end_position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 25,
        name: "max_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 26,
        name: "avg_vert_speed",
        type_name: "sint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 27,
        name: "end_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 28,
        name: "total_calories",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 74,
        name: "start_elevation",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 110,
        name: "total_moving_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SPLIT: MesgInfo = MesgInfo {
    name: "split",
    fields: FIELDS_SPLIT,
};

static FIELDS_SPLIT_SUMMARY: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "split_type",
        type_name: "split_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "num_splits",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "total_timer_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "total_distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "avg_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "max_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "total_ascent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "total_descent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "avg_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "max_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "avg_vert_speed",
        type_name: "sint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "total_calories",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 77,
        name: "total_moving_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SPLIT_SUMMARY: MesgInfo = MesgInfo {
    name: "split_summary",
    fields: FIELDS_SPLIT_SUMMARY,
};

static FIELDS_CLIMB_PRO: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "climb_pro_event",
        type_name: "climb_pro_event",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "climb_number",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "climb_category",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "current_dist",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_CLIMB_PRO: MesgInfo = MesgInfo {
    name: "climb_pro",
    fields: FIELDS_CLIMB_PRO,
};

static FIELDS_FIELD_DESCRIPTION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "developer_data_index",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "field_definition_number",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "fit_base_type_id",
        type_name: "fit_base_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "field_name",
        type_name: "string",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "array",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "components",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "scale",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "offset",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "units",
        type_name: "string",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "bits",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "accumulate",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "fit_base_unit_id",
        type_name: "fit_base_unit",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "native_mesg_num",
        type_name: "mesg_num",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "native_field_num",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_FIELD_DESCRIPTION: MesgInfo = MesgInfo {
    name: "field_description",
    fields: FIELDS_FIELD_DESCRIPTION,
};

static FIELDS_DEVELOPER_DATA_ID: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "developer_id",
        type_name: "byte",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "application_id",
        type_name: "byte",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "manufacturer_id",
        type_name: "manufacturer",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "developer_data_index",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "application_version",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_DEVELOPER_DATA_ID: MesgInfo = MesgInfo {
    name: "developer_data_id",
    fields: FIELDS_DEVELOPER_DATA_ID,
};

static FIELDS_COURSE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 4,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "capabilities",
        type_name: "course_capabilities",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_COURSE: MesgInfo = MesgInfo {
    name: "course",
    fields: FIELDS_COURSE,
};

static FIELDS_COURSE_POINT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "type",
        type_name: "course_point",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "favorite",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_COURSE_POINT: MesgInfo = MesgInfo {
    name: "course_point",
    fields: FIELDS_COURSE_POINT,
};

static FIELDS_SEGMENT_ID: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "uuid",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "user_profile_primary_key",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "device_id",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "default_race_leader",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "delete_status",
        type_name: "segment_delete_status",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "selection_type",
        type_name: "segment_selection_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SEGMENT_ID: MesgInfo = MesgInfo {
    name: "segment_id",
    fields: FIELDS_SEGMENT_ID,
};

static FIELDS_SEGMENT_LEADERBOARD_ENTRY: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "type",
        type_name: "segment_leaderboard_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "group_primary_key",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "activity_id",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "segment_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "activity_id_string",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SEGMENT_LEADERBOARD_ENTRY: MesgInfo = MesgInfo {
    name: "segment_leaderboard_entry",
    fields: FIELDS_SEGMENT_LEADERBOARD_ENTRY,
};

static COMPONENTS_SEGMENT_POINT_4: &[Component] = &[Component {
    name: "enhanced_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static FIELDS_SEGMENT_POINT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_SEGMENT_POINT_4,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "leader_time",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "enhanced_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SEGMENT_POINT: MesgInfo = MesgInfo {
    name: "segment_point",
    fields: FIELDS_SEGMENT_POINT,
};

static SUBFIELDS_SEGMENT_LAP_12: &[SubField] = &[SubField {
    name: "total_strokes",
    type_name: "uint32",
    conditions: &[("sport", "cycling")],
    components: &[],
    scale: None,
    offset: None,
    units: Some("strokes"),
}];
static COMPONENTS_SEGMENT_LAP_36: &[Component] = &[Component {
    name: "enhanced_avg_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_SEGMENT_LAP_37: &[Component] = &[Component {
    name: "enhanced_max_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_SEGMENT_LAP_56: &[Component] = &[Component {
    name: "enhanced_min_altitude",
    bits: 16,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static FIELDS_SEGMENT_LAP: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "event",
        type_name: "event",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "event_type",
        type_name: "event_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "start_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "start_position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "start_position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "end_position_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "end_position_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "total_elapsed_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "total_timer_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "total_distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "total_cycles",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("cycles"),
        components: &[],
        sub_fields: SUBFIELDS_SEGMENT_LAP_12,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "total_calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "total_fat_calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "avg_speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "max_speed",
        type_name: "uint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "avg_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 16,
        name: "max_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 17,
        name: "avg_cadence",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 18,
        name: "max_cadence",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 19,
        name: "avg_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 20,
        name: "max_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "total_ascent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "total_descent",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "event_group",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 25,
        name: "nec_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 26,
        name: "nec_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 27,
        name: "swc_lat",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 28,
        name: "swc_long",
        type_name: "sint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("semicircles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 29,
        name: "name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 30,
        name: "normalized_power",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 31,
        name: "left_right_balance",
        type_name: "left_right_balance_100",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 32,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 33,
        name: "total_work",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("J"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 34,
        name: "avg_altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_SEGMENT_LAP_36,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 35,
        name: "max_altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_SEGMENT_LAP_37,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 36,
        name: "gps_accuracy",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 37,
        name: "avg_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 38,
        name: "avg_pos_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 39,
        name: "avg_neg_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 40,
        name: "max_pos_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 41,
        name: "max_neg_grade",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 42,
        name: "avg_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 43,
        name: "max_temperature",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 44,
        name: "total_moving_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 45,
        name: "avg_pos_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 46,
        name: "avg_neg_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 47,
        name: "max_pos_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 48,
        name: "max_neg_vertical_speed",
        type_name: "sint16",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 49,
        name: "time_in_hr_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 50,
        name: "time_in_speed_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 51,
        name: "time_in_cadence_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 52,
        name: "time_in_power_zone",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 53,
        name: "repetition_num",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 54,
        name: "min_altitude",
        type_name: "uint16",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: COMPONENTS_SEGMENT_LAP_56,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 55,
        name: "min_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 56,
        name: "active_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 57,
        name: "wkt_step_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 58,
        name: "sport_event",
        type_name: "sport_event",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 59,
        name: "avg_left_torque_effectiveness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 60,
        name: "avg_right_torque_effectiveness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 61,
        name: "avg_left_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 62,
        name: "avg_right_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 63,
        name: "avg_combined_pedal_smoothness",
        type_name: "uint8",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 64,
        name: "status",
        type_name: "segment_lap_status",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 65,
        name: "uuid",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 66,
        name: "avg_fractional_cadence",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 67,
        name: "max_fractional_cadence",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 68,
        name: "total_fractional_cycles",
        type_name: "uint8",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("cycles"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 69,
        name: "front_gear_shift_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 70,
        name: "rear_gear_shift_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 71,
        name: "time_standing",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 72,
        name: "stand_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 73,
        name: "avg_left_pco",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 74,
        name: "avg_right_pco",
        type_name: "sint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("mm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 75,
        name: "avg_left_power_phase",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 76,
        name: "avg_left_power_phase_peak",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 77,
        name: "avg_right_power_phase",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 78,
        name: "avg_right_power_phase_peak",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(0.7111111_f64),
        offset: None,
        units: Some("degrees"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 79,
        name: "avg_power_position",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 80,
        name: "max_power_position",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("watts"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 81,
        name: "avg_cadence_position",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 82,
        name: "max_cadence_position",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("rpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 83,
        name: "manufacturer",
        type_name: "manufacturer",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 84,
        name: "total_grit",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kGrit"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 85,
        name: "total_flow",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("Flow"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 86,
        name: "avg_grit",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kGrit"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 87,
        name: "avg_flow",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: Some("Flow"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 89,
        name: "total_fractional_ascent",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 90,
        name: "total_fractional_descent",
        type_name: "uint8",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 91,
        name: "enhanced_avg_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 92,
        name: "enhanced_max_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 93,
        name: "enhanced_min_altitude",
        type_name: "uint32",
        array: None,
        scale: Some(5_f64),
        offset: Some(500_f64),
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SEGMENT_LAP: MesgInfo = MesgInfo {
    name: "segment_lap",
    fields: FIELDS_SEGMENT_LAP,
};

static FIELDS_SEGMENT_FILE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "file_uuid",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "user_profile_primary_key",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "leader_type",
        type_name: "segment_leaderboard_type",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "leader_group_primary_key",
        type_name: "uint32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "leader_activity_id",
        type_name: "uint32",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "leader_activity_id_string",
        type_name: "string",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "default_race_leader",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SEGMENT_FILE: MesgInfo = MesgInfo {
    name: "segment_file",
    fields: FIELDS_SEGMENT_FILE,
};

static FIELDS_WORKOUT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "capabilities",
        type_name: "workout_capabilities",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "num_valid_steps",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "wkt_name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "pool_length",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "pool_length_unit",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 17,
        name: "wkt_description",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_WORKOUT: MesgInfo = MesgInfo {
    name: "workout",
    fields: FIELDS_WORKOUT,
};

static FIELDS_WORKOUT_SESSION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "num_valid_steps",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "first_step_index",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "pool_length",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "pool_length_unit",
        type_name: "display_measure",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_WORKOUT_SESSION: MesgInfo = MesgInfo {
    name: "workout_session",
    fields: FIELDS_WORKOUT_SESSION,
};

static SUBFIELDS_WORKOUT_STEP_3: &[SubField] = &[
    SubField {
        name: "duration_time",
        type_name: "uint32",
        conditions: &[
            ("duration_type", "time"),
            ("duration_type", "repetition_time"),
        ],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
    },
    SubField {
        name: "duration_distance",
        type_name: "uint32",
        conditions: &[("duration_type", "distance")],
        components: &[],
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
    },
    SubField {
        name: "duration_hr",
        type_name: "workout_hr",
        conditions: &[
            ("duration_type", "hr_less_than"),
            ("duration_type", "hr_greater_than"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or bpm"),
    },
    SubField {
        name: "duration_calories",
        type_name: "uint32",
        conditions: &[("duration_type", "calories")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("calories"),
    },
    SubField {
        name: "duration_step",
        type_name: "uint32",
        conditions: &[
            ("duration_type", "repeat_until_steps_cmplt"),
            ("duration_type", "repeat_until_time"),
            ("duration_type", "repeat_until_distance"),
            ("duration_type", "repeat_until_calories"),
            ("duration_type", "repeat_until_hr_less_than"),
            ("duration_type", "repeat_until_hr_greater_than"),
            ("duration_type", "repeat_until_power_less_than"),
            ("duration_type", "repeat_until_power_greater_than"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "duration_power",
        type_name: "workout_power",
        conditions: &[
            ("duration_type", "power_less_than"),
            ("duration_type", "power_greater_than"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or watts"),
    },
    SubField {
        name: "duration_reps",
        type_name: "uint32",
        conditions: &[("duration_type", "reps")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static SUBFIELDS_WORKOUT_STEP_5: &[SubField] = &[
    SubField {
        name: "target_speed_zone",
        type_name: "uint32",
        conditions: &[("target_type", "speed")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "target_hr_zone",
        type_name: "uint32",
        conditions: &[("target_type", "heart_rate")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "target_cadence_zone",
        type_name: "uint32",
        conditions: &[("target_type", "cadence")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "target_power_zone",
        type_name: "uint32",
        conditions: &[("target_type", "power")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "repeat_steps",
        type_name: "uint32",
        conditions: &[("duration_type", "repeat_until_steps_cmplt")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "repeat_time",
        type_name: "uint32",
        conditions: &[("duration_type", "repeat_until_time")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
    },
    SubField {
        name: "repeat_distance",
        type_name: "uint32",
        conditions: &[("duration_type", "repeat_until_distance")],
        components: &[],
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
    },
    SubField {
        name: "repeat_calories",
        type_name: "uint32",
        conditions: &[("duration_type", "repeat_until_calories")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("calories"),
    },
    SubField {
        name: "repeat_hr",
        type_name: "workout_hr",
        conditions: &[
            ("duration_type", "repeat_until_hr_less_than"),
            ("duration_type", "repeat_until_hr_greater_than"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or bpm"),
    },
    SubField {
        name: "repeat_power",
        type_name: "workout_power",
        conditions: &[
            ("duration_type", "repeat_until_power_less_than"),
            ("duration_type", "repeat_until_power_greater_than"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or watts"),
    },
    SubField {
        name: "target_stroke_type",
        type_name: "swim_stroke",
        conditions: &[("target_type", "swim_stroke")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static SUBFIELDS_WORKOUT_STEP_6: &[SubField] = &[
    SubField {
        name: "custom_target_speed_low",
        type_name: "uint32",
        conditions: &[("target_type", "speed")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
    },
    SubField {
        name: "custom_target_heart_rate_low",
        type_name: "workout_hr",
        conditions: &[("target_type", "heart_rate")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or bpm"),
    },
    SubField {
        name: "custom_target_cadence_low",
        type_name: "uint32",
        conditions: &[("target_type", "cadence")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("rpm"),
    },
    SubField {
        name: "custom_target_power_low",
        type_name: "workout_power",
        conditions: &[("target_type", "power")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or watts"),
    },
];
static SUBFIELDS_WORKOUT_STEP_7: &[SubField] = &[
    SubField {
        name: "custom_target_speed_high",
        type_name: "uint32",
        conditions: &[("target_type", "speed")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
    },
    SubField {
        name: "custom_target_heart_rate_high",
        type_name: "workout_hr",
        conditions: &[("target_type", "heart_rate")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or bpm"),
    },
    SubField {
        name: "custom_target_cadence_high",
        type_name: "uint32",
        conditions: &[("target_type", "cadence")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("rpm"),
    },
    SubField {
        name: "custom_target_power_high",
        type_name: "workout_power",
        conditions: &[("target_type", "power")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or watts"),
    },
];
static SUBFIELDS_WORKOUT_STEP_16: &[SubField] = &[
    SubField {
        name: "secondary_target_speed_zone",
        type_name: "uint32",
        conditions: &[("secondary_target_type", "speed")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "secondary_target_hr_zone",
        type_name: "uint32",
        conditions: &[("secondary_target_type", "heart_rate")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "secondary_target_cadence_zone",
        type_name: "uint32",
        conditions: &[("secondary_target_type", "cadence")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "secondary_target_power_zone",
        type_name: "uint32",
        conditions: &[("secondary_target_type", "power")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "secondary_target_stroke_type",
        type_name: "swim_stroke",
        conditions: &[("secondary_target_type", "swim_stroke")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static SUBFIELDS_WORKOUT_STEP_17: &[SubField] = &[
    SubField {
        name: "secondary_custom_target_speed_low",
        type_name: "uint32",
        conditions: &[("secondary_target_type", "speed")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
    },
    SubField {
        name: "secondary_custom_target_heart_rate_low",
        type_name: "workout_hr",
        conditions: &[("secondary_target_type", "heart_rate")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or bpm"),
    },
    SubField {
        name: "secondary_custom_target_cadence_low",
        type_name: "uint32",
        conditions: &[("secondary_target_type", "cadence")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("rpm"),
    },
    SubField {
        name: "secondary_custom_target_power_low",
        type_name: "workout_power",
        conditions: &[("secondary_target_type", "power")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or watts"),
    },
];
static SUBFIELDS_WORKOUT_STEP_18: &[SubField] = &[
    SubField {
        name: "secondary_custom_target_speed_high",
        type_name: "uint32",
        conditions: &[("secondary_target_type", "speed")],
        components: &[],
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
    },
    SubField {
        name: "secondary_custom_target_heart_rate_high",
        type_name: "workout_hr",
        conditions: &[("secondary_target_type", "heart_rate")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or bpm"),
    },
    SubField {
        name: "secondary_custom_target_cadence_high",
        type_name: "uint32",
        conditions: &[("secondary_target_type", "cadence")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("rpm"),
    },
    SubField {
        name: "secondary_custom_target_power_high",
        type_name: "workout_power",
        conditions: &[("secondary_target_type", "power")],
        components: &[],
        scale: None,
        offset: None,
        units: Some("% or watts"),
    },
];
static FIELDS_WORKOUT_STEP: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "wkt_step_name",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "duration_type",
        type_name: "wkt_step_duration",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "duration_value",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_WORKOUT_STEP_3,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "target_type",
        type_name: "wkt_step_target",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "target_value",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_WORKOUT_STEP_5,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "custom_target_value_low",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_WORKOUT_STEP_6,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "custom_target_value_high",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_WORKOUT_STEP_7,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "intensity",
        type_name: "intensity",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "notes",
        type_name: "string",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "equipment",
        type_name: "workout_equipment",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "exercise_category",
        type_name: "exercise_category",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "exercise_name",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "exercise_weight",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("kg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "weight_display_unit",
        type_name: "fit_base_unit",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 19,
        name: "secondary_target_type",
        type_name: "wkt_step_target",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 20,
        name: "secondary_target_value",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_WORKOUT_STEP_16,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 21,
        name: "secondary_custom_target_value_low",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_WORKOUT_STEP_17,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "secondary_custom_target_value_high",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_WORKOUT_STEP_18,
        accumulate: false,
    },
];

pub static MESG_WORKOUT_STEP: MesgInfo = MesgInfo {
    name: "workout_step",
    fields: FIELDS_WORKOUT_STEP,
};

static FIELDS_EXERCISE_TITLE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "exercise_category",
        type_name: "exercise_category",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "exercise_name",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "wkt_step_name",
        type_name: "string",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_EXERCISE_TITLE: MesgInfo = MesgInfo {
    name: "exercise_title",
    fields: FIELDS_EXERCISE_TITLE,
};

static SUBFIELDS_SCHEDULE_1: &[SubField] = &[
    SubField {
        name: "favero_product",
        type_name: "favero_product",
        conditions: &[("manufacturer", "favero_electronics")],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
    SubField {
        name: "garmin_product",
        type_name: "garmin_product",
        conditions: &[
            ("manufacturer", "garmin"),
            ("manufacturer", "dynastream"),
            ("manufacturer", "dynastream_oem"),
            ("manufacturer", "tacx"),
        ],
        components: &[],
        scale: None,
        offset: None,
        units: None,
    },
];
static FIELDS_SCHEDULE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "manufacturer",
        type_name: "manufacturer",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "product",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: SUBFIELDS_SCHEDULE_1,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "serial_number",
        type_name: "uint32z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "time_created",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "completed",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "type",
        type_name: "schedule",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "scheduled_time",
        type_name: "local_date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SCHEDULE: MesgInfo = MesgInfo {
    name: "schedule",
    fields: FIELDS_SCHEDULE,
};

static FIELDS_TOTALS: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timer_time",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "distance",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "calories",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "elapsed_time",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "sessions",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "active_time",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "sport_index",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_TOTALS: MesgInfo = MesgInfo {
    name: "totals",
    fields: FIELDS_TOTALS,
};

static FIELDS_WEIGHT_SCALE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "weight",
        type_name: "weight",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("kg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "percent_fat",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "percent_hydration",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("%"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "visceral_fat_mass",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("kg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "bone_mass",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("kg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "muscle_mass",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("kg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "basal_met",
        type_name: "uint16",
        array: None,
        scale: Some(4_f64),
        offset: None,
        units: Some("kcal/day"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "physique_rating",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "active_met",
        type_name: "uint16",
        array: None,
        scale: Some(4_f64),
        offset: None,
        units: Some("kcal/day"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "metabolic_age",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("years"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "visceral_fat_rating",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "user_profile_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "bmi",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("kg/m^2"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_WEIGHT_SCALE: MesgInfo = MesgInfo {
    name: "weight_scale",
    fields: FIELDS_WEIGHT_SCALE,
};

static FIELDS_BLOOD_PRESSURE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "systolic_pressure",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("mmHg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "diastolic_pressure",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("mmHg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "mean_arterial_pressure",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("mmHg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "map_3_sample_mean",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("mmHg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "map_morning_values",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("mmHg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "map_evening_values",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("mmHg"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "heart_rate_type",
        type_name: "hr_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "status",
        type_name: "bp_status",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "user_profile_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_BLOOD_PRESSURE: MesgInfo = MesgInfo {
    name: "blood_pressure",
    fields: FIELDS_BLOOD_PRESSURE,
};

static FIELDS_MONITORING_INFO: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "local_timestamp",
        type_name: "local_date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "activity_type",
        type_name: "activity_type",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "cycles_to_distance",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(5000_f64),
        offset: None,
        units: Some("m/cycle"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "cycles_to_calories",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(5000_f64),
        offset: None,
        units: Some("kcal/cycle"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "resting_metabolic_rate",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal / day"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_MONITORING_INFO: MesgInfo = MesgInfo {
    name: "monitoring_info",
    fields: FIELDS_MONITORING_INFO,
};

static SUBFIELDS_MONITORING_4: &[SubField] = &[
    SubField {
        name: "steps",
        type_name: "uint32",
        conditions: &[("activity_type", "walking"), ("activity_type", "running")],
        components: &[],
        scale: Some(1_f64),
        offset: None,
        units: Some("steps"),
    },
    SubField {
        name: "strokes",
        type_name: "uint32",
        conditions: &[("activity_type", "cycling"), ("activity_type", "swimming")],
        components: &[],
        scale: Some(2_f64),
        offset: None,
        units: Some("strokes"),
    },
];
static COMPONENTS_MONITORING_18: &[Component] = &[
    Component {
        name: "activity_type",
        bits: 5,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "intensity",
        bits: 3,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
];
static FIELDS_MONITORING: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "device_index",
        type_name: "device_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "distance",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "cycles",
        type_name: "uint32",
        array: None,
        scale: Some(2_f64),
        offset: None,
        units: Some("cycles"),
        components: &[],
        sub_fields: SUBFIELDS_MONITORING_4,
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "active_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "activity_type",
        type_name: "activity_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "activity_subtype",
        type_name: "activity_subtype",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "activity_level",
        type_name: "activity_level",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "distance_16",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("100 * m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "cycles_16",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("2 * cycles (steps)"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "active_time_16",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "local_timestamp",
        type_name: "local_date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "temperature",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "temperature_min",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "temperature_max",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("C"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 16,
        name: "activity_time",
        type_name: "uint16",
        array: Some("[8]"),
        scale: None,
        offset: None,
        units: Some("minutes"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 19,
        name: "active_calories",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("kcal"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "current_activity_type_intensity",
        type_name: "byte",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_MONITORING_18,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 25,
        name: "timestamp_min_8",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 26,
        name: "timestamp_16",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 27,
        name: "heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 28,
        name: "intensity",
        type_name: "uint8",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 29,
        name: "duration_min",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 30,
        name: "duration",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 31,
        name: "ascent",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 32,
        name: "descent",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 33,
        name: "moderate_activity_minutes",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("minutes"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 34,
        name: "vigorous_activity_minutes",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("minutes"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_MONITORING: MesgInfo = MesgInfo {
    name: "monitoring",
    fields: FIELDS_MONITORING,
};

static FIELDS_MONITORING_HR_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "resting_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "current_day_resting_heart_rate",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_MONITORING_HR_DATA: MesgInfo = MesgInfo {
    name: "monitoring_hr_data",
    fields: FIELDS_MONITORING_HR_DATA,
};

static FIELDS_SPO2_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "reading_spo2",
        type_name: "uint8",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "reading_confidence",
        type_name: "uint8",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "mode",
        type_name: "spo2_measurement_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SPO2_DATA: MesgInfo = MesgInfo {
    name: "spo2_data",
    fields: FIELDS_SPO2_DATA,
};

static COMPONENTS_HR_2: &[Component] = &[Component {
    name: "fractional_timestamp",
    bits: 8,
    scale: None,
    offset: None,
    units: None,
    accumulate: false,
}];
static COMPONENTS_HR_5: &[Component] = &[
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
    Component {
        name: "event_timestamp",
        bits: 12,
        scale: None,
        offset: None,
        units: None,
        accumulate: true,
    },
];
static FIELDS_HR: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "fractional_timestamp",
        type_name: "uint16",
        array: None,
        scale: Some(32768_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "time256",
        type_name: "uint8",
        array: None,
        scale: Some(256_f64),
        offset: None,
        units: Some("s"),
        components: COMPONENTS_HR_2,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "filtered_bpm",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "event_timestamp",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1024_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "event_timestamp_12",
        type_name: "byte",
        array: Some("[N]"),
        scale: Some(1024_f64),
        offset: None,
        units: Some("s"),
        components: COMPONENTS_HR_5,
        sub_fields: &[],
        accumulate: true,
    },
];

pub static MESG_HR: MesgInfo = MesgInfo {
    name: "hr",
    fields: FIELDS_HR,
};

static FIELDS_STRESS_LEVEL: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "stress_level_value",
        type_name: "sint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "stress_level_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_STRESS_LEVEL: MesgInfo = MesgInfo {
    name: "stress_level",
    fields: FIELDS_STRESS_LEVEL,
};

static FIELDS_MAX_MET_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "update_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "vo2_max",
        type_name: "uint16",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("mL/kg/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "sport",
        type_name: "sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "sub_sport",
        type_name: "sub_sport",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "max_met_category",
        type_name: "max_met_category",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "calibrated_data",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "hr_source",
        type_name: "max_met_heart_rate_source",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "speed_source",
        type_name: "max_met_speed_source",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_MAX_MET_DATA: MesgInfo = MesgInfo {
    name: "max_met_data",
    fields: FIELDS_MAX_MET_DATA,
};

static FIELDS_HSA_BODY_BATTERY_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "processing_interval",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "level",
        type_name: "sint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "charged",
        type_name: "sint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "uncharged",
        type_name: "sint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_BODY_BATTERY_DATA: MesgInfo = MesgInfo {
    name: "hsa_body_battery_data",
    fields: FIELDS_HSA_BODY_BATTERY_DATA,
};

static FIELDS_HSA_EVENT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "event_id",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_EVENT: MesgInfo = MesgInfo {
    name: "hsa_event",
    fields: FIELDS_HSA_EVENT,
};

static FIELDS_HSA_ACCELEROMETER_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sampling_interval",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "accel_x",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(1.024_f64),
        offset: None,
        units: Some("mG"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "accel_y",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(1.024_f64),
        offset: None,
        units: Some("mG"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "accel_z",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(1.024_f64),
        offset: None,
        units: Some("mG"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "timestamp_32k",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_ACCELEROMETER_DATA: MesgInfo = MesgInfo {
    name: "hsa_accelerometer_data",
    fields: FIELDS_HSA_ACCELEROMETER_DATA,
};

static FIELDS_HSA_GYROSCOPE_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "sampling_interval",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("1/32768 s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "gyro_x",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(28.57143_f64),
        offset: None,
        units: Some("deg/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "gyro_y",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(28.57143_f64),
        offset: None,
        units: Some("deg/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "gyro_z",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(28.57143_f64),
        offset: None,
        units: Some("deg/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "timestamp_32k",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: Some("1/32768 s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_GYROSCOPE_DATA: MesgInfo = MesgInfo {
    name: "hsa_gyroscope_data",
    fields: FIELDS_HSA_GYROSCOPE_DATA,
};

static FIELDS_HSA_STEP_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "processing_interval",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "steps",
        type_name: "uint32",
        array: Some("[N]"),
        scale: Some(1_f64),
        offset: None,
        units: Some("steps"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_STEP_DATA: MesgInfo = MesgInfo {
    name: "hsa_step_data",
    fields: FIELDS_HSA_STEP_DATA,
};

static FIELDS_HSA_SPO2_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "processing_interval",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "reading_spo2",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "confidence",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_SPO2_DATA: MesgInfo = MesgInfo {
    name: "hsa_spo2_data",
    fields: FIELDS_HSA_SPO2_DATA,
};

static FIELDS_HSA_STRESS_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "processing_interval",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "stress_level",
        type_name: "sint8",
        array: Some("[N]"),
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_STRESS_DATA: MesgInfo = MesgInfo {
    name: "hsa_stress_data",
    fields: FIELDS_HSA_STRESS_DATA,
};

static FIELDS_HSA_RESPIRATION_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "processing_interval",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "respiration_rate",
        type_name: "sint16",
        array: Some("[N]"),
        scale: Some(100_f64),
        offset: None,
        units: Some("breaths/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_RESPIRATION_DATA: MesgInfo = MesgInfo {
    name: "hsa_respiration_data",
    fields: FIELDS_HSA_RESPIRATION_DATA,
};

static FIELDS_HSA_HEART_RATE_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "processing_interval",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "status",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "heart_rate",
        type_name: "uint8",
        array: Some("[N]"),
        scale: Some(1_f64),
        offset: None,
        units: Some("bpm"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_HEART_RATE_DATA: MesgInfo = MesgInfo {
    name: "hsa_heart_rate_data",
    fields: FIELDS_HSA_HEART_RATE_DATA,
};

static FIELDS_HSA_CONFIGURATION_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "data",
        type_name: "byte",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "data_size",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_CONFIGURATION_DATA: MesgInfo = MesgInfo {
    name: "hsa_configuration_data",
    fields: FIELDS_HSA_CONFIGURATION_DATA,
};

static FIELDS_HSA_WRIST_TEMPERATURE_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "processing_interval",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "value",
        type_name: "uint16",
        array: Some("[N]"),
        scale: Some(1000_f64),
        offset: None,
        units: Some("degC"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HSA_WRIST_TEMPERATURE_DATA: MesgInfo = MesgInfo {
    name: "hsa_wrist_temperature_data",
    fields: FIELDS_HSA_WRIST_TEMPERATURE_DATA,
};

static FIELDS_MEMO_GLOB: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 250,
        name: "part_index",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "memo",
        type_name: "byte",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "mesg_num",
        type_name: "mesg_num",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "parent_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "field_num",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "data",
        type_name: "uint8z",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_MEMO_GLOB: MesgInfo = MesgInfo {
    name: "memo_glob",
    fields: FIELDS_MEMO_GLOB,
};

static FIELDS_SLEEP_LEVEL: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "sleep_level",
        type_name: "sleep_level",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SLEEP_LEVEL: MesgInfo = MesgInfo {
    name: "sleep_level",
    fields: FIELDS_SLEEP_LEVEL,
};

static FIELDS_ANT_CHANNEL_ID: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "channel_number",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "device_type",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "device_number",
        type_name: "uint16z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "transmission_type",
        type_name: "uint8z",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "device_index",
        type_name: "device_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_ANT_CHANNEL_ID: MesgInfo = MesgInfo {
    name: "ant_channel_id",
    fields: FIELDS_ANT_CHANNEL_ID,
};

static COMPONENTS_ANT_RX_3: &[Component] = &[
    Component {
        name: "channel_number",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
];
static FIELDS_ANT_RX: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "fractional_timestamp",
        type_name: "uint16",
        array: None,
        scale: Some(32768_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "mesg_id",
        type_name: "byte",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "mesg_data",
        type_name: "byte",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_ANT_RX_3,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "channel_number",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "data",
        type_name: "byte",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_ANT_RX: MesgInfo = MesgInfo {
    name: "ant_rx",
    fields: FIELDS_ANT_RX,
};

static COMPONENTS_ANT_TX_3: &[Component] = &[
    Component {
        name: "channel_number",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "data",
        bits: 8,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
];
static FIELDS_ANT_TX: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "fractional_timestamp",
        type_name: "uint16",
        array: None,
        scale: Some(32768_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "mesg_id",
        type_name: "byte",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "mesg_data",
        type_name: "byte",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_ANT_TX_3,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "channel_number",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "data",
        type_name: "byte",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_ANT_TX: MesgInfo = MesgInfo {
    name: "ant_tx",
    fields: FIELDS_ANT_TX,
};

static FIELDS_EXD_SCREEN_CONFIGURATION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "screen_index",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "field_count",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "layout",
        type_name: "exd_layout",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "screen_enabled",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_EXD_SCREEN_CONFIGURATION: MesgInfo = MesgInfo {
    name: "exd_screen_configuration",
    fields: FIELDS_EXD_SCREEN_CONFIGURATION,
};

static COMPONENTS_EXD_DATA_FIELD_CONFIGURATION_1: &[Component] = &[
    Component {
        name: "field_id",
        bits: 4,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "concept_count",
        bits: 4,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
];
static FIELDS_EXD_DATA_FIELD_CONFIGURATION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "screen_index",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "concept_field",
        type_name: "byte",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_EXD_DATA_FIELD_CONFIGURATION_1,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "field_id",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "concept_count",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "display_type",
        type_name: "exd_display_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "title",
        type_name: "string",
        array: Some("[32]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_EXD_DATA_FIELD_CONFIGURATION: MesgInfo = MesgInfo {
    name: "exd_data_field_configuration",
    fields: FIELDS_EXD_DATA_FIELD_CONFIGURATION,
};

static COMPONENTS_EXD_DATA_CONCEPT_CONFIGURATION_1: &[Component] = &[
    Component {
        name: "field_id",
        bits: 4,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "concept_index",
        bits: 4,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
];
static FIELDS_EXD_DATA_CONCEPT_CONFIGURATION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "screen_index",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "concept_field",
        type_name: "byte",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_EXD_DATA_CONCEPT_CONFIGURATION_1,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "field_id",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "concept_index",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "data_page",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "concept_key",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "scaling",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "data_units",
        type_name: "exd_data_units",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "qualifier",
        type_name: "exd_qualifiers",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "descriptor",
        type_name: "exd_descriptors",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "is_signed",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_EXD_DATA_CONCEPT_CONFIGURATION: MesgInfo = MesgInfo {
    name: "exd_data_concept_configuration",
    fields: FIELDS_EXD_DATA_CONCEPT_CONFIGURATION,
};

static FIELDS_DIVE_SUMMARY: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "reference_mesg",
        type_name: "mesg_num",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "reference_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "avg_depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "max_depth",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "surface_interval",
        type_name: "uint32",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "start_cns",
        type_name: "uint8",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "end_cns",
        type_name: "uint8",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "start_n2",
        type_name: "uint16",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "end_n2",
        type_name: "uint16",
        array: None,
        scale: Some(1_f64),
        offset: None,
        units: Some("percent"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "o2_toxicity",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("OTUs"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "dive_number",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "bottom_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 12,
        name: "avg_pressure_sac",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("bar/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 13,
        name: "avg_volume_sac",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("L/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "avg_rmv",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("L/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "descent_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 16,
        name: "ascent_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 17,
        name: "avg_ascent_rate",
        type_name: "sint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 22,
        name: "avg_descent_rate",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 23,
        name: "max_ascent_rate",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 24,
        name: "max_descent_rate",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 25,
        name: "hang_time",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_DIVE_SUMMARY: MesgInfo = MesgInfo {
    name: "dive_summary",
    fields: FIELDS_DIVE_SUMMARY,
};

static FIELDS_AAD_ACCEL_FEATURES: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "time",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "energy_total",
        type_name: "uint32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "zero_cross_cnt",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "instance",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "time_above_threshold",
        type_name: "uint16",
        array: None,
        scale: Some(25_f64),
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_AAD_ACCEL_FEATURES: MesgInfo = MesgInfo {
    name: "aad_accel_features",
    fields: FIELDS_AAD_ACCEL_FEATURES,
};

static FIELDS_HRV: &[FieldInfo] = &[FieldInfo {
    field_def_num: 0,
    name: "time",
    type_name: "uint16",
    array: Some("[N]"),
    scale: Some(1000_f64),
    offset: None,
    units: Some("s"),
    components: &[],
    sub_fields: &[],
    accumulate: false,
}];

pub static MESG_HRV: MesgInfo = MesgInfo {
    name: "hrv",
    fields: FIELDS_HRV,
};

static FIELDS_BEAT_INTERVALS: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "time",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_BEAT_INTERVALS: MesgInfo = MesgInfo {
    name: "beat_intervals",
    fields: FIELDS_BEAT_INTERVALS,
};

static FIELDS_HRV_STATUS_SUMMARY: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "weekly_average",
        type_name: "uint16",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "last_night_average",
        type_name: "uint16",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "last_night_5_min_high",
        type_name: "uint16",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "baseline_low_upper",
        type_name: "uint16",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "baseline_balanced_lower",
        type_name: "uint16",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "baseline_balanced_upper",
        type_name: "uint16",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "status",
        type_name: "hrv_status",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HRV_STATUS_SUMMARY: MesgInfo = MesgInfo {
    name: "hrv_status_summary",
    fields: FIELDS_HRV_STATUS_SUMMARY,
};

static FIELDS_HRV_VALUE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "value",
        type_name: "uint16",
        array: None,
        scale: Some(128_f64),
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_HRV_VALUE: MesgInfo = MesgInfo {
    name: "hrv_value",
    fields: FIELDS_HRV_VALUE,
};

static COMPONENTS_RAW_BBI_2: &[Component] = &[
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "time",
        bits: 14,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "quality",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
    Component {
        name: "gap",
        bits: 1,
        scale: None,
        offset: None,
        units: None,
        accumulate: false,
    },
];
static FIELDS_RAW_BBI: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "timestamp_ms",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "data",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: COMPONENTS_RAW_BBI_2,
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "time",
        type_name: "uint16",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: Some("ms"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "quality",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "gap",
        type_name: "uint8",
        array: Some("[N]"),
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_RAW_BBI: MesgInfo = MesgInfo {
    name: "raw_bbi",
    fields: FIELDS_RAW_BBI,
};

static FIELDS_RESPIRATION_RATE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "respiration_rate",
        type_name: "sint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("breaths/min"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_RESPIRATION_RATE: MesgInfo = MesgInfo {
    name: "respiration_rate",
    fields: FIELDS_RESPIRATION_RATE,
};

static FIELDS_CHRONO_SHOT_SESSION: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "min_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "max_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "avg_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "shot_count",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "projectile_type",
        type_name: "projectile_type",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "grain_weight",
        type_name: "uint32",
        array: None,
        scale: Some(10_f64),
        offset: None,
        units: Some("gr"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "standard_deviation",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_CHRONO_SHOT_SESSION: MesgInfo = MesgInfo {
    name: "chrono_shot_session",
    fields: FIELDS_CHRONO_SHOT_SESSION,
};

static FIELDS_CHRONO_SHOT_DATA: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "shot_speed",
        type_name: "uint32",
        array: None,
        scale: Some(1000_f64),
        offset: None,
        units: Some("m/s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "shot_num",
        type_name: "uint16",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_CHRONO_SHOT_DATA: MesgInfo = MesgInfo {
    name: "chrono_shot_data",
    fields: FIELDS_CHRONO_SHOT_DATA,
};

static FIELDS_TANK_UPDATE: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "sensor",
        type_name: "ant_channel_id",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "pressure",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("bar"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_TANK_UPDATE: MesgInfo = MesgInfo {
    name: "tank_update",
    fields: FIELDS_TANK_UPDATE,
};

static FIELDS_TANK_SUMMARY: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("s"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "sensor",
        type_name: "ant_channel_id",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "start_pressure",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("bar"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "end_pressure",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("bar"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "volume_used",
        type_name: "uint32",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: Some("L"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_TANK_SUMMARY: MesgInfo = MesgInfo {
    name: "tank_summary",
    fields: FIELDS_TANK_SUMMARY,
};

static FIELDS_SLEEP_ASSESSMENT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 0,
        name: "combined_awake_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "awake_time_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "awakenings_count_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "deep_sleep_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "sleep_duration_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "light_sleep_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "overall_sleep_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "sleep_quality_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 8,
        name: "sleep_recovery_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 9,
        name: "rem_sleep_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 10,
        name: "sleep_restlessness_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 11,
        name: "awakenings_count",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 14,
        name: "interruptions_score",
        type_name: "uint8",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 15,
        name: "average_stress_during_sleep",
        type_name: "uint16",
        array: None,
        scale: Some(100_f64),
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SLEEP_ASSESSMENT: MesgInfo = MesgInfo {
    name: "sleep_assessment",
    fields: FIELDS_SLEEP_ASSESSMENT,
};

static FIELDS_SLEEP_DISRUPTION_SEVERITY_PERIOD: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "severity",
        type_name: "sleep_disruption_severity",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SLEEP_DISRUPTION_SEVERITY_PERIOD: MesgInfo = MesgInfo {
    name: "sleep_disruption_severity_period",
    fields: FIELDS_SLEEP_DISRUPTION_SEVERITY_PERIOD,
};

static FIELDS_SLEEP_DISRUPTION_OVERNIGHT_SEVERITY: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "severity",
        type_name: "sleep_disruption_severity",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SLEEP_DISRUPTION_OVERNIGHT_SEVERITY: MesgInfo = MesgInfo {
    name: "sleep_disruption_overnight_severity",
    fields: FIELDS_SLEEP_DISRUPTION_OVERNIGHT_SEVERITY,
};

static FIELDS_NAP_EVENT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 254,
        name: "message_index",
        type_name: "message_index",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "start_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("seconds"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "start_timezone_offset",
        type_name: "sint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("minutes"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "end_time",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: Some("seconds"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 3,
        name: "end_timezone_offset",
        type_name: "sint16",
        array: None,
        scale: None,
        offset: None,
        units: Some("minutes"),
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "feedback",
        type_name: "nap_period_feedback",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 5,
        name: "is_deleted",
        type_name: "bool",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 6,
        name: "source",
        type_name: "nap_source",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 7,
        name: "update_timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_NAP_EVENT: MesgInfo = MesgInfo {
    name: "nap_event",
    fields: FIELDS_NAP_EVENT,
};

static FIELDS_SKIN_TEMP_OVERNIGHT: &[FieldInfo] = &[
    FieldInfo {
        field_def_num: 253,
        name: "timestamp",
        type_name: "date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 0,
        name: "local_timestamp",
        type_name: "local_date_time",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 1,
        name: "average_deviation",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 2,
        name: "average_7_day_deviation",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
    FieldInfo {
        field_def_num: 4,
        name: "nightly_value",
        type_name: "float32",
        array: None,
        scale: None,
        offset: None,
        units: None,
        components: &[],
        sub_fields: &[],
        accumulate: false,
    },
];

pub static MESG_SKIN_TEMP_OVERNIGHT: MesgInfo = MesgInfo {
    name: "skin_temp_overnight",
    fields: FIELDS_SKIN_TEMP_OVERNIGHT,
};

/// All messages defined in Profile.xlsx, in spreadsheet order.
pub static ALL_MESSAGES: &[&MesgInfo] = &[
    &MESG_FILE_ID,
    &MESG_FILE_CREATOR,
    &MESG_TIMESTAMP_CORRELATION,
    &MESG_SOFTWARE,
    &MESG_SLAVE_DEVICE,
    &MESG_CAPABILITIES,
    &MESG_FILE_CAPABILITIES,
    &MESG_MESG_CAPABILITIES,
    &MESG_FIELD_CAPABILITIES,
    &MESG_DEVICE_SETTINGS,
    &MESG_USER_PROFILE,
    &MESG_HRM_PROFILE,
    &MESG_SDM_PROFILE,
    &MESG_BIKE_PROFILE,
    &MESG_CONNECTIVITY,
    &MESG_WATCHFACE_SETTINGS,
    &MESG_OHR_SETTINGS,
    &MESG_TIME_IN_ZONE,
    &MESG_ZONES_TARGET,
    &MESG_SPORT,
    &MESG_HR_ZONE,
    &MESG_SPEED_ZONE,
    &MESG_CADENCE_ZONE,
    &MESG_POWER_ZONE,
    &MESG_MET_ZONE,
    &MESG_TRAINING_SETTINGS,
    &MESG_DIVE_SETTINGS,
    &MESG_DIVE_ALARM,
    &MESG_DIVE_APNEA_ALARM,
    &MESG_DIVE_GAS,
    &MESG_GOAL,
    &MESG_ACTIVITY,
    &MESG_SESSION,
    &MESG_LAP,
    &MESG_LENGTH,
    &MESG_RECORD,
    &MESG_EVENT,
    &MESG_DEVICE_INFO,
    &MESG_DEVICE_AUX_BATTERY_INFO,
    &MESG_TRAINING_FILE,
    &MESG_WEATHER_CONDITIONS,
    &MESG_WEATHER_ALERT,
    &MESG_GPS_METADATA,
    &MESG_CAMERA_EVENT,
    &MESG_GYROSCOPE_DATA,
    &MESG_ACCELEROMETER_DATA,
    &MESG_MAGNETOMETER_DATA,
    &MESG_BAROMETER_DATA,
    &MESG_THREE_D_SENSOR_CALIBRATION,
    &MESG_ONE_D_SENSOR_CALIBRATION,
    &MESG_VIDEO_FRAME,
    &MESG_OBDII_DATA,
    &MESG_NMEA_SENTENCE,
    &MESG_AVIATION_ATTITUDE,
    &MESG_VIDEO,
    &MESG_VIDEO_TITLE,
    &MESG_VIDEO_DESCRIPTION,
    &MESG_VIDEO_CLIP,
    &MESG_SET,
    &MESG_JUMP,
    &MESG_SPLIT,
    &MESG_SPLIT_SUMMARY,
    &MESG_CLIMB_PRO,
    &MESG_FIELD_DESCRIPTION,
    &MESG_DEVELOPER_DATA_ID,
    &MESG_COURSE,
    &MESG_COURSE_POINT,
    &MESG_SEGMENT_ID,
    &MESG_SEGMENT_LEADERBOARD_ENTRY,
    &MESG_SEGMENT_POINT,
    &MESG_SEGMENT_LAP,
    &MESG_SEGMENT_FILE,
    &MESG_WORKOUT,
    &MESG_WORKOUT_SESSION,
    &MESG_WORKOUT_STEP,
    &MESG_EXERCISE_TITLE,
    &MESG_SCHEDULE,
    &MESG_TOTALS,
    &MESG_WEIGHT_SCALE,
    &MESG_BLOOD_PRESSURE,
    &MESG_MONITORING_INFO,
    &MESG_MONITORING,
    &MESG_MONITORING_HR_DATA,
    &MESG_SPO2_DATA,
    &MESG_HR,
    &MESG_STRESS_LEVEL,
    &MESG_MAX_MET_DATA,
    &MESG_HSA_BODY_BATTERY_DATA,
    &MESG_HSA_EVENT,
    &MESG_HSA_ACCELEROMETER_DATA,
    &MESG_HSA_GYROSCOPE_DATA,
    &MESG_HSA_STEP_DATA,
    &MESG_HSA_SPO2_DATA,
    &MESG_HSA_STRESS_DATA,
    &MESG_HSA_RESPIRATION_DATA,
    &MESG_HSA_HEART_RATE_DATA,
    &MESG_HSA_CONFIGURATION_DATA,
    &MESG_HSA_WRIST_TEMPERATURE_DATA,
    &MESG_MEMO_GLOB,
    &MESG_SLEEP_LEVEL,
    &MESG_ANT_CHANNEL_ID,
    &MESG_ANT_RX,
    &MESG_ANT_TX,
    &MESG_EXD_SCREEN_CONFIGURATION,
    &MESG_EXD_DATA_FIELD_CONFIGURATION,
    &MESG_EXD_DATA_CONCEPT_CONFIGURATION,
    &MESG_DIVE_SUMMARY,
    &MESG_AAD_ACCEL_FEATURES,
    &MESG_HRV,
    &MESG_BEAT_INTERVALS,
    &MESG_HRV_STATUS_SUMMARY,
    &MESG_HRV_VALUE,
    &MESG_RAW_BBI,
    &MESG_RESPIRATION_RATE,
    &MESG_CHRONO_SHOT_SESSION,
    &MESG_CHRONO_SHOT_DATA,
    &MESG_TANK_UPDATE,
    &MESG_TANK_SUMMARY,
    &MESG_SLEEP_ASSESSMENT,
    &MESG_SLEEP_DISRUPTION_SEVERITY_PERIOD,
    &MESG_SLEEP_DISRUPTION_OVERNIGHT_SEVERITY,
    &MESG_NAP_EVENT,
    &MESG_SKIN_TEMP_OVERNIGHT,
];

/// Resolve the [`MesgInfo`] for a global message number in O(1).
/// Generated from the `mesg_num` Types-sheet enum.
pub fn mesg_info_by_num(global_mesg_num: u16) -> Option<&'static MesgInfo> {
    Some(match global_mesg_num {
        0 => &MESG_FILE_ID,
        1 => &MESG_CAPABILITIES,
        2 => &MESG_DEVICE_SETTINGS,
        3 => &MESG_USER_PROFILE,
        4 => &MESG_HRM_PROFILE,
        5 => &MESG_SDM_PROFILE,
        6 => &MESG_BIKE_PROFILE,
        7 => &MESG_ZONES_TARGET,
        8 => &MESG_HR_ZONE,
        9 => &MESG_POWER_ZONE,
        10 => &MESG_MET_ZONE,
        12 => &MESG_SPORT,
        13 => &MESG_TRAINING_SETTINGS,
        15 => &MESG_GOAL,
        18 => &MESG_SESSION,
        19 => &MESG_LAP,
        20 => &MESG_RECORD,
        21 => &MESG_EVENT,
        23 => &MESG_DEVICE_INFO,
        26 => &MESG_WORKOUT,
        27 => &MESG_WORKOUT_STEP,
        28 => &MESG_SCHEDULE,
        30 => &MESG_WEIGHT_SCALE,
        31 => &MESG_COURSE,
        32 => &MESG_COURSE_POINT,
        33 => &MESG_TOTALS,
        34 => &MESG_ACTIVITY,
        35 => &MESG_SOFTWARE,
        37 => &MESG_FILE_CAPABILITIES,
        38 => &MESG_MESG_CAPABILITIES,
        39 => &MESG_FIELD_CAPABILITIES,
        49 => &MESG_FILE_CREATOR,
        51 => &MESG_BLOOD_PRESSURE,
        53 => &MESG_SPEED_ZONE,
        55 => &MESG_MONITORING,
        72 => &MESG_TRAINING_FILE,
        78 => &MESG_HRV,
        80 => &MESG_ANT_RX,
        81 => &MESG_ANT_TX,
        82 => &MESG_ANT_CHANNEL_ID,
        101 => &MESG_LENGTH,
        103 => &MESG_MONITORING_INFO,
        106 => &MESG_SLAVE_DEVICE,
        127 => &MESG_CONNECTIVITY,
        128 => &MESG_WEATHER_CONDITIONS,
        129 => &MESG_WEATHER_ALERT,
        131 => &MESG_CADENCE_ZONE,
        132 => &MESG_HR,
        142 => &MESG_SEGMENT_LAP,
        145 => &MESG_MEMO_GLOB,
        148 => &MESG_SEGMENT_ID,
        149 => &MESG_SEGMENT_LEADERBOARD_ENTRY,
        150 => &MESG_SEGMENT_POINT,
        151 => &MESG_SEGMENT_FILE,
        158 => &MESG_WORKOUT_SESSION,
        159 => &MESG_WATCHFACE_SETTINGS,
        160 => &MESG_GPS_METADATA,
        161 => &MESG_CAMERA_EVENT,
        162 => &MESG_TIMESTAMP_CORRELATION,
        164 => &MESG_GYROSCOPE_DATA,
        165 => &MESG_ACCELEROMETER_DATA,
        167 => &MESG_THREE_D_SENSOR_CALIBRATION,
        169 => &MESG_VIDEO_FRAME,
        174 => &MESG_OBDII_DATA,
        177 => &MESG_NMEA_SENTENCE,
        178 => &MESG_AVIATION_ATTITUDE,
        184 => &MESG_VIDEO,
        185 => &MESG_VIDEO_TITLE,
        186 => &MESG_VIDEO_DESCRIPTION,
        187 => &MESG_VIDEO_CLIP,
        188 => &MESG_OHR_SETTINGS,
        200 => &MESG_EXD_SCREEN_CONFIGURATION,
        201 => &MESG_EXD_DATA_FIELD_CONFIGURATION,
        202 => &MESG_EXD_DATA_CONCEPT_CONFIGURATION,
        206 => &MESG_FIELD_DESCRIPTION,
        207 => &MESG_DEVELOPER_DATA_ID,
        208 => &MESG_MAGNETOMETER_DATA,
        209 => &MESG_BAROMETER_DATA,
        210 => &MESG_ONE_D_SENSOR_CALIBRATION,
        211 => &MESG_MONITORING_HR_DATA,
        216 => &MESG_TIME_IN_ZONE,
        225 => &MESG_SET,
        227 => &MESG_STRESS_LEVEL,
        229 => &MESG_MAX_MET_DATA,
        258 => &MESG_DIVE_SETTINGS,
        259 => &MESG_DIVE_GAS,
        262 => &MESG_DIVE_ALARM,
        264 => &MESG_EXERCISE_TITLE,
        268 => &MESG_DIVE_SUMMARY,
        269 => &MESG_SPO2_DATA,
        275 => &MESG_SLEEP_LEVEL,
        285 => &MESG_JUMP,
        289 => &MESG_AAD_ACCEL_FEATURES,
        290 => &MESG_BEAT_INTERVALS,
        297 => &MESG_RESPIRATION_RATE,
        302 => &MESG_HSA_ACCELEROMETER_DATA,
        304 => &MESG_HSA_STEP_DATA,
        305 => &MESG_HSA_SPO2_DATA,
        306 => &MESG_HSA_STRESS_DATA,
        307 => &MESG_HSA_RESPIRATION_DATA,
        308 => &MESG_HSA_HEART_RATE_DATA,
        312 => &MESG_SPLIT,
        313 => &MESG_SPLIT_SUMMARY,
        314 => &MESG_HSA_BODY_BATTERY_DATA,
        315 => &MESG_HSA_EVENT,
        317 => &MESG_CLIMB_PRO,
        319 => &MESG_TANK_UPDATE,
        323 => &MESG_TANK_SUMMARY,
        346 => &MESG_SLEEP_ASSESSMENT,
        370 => &MESG_HRV_STATUS_SUMMARY,
        371 => &MESG_HRV_VALUE,
        372 => &MESG_RAW_BBI,
        375 => &MESG_DEVICE_AUX_BATTERY_INFO,
        376 => &MESG_HSA_GYROSCOPE_DATA,
        387 => &MESG_CHRONO_SHOT_SESSION,
        388 => &MESG_CHRONO_SHOT_DATA,
        389 => &MESG_HSA_CONFIGURATION_DATA,
        393 => &MESG_DIVE_APNEA_ALARM,
        398 => &MESG_SKIN_TEMP_OVERNIGHT,
        409 => &MESG_HSA_WRIST_TEMPERATURE_DATA,
        412 => &MESG_NAP_EVENT,
        470 => &MESG_SLEEP_DISRUPTION_SEVERITY_PERIOD,
        471 => &MESG_SLEEP_DISRUPTION_OVERNIGHT_SEVERITY,
        _ => return None,
    })
}
