#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
This module was generated automatically.

I sincerely apologise for it looking so disgusting.

"""
from math import isnan
import struct

class BaseType:
    __slots__ = ('name', 'identifier', 'fmt', 'parse')

    def __init__(self, **kwargs):
        for name, value in kwargs.items():
            setattr(self, name, value)

    @property
    def size(self):
        return struct.calcsize(self.fmt)

    @property
    def type_num(self):
        return self.identifier & 0x1F


BASE_TYPE_BYTE = BaseType(name='byte', identifier=0x0D, fmt='B', parse=lambda x: None if all(b == 0xFF for b in x) else x)

# Decide how invalid values are to be handled with the `parse` attribute.
BASE_TYPES = {
    0x00: BaseType(name='enum',    identifier=0x00, fmt='B', parse=lambda x: None if x == 0xFF else x),
    0x01: BaseType(name='sint8',   identifier=0x01, fmt='b', parse=lambda x: None if x == 0x7F else x),
    0x02: BaseType(name='uint8',   identifier=0x02, fmt='B', parse=lambda x: None if x == 0xFF else x),
    0x83: BaseType(name='sint16',  identifier=0x83, fmt='h', parse=lambda x: None if x == 0x7FFF else x),
    0x84: BaseType(name='uint16',  identifier=0x84, fmt='H', parse=lambda x: None if x == 0xFFFF else x),
    0x85: BaseType(name='sint32',  identifier=0x85, fmt='i', parse=lambda x: None if x == 0x7FFFFFFF else x),
    0x86: BaseType(name='uint32',  identifier=0x86, fmt='I', parse=lambda x: None if x == 0xFFFFFFFF else x),
    0x07: BaseType(name='string',  identifier=0x07, fmt='s', parse=lambda x: x.split(b'\x00')[0] or None),
    0x88: BaseType(name='float32', identifier=0x88, fmt='f', parse=lambda x: None if isnan(x) else x),
    0x89: BaseType(name='float64', identifier=0x89, fmt='d', parse=lambda x: None if isnan(x) else x),
    0x0A: BaseType(name='uint8z',  identifier=0x0A, fmt='B', parse=lambda x: None if x == 0x0 else x),
    0x8B: BaseType(name='uint16z', identifier=0x8B, fmt='H', parse=lambda x: None if x == 0x0 else x),
    0x8C: BaseType(name='uint32z', identifier=0x8C, fmt='I', parse=lambda x: None if x == 0x0 else x),
    0x0D: BASE_TYPE_BYTE}

BASE_TYPES_BY_NAME = {bt.name: bt for bt in BASE_TYPES.values()}

MESSAGE_TYPES = {
    'accelerometer_data': {   0.0: {   'comment': 'Millisecond part of the '
                                                  'timestamp.',
                                       'field_name': 'timestamp_ms',
                                       'field_type': 'uint16',
                                       'units': 'ms'},
                              1.0: {   'array': '[N]',
                                       'comment': 'Each time in the array '
                                                  'describes the time at which '
                                                  'the accelerometer sample '
                                                  'with the corrosponding '
                                                  'index was taken. Limited to '
                                                  '30 samples in each message. '
                                                  'The samples may span across '
                                                  'seconds. Array size must '
                                                  'match the number of samples '
                                                  'in accel_x and accel_y and '
                                                  'accel_z',
                                       'field_name': 'sample_time_offset',
                                       'field_type': 'uint16',
                                       'units': 'ms'},
                              2.0: {   'array': '[N]',
                                       'comment': 'These are the raw ADC '
                                                  'reading. Maximum number of '
                                                  'samples is 30 in each '
                                                  'message. The samples may '
                                                  'span across seconds. A '
                                                  'conversion will need to be '
                                                  'done on this data once '
                                                  'read.',
                                       'field_name': 'accel_x',
                                       'field_type': 'uint16',
                                       'units': 'counts'},
                              3.0: {   'array': '[N]',
                                       'comment': 'These are the raw ADC '
                                                  'reading. Maximum number of '
                                                  'samples is 30 in each '
                                                  'message. The samples may '
                                                  'span across seconds. A '
                                                  'conversion will need to be '
                                                  'done on this data once '
                                                  'read.',
                                       'field_name': 'accel_y',
                                       'field_type': 'uint16',
                                       'units': 'counts'},
                              4.0: {   'array': '[N]',
                                       'comment': 'These are the raw ADC '
                                                  'reading. Maximum number of '
                                                  'samples is 30 in each '
                                                  'message. The samples may '
                                                  'span across seconds. A '
                                                  'conversion will need to be '
                                                  'done on this data once '
                                                  'read.',
                                       'field_name': 'accel_z',
                                       'field_type': 'uint16',
                                       'units': 'counts'},
                              5.0: {   'array': '[N]',
                                       'comment': 'Calibrated accel reading',
                                       'field_name': 'calibrated_accel_x',
                                       'field_type': 'float32',
                                       'units': 'g'},
                              6.0: {   'array': '[N]',
                                       'comment': 'Calibrated accel reading',
                                       'field_name': 'calibrated_accel_y',
                                       'field_type': 'float32',
                                       'units': 'g'},
                              7.0: {   'array': '[N]',
                                       'comment': 'Calibrated accel reading',
                                       'field_name': 'calibrated_accel_z',
                                       'field_type': 'float32',
                                       'units': 'g'},
                              253.0: {   'comment': 'Whole second part of the '
                                                    'timestamp',
                                         'field_name': 'timestamp',
                                         'field_type': 'date_time',
                                         'units': 's'}},
    'activity': {   0.0: {   'comment': 'Exclude pauses',
                             'example': 1.0,
                             'field_name': 'total_timer_time',
                             'field_type': 'uint32',
                             'scale': 1000.0,
                             'units': 's'},
                    1.0: {   'example': 1.0,
                             'field_name': 'num_sessions',
                             'field_type': 'uint16'},
                    2.0: {   'example': 1.0,
                             'field_name': 'type',
                             'field_type': 'activity'},
                    3.0: {   'example': 1.0,
                             'field_name': 'event',
                             'field_type': 'event'},
                    4.0: {   'example': 1.0,
                             'field_name': 'event_type',
                             'field_type': 'event_type'},
                    5.0: {   'comment': 'timestamp epoch expressed in local '
                                        'time, used to convert activity '
                                        'timestamps to local time ',
                             'example': 1.0,
                             'field_name': 'local_timestamp',
                             'field_type': 'local_date_time'},
                    6.0: {   'example': 1.0,
                             'field_name': 'event_group',
                             'field_type': 'uint8'},
                    253.0: {   'example': 1.0,
                               'field_name': 'timestamp',
                               'field_type': 'date_time'}},
    'ant_channel_id': {   0.0: {   'field_name': 'channel_number',
                                   'field_type': 'uint8'},
                          1.0: {   'field_name': 'device_type',
                                   'field_type': 'uint8z'},
                          2.0: {   'field_name': 'device_number',
                                   'field_type': 'uint16z'},
                          3.0: {   'field_name': 'transmission_type',
                                   'field_type': 'uint8z'},
                          4.0: {   'field_name': 'device_index',
                                   'field_type': 'device_index'}},
    'ant_rx': {   0.0: {   'example': 1.0,
                           'field_name': 'fractional_timestamp',
                           'field_type': 'uint16',
                           'scale': 32768.0,
                           'units': 's'},
                  1.0: {   'example': 1.0,
                           'field_name': 'mesg_id',
                           'field_type': 'byte'},
                  2.0: {   'array': '[N]',
                           'bits': '8,8,8,8,8,8,8,8,8',
                           'components': 'channel_number,data,data,data,data,data,data,data,data',
                           'example': 9.0,
                           'field_name': 'mesg_data',
                           'field_type': 'byte'},
                  3.0: {   'example': 1.0,
                           'field_name': 'channel_number',
                           'field_type': 'uint8'},
                  4.0: {   'array': '[N]',
                           'example': 8.0,
                           'field_name': 'data',
                           'field_type': 'byte'},
                  253.0: {   'example': 1.0,
                             'field_name': 'timestamp',
                             'field_type': 'date_time',
                             'units': 's'}},
    'ant_tx': {   0.0: {   'example': 1.0,
                           'field_name': 'fractional_timestamp',
                           'field_type': 'uint16',
                           'scale': 32768.0,
                           'units': 's'},
                  1.0: {   'example': 1.0,
                           'field_name': 'mesg_id',
                           'field_type': 'byte'},
                  2.0: {   'array': '[N]',
                           'bits': '8,8,8,8,8,8,8,8,8',
                           'components': 'channel_number,data,data,data,data,data,data,data,data',
                           'example': 9.0,
                           'field_name': 'mesg_data',
                           'field_type': 'byte'},
                  3.0: {   'example': 1.0,
                           'field_name': 'channel_number',
                           'field_type': 'uint8'},
                  4.0: {   'array': '[N]',
                           'example': 8.0,
                           'field_name': 'data',
                           'field_type': 'byte'},
                  253.0: {   'example': 1.0,
                             'field_name': 'timestamp',
                             'field_type': 'date_time',
                             'units': 's'}},
    'aviation_attitude': {   0.0: {   'comment': 'Fractional part of '
                                                 'timestamp, added to '
                                                 'timestamp',
                                      'example': 1.0,
                                      'field_name': 'timestamp_ms',
                                      'field_type': 'uint16',
                                      'units': 'ms'},
                             1.0: {   'array': '[N]',
                                      'comment': 'System time associated with '
                                                 'sample expressed in ms.',
                                      'example': 1.0,
                                      'field_name': 'system_time',
                                      'field_type': 'uint32',
                                      'units': 'ms'},
                             2.0: {   'array': '[N]',
                                      'comment': 'Range -PI/2 to +PI/2',
                                      'example': 1.0,
                                      'field_name': 'pitch',
                                      'field_type': 'sint16',
                                      'scale': 10430.38,
                                      'units': 'radians'},
                             3.0: {   'array': '[N]',
                                      'comment': 'Range -PI to +PI',
                                      'example': 1.0,
                                      'field_name': 'roll',
                                      'field_type': 'sint16',
                                      'scale': 10430.38,
                                      'units': 'radians'},
                             4.0: {   'array': '[N]',
                                      'comment': 'Range -78.4 to +78.4 (-8 Gs '
                                                 'to 8 Gs)',
                                      'example': 1.0,
                                      'field_name': 'accel_lateral',
                                      'field_type': 'sint16',
                                      'scale': 100.0,
                                      'units': 'm/s^2'},
                             5.0: {   'array': '[N]',
                                      'comment': 'Range -78.4 to +78.4 (-8 Gs '
                                                 'to 8 Gs)',
                                      'example': 1.0,
                                      'field_name': 'accel_normal',
                                      'field_type': 'sint16',
                                      'scale': 100.0,
                                      'units': 'm/s^2'},
                             6.0: {   'array': '[N]',
                                      'comment': 'Range -8.727 to +8.727 (-500 '
                                                 'degs/sec to +500 degs/sec)',
                                      'example': 1.0,
                                      'field_name': 'turn_rate',
                                      'field_type': 'sint16',
                                      'scale': 1024.0,
                                      'units': 'radians/second'},
                             7.0: {   'array': '[N]',
                                      'example': 1.0,
                                      'field_name': 'stage',
                                      'field_type': 'attitude_stage'},
                             8.0: {   'array': '[N]',
                                      'comment': 'The percent complete of the '
                                                 'current attitude stage.  Set '
                                                 'to 0 for attitude stages 0, '
                                                 '1 and 2 and to 100 for '
                                                 'attitude stage 3 by AHRS '
                                                 'modules that do not support '
                                                 'it.  Range - 100',
                                      'example': 1.0,
                                      'field_name': 'attitude_stage_complete',
                                      'field_type': 'uint8',
                                      'units': '%'},
                             9.0: {   'array': '[N]',
                                      'comment': 'Track Angle/Heading Range 0 '
                                                 '- 2pi',
                                      'example': 1.0,
                                      'field_name': 'track',
                                      'field_type': 'uint16',
                                      'scale': 10430.38,
                                      'units': 'radians'},
                             10.0: {   'array': '[N]',
                                       'example': 1.0,
                                       'field_name': 'validity',
                                       'field_type': 'attitude_validity'},
                             253.0: {   'comment': 'Timestamp message was '
                                                   'output',
                                        'example': 1.0,
                                        'field_name': 'timestamp',
                                        'field_type': 'date_time',
                                        'units': 's'}},
    'bike_profile': {   0.0: {   'example': 16.0,
                                 'field_name': 'name',
                                 'field_type': 'string'},
                        1.0: {   'example': 1.0,
                                 'field_name': 'sport',
                                 'field_type': 'sport'},
                        2.0: {   'example': 1.0,
                                 'field_name': 'sub_sport',
                                 'field_type': 'sub_sport'},
                        3.0: {   'example': 1.0,
                                 'field_name': 'odometer',
                                 'field_type': 'uint32',
                                 'scale': 100.0,
                                 'units': 'm'},
                        4.0: {   'example': 1.0,
                                 'field_name': 'bike_spd_ant_id',
                                 'field_type': 'uint16z'},
                        5.0: {   'example': 1.0,
                                 'field_name': 'bike_cad_ant_id',
                                 'field_type': 'uint16z'},
                        6.0: {   'example': 1.0,
                                 'field_name': 'bike_spdcad_ant_id',
                                 'field_type': 'uint16z'},
                        7.0: {   'example': 1.0,
                                 'field_name': 'bike_power_ant_id',
                                 'field_type': 'uint16z'},
                        8.0: {   'example': 1.0,
                                 'field_name': 'custom_wheelsize',
                                 'field_type': 'uint16',
                                 'scale': 1000.0,
                                 'units': 'm'},
                        9.0: {   'example': 1.0,
                                 'field_name': 'auto_wheelsize',
                                 'field_type': 'uint16',
                                 'scale': 1000.0,
                                 'units': 'm'},
                        10.0: {   'example': 1.0,
                                  'field_name': 'bike_weight',
                                  'field_type': 'uint16',
                                  'scale': 10.0,
                                  'units': 'kg'},
                        11.0: {   'example': 1.0,
                                  'field_name': 'power_cal_factor',
                                  'field_type': 'uint16',
                                  'scale': 10.0,
                                  'units': '%'},
                        12.0: {   'example': 1.0,
                                  'field_name': 'auto_wheel_cal',
                                  'field_type': 'bool'},
                        13.0: {   'example': 1.0,
                                  'field_name': 'auto_power_zero',
                                  'field_type': 'bool'},
                        14.0: {   'example': 1.0,
                                  'field_name': 'id',
                                  'field_type': 'uint8'},
                        15.0: {   'example': 1.0,
                                  'field_name': 'spd_enabled',
                                  'field_type': 'bool'},
                        16.0: {   'example': 1.0,
                                  'field_name': 'cad_enabled',
                                  'field_type': 'bool'},
                        17.0: {   'example': 1.0,
                                  'field_name': 'spdcad_enabled',
                                  'field_type': 'bool'},
                        18.0: {   'example': 1.0,
                                  'field_name': 'power_enabled',
                                  'field_type': 'bool'},
                        19.0: {   'example': 1.0,
                                  'field_name': 'crank_length',
                                  'field_type': 'uint8',
                                  'offset': -110.0,
                                  'scale': 2.0,
                                  'units': 'mm'},
                        20.0: {   'example': 1.0,
                                  'field_name': 'enabled',
                                  'field_type': 'bool'},
                        21.0: {   'example': 1.0,
                                  'field_name': 'bike_spd_ant_id_trans_type',
                                  'field_type': 'uint8z'},
                        22.0: {   'example': 1.0,
                                  'field_name': 'bike_cad_ant_id_trans_type',
                                  'field_type': 'uint8z'},
                        23.0: {   'example': 1.0,
                                  'field_name': 'bike_spdcad_ant_id_trans_type',
                                  'field_type': 'uint8z'},
                        24.0: {   'example': 1.0,
                                  'field_name': 'bike_power_ant_id_trans_type',
                                  'field_type': 'uint8z'},
                        37.0: {   'comment': 'Rollover counter that can be '
                                             'used to extend the odometer',
                                  'example': 1.0,
                                  'field_name': 'odometer_rollover',
                                  'field_type': 'uint8'},
                        38.0: {   'comment': 'Number of front gears',
                                  'example': 1.0,
                                  'field_name': 'front_gear_num',
                                  'field_type': 'uint8z'},
                        39.0: {   'array': '[N]',
                                  'comment': 'Number of teeth on each gear 0 '
                                             'is innermost',
                                  'example': 1.0,
                                  'field_name': 'front_gear',
                                  'field_type': 'uint8z'},
                        40.0: {   'comment': 'Number of rear gears',
                                  'example': 1.0,
                                  'field_name': 'rear_gear_num',
                                  'field_type': 'uint8z'},
                        41.0: {   'array': '[N]',
                                  'comment': 'Number of teeth on each gear 0 '
                                             'is innermost',
                                  'example': 1.0,
                                  'field_name': 'rear_gear',
                                  'field_type': 'uint8z'},
                        44.0: {   'example': 1.0,
                                  'field_name': 'shimano_di2_enabled',
                                  'field_type': 'bool'},
                        254.0: {   'example': 1.0,
                                   'field_name': 'message_index',
                                   'field_type': 'message_index'}},
    'blood_pressure': {   0.0: {   'example': 1.0,
                                   'field_name': 'systolic_pressure',
                                   'field_type': 'uint16',
                                   'units': 'mmHg'},
                          1.0: {   'example': 1.0,
                                   'field_name': 'diastolic_pressure',
                                   'field_type': 'uint16',
                                   'units': 'mmHg'},
                          2.0: {   'example': 1.0,
                                   'field_name': 'mean_arterial_pressure',
                                   'field_type': 'uint16',
                                   'units': 'mmHg'},
                          3.0: {   'example': 1.0,
                                   'field_name': 'map_3_sample_mean',
                                   'field_type': 'uint16',
                                   'units': 'mmHg'},
                          4.0: {   'example': 1.0,
                                   'field_name': 'map_morning_values',
                                   'field_type': 'uint16',
                                   'units': 'mmHg'},
                          5.0: {   'example': 1.0,
                                   'field_name': 'map_evening_values',
                                   'field_type': 'uint16',
                                   'units': 'mmHg'},
                          6.0: {   'example': 1.0,
                                   'field_name': 'heart_rate',
                                   'field_type': 'uint8',
                                   'units': 'bpm'},
                          7.0: {   'example': 1.0,
                                   'field_name': 'heart_rate_type',
                                   'field_type': 'hr_type'},
                          8.0: {   'example': 1.0,
                                   'field_name': 'status',
                                   'field_type': 'bp_status'},
                          9.0: {   'comment': 'Associates this blood pressure '
                                              'message to a user.  This '
                                              'corresponds to the index of the '
                                              'user profile message in the '
                                              'blood pressure file.',
                                   'example': 1.0,
                                   'field_name': 'user_profile_index',
                                   'field_type': 'message_index'},
                          253.0: {   'example': 1.0,
                                     'field_name': 'timestamp',
                                     'field_type': 'date_time',
                                     'units': 's'}},
    'cadence_zone': {   0.0: {   'example': 1.0,
                                 'field_name': 'high_value',
                                 'field_type': 'uint8',
                                 'units': 'rpm'},
                        1.0: {   'example': 16.0,
                                 'field_name': 'name',
                                 'field_type': 'string'},
                        254.0: {   'example': 1.0,
                                   'field_name': 'message_index',
                                   'field_type': 'message_index'}},
    'camera_event': {   0.0: {   'comment': 'Millisecond part of the '
                                            'timestamp.',
                                 'field_name': 'timestamp_ms',
                                 'field_type': 'uint16',
                                 'units': 'ms'},
                        1.0: {   'field_name': 'camera_event_type',
                                 'field_type': 'camera_event_type'},
                        2.0: {   'field_name': 'camera_file_uuid',
                                 'field_type': 'string'},
                        3.0: {   'field_name': 'camera_orientation',
                                 'field_type': 'camera_orientation_type'},
                        253.0: {   'comment': 'Whole second part of the '
                                              'timestamp.',
                                   'field_name': 'timestamp',
                                   'field_type': 'date_time',
                                   'units': 's'}},
    'capabilities': {   0.0: {   'array': '[N]',
                                 'comment': 'Use language_bits_x types where x '
                                            'is index of array.',
                                 'example': 4.0,
                                 'field_name': 'languages',
                                 'field_type': 'uint8z'},
                        1.0: {   'array': '[N]',
                                 'comment': 'Use sport_bits_x types where x is '
                                            'index of array.',
                                 'example': 1.0,
                                 'field_name': 'sports',
                                 'field_type': 'sport_bits_0'},
                        21.0: {   'example': 1.0,
                                  'field_name': 'workouts_supported',
                                  'field_type': 'workout_capabilities'},
                        23.0: {   'example': 1.0,
                                  'field_name': 'connectivity_supported',
                                  'field_type': 'connectivity_capabilities'}},
    'connectivity': {   0.0: {   'comment': 'Use Bluetooth for connectivity '
                                            'features',
                                 'example': 1.0,
                                 'field_name': 'bluetooth_enabled',
                                 'field_type': 'bool'},
                        1.0: {   'comment': 'Use Bluetooth Low Energy for '
                                            'connectivity features',
                                 'example': 1.0,
                                 'field_name': 'bluetooth_le_enabled',
                                 'field_type': 'bool'},
                        2.0: {   'comment': 'Use ANT for connectivity features',
                                 'example': 1.0,
                                 'field_name': 'ant_enabled',
                                 'field_type': 'bool'},
                        3.0: {   'example': 24.0,
                                 'field_name': 'name',
                                 'field_type': 'string'},
                        4.0: {   'example': 1.0,
                                 'field_name': 'live_tracking_enabled',
                                 'field_type': 'bool'},
                        5.0: {   'example': 1.0,
                                 'field_name': 'weather_conditions_enabled',
                                 'field_type': 'bool'},
                        6.0: {   'example': 1.0,
                                 'field_name': 'weather_alerts_enabled',
                                 'field_type': 'bool'},
                        7.0: {   'example': 1.0,
                                 'field_name': 'auto_activity_upload_enabled',
                                 'field_type': 'bool'},
                        8.0: {   'example': 1.0,
                                 'field_name': 'course_download_enabled',
                                 'field_type': 'bool'},
                        9.0: {   'example': 1.0,
                                 'field_name': 'workout_download_enabled',
                                 'field_type': 'bool'},
                        10.0: {   'example': 1.0,
                                  'field_name': 'gps_ephemeris_download_enabled',
                                  'field_type': 'bool'},
                        11.0: {   'example': 1.0,
                                  'field_name': 'incident_detection_enabled',
                                  'field_type': 'bool'},
                        12.0: {   'example': 1.0,
                                  'field_name': 'grouptrack_enabled',
                                  'field_type': 'bool'}},
    'course': {   4.0: {   'example': 1.0,
                           'field_name': 'sport',
                           'field_type': 'sport'},
                  5.0: {   'example': 16.0,
                           'field_name': 'name',
                           'field_type': 'string'},
                  6.0: {   'example': 1.0,
                           'field_name': 'capabilities',
                           'field_type': 'course_capabilities'}},
    'course_point': {   1.0: {   'example': 1.0,
                                 'field_name': 'timestamp',
                                 'field_type': 'date_time'},
                        2.0: {   'example': 1.0,
                                 'field_name': 'position_lat',
                                 'field_type': 'sint32',
                                 'units': 'semicircles'},
                        3.0: {   'example': 1.0,
                                 'field_name': 'position_long',
                                 'field_type': 'sint32',
                                 'units': 'semicircles'},
                        4.0: {   'example': 1.0,
                                 'field_name': 'distance',
                                 'field_type': 'uint32',
                                 'scale': 100.0,
                                 'units': 'm'},
                        5.0: {   'example': 1.0,
                                 'field_name': 'type',
                                 'field_type': 'course_point'},
                        6.0: {   'example': 16.0,
                                 'field_name': 'name',
                                 'field_type': 'string'},
                        8.0: {   'example': 1.0,
                                 'field_name': 'favorite',
                                 'field_type': 'bool'},
                        254.0: {   'example': 1.0,
                                   'field_name': 'message_index',
                                   'field_type': 'message_index'}},
    'developer_data_id': {   0.0: {   'array': '[N]',
                                      'example': 16.0,
                                      'field_name': 'developer_id',
                                      'field_type': 'byte'},
                             1.0: {   'array': '[N]',
                                      'example': 16.0,
                                      'field_name': 'application_id',
                                      'field_type': 'byte'},
                             2.0: {   'example': 1.0,
                                      'field_name': 'manufacturer_id',
                                      'field_type': 'manufacturer'},
                             3.0: {   'example': 1.0,
                                      'field_name': 'developer_data_index',
                                      'field_type': 'uint8'},
                             4.0: {   'example': 1.0,
                                      'field_name': 'application_version',
                                      'field_type': 'uint32'}},
    'device_info': {   0.0: {   'example': 1.0,
                                'field_name': 'device_index',
                                'field_type': 'device_index'},
                       1.0: {   'example': 1.0,
                                'field_name': 'device_type',
                                'field_type': 'uint8',
                                'subfields': {   'ant_device_type': {   'example': 1.0,
                                                                        'field_name': 'ant_device_type',
                                                                        'field_type': 'uint8',
                                                                        'ref_field_name': 'source_type',
                                                                        'ref_field_value': {   'ant'}},
                                                 'antplus_device_type': {   'example': 1.0,
                                                                            'field_name': 'antplus_device_type',
                                                                            'field_type': 'antplus_device_type',
                                                                            'ref_field_name': 'source_type',
                                                                            'ref_field_value': {   'antplus'}}}},
                       2.0: {   'example': 1.0,
                                'field_name': 'manufacturer',
                                'field_type': 'manufacturer'},
                       3.0: {   'example': 1.0,
                                'field_name': 'serial_number',
                                'field_type': 'uint32z'},
                       4.0: {   'example': 1.0,
                                'field_name': 'product',
                                'field_type': 'uint16',
                                'subfields': {   'garmin_product': {   'example': 1.0,
                                                                       'field_name': 'garmin_product',
                                                                       'field_type': 'garmin_product',
                                                                       'ref_field_name': 'manufacturer',
                                                                       'ref_field_value': {   'dynastream',
                                                                                              'dynastream_oem',
                                                                                              'garmin'}}}},
                       5.0: {   'example': 1.0,
                                'field_name': 'software_version',
                                'field_type': 'uint16',
                                'scale': 100.0},
                       6.0: {   'example': 1.0,
                                'field_name': 'hardware_version',
                                'field_type': 'uint8'},
                       7.0: {   'comment': 'Reset by new battery or charge.',
                                'example': 1.0,
                                'field_name': 'cum_operating_time',
                                'field_type': 'uint32',
                                'units': 's'},
                       10.0: {   'example': 1.0,
                                 'field_name': 'battery_voltage',
                                 'field_type': 'uint16',
                                 'scale': 256.0,
                                 'units': 'V'},
                       11.0: {   'example': 1.0,
                                 'field_name': 'battery_status',
                                 'field_type': 'battery_status'},
                       18.0: {   'comment': 'Indicates the location of the '
                                            'sensor',
                                 'example': 1.0,
                                 'field_name': 'sensor_position',
                                 'field_type': 'body_location'},
                       19.0: {   'comment': 'Used to describe the sensor or '
                                            'location',
                                 'example': 1.0,
                                 'field_name': 'descriptor',
                                 'field_type': 'string'},
                       20.0: {   'example': 1.0,
                                 'field_name': 'ant_transmission_type',
                                 'field_type': 'uint8z'},
                       21.0: {   'example': 1.0,
                                 'field_name': 'ant_device_number',
                                 'field_type': 'uint16z'},
                       22.0: {   'example': 1.0,
                                 'field_name': 'ant_network',
                                 'field_type': 'ant_network'},
                       25.0: {   'example': 1.0,
                                 'field_name': 'source_type',
                                 'field_type': 'source_type'},
                       27.0: {   'comment': 'Optional free form string to '
                                            'indicate the devices name or '
                                            'model',
                                 'example': 20.0,
                                 'field_name': 'product_name',
                                 'field_type': 'string'},
                       253.0: {   'example': 1.0,
                                  'field_name': 'timestamp',
                                  'field_type': 'date_time',
                                  'units': 's'}},
    'device_settings': {   0.0: {   'comment': 'Index into time zone arrays.',
                                    'example': 1.0,
                                    'field_name': 'active_time_zone',
                                    'field_type': 'uint8'},
                           1.0: {   'comment': 'Offset from system time. '
                                               'Required to convert timestamp '
                                               'from system time to UTC.',
                                    'example': 1.0,
                                    'field_name': 'utc_offset',
                                    'field_type': 'uint32'},
                           2.0: {   'array': '[N]',
                                    'comment': 'Offset from system time.',
                                    'example': 2.0,
                                    'field_name': 'time_offset',
                                    'field_type': 'uint32',
                                    'units': 's'},
                           5.0: {   'array': '[N]',
                                    'comment': 'timezone offset in 1/4 hour '
                                               'increments',
                                    'example': 2.0,
                                    'field_name': 'time_zone_offset',
                                    'field_type': 'sint8',
                                    'scale': 4.0,
                                    'units': 'hr'},
                           55.0: {   'example': 1.0,
                                     'field_name': 'display_orientation',
                                     'field_type': 'display_orientation'},
                           56.0: {   'example': 1.0,
                                     'field_name': 'mounting_side',
                                     'field_type': 'side'},
                           94.0: {   'comment': 'Number of screens configured '
                                                'to display',
                                     'field_name': 'number_of_screens',
                                     'field_type': 'uint8'},
                           95.0: {   'comment': 'Smart Notification display '
                                                'orientation',
                                     'field_name': 'smart_notification_display_orientation',
                                     'field_type': 'display_orientation'}},
    'event': {   0.0: {   'example': 1.0,
                          'field_name': 'event',
                          'field_type': 'event'},
                 1.0: {   'example': 1.0,
                          'field_name': 'event_type',
                          'field_type': 'event_type'},
                 2.0: {   'bits': 16.0,
                          'components': 'data',
                          'example': 1.0,
                          'field_name': 'data16',
                          'field_type': 'uint16'},
                 3.0: {   'example': 1.0,
                          'field_name': 'data',
                          'field_type': 'uint32',
                          'subfields': {   'battery_level': {   'example': 1.0,
                                                                'field_name': 'battery_level',
                                                                'field_type': 'uint16',
                                                                'ref_field_name': 'event',
                                                                'ref_field_value': {   'battery'},
                                                                'scale': 1000.0,
                                                                'units': 'V'},
                                           'cad_high_alert': {   'example': 1.0,
                                                                 'field_name': 'cad_high_alert',
                                                                 'field_type': 'uint16',
                                                                 'ref_field_name': 'event',
                                                                 'ref_field_value': {   'cad_high_alert'},
                                                                 'units': 'rpm'},
                                           'cad_low_alert': {   'example': 1.0,
                                                                'field_name': 'cad_low_alert',
                                                                'field_type': 'uint16',
                                                                'ref_field_name': 'event',
                                                                'ref_field_value': {   'cad_low_alert'},
                                                                'units': 'rpm'},
                                           'calorie_duration_alert': {   'example': 1.0,
                                                                         'field_name': 'calorie_duration_alert',
                                                                         'field_type': 'uint32',
                                                                         'ref_field_name': 'event',
                                                                         'ref_field_value': {   'calorie_duration_alert'},
                                                                         'units': 'calories'},
                                           'comm_timeout': {   'field_name': 'comm_timeout',
                                                               'field_type': 'comm_timeout_type',
                                                               'ref_field_name': 'event',
                                                               'ref_field_value': {   'comm_timeout'}},
                                           'course_point_index': {   'example': 1.0,
                                                                     'field_name': 'course_point_index',
                                                                     'field_type': 'message_index',
                                                                     'ref_field_name': 'event',
                                                                     'ref_field_value': {   'course_point'}},
                                           'distance_duration_alert': {   'example': 1.0,
                                                                          'field_name': 'distance_duration_alert',
                                                                          'field_type': 'uint32',
                                                                          'ref_field_name': 'event',
                                                                          'ref_field_value': {   'distance_duration_alert'},
                                                                          'scale': 100.0,
                                                                          'units': 'm'},
                                           'fitness_equipment_state': {   'example': 1.0,
                                                                          'field_name': 'fitness_equipment_state',
                                                                          'field_type': 'fitness_equipment_state',
                                                                          'ref_field_name': 'event',
                                                                          'ref_field_value': {   'fitness_equipment'}},
                                           'gear_change_data': {   'bits': '8,\n'
                                                                           '8,\n'
                                                                           '8,\n'
                                                                           '8',
                                                                   'components': 'rear_gear_num,\n'
                                                                                 'rear_gear,\n'
                                                                                 'front_gear_num,\n'
                                                                                 'front_gear',
                                                                   'example': 1.0,
                                                                   'field_name': 'gear_change_data',
                                                                   'field_type': 'uint32',
                                                                   'ref_field_name': 'event',
                                                                   'ref_field_value': {   'front_gear_change',
                                                                                          'rear_gear_change'},
                                                                   'scale': '1,1,1,1'},
                                           'hr_high_alert': {   'example': 1.0,
                                                                'field_name': 'hr_high_alert',
                                                                'field_type': 'uint8',
                                                                'ref_field_name': 'event',
                                                                'ref_field_value': {   'hr_high_alert'},
                                                                'units': 'bpm'},
                                           'hr_low_alert': {   'example': 1.0,
                                                               'field_name': 'hr_low_alert',
                                                               'field_type': 'uint8',
                                                               'ref_field_name': 'event',
                                                               'ref_field_value': {   'hr_low_alert'},
                                                               'units': 'bpm'},
                                           'power_high_alert': {   'example': 1.0,
                                                                   'field_name': 'power_high_alert',
                                                                   'field_type': 'uint16',
                                                                   'ref_field_name': 'event',
                                                                   'ref_field_value': {   'power_high_alert'},
                                                                   'units': 'watts'},
                                           'power_low_alert': {   'example': 1.0,
                                                                  'field_name': 'power_low_alert',
                                                                  'field_type': 'uint16',
                                                                  'ref_field_name': 'event',
                                                                  'ref_field_value': {   'power_low_alert'},
                                                                  'units': 'watts'},
                                           'rider_position': {   'comment': 'Indicates '
                                                                            'the '
                                                                            'rider '
                                                                            'position '
                                                                            'value.',
                                                                 'field_name': 'rider_position',
                                                                 'field_type': 'rider_position_type',
                                                                 'ref_field_name': 'event',
                                                                 'ref_field_value': {   'rider_position_change'}},
                                           'speed_high_alert': {   'example': 1.0,
                                                                   'field_name': 'speed_high_alert',
                                                                   'field_type': 'uint32',
                                                                   'ref_field_name': 'event',
                                                                   'ref_field_value': {   'speed_high_alert'},
                                                                   'scale': 1000.0,
                                                                   'units': 'm/s'},
                                           'speed_low_alert': {   'example': 1.0,
                                                                  'field_name': 'speed_low_alert',
                                                                  'field_type': 'uint32',
                                                                  'ref_field_name': 'event',
                                                                  'ref_field_value': {   'speed_low_alert'},
                                                                  'scale': 1000.0,
                                                                  'units': 'm/s'},
                                           'sport_point': {   'bits': '16,16',
                                                              'components': 'score,opponent_score',
                                                              'example': 1.0,
                                                              'field_name': 'sport_point',
                                                              'field_type': 'uint32',
                                                              'ref_field_name': 'event',
                                                              'ref_field_value': {   'sport_point'},
                                                              'scale': '1,1'},
                                           'time_duration_alert': {   'example': 1.0,
                                                                      'field_name': 'time_duration_alert',
                                                                      'field_type': 'uint32',
                                                                      'ref_field_name': 'event',
                                                                      'ref_field_value': {   'time_duration_alert'},
                                                                      'scale': 1000.0,
                                                                      'units': 's'},
                                           'timer_trigger': {   'example': 1.0,
                                                                'field_name': 'timer_trigger',
                                                                'field_type': 'timer_trigger',
                                                                'ref_field_name': 'event',
                                                                'ref_field_value': {   'timer'}},
                                           'virtual_partner_speed': {   'example': 1.0,
                                                                        'field_name': 'virtual_partner_speed',
                                                                        'field_type': 'uint16',
                                                                        'ref_field_name': 'event',
                                                                        'ref_field_value': {   'virtual_partner_pace'},
                                                                        'scale': 1000.0,
                                                                        'units': 'm/s'}}},
                 4.0: {   'example': 1.0,
                          'field_name': 'event_group',
                          'field_type': 'uint8'},
                 7.0: {   'comment': 'Do not populate directly.  Autogenerated '
                                     'by decoder for sport_point subfield '
                                     'components',
                          'example': 1.0,
                          'field_name': 'score',
                          'field_type': 'uint16'},
                 8.0: {   'comment': 'Do not populate directly.  Autogenerated '
                                     'by decoder for sport_point subfield '
                                     'components',
                          'example': 1.0,
                          'field_name': 'opponent_score',
                          'field_type': 'uint16'},
                 9.0: {   'comment': 'Do not populate directly.  Autogenerated '
                                     'by decoder for gear_change subfield '
                                     'components.  Front gear number. 1 is '
                                     'innermost.',
                          'example': 1.0,
                          'field_name': 'front_gear_num',
                          'field_type': 'uint8z'},
                 10.0: {   'comment': 'Do not populate directly.  '
                                      'Autogenerated by decoder for '
                                      'gear_change subfield components.  '
                                      'Number of front teeth.',
                           'example': 1.0,
                           'field_name': 'front_gear',
                           'field_type': 'uint8z'},
                 11.0: {   'comment': 'Do not populate directly.  '
                                      'Autogenerated by decoder for '
                                      'gear_change subfield components.  Rear '
                                      'gear number. 1 is innermost.',
                           'example': 1.0,
                           'field_name': 'rear_gear_num',
                           'field_type': 'uint8z'},
                 12.0: {   'comment': 'Do not populate directly.  '
                                      'Autogenerated by decoder for '
                                      'gear_change subfield components.  '
                                      'Number of rear teeth.',
                           'example': 1.0,
                           'field_name': 'rear_gear',
                           'field_type': 'uint8z'},
                 13.0: {   'field_name': 'device_index',
                           'field_type': 'device_index'},
                 253.0: {   'example': 1.0,
                            'field_name': 'timestamp',
                            'field_type': 'date_time',
                            'units': 's'}},
    'exd_data_concept_configuration': {   0.0: {   'example': 1.0,
                                                   'field_name': 'screen_index',
                                                   'field_type': 'uint8'},
                                          1.0: {   'bits': '4,4',
                                                   'components': 'field_id,concept_index',
                                                   'example': 1.0,
                                                   'field_name': 'concept_field',
                                                   'field_type': 'byte'},
                                          2.0: {   'example': 1.0,
                                                   'field_name': 'field_id',
                                                   'field_type': 'uint8'},
                                          3.0: {   'example': 1.0,
                                                   'field_name': 'concept_index',
                                                   'field_type': 'uint8'},
                                          4.0: {   'example': 1.0,
                                                   'field_name': 'data_page',
                                                   'field_type': 'uint8'},
                                          5.0: {   'example': 1.0,
                                                   'field_name': 'concept_key',
                                                   'field_type': 'uint8'},
                                          6.0: {   'example': 1.0,
                                                   'field_name': 'scaling',
                                                   'field_type': 'uint8'},
                                          8.0: {   'example': 1.0,
                                                   'field_name': 'data_units',
                                                   'field_type': 'exd_data_units'},
                                          9.0: {   'example': 1.0,
                                                   'field_name': 'qualifier',
                                                   'field_type': 'exd_qualifiers'},
                                          10.0: {   'example': 1.0,
                                                    'field_name': 'descriptor',
                                                    'field_type': 'exd_descriptors'},
                                          11.0: {   'example': 1.0,
                                                    'field_name': 'is_signed',
                                                    'field_type': 'bool'}},
    'exd_data_field_configuration': {   0.0: {   'example': 1.0,
                                                 'field_name': 'screen_index',
                                                 'field_type': 'uint8'},
                                        1.0: {   'bits': '4,4',
                                                 'components': 'field_id,concept_count',
                                                 'example': 1.0,
                                                 'field_name': 'concept_field',
                                                 'field_type': 'byte'},
                                        2.0: {   'example': 1.0,
                                                 'field_name': 'field_id',
                                                 'field_type': 'uint8'},
                                        3.0: {   'example': 1.0,
                                                 'field_name': 'concept_count',
                                                 'field_type': 'uint8'},
                                        4.0: {   'example': 1.0,
                                                 'field_name': 'display_type',
                                                 'field_type': 'exd_display_type'},
                                        5.0: {   'array': '[32]',
                                                 'example': 1.0,
                                                 'field_name': 'title',
                                                 'field_type': 'string'}},
    'exd_screen_configuration': {   0.0: {   'example': 1.0,
                                             'field_name': 'screen_index',
                                             'field_type': 'uint8'},
                                    1.0: {   'comment': 'number of fields in '
                                                        'screen',
                                             'example': 1.0,
                                             'field_name': 'field_count',
                                             'field_type': 'uint8'},
                                    2.0: {   'example': 1.0,
                                             'field_name': 'layout',
                                             'field_type': 'exd_layout'},
                                    3.0: {   'example': 1.0,
                                             'field_name': 'screen_enabled',
                                             'field_type': 'bool'}},
    'field_capabilities': {   0.0: {   'example': 1.0,
                                       'field_name': 'file',
                                       'field_type': 'file'},
                              1.0: {   'example': 1.0,
                                       'field_name': 'mesg_num',
                                       'field_type': 'mesg_num'},
                              2.0: {   'example': 1.0,
                                       'field_name': 'field_num',
                                       'field_type': 'uint8'},
                              3.0: {   'example': 1.0,
                                       'field_name': 'count',
                                       'field_type': 'uint16'},
                              254.0: {   'example': 1.0,
                                         'field_name': 'message_index',
                                         'field_type': 'message_index'}},
    'field_description': {   0.0: {   'example': 1.0,
                                      'field_name': 'developer_data_index',
                                      'field_type': 'uint8'},
                             1.0: {   'example': 1.0,
                                      'field_name': 'field_definition_number',
                                      'field_type': 'uint8'},
                             2.0: {   'example': 1.0,
                                      'field_name': 'fit_base_type_id',
                                      'field_type': 'fit_base_type'},
                             3.0: {   'array': '[N]',
                                      'example': 64.0,
                                      'field_name': 'field_name',
                                      'field_type': 'string'},
                             4.0: {   'field_name': 'array',
                                      'field_type': 'uint8'},
                             5.0: {   'field_name': 'components',
                                      'field_type': 'string'},
                             6.0: {   'example': 1.0,
                                      'field_name': 'scale',
                                      'field_type': 'uint8'},
                             7.0: {   'example': 1.0,
                                      'field_name': 'offset',
                                      'field_type': 'sint8'},
                             8.0: {   'array': '[N]',
                                      'example': 16.0,
                                      'field_name': 'units',
                                      'field_type': 'string'},
                             9.0: {   'field_name': 'bits',
                                      'field_type': 'string'},
                             10.0: {   'field_name': 'accumulate',
                                       'field_type': 'string'},
                             13.0: {   'example': 1.0,
                                       'field_name': 'fit_base_unit_id',
                                       'field_type': 'fit_base_unit'}},
    'file_capabilities': {   0.0: {   'example': 1.0,
                                      'field_name': 'type',
                                      'field_type': 'file'},
                             1.0: {   'example': 1.0,
                                      'field_name': 'flags',
                                      'field_type': 'file_flags'},
                             2.0: {   'example': 16.0,
                                      'field_name': 'directory',
                                      'field_type': 'string'},
                             3.0: {   'example': 1.0,
                                      'field_name': 'max_count',
                                      'field_type': 'uint16'},
                             4.0: {   'example': 1.0,
                                      'field_name': 'max_size',
                                      'field_type': 'uint32',
                                      'units': 'bytes'},
                             254.0: {   'example': 1.0,
                                        'field_name': 'message_index',
                                        'field_type': 'message_index'}},
    'file_creator': {   0.0: {   'example': 1.0,
                                 'field_name': 'software_version',
                                 'field_type': 'uint16'},
                        1.0: {   'example': 1.0,
                                 'field_name': 'hardware_version',
                                 'field_type': 'uint8'}},
    'file_id': {   0.0: {   'example': 1.0,
                            'field_name': 'type',
                            'field_type': 'file'},
                   1.0: {   'example': 1.0,
                            'field_name': 'manufacturer',
                            'field_type': 'manufacturer'},
                   2.0: {   'example': 1.0,
                            'field_name': 'product',
                            'field_type': 'uint16',
                            'subfields': {   'garmin_product': {   'example': 1.0,
                                                                   'field_name': 'garmin_product',
                                                                   'field_type': 'garmin_product',
                                                                   'ref_field_name': 'manufacturer',
                                                                   'ref_field_value': {   'dynastream',
                                                                                          'dynastream_oem',
                                                                                          'garmin'}}}},
                   3.0: {   'example': 1.0,
                            'field_name': 'serial_number',
                            'field_type': 'uint32z'},
                   4.0: {   'comment': 'Only set for files that are can be '
                                       'created/erased.',
                            'example': 1.0,
                            'field_name': 'time_created',
                            'field_type': 'date_time'},
                   5.0: {   'comment': 'Only set for files that are not '
                                       'created/erased.',
                            'example': 1.0,
                            'field_name': 'number',
                            'field_type': 'uint16'},
                   8.0: {   'comment': 'Optional free form string to indicate '
                                       'the devices name or model',
                            'example': 20.0,
                            'field_name': 'product_name',
                            'field_type': 'string'}},
    'goal': {   0.0: {   'example': 1.0,
                         'field_name': 'sport',
                         'field_type': 'sport'},
                1.0: {   'example': 1.0,
                         'field_name': 'sub_sport',
                         'field_type': 'sub_sport'},
                2.0: {   'example': 1.0,
                         'field_name': 'start_date',
                         'field_type': 'date_time'},
                3.0: {   'example': 1.0,
                         'field_name': 'end_date',
                         'field_type': 'date_time'},
                4.0: {   'example': 1.0,
                         'field_name': 'type',
                         'field_type': 'goal'},
                5.0: {   'example': 1.0,
                         'field_name': 'value',
                         'field_type': 'uint32'},
                6.0: {   'example': 1.0,
                         'field_name': 'repeat',
                         'field_type': 'bool'},
                7.0: {   'example': 1.0,
                         'field_name': 'target_value',
                         'field_type': 'uint32'},
                8.0: {   'example': 1.0,
                         'field_name': 'recurrence',
                         'field_type': 'goal_recurrence'},
                9.0: {   'example': 1.0,
                         'field_name': 'recurrence_value',
                         'field_type': 'uint16'},
                10.0: {   'example': 1.0,
                          'field_name': 'enabled',
                          'field_type': 'bool'},
                254.0: {   'example': 1.0,
                           'field_name': 'message_index',
                           'field_type': 'message_index'}},
    'gps_metadata': {   0.0: {   'comment': 'Millisecond part of the '
                                            'timestamp.',
                                 'field_name': 'timestamp_ms',
                                 'field_type': 'uint16',
                                 'units': 'ms'},
                        1.0: {   'field_name': 'position_lat',
                                 'field_type': 'sint32',
                                 'units': 'semicircles'},
                        2.0: {   'field_name': 'position_long',
                                 'field_type': 'sint32',
                                 'units': 'semicircles'},
                        3.0: {   'field_name': 'enhanced_altitude',
                                 'field_type': 'uint32',
                                 'offset': 500.0,
                                 'scale': 5.0,
                                 'units': 'm'},
                        4.0: {   'field_name': 'enhanced_speed',
                                 'field_type': 'uint32',
                                 'scale': 1000.0,
                                 'units': 'm/s'},
                        5.0: {   'field_name': 'heading',
                                 'field_type': 'uint16',
                                 'scale': 100.0,
                                 'units': 'degrees'},
                        6.0: {   'comment': 'Used to correlate UTC to system '
                                            'time if the timestamp of the '
                                            'message is in system time.  This '
                                            'UTC time is derived from the GPS '
                                            'data.',
                                 'field_name': 'utc_timestamp',
                                 'field_type': 'date_time',
                                 'units': 's'},
                        7.0: {   'array': '[3]',
                                 'comment': 'velocity[0] is lon velocity.  '
                                            'Velocity[1] is lat velocity.  '
                                            'Velocity[2] is altitude velocity.',
                                 'field_name': 'velocity',
                                 'field_type': 'sint16',
                                 'scale': 100.0,
                                 'units': 'm/s'},
                        253.0: {   'comment': 'Whole second part of the '
                                              'timestamp.',
                                   'field_name': 'timestamp',
                                   'field_type': 'date_time',
                                   'units': 's'}},
    'gyroscope_data': {   0.0: {   'comment': 'Millisecond part of the '
                                              'timestamp.',
                                   'field_name': 'timestamp_ms',
                                   'field_type': 'uint16',
                                   'units': 'ms'},
                          1.0: {   'array': '[N]',
                                   'comment': 'Each time in the array '
                                              'describes the time at which the '
                                              'gyro sample with the '
                                              'corrosponding index was taken. '
                                              'Limited to 30 samples in each '
                                              'message. The samples may span '
                                              'across seconds. Array size must '
                                              'match the number of samples in '
                                              'gyro_x and gyro_y and gyro_z',
                                   'field_name': 'sample_time_offset',
                                   'field_type': 'uint16',
                                   'units': 'ms'},
                          2.0: {   'array': '[N]',
                                   'comment': 'These are the raw ADC reading. '
                                              'Maximum number of samples is 30 '
                                              'in each message. The samples '
                                              'may span across seconds. A '
                                              'conversion will need to be done '
                                              'on this data once read.',
                                   'field_name': 'gyro_x',
                                   'field_type': 'uint16',
                                   'units': 'counts'},
                          3.0: {   'array': '[N]',
                                   'comment': 'These are the raw ADC reading. '
                                              'Maximum number of samples is 30 '
                                              'in each message. The samples '
                                              'may span across seconds. A '
                                              'conversion will need to be done '
                                              'on this data once read.',
                                   'field_name': 'gyro_y',
                                   'field_type': 'uint16',
                                   'units': 'counts'},
                          4.0: {   'array': '[N]',
                                   'comment': 'These are the raw ADC reading. '
                                              'Maximum number of samples is 30 '
                                              'in each message. The samples '
                                              'may span across seconds. A '
                                              'conversion will need to be done '
                                              'on this data once read.',
                                   'field_name': 'gyro_z',
                                   'field_type': 'uint16',
                                   'units': 'counts'},
                          5.0: {   'array': '[N]',
                                   'comment': 'Calibrated gyro reading',
                                   'field_name': 'calibrated_gyro_x',
                                   'field_type': 'float32',
                                   'units': 'deg/s'},
                          6.0: {   'array': '[N]',
                                   'comment': 'Calibrated gyro reading',
                                   'field_name': 'calibrated_gyro_y',
                                   'field_type': 'float32',
                                   'units': 'deg/s'},
                          7.0: {   'array': '[N]',
                                   'comment': 'Calibrated gyro reading',
                                   'field_name': 'calibrated_gyro_z',
                                   'field_type': 'float32',
                                   'units': 'deg/s'},
                          253.0: {   'comment': 'Whole second part of the '
                                                'timestamp',
                                     'field_name': 'timestamp',
                                     'field_type': 'date_time',
                                     'units': 's'}},
    'hr': {   0.0: {   'example': 1.0,
                       'field_name': 'fractional_timestamp',
                       'field_type': 'uint16',
                       'scale': 32768.0,
                       'units': 's'},
              1.0: {   'bits': 8.0,
                       'components': 'fractional_timestamp',
                       'example': 1.0,
                       'field_name': 'time256',
                       'field_type': 'uint8',
                       'scale': 256.0,
                       'units': 's'},
              6.0: {   'array': '[N]',
                       'example': 1.0,
                       'field_name': 'filtered_bpm',
                       'field_type': 'uint8',
                       'units': 'bpm'},
              9.0: {   'array': '[N]',
                       'example': 1.0,
                       'field_name': 'event_timestamp',
                       'field_type': 'uint32',
                       'scale': 1024.0,
                       'units': 's'},
              10.0: {   'accumulate': '1,\n1,\n1,\n1,\n1,\n1,\n1,\n1,\n1,\n1',
                        'array': '[N]',
                        'bits': '12,\n'
                                '12,\n'
                                '12,\n'
                                '12,\n'
                                '12,\n'
                                '12,\n'
                                '12,\n'
                                '12,\n'
                                '12,\n'
                                '12',
                        'components': 'event_timestamp,\n'
                                      'event_timestamp,\n'
                                      'event_timestamp,\n'
                                      'event_timestamp,\n'
                                      'event_timestamp,\n'
                                      'event_timestamp,\n'
                                      'event_timestamp,\n'
                                      'event_timestamp,\n'
                                      'event_timestamp,\n'
                                      'event_timestamp\n',
                        'example': 1.0,
                        'field_name': 'event_timestamp_12',
                        'field_type': 'byte',
                        'scale': '1024,\n'
                                 '1024,\n'
                                 '1024,\n'
                                 '1024,\n'
                                 '1024,\n'
                                 '1024,\n'
                                 '1024,\n'
                                 '1024,\n'
                                 '1024,\n'
                                 '1024',
                        'units': 's'},
              253.0: {   'example': 1.0,
                         'field_name': 'timestamp',
                         'field_type': 'date_time'}},
    'hr_zone': {   1.0: {   'example': 1.0,
                            'field_name': 'high_bpm',
                            'field_type': 'uint8',
                            'units': 'bpm'},
                   2.0: {   'example': 16.0,
                            'field_name': 'name',
                            'field_type': 'string'},
                   254.0: {   'example': 1.0,
                              'field_name': 'message_index',
                              'field_type': 'message_index'}},
    'hrm_profile': {   0.0: {   'example': 1.0,
                                'field_name': 'enabled',
                                'field_type': 'bool'},
                       1.0: {   'example': 1.0,
                                'field_name': 'hrm_ant_id',
                                'field_type': 'uint16z'},
                       2.0: {   'example': 1.0,
                                'field_name': 'log_hrv',
                                'field_type': 'bool'},
                       3.0: {   'example': 1.0,
                                'field_name': 'hrm_ant_id_trans_type',
                                'field_type': 'uint8z'},
                       254.0: {   'example': 1.0,
                                  'field_name': 'message_index',
                                  'field_type': 'message_index'}},
    'hrv': {   0.0: {   'array': '[N]',
                        'comment': 'Time between beats',
                        'example': 1.0,
                        'field_name': 'time',
                        'field_type': 'uint16',
                        'scale': 1000.0,
                        'units': 's'}},
    'lap': {   0.0: {   'example': 1.0,
                        'field_name': 'event',
                        'field_type': 'event'},
               1.0: {   'example': 1.0,
                        'field_name': 'event_type',
                        'field_type': 'event_type'},
               2.0: {   'example': 1.0,
                        'field_name': 'start_time',
                        'field_type': 'date_time'},
               3.0: {   'example': 1.0,
                        'field_name': 'start_position_lat',
                        'field_type': 'sint32',
                        'units': 'semicircles'},
               4.0: {   'example': 1.0,
                        'field_name': 'start_position_long',
                        'field_type': 'sint32',
                        'units': 'semicircles'},
               5.0: {   'example': 1.0,
                        'field_name': 'end_position_lat',
                        'field_type': 'sint32',
                        'units': 'semicircles'},
               6.0: {   'example': 1.0,
                        'field_name': 'end_position_long',
                        'field_type': 'sint32',
                        'units': 'semicircles'},
               7.0: {   'comment': 'Time (includes pauses)',
                        'example': 1.0,
                        'field_name': 'total_elapsed_time',
                        'field_type': 'uint32',
                        'scale': 1000.0,
                        'units': 's'},
               8.0: {   'comment': 'Timer Time (excludes pauses)',
                        'example': 1.0,
                        'field_name': 'total_timer_time',
                        'field_type': 'uint32',
                        'scale': 1000.0,
                        'units': 's'},
               9.0: {   'example': 1.0,
                        'field_name': 'total_distance',
                        'field_type': 'uint32',
                        'scale': 100.0,
                        'units': 'm'},
               10.0: {   'example': 1.0,
                         'field_name': 'total_cycles',
                         'field_type': 'uint32',
                         'subfields': {   'total_strides': {   'example': 1.0,
                                                               'field_name': 'total_strides',
                                                               'field_type': 'uint32',
                                                               'ref_field_name': 'sport',
                                                               'ref_field_value': {   'running',
                                                                                      'walking'},
                                                               'units': 'strides'}},
                         'units': 'cycles'},
               11.0: {   'example': 1.0,
                         'field_name': 'total_calories',
                         'field_type': 'uint16',
                         'units': 'kcal'},
               12.0: {   'comment': 'If New Leaf',
                         'example': 1.0,
                         'field_name': 'total_fat_calories',
                         'field_type': 'uint16',
                         'units': 'kcal'},
               13.0: {   'bits': 16.0,
                         'components': 'enhanced_avg_speed',
                         'example': 1.0,
                         'field_name': 'avg_speed',
                         'field_type': 'uint16',
                         'scale': 1000.0,
                         'units': 'm/s'},
               14.0: {   'bits': 16.0,
                         'components': 'enhanced_max_speed',
                         'example': 1.0,
                         'field_name': 'max_speed',
                         'field_type': 'uint16',
                         'scale': 1000.0,
                         'units': 'm/s'},
               15.0: {   'example': 1.0,
                         'field_name': 'avg_heart_rate',
                         'field_type': 'uint8',
                         'units': 'bpm'},
               16.0: {   'example': 1.0,
                         'field_name': 'max_heart_rate',
                         'field_type': 'uint8',
                         'units': 'bpm'},
               17.0: {   'comment': 'total_cycles / total_timer_time if '
                                    'non_zero_avg_cadence otherwise '
                                    'total_cycles / total_elapsed_time',
                         'example': 1.0,
                         'field_name': 'avg_cadence',
                         'field_type': 'uint8',
                         'subfields': {   'avg_running_cadence': {   'example': 1.0,
                                                                     'field_name': 'avg_running_cadence',
                                                                     'field_type': 'uint8',
                                                                     'ref_field_name': 'sport',
                                                                     'ref_field_value': {   'running'},
                                                                     'units': 'strides/min'}},
                         'units': 'rpm'},
               18.0: {   'example': 1.0,
                         'field_name': 'max_cadence',
                         'field_type': 'uint8',
                         'subfields': {   'max_running_cadence': {   'example': 1.0,
                                                                     'field_name': 'max_running_cadence',
                                                                     'field_type': 'uint8',
                                                                     'ref_field_name': 'sport',
                                                                     'ref_field_value': {   'running'},
                                                                     'units': 'strides/min'}},
                         'units': 'rpm'},
               19.0: {   'comment': 'total_power / total_timer_time if '
                                    'non_zero_avg_power otherwise total_power '
                                    '/ total_elapsed_time',
                         'example': 1.0,
                         'field_name': 'avg_power',
                         'field_type': 'uint16',
                         'units': 'watts'},
               20.0: {   'example': 1.0,
                         'field_name': 'max_power',
                         'field_type': 'uint16',
                         'units': 'watts'},
               21.0: {   'example': 1.0,
                         'field_name': 'total_ascent',
                         'field_type': 'uint16',
                         'units': 'm'},
               22.0: {   'example': 1.0,
                         'field_name': 'total_descent',
                         'field_type': 'uint16',
                         'units': 'm'},
               23.0: {   'example': 1.0,
                         'field_name': 'intensity',
                         'field_type': 'intensity'},
               24.0: {   'example': 1.0,
                         'field_name': 'lap_trigger',
                         'field_type': 'lap_trigger'},
               25.0: {   'example': 1.0,
                         'field_name': 'sport',
                         'field_type': 'sport'},
               26.0: {   'example': 1.0,
                         'field_name': 'event_group',
                         'field_type': 'uint8'},
               32.0: {   'comment': '# of lengths of swim pool',
                         'example': 1.0,
                         'field_name': 'num_lengths',
                         'field_type': 'uint16',
                         'units': 'lengths'},
               33.0: {   'example': 1.0,
                         'field_name': 'normalized_power',
                         'field_type': 'uint16',
                         'units': 'watts'},
               34.0: {   'example': 1.0,
                         'field_name': 'left_right_balance',
                         'field_type': 'left_right_balance_100'},
               35.0: {   'example': 1.0,
                         'field_name': 'first_length_index',
                         'field_type': 'uint16'},
               37.0: {   'example': 1.0,
                         'field_name': 'avg_stroke_distance',
                         'field_type': 'uint16',
                         'scale': 100.0,
                         'units': 'm'},
               38.0: {   'example': 1.0,
                         'field_name': 'swim_stroke',
                         'field_type': 'swim_stroke'},
               39.0: {   'example': 1.0,
                         'field_name': 'sub_sport',
                         'field_type': 'sub_sport'},
               40.0: {   'comment': '# of active lengths of swim pool',
                         'example': 1.0,
                         'field_name': 'num_active_lengths',
                         'field_type': 'uint16',
                         'units': 'lengths'},
               41.0: {   'example': 1.0,
                         'field_name': 'total_work',
                         'field_type': 'uint32',
                         'units': 'J'},
               42.0: {   'bits': 16.0,
                         'components': 'enhanced_avg_altitude',
                         'example': 1.0,
                         'field_name': 'avg_altitude',
                         'field_type': 'uint16',
                         'offset': 500.0,
                         'scale': 5.0,
                         'units': 'm'},
               43.0: {   'bits': 16.0,
                         'components': 'enhanced_max_altitude',
                         'example': 1.0,
                         'field_name': 'max_altitude',
                         'field_type': 'uint16',
                         'offset': 500.0,
                         'scale': 5.0,
                         'units': 'm'},
               44.0: {   'example': 1.0,
                         'field_name': 'gps_accuracy',
                         'field_type': 'uint8',
                         'units': 'm'},
               45.0: {   'example': 1.0,
                         'field_name': 'avg_grade',
                         'field_type': 'sint16',
                         'scale': 100.0,
                         'units': '%'},
               46.0: {   'example': 1.0,
                         'field_name': 'avg_pos_grade',
                         'field_type': 'sint16',
                         'scale': 100.0,
                         'units': '%'},
               47.0: {   'example': 1.0,
                         'field_name': 'avg_neg_grade',
                         'field_type': 'sint16',
                         'scale': 100.0,
                         'units': '%'},
               48.0: {   'example': 1.0,
                         'field_name': 'max_pos_grade',
                         'field_type': 'sint16',
                         'scale': 100.0,
                         'units': '%'},
               49.0: {   'example': 1.0,
                         'field_name': 'max_neg_grade',
                         'field_type': 'sint16',
                         'scale': 100.0,
                         'units': '%'},
               50.0: {   'example': 1.0,
                         'field_name': 'avg_temperature',
                         'field_type': 'sint8',
                         'units': 'C'},
               51.0: {   'example': 1.0,
                         'field_name': 'max_temperature',
                         'field_type': 'sint8',
                         'units': 'C'},
               52.0: {   'example': 1.0,
                         'field_name': 'total_moving_time',
                         'field_type': 'uint32',
                         'scale': 1000.0,
                         'units': 's'},
               53.0: {   'example': 1.0,
                         'field_name': 'avg_pos_vertical_speed',
                         'field_type': 'sint16',
                         'scale': 1000.0,
                         'units': 'm/s'},
               54.0: {   'example': 1.0,
                         'field_name': 'avg_neg_vertical_speed',
                         'field_type': 'sint16',
                         'scale': 1000.0,
                         'units': 'm/s'},
               55.0: {   'example': 1.0,
                         'field_name': 'max_pos_vertical_speed',
                         'field_type': 'sint16',
                         'scale': 1000.0,
                         'units': 'm/s'},
               56.0: {   'example': 1.0,
                         'field_name': 'max_neg_vertical_speed',
                         'field_type': 'sint16',
                         'scale': 1000.0,
                         'units': 'm/s'},
               57.0: {   'array': '[N]',
                         'example': 1.0,
                         'field_name': 'time_in_hr_zone',
                         'field_type': 'uint32',
                         'scale': 1000.0,
                         'units': 's'},
               58.0: {   'array': '[N]',
                         'example': 1.0,
                         'field_name': 'time_in_speed_zone',
                         'field_type': 'uint32',
                         'scale': 1000.0,
                         'units': 's'},
               59.0: {   'array': '[N]',
                         'example': 1.0,
                         'field_name': 'time_in_cadence_zone',
                         'field_type': 'uint32',
                         'scale': 1000.0,
                         'units': 's'},
               60.0: {   'array': '[N]',
                         'example': 1.0,
                         'field_name': 'time_in_power_zone',
                         'field_type': 'uint32',
                         'scale': 1000.0,
                         'units': 's'},
               61.0: {   'example': 1.0,
                         'field_name': 'repetition_num',
                         'field_type': 'uint16'},
               62.0: {   'bits': 16.0,
                         'components': 'enhanced_min_altitude',
                         'example': 1.0,
                         'field_name': 'min_altitude',
                         'field_type': 'uint16',
                         'offset': 500.0,
                         'scale': 5.0,
                         'units': 'm'},
               63.0: {   'example': 1.0,
                         'field_name': 'min_heart_rate',
                         'field_type': 'uint8',
                         'units': 'bpm'},
               71.0: {   'example': 1.0,
                         'field_name': 'wkt_step_index',
                         'field_type': 'message_index'},
               74.0: {   'example': 1.0,
                         'field_name': 'opponent_score',
                         'field_type': 'uint16'},
               75.0: {   'array': '[N]',
                         'comment': 'stroke_type enum used as the index',
                         'example': 1.0,
                         'field_name': 'stroke_count',
                         'field_type': 'uint16',
                         'units': 'counts'},
               76.0: {   'array': '[N]',
                         'comment': 'zone number used as the index',
                         'example': 1.0,
                         'field_name': 'zone_count',
                         'field_type': 'uint16',
                         'units': 'counts'},
               77.0: {   'example': 1.0,
                         'field_name': 'avg_vertical_oscillation',
                         'field_type': 'uint16',
                         'scale': 10.0,
                         'units': 'mm'},
               78.0: {   'example': 1.0,
                         'field_name': 'avg_stance_time_percent',
                         'field_type': 'uint16',
                         'scale': 100.0,
                         'units': 'percent'},
               79.0: {   'example': 1.0,
                         'field_name': 'avg_stance_time',
                         'field_type': 'uint16',
                         'scale': 10.0,
                         'units': 'ms'},
               80.0: {   'comment': 'fractional part of the avg_cadence',
                         'example': 1.0,
                         'field_name': 'avg_fractional_cadence',
                         'field_type': 'uint8',
                         'scale': 128.0,
                         'units': 'rpm'},
               81.0: {   'comment': 'fractional part of the max_cadence',
                         'example': 1.0,
                         'field_name': 'max_fractional_cadence',
                         'field_type': 'uint8',
                         'scale': 128.0,
                         'units': 'rpm'},
               82.0: {   'comment': 'fractional part of the total_cycles',
                         'example': 1.0,
                         'field_name': 'total_fractional_cycles',
                         'field_type': 'uint8',
                         'scale': 128.0,
                         'units': 'cycles'},
               83.0: {   'example': 1.0,
                         'field_name': 'player_score',
                         'field_type': 'uint16'},
               84.0: {   'array': '[N]',
                         'comment': 'Avg saturated and unsaturated hemoglobin',
                         'example': 1.0,
                         'field_name': 'avg_total_hemoglobin_conc',
                         'field_type': 'uint16',
                         'scale': 100.0,
                         'units': 'g/dL'},
               85.0: {   'array': '[N]',
                         'comment': 'Min saturated and unsaturated hemoglobin',
                         'example': 1.0,
                         'field_name': 'min_total_hemoglobin_conc',
                         'field_type': 'uint16',
                         'scale': 100.0,
                         'units': 'g/dL'},
               86.0: {   'array': '[N]',
                         'comment': 'Max saturated and unsaturated hemoglobin',
                         'example': 1.0,
                         'field_name': 'max_total_hemoglobin_conc',
                         'field_type': 'uint16',
                         'scale': 100.0,
                         'units': 'g/dL'},
               87.0: {   'array': '[N]',
                         'comment': 'Avg percentage of hemoglobin saturated '
                                    'with oxygen',
                         'example': 1.0,
                         'field_name': 'avg_saturated_hemoglobin_percent',
                         'field_type': 'uint16',
                         'scale': 10.0,
                         'units': '%'},
               88.0: {   'array': '[N]',
                         'comment': 'Min percentage of hemoglobin saturated '
                                    'with oxygen',
                         'example': 1.0,
                         'field_name': 'min_saturated_hemoglobin_percent',
                         'field_type': 'uint16',
                         'scale': 10.0,
                         'units': '%'},
               89.0: {   'array': '[N]',
                         'comment': 'Max percentage of hemoglobin saturated '
                                    'with oxygen',
                         'example': 1.0,
                         'field_name': 'max_saturated_hemoglobin_percent',
                         'field_type': 'uint16',
                         'scale': 10.0,
                         'units': '%'},
               91.0: {   'field_name': 'avg_left_torque_effectiveness',
                         'field_type': 'uint8',
                         'scale': 2.0,
                         'units': 'percent'},
               92.0: {   'field_name': 'avg_right_torque_effectiveness',
                         'field_type': 'uint8',
                         'scale': 2.0,
                         'units': 'percent'},
               93.0: {   'field_name': 'avg_left_pedal_smoothness',
                         'field_type': 'uint8',
                         'scale': 2.0,
                         'units': 'percent'},
               94.0: {   'field_name': 'avg_right_pedal_smoothness',
                         'field_type': 'uint8',
                         'scale': 2.0,
                         'units': 'percent'},
               95.0: {   'field_name': 'avg_combined_pedal_smoothness',
                         'field_type': 'uint8',
                         'scale': 2.0,
                         'units': 'percent'},
               98.0: {   'comment': 'Total time spent in the standing position',
                         'field_name': 'time_standing',
                         'field_type': 'uint32',
                         'scale': 1000.0,
                         'units': 's'},
               99.0: {   'comment': 'Number of transitions to the standing '
                                    'state',
                         'field_name': 'stand_count',
                         'field_type': 'uint16'},
               100.0: {   'comment': 'Average left platform center offset',
                          'field_name': 'avg_left_pco',
                          'field_type': 'sint8',
                          'units': 'mm'},
               101.0: {   'comment': 'Average right platform center offset',
                          'field_name': 'avg_right_pco',
                          'field_type': 'sint8',
                          'units': 'mm'},
               102.0: {   'array': '[N]',
                          'comment': 'Average left power phase angles. Data '
                                     'value indexes defined by '
                                     'power_phase_type.',
                          'field_name': 'avg_left_power_phase',
                          'field_type': 'uint8',
                          'scale': 0.7111111,
                          'units': 'degrees'},
               103.0: {   'array': '[N]',
                          'comment': 'Average left power phase peak angles. '
                                     'Data value indexes  defined by '
                                     'power_phase_type.',
                          'field_name': 'avg_left_power_phase_peak',
                          'field_type': 'uint8',
                          'scale': 0.7111111,
                          'units': 'degrees'},
               104.0: {   'array': '[N]',
                          'comment': 'Average right power phase angles. Data '
                                     'value indexes defined by '
                                     'power_phase_type.',
                          'field_name': 'avg_right_power_phase',
                          'field_type': 'uint8',
                          'scale': 0.7111111,
                          'units': 'degrees'},
               105.0: {   'array': '[N]',
                          'comment': 'Average right power phase peak angles. '
                                     'Data value indexes  defined by '
                                     'power_phase_type.',
                          'field_name': 'avg_right_power_phase_peak',
                          'field_type': 'uint8',
                          'scale': 0.7111111,
                          'units': 'degrees'},
               106.0: {   'array': '[N]',
                          'comment': 'Average power by position. Data value '
                                     'indexes defined by rider_position_type.',
                          'field_name': 'avg_power_position',
                          'field_type': 'uint16',
                          'units': 'watts'},
               107.0: {   'array': '[N]',
                          'comment': 'Maximum power by position. Data value '
                                     'indexes defined by rider_position_type.',
                          'field_name': 'max_power_position',
                          'field_type': 'uint16',
                          'units': 'watts'},
               108.0: {   'array': '[N]',
                          'comment': 'Average cadence by position. Data value '
                                     'indexes defined by rider_position_type.',
                          'field_name': 'avg_cadence_position',
                          'field_type': 'uint8',
                          'units': 'rpm'},
               109.0: {   'array': '[N]',
                          'comment': 'Maximum cadence by position. Data value '
                                     'indexes defined by rider_position_type.',
                          'field_name': 'max_cadence_position',
                          'field_type': 'uint8',
                          'units': 'rpm'},
               110.0: {   'example': 1.0,
                          'field_name': 'enhanced_avg_speed',
                          'field_type': 'uint32',
                          'scale': 1000.0,
                          'units': 'm/s'},
               111.0: {   'example': 1.0,
                          'field_name': 'enhanced_max_speed',
                          'field_type': 'uint32',
                          'scale': 1000.0,
                          'units': 'm/s'},
               112.0: {   'example': 1.0,
                          'field_name': 'enhanced_avg_altitude',
                          'field_type': 'uint32',
                          'offset': 500.0,
                          'scale': 5.0,
                          'units': 'm'},
               113.0: {   'example': 1.0,
                          'field_name': 'enhanced_min_altitude',
                          'field_type': 'uint32',
                          'offset': 500.0,
                          'scale': 5.0,
                          'units': 'm'},
               114.0: {   'example': 1.0,
                          'field_name': 'enhanced_max_altitude',
                          'field_type': 'uint32',
                          'offset': 500.0,
                          'scale': 5.0,
                          'units': 'm'},
               115.0: {   'comment': 'lev average motor power during lap',
                          'field_name': 'avg_lev_motor_power',
                          'field_type': 'uint16',
                          'units': 'watts'},
               116.0: {   'comment': 'lev maximum motor power during lap',
                          'field_name': 'max_lev_motor_power',
                          'field_type': 'uint16',
                          'units': 'watts'},
               117.0: {   'comment': 'lev battery consumption during lap',
                          'field_name': 'lev_battery_consumption',
                          'field_type': 'uint8',
                          'scale': 2.0,
                          'units': 'percent'},
               253.0: {   'comment': 'Lap end time.',
                          'example': 1.0,
                          'field_name': 'timestamp',
                          'field_type': 'date_time',
                          'units': 's'},
               254.0: {   'example': 1.0,
                          'field_name': 'message_index',
                          'field_type': 'message_index'}},
    'length': {   0.0: {   'example': 1.0,
                           'field_name': 'event',
                           'field_type': 'event'},
                  1.0: {   'example': 1.0,
                           'field_name': 'event_type',
                           'field_type': 'event_type'},
                  2.0: {   'example': 1.0,
                           'field_name': 'start_time',
                           'field_type': 'date_time'},
                  3.0: {   'example': 1.0,
                           'field_name': 'total_elapsed_time',
                           'field_type': 'uint32',
                           'scale': 1000.0,
                           'units': 's'},
                  4.0: {   'example': 1.0,
                           'field_name': 'total_timer_time',
                           'field_type': 'uint32',
                           'scale': 1000.0,
                           'units': 's'},
                  5.0: {   'example': 1.0,
                           'field_name': 'total_strokes',
                           'field_type': 'uint16',
                           'units': 'strokes'},
                  6.0: {   'example': 1.0,
                           'field_name': 'avg_speed',
                           'field_type': 'uint16',
                           'scale': 1000.0,
                           'units': 'm/s'},
                  7.0: {   'example': 1.0,
                           'field_name': 'swim_stroke',
                           'field_type': 'swim_stroke',
                           'units': 'swim_stroke'},
                  9.0: {   'example': 1.0,
                           'field_name': 'avg_swimming_cadence',
                           'field_type': 'uint8',
                           'units': 'strokes/min'},
                  10.0: {   'example': 1.0,
                            'field_name': 'event_group',
                            'field_type': 'uint8'},
                  11.0: {   'example': 1.0,
                            'field_name': 'total_calories',
                            'field_type': 'uint16',
                            'units': 'kcal'},
                  12.0: {   'example': 1.0,
                            'field_name': 'length_type',
                            'field_type': 'length_type'},
                  18.0: {   'example': 1.0,
                            'field_name': 'player_score',
                            'field_type': 'uint16'},
                  19.0: {   'example': 1.0,
                            'field_name': 'opponent_score',
                            'field_type': 'uint16'},
                  20.0: {   'array': '[N]',
                            'comment': 'stroke_type enum used as the index',
                            'example': 1.0,
                            'field_name': 'stroke_count',
                            'field_type': 'uint16',
                            'units': 'counts'},
                  21.0: {   'array': '[N]',
                            'comment': 'zone number used as the index',
                            'example': 1.0,
                            'field_name': 'zone_count',
                            'field_type': 'uint16',
                            'units': 'counts'},
                  253.0: {   'example': 1.0,
                             'field_name': 'timestamp',
                             'field_type': 'date_time'},
                  254.0: {   'example': 1.0,
                             'field_name': 'message_index',
                             'field_type': 'message_index'}},
    'magnetometer_data': {   0.0: {   'comment': 'Millisecond part of the '
                                                 'timestamp.',
                                      'field_name': 'timestamp_ms',
                                      'field_type': 'uint16',
                                      'units': 'ms'},
                             1.0: {   'array': '[N]',
                                      'comment': 'Each time in the array '
                                                 'describes the time at which '
                                                 'the compass sample with the '
                                                 'corrosponding index was '
                                                 'taken. Limited to 30 samples '
                                                 'in each message. The samples '
                                                 'may span across seconds. '
                                                 'Array size must match the '
                                                 'number of samples in cmps_x '
                                                 'and cmps_y and cmps_z',
                                      'field_name': 'sample_time_offset',
                                      'field_type': 'uint16',
                                      'units': 'ms'},
                             2.0: {   'array': '[N]',
                                      'comment': 'These are the raw ADC '
                                                 'reading. Maximum number of '
                                                 'samples is 30 in each '
                                                 'message. The samples may '
                                                 'span across seconds. A '
                                                 'conversion will need to be '
                                                 'done on this data once read.',
                                      'field_name': 'mag_x',
                                      'field_type': 'uint16',
                                      'units': 'counts'},
                             3.0: {   'array': '[N]',
                                      'comment': 'These are the raw ADC '
                                                 'reading. Maximum number of '
                                                 'samples is 30 in each '
                                                 'message. The samples may '
                                                 'span across seconds. A '
                                                 'conversion will need to be '
                                                 'done on this data once read.',
                                      'field_name': 'mag_y',
                                      'field_type': 'uint16',
                                      'units': 'counts'},
                             4.0: {   'array': '[N]',
                                      'comment': 'These are the raw ADC '
                                                 'reading. Maximum number of '
                                                 'samples is 30 in each '
                                                 'message. The samples may '
                                                 'span across seconds. A '
                                                 'conversion will need to be '
                                                 'done on this data once read.',
                                      'field_name': 'mag_z',
                                      'field_type': 'uint16',
                                      'units': 'counts'},
                             5.0: {   'array': '[N]',
                                      'comment': 'Calibrated Magnetometer '
                                                 'reading',
                                      'field_name': 'calibrated_mag_x',
                                      'field_type': 'float32',
                                      'units': 'G'},
                             6.0: {   'array': '[N]',
                                      'comment': 'Calibrated Magnetometer '
                                                 'reading',
                                      'field_name': 'calibrated_mag_y',
                                      'field_type': 'float32',
                                      'units': 'G'},
                             7.0: {   'array': '[N]',
                                      'comment': 'Calibrated Magnetometer '
                                                 'reading',
                                      'field_name': 'calibrated_mag_z',
                                      'field_type': 'float32',
                                      'units': 'G'},
                             253.0: {   'comment': 'Whole second part of the '
                                                   'timestamp',
                                        'field_name': 'timestamp',
                                        'field_type': 'date_time',
                                        'units': 's'}},
    'memo_glob': {   0.0: {   'array': '[N]',
                              'comment': 'Block of utf8 bytes ',
                              'field_name': 'memo',
                              'field_type': 'byte'},
                     1.0: {   'comment': 'Allows relating glob to another '
                                         'mesg  If used only required for '
                                         'first part of each memo_glob',
                              'field_name': 'message_number',
                              'field_type': 'uint16'},
                     2.0: {   'comment': 'Index of external mesg',
                              'field_name': 'message_index',
                              'field_type': 'message_index'},
                     250.0: {   'comment': 'Sequence number of memo blocks',
                                'field_name': 'part_index',
                                'field_type': 'uint32'}},
    'mesg_capabilities': {   0.0: {   'example': 1.0,
                                      'field_name': 'file',
                                      'field_type': 'file'},
                             1.0: {   'example': 1.0,
                                      'field_name': 'mesg_num',
                                      'field_type': 'mesg_num'},
                             2.0: {   'example': 1.0,
                                      'field_name': 'count_type',
                                      'field_type': 'mesg_count'},
                             3.0: {   'example': 1.0,
                                      'field_name': 'count',
                                      'field_type': 'uint16',
                                      'subfields': {   'max_per_file': {   'example': 1.0,
                                                                           'field_name': 'max_per_file',
                                                                           'field_type': 'uint16',
                                                                           'ref_field_name': 'count_type',
                                                                           'ref_field_value': {   'max_per_file'}},
                                                       'max_per_file_type': {   'example': 1.0,
                                                                                'field_name': 'max_per_file_type',
                                                                                'field_type': 'uint16',
                                                                                'ref_field_name': 'count_type',
                                                                                'ref_field_value': {   'max_per_file_type'}},
                                                       'num_per_file': {   'example': 1.0,
                                                                           'field_name': 'num_per_file',
                                                                           'field_type': 'uint16',
                                                                           'ref_field_name': 'count_type',
                                                                           'ref_field_value': {   'num_per_file'}}}},
                             254.0: {   'example': 1.0,
                                        'field_name': 'message_index',
                                        'field_type': 'message_index'}},
    'met_zone': {   1.0: {   'example': 1.0,
                             'field_name': 'high_bpm',
                             'field_type': 'uint8'},
                    2.0: {   'example': 1.0,
                             'field_name': 'calories',
                             'field_type': 'uint16',
                             'scale': 10.0,
                             'units': 'kcal / min'},
                    3.0: {   'example': 1.0,
                             'field_name': 'fat_calories',
                             'field_type': 'uint8',
                             'scale': 10.0,
                             'units': 'kcal / min'},
                    254.0: {   'example': 1.0,
                               'field_name': 'message_index',
                               'field_type': 'message_index'}},
    'monitoring': {   0.0: {   'comment': 'Associates this data to device_info '
                                          'message.  Not required for file '
                                          'with single device (sensor).',
                               'example': 1.0,
                               'field_name': 'device_index',
                               'field_type': 'device_index'},
                      1.0: {   'comment': 'Accumulated total calories.  '
                                          'Maintained by MonitoringReader for '
                                          'each activity_type.  See SDK '
                                          'documentation',
                               'example': 1.0,
                               'field_name': 'calories',
                               'field_type': 'uint16',
                               'units': 'kcal'},
                      2.0: {   'comment': 'Accumulated distance.  Maintained '
                                          'by MonitoringReader for each '
                                          'activity_type.  See SDK '
                                          'documentation.',
                               'example': 1.0,
                               'field_name': 'distance',
                               'field_type': 'uint32',
                               'scale': 100.0,
                               'units': 'm'},
                      3.0: {   'comment': 'Accumulated cycles.  Maintained by '
                                          'MonitoringReader for each '
                                          'activity_type.  See SDK '
                                          'documentation.',
                               'example': 1.0,
                               'field_name': 'cycles',
                               'field_type': 'uint32',
                               'scale': 2.0,
                               'subfields': {   'steps': {   'field_name': 'steps',
                                                             'field_type': 'uint32',
                                                             'ref_field_name': 'activity_type',
                                                             'ref_field_value': {   'running',
                                                                                    'walking'},
                                                             'scale': 1.0,
                                                             'units': 'steps'},
                                                'strokes': {   'example': 1.0,
                                                               'field_name': 'strokes',
                                                               'field_type': 'uint32',
                                                               'ref_field_name': 'activity_type',
                                                               'ref_field_value': {   'cycling',
                                                                                      'swimming'},
                                                               'scale': 2.0,
                                                               'units': 'strokes'}},
                               'units': 'cycles'},
                      4.0: {   'example': 1.0,
                               'field_name': 'active_time',
                               'field_type': 'uint32',
                               'scale': 1000.0,
                               'units': 's'},
                      5.0: {   'example': 1.0,
                               'field_name': 'activity_type',
                               'field_type': 'activity_type'},
                      6.0: {   'example': 1.0,
                               'field_name': 'activity_subtype',
                               'field_type': 'activity_subtype'},
                      7.0: {   'field_name': 'activity_level',
                               'field_type': 'activity_level'},
                      8.0: {   'example': 1.0,
                               'field_name': 'distance_16',
                               'field_type': 'uint16',
                               'units': '100 * m'},
                      9.0: {   'example': 1.0,
                               'field_name': 'cycles_16',
                               'field_type': 'uint16',
                               'units': '2 * cycles (steps)'},
                      10.0: {   'example': 1.0,
                                'field_name': 'active_time_16',
                                'field_type': 'uint16',
                                'units': 's'},
                      11.0: {   'comment': 'Must align to logging interval, '
                                           'for example, time must be 00:00:00 '
                                           'for daily log.',
                                'example': 1.0,
                                'field_name': 'local_timestamp',
                                'field_type': 'local_date_time'},
                      12.0: {   'comment': 'Avg temperature during the logging '
                                           'interval ended at timestamp',
                                'field_name': 'temperature',
                                'field_type': 'sint16',
                                'scale': 100.0,
                                'units': 'C'},
                      14.0: {   'comment': 'Min temperature during the logging '
                                           'interval ended at timestamp',
                                'field_name': 'temperature_min',
                                'field_type': 'sint16',
                                'scale': 100.0,
                                'units': 'C'},
                      15.0: {   'comment': 'Max temperature during the logging '
                                           'interval ended at timestamp',
                                'field_name': 'temperature_max',
                                'field_type': 'sint16',
                                'scale': 100.0,
                                'units': 'C'},
                      16.0: {   'array': '[8]',
                                'comment': 'Indexed using '
                                           'minute_activity_level enum',
                                'field_name': 'activity_time',
                                'field_type': 'uint16',
                                'units': 'minutes'},
                      19.0: {   'field_name': 'active_calories',
                                'field_type': 'uint16',
                                'units': 'kcal'},
                      24.0: {   'bits': '5,3',
                                'comment': 'Indicates single type / intensity '
                                           'for duration since last monitoring '
                                           'message.',
                                'components': 'activity_type,intensity',
                                'field_name': 'current_activity_type_intensity',
                                'field_type': 'byte'},
                      25.0: {   'field_name': 'timestamp_min_8',
                                'field_type': 'uint8',
                                'units': 'min'},
                      26.0: {   'field_name': 'timestamp_16',
                                'field_type': 'uint16',
                                'units': 's'},
                      27.0: {   'field_name': 'heart_rate',
                                'field_type': 'uint8',
                                'units': 'bpm'},
                      28.0: {   'field_name': 'intensity',
                                'field_type': 'uint8',
                                'scale': 10.0},
                      29.0: {   'field_name': 'duration_min',
                                'field_type': 'uint16',
                                'units': 'min'},
                      30.0: {   'field_name': 'duration',
                                'field_type': 'uint32',
                                'units': 's'},
                      31.0: {   'field_name': 'ascent',
                                'field_type': 'uint32',
                                'scale': 1000.0,
                                'units': 'm'},
                      32.0: {   'field_name': 'descent',
                                'field_type': 'uint32',
                                'scale': 1000.0,
                                'units': 'm'},
                      33.0: {   'field_name': 'moderate_activity_minutes',
                                'field_type': 'uint16',
                                'units': 'minutes'},
                      34.0: {   'field_name': 'vigorous_activity_minutes',
                                'field_type': 'uint16',
                                'units': 'minutes'},
                      253.0: {   'comment': 'Must align to logging interval, '
                                            'for example, time must be '
                                            '00:00:00 for daily log.',
                                 'example': 1.0,
                                 'field_name': 'timestamp',
                                 'field_type': 'date_time',
                                 'units': 's'}},
    'monitoring_info': {   0.0: {   'comment': 'Use to convert activity '
                                               'timestamps to local time if '
                                               'device does not support time '
                                               'zone and daylight savings time '
                                               'correction.',
                                    'example': 1.0,
                                    'field_name': 'local_timestamp',
                                    'field_type': 'local_date_time',
                                    'units': 's'},
                           1.0: {   'array': '[N]',
                                    'field_name': 'activity_type',
                                    'field_type': 'activity_type'},
                           3.0: {   'array': '[N]',
                                    'comment': 'Indexed by activity_type',
                                    'field_name': 'cycles_to_distance',
                                    'field_type': 'uint16',
                                    'scale': 5000.0,
                                    'units': 'm/cycle'},
                           4.0: {   'array': '[N]',
                                    'comment': 'Indexed by activity_type',
                                    'field_name': 'cycles_to_calories',
                                    'field_type': 'uint16',
                                    'scale': 5000.0,
                                    'units': 'kcal/cycle'},
                           5.0: {   'field_name': 'resting_metabolic_rate',
                                    'field_type': 'uint16',
                                    'units': 'kcal / day'},
                           253.0: {   'example': 1.0,
                                      'field_name': 'timestamp',
                                      'field_type': 'date_time',
                                      'units': 's'}},
    'nmea_sentence': {   0.0: {   'comment': 'Fractional part of timestamp, '
                                             'added to timestamp',
                                  'example': 1.0,
                                  'field_name': 'timestamp_ms',
                                  'field_type': 'uint16',
                                  'units': 'ms'},
                         1.0: {   'comment': 'NMEA sentence',
                                  'example': 83.0,
                                  'field_name': 'sentence',
                                  'field_type': 'string'},
                         253.0: {   'comment': 'Timestamp message was output',
                                    'example': 1.0,
                                    'field_name': 'timestamp',
                                    'field_type': 'date_time',
                                    'units': 's'}},
    'obdii_data': {   0.0: {   'comment': 'Fractional part of timestamp, added '
                                          'to timestamp',
                               'field_name': 'timestamp_ms',
                               'field_type': 'uint16',
                               'units': 'ms'},
                      1.0: {   'array': '[N]',
                               'comment': 'Offset of PID reading [i] from '
                                          'start_timestamp+start_timestamp_ms. '
                                          'Readings may span accross seconds.',
                               'field_name': 'time_offset',
                               'field_type': 'uint16',
                               'units': 'ms'},
                      2.0: {   'comment': 'Parameter ID',
                               'field_name': 'pid',
                               'field_type': 'byte'},
                      3.0: {   'array': '[N]',
                               'comment': 'Raw parameter data',
                               'field_name': 'raw_data',
                               'field_type': 'byte'},
                      4.0: {   'array': '[N]',
                               'comment': 'Optional, data size of PID[i].  If '
                                          'not specified refer to SAE J1979.',
                               'field_name': 'pid_data_size',
                               'field_type': 'uint8'},
                      5.0: {   'array': '[N]',
                               'comment': 'System time associated with sample '
                                          'expressed in ms, can be used '
                                          'instead of time_offset.  There will '
                                          'be a system_time value for each '
                                          'raw_data element.  For multibyte '
                                          'pids the system_time is repeated.',
                               'field_name': 'system_time',
                               'field_type': 'uint32'},
                      6.0: {   'comment': 'Timestamp of first sample recorded '
                                          'in the message.  Used with '
                                          'time_offset to generate time of '
                                          'each sample',
                               'field_name': 'start_timestamp',
                               'field_type': 'date_time'},
                      7.0: {   'comment': 'Fractional part of start_timestamp',
                               'field_name': 'start_timestamp_ms',
                               'field_type': 'uint16',
                               'units': 'ms'},
                      253.0: {   'comment': 'Timestamp message was output',
                                 'field_name': 'timestamp',
                                 'field_type': 'date_time',
                                 'units': 's'}},
    'power_zone': {   1.0: {   'example': 1.0,
                               'field_name': 'high_value',
                               'field_type': 'uint16',
                               'units': 'watts'},
                      2.0: {   'example': 16.0,
                               'field_name': 'name',
                               'field_type': 'string'},
                      254.0: {   'example': 1.0,
                                 'field_name': 'message_index',
                                 'field_type': 'message_index'}},
    'record': {   0.0: {   'example': 1.0,
                           'field_name': 'position_lat',
                           'field_type': 'sint32',
                           'units': 'semicircles'},
                  1.0: {   'example': 1.0,
                           'field_name': 'position_long',
                           'field_type': 'sint32',
                           'units': 'semicircles'},
                  2.0: {   'bits': 16.0,
                           'components': 'enhanced_altitude',
                           'example': 1.0,
                           'field_name': 'altitude',
                           'field_type': 'uint16',
                           'offset': 500.0,
                           'scale': 5.0,
                           'units': 'm'},
                  3.0: {   'example': 1.0,
                           'field_name': 'heart_rate',
                           'field_type': 'uint8',
                           'units': 'bpm'},
                  4.0: {   'example': 1.0,
                           'field_name': 'cadence',
                           'field_type': 'uint8',
                           'units': 'rpm'},
                  5.0: {   'example': 1.0,
                           'field_name': 'distance',
                           'field_type': 'uint32',
                           'scale': 100.0,
                           'units': 'm'},
                  6.0: {   'bits': 16.0,
                           'components': 'enhanced_speed',
                           'example': 1.0,
                           'field_name': 'speed',
                           'field_type': 'uint16',
                           'scale': 1000.0,
                           'units': 'm/s'},
                  7.0: {   'example': 1.0,
                           'field_name': 'power',
                           'field_type': 'uint16',
                           'units': 'watts'},
                  8.0: {   'accumulate': '0,\n1',
                           'array': '[3]',
                           'bits': '12,\n12',
                           'components': 'speed,\ndistance',
                           'example': 1.0,
                           'field_name': 'compressed_speed_distance',
                           'field_type': 'byte',
                           'scale': '100,\n16',
                           'units': 'm/s,\nm'},
                  9.0: {   'example': 1.0,
                           'field_name': 'grade',
                           'field_type': 'sint16',
                           'scale': 100.0,
                           'units': '%'},
                  10.0: {   'comment': 'Relative. 0 is none  254 is Max.',
                            'example': 1.0,
                            'field_name': 'resistance',
                            'field_type': 'uint8'},
                  11.0: {   'example': 1.0,
                            'field_name': 'time_from_course',
                            'field_type': 'sint32',
                            'scale': 1000.0,
                            'units': 's'},
                  12.0: {   'example': 1.0,
                            'field_name': 'cycle_length',
                            'field_type': 'uint8',
                            'scale': 100.0,
                            'units': 'm'},
                  13.0: {   'example': 1.0,
                            'field_name': 'temperature',
                            'field_type': 'sint8',
                            'units': 'C'},
                  17.0: {   'array': '[N]',
                            'comment': 'Speed at 1s intervals.  Timestamp '
                                       'field indicates time of last array '
                                       'element.',
                            'example': 5.0,
                            'field_name': 'speed_1s',
                            'field_type': 'uint8',
                            'scale': 16.0,
                            'units': 'm/s'},
                  18.0: {   'accumulate': 1.0,
                            'bits': 8.0,
                            'components': 'total_cycles',
                            'example': 1.0,
                            'field_name': 'cycles',
                            'field_type': 'uint8',
                            'units': 'cycles'},
                  19.0: {   'example': 1.0,
                            'field_name': 'total_cycles',
                            'field_type': 'uint32',
                            'units': 'cycles'},
                  28.0: {   'accumulate': 1.0,
                            'bits': 16.0,
                            'components': 'accumulated_power',
                            'example': 1.0,
                            'field_name': 'compressed_accumulated_power',
                            'field_type': 'uint16',
                            'units': 'watts'},
                  29.0: {   'example': 1.0,
                            'field_name': 'accumulated_power',
                            'field_type': 'uint32',
                            'units': 'watts'},
                  30.0: {   'example': 1.0,
                            'field_name': 'left_right_balance',
                            'field_type': 'left_right_balance'},
                  31.0: {   'example': 1.0,
                            'field_name': 'gps_accuracy',
                            'field_type': 'uint8',
                            'units': 'm'},
                  32.0: {   'example': 1.0,
                            'field_name': 'vertical_speed',
                            'field_type': 'sint16',
                            'scale': 1000.0,
                            'units': 'm/s'},
                  33.0: {   'example': 1.0,
                            'field_name': 'calories',
                            'field_type': 'uint16',
                            'units': 'kcal'},
                  39.0: {   'example': 1.0,
                            'field_name': 'vertical_oscillation',
                            'field_type': 'uint16',
                            'scale': 10.0,
                            'units': 'mm'},
                  40.0: {   'example': 1.0,
                            'field_name': 'stance_time_percent',
                            'field_type': 'uint16',
                            'scale': 100.0,
                            'units': 'percent'},
                  41.0: {   'example': 1.0,
                            'field_name': 'stance_time',
                            'field_type': 'uint16',
                            'scale': 10.0,
                            'units': 'ms'},
                  42.0: {   'example': 1.0,
                            'field_name': 'activity_type',
                            'field_type': 'activity_type'},
                  43.0: {   'example': 1.0,
                            'field_name': 'left_torque_effectiveness',
                            'field_type': 'uint8',
                            'scale': 2.0,
                            'units': 'percent'},
                  44.0: {   'example': 1.0,
                            'field_name': 'right_torque_effectiveness',
                            'field_type': 'uint8',
                            'scale': 2.0,
                            'units': 'percent'},
                  45.0: {   'example': 1.0,
                            'field_name': 'left_pedal_smoothness',
                            'field_type': 'uint8',
                            'scale': 2.0,
                            'units': 'percent'},
                  46.0: {   'example': 1.0,
                            'field_name': 'right_pedal_smoothness',
                            'field_type': 'uint8',
                            'scale': 2.0,
                            'units': 'percent'},
                  47.0: {   'example': 1.0,
                            'field_name': 'combined_pedal_smoothness',
                            'field_type': 'uint8',
                            'scale': 2.0,
                            'units': 'percent'},
                  48.0: {   'example': 1.0,
                            'field_name': 'time128',
                            'field_type': 'uint8',
                            'scale': 128.0,
                            'units': 's'},
                  49.0: {   'example': 1.0,
                            'field_name': 'stroke_type',
                            'field_type': 'stroke_type'},
                  50.0: {   'example': 1.0,
                            'field_name': 'zone',
                            'field_type': 'uint8'},
                  51.0: {   'example': 1.0,
                            'field_name': 'ball_speed',
                            'field_type': 'uint16',
                            'scale': 100.0,
                            'units': 'm/s'},
                  52.0: {   'comment': 'Log cadence and fractional cadence for '
                                       'backwards compatability',
                            'example': 1.0,
                            'field_name': 'cadence256',
                            'field_type': 'uint16',
                            'scale': 256.0,
                            'units': 'rpm'},
                  53.0: {   'example': 1.0,
                            'field_name': 'fractional_cadence',
                            'field_type': 'uint8',
                            'scale': 128.0,
                            'units': 'rpm'},
                  54.0: {   'comment': 'Total saturated and unsaturated '
                                       'hemoglobin',
                            'example': 1.0,
                            'field_name': 'total_hemoglobin_conc',
                            'field_type': 'uint16',
                            'scale': 100.0,
                            'units': 'g/dL'},
                  55.0: {   'comment': 'Min saturated and unsaturated '
                                       'hemoglobin',
                            'example': 1.0,
                            'field_name': 'total_hemoglobin_conc_min',
                            'field_type': 'uint16',
                            'scale': 100.0,
                            'units': 'g/dL'},
                  56.0: {   'comment': 'Max saturated and unsaturated '
                                       'hemoglobin',
                            'example': 1.0,
                            'field_name': 'total_hemoglobin_conc_max',
                            'field_type': 'uint16',
                            'scale': 100.0,
                            'units': 'g/dL'},
                  57.0: {   'comment': 'Percentage of hemoglobin saturated '
                                       'with oxygen',
                            'example': 1.0,
                            'field_name': 'saturated_hemoglobin_percent',
                            'field_type': 'uint16',
                            'scale': 10.0,
                            'units': '%'},
                  58.0: {   'comment': 'Min percentage of hemoglobin saturated '
                                       'with oxygen',
                            'example': 1.0,
                            'field_name': 'saturated_hemoglobin_percent_min',
                            'field_type': 'uint16',
                            'scale': 10.0,
                            'units': '%'},
                  59.0: {   'comment': 'Max percentage of hemoglobin saturated '
                                       'with oxygen',
                            'example': 1.0,
                            'field_name': 'saturated_hemoglobin_percent_max',
                            'field_type': 'uint16',
                            'scale': 10.0,
                            'units': '%'},
                  62.0: {   'example': 1.0,
                            'field_name': 'device_index',
                            'field_type': 'device_index'},
                  67.0: {   'comment': 'Left platform center offset',
                            'field_name': 'left_pco',
                            'field_type': 'sint8',
                            'units': 'mm'},
                  68.0: {   'comment': 'Right platform center offset',
                            'field_name': 'right_pco',
                            'field_type': 'sint8',
                            'units': 'mm'},
                  69.0: {   'array': '[N]',
                            'comment': 'Left power phase angles. Data value '
                                       'indexes defined by power_phase_type.',
                            'field_name': 'left_power_phase',
                            'field_type': 'uint8',
                            'scale': 0.7111111,
                            'units': 'degrees'},
                  70.0: {   'array': '[N]',
                            'comment': 'Left power phase peak angles. Data '
                                       'value indexes defined by '
                                       'power_phase_type.',
                            'field_name': 'left_power_phase_peak',
                            'field_type': 'uint8',
                            'scale': 0.7111111,
                            'units': 'degrees'},
                  71.0: {   'array': '[N]',
                            'comment': 'Right power phase angles. Data value '
                                       'indexes defined by power_phase_type.',
                            'field_name': 'right_power_phase',
                            'field_type': 'uint8',
                            'scale': 0.7111111,
                            'units': 'degrees'},
                  72.0: {   'array': '[N]',
                            'comment': 'Right power phase peak angles. Data '
                                       'value indexes defined by '
                                       'power_phase_type.',
                            'field_name': 'right_power_phase_peak',
                            'field_type': 'uint8',
                            'scale': 0.7111111,
                            'units': 'degrees'},
                  73.0: {   'example': 1.0,
                            'field_name': 'enhanced_speed',
                            'field_type': 'uint32',
                            'scale': 1000.0,
                            'units': 'm/s'},
                  78.0: {   'example': 1.0,
                            'field_name': 'enhanced_altitude',
                            'field_type': 'uint32',
                            'offset': 500.0,
                            'scale': 5.0,
                            'units': 'm'},
                  81.0: {   'comment': 'lev battery state of charge',
                            'field_name': 'battery_soc',
                            'field_type': 'uint8',
                            'scale': 2.0,
                            'units': 'percent'},
                  82.0: {   'comment': 'lev motor power',
                            'field_name': 'motor_power',
                            'field_type': 'uint16',
                            'units': 'watts'},
                  253.0: {   'example': 1.0,
                             'field_name': 'timestamp',
                             'field_type': 'date_time',
                             'units': 's'}},
    'schedule': {   0.0: {   'comment': 'Corresponds to file_id of scheduled '
                                        'workout / course.',
                             'example': 1.0,
                             'field_name': 'manufacturer',
                             'field_type': 'manufacturer'},
                    1.0: {   'comment': 'Corresponds to file_id of scheduled '
                                        'workout / course.',
                             'example': 1.0,
                             'field_name': 'product',
                             'field_type': 'uint16',
                             'subfields': {   'garmin_product': {   'example': 1.0,
                                                                    'field_name': 'garmin_product',
                                                                    'field_type': 'garmin_product',
                                                                    'ref_field_name': 'manufacturer',
                                                                    'ref_field_value': {   'dynastream',
                                                                                           'dynastream_oem',
                                                                                           'garmin'}}}},
                    2.0: {   'comment': 'Corresponds to file_id of scheduled '
                                        'workout / course.',
                             'example': 1.0,
                             'field_name': 'serial_number',
                             'field_type': 'uint32z'},
                    3.0: {   'comment': 'Corresponds to file_id of scheduled '
                                        'workout / course.',
                             'example': 1.0,
                             'field_name': 'time_created',
                             'field_type': 'date_time'},
                    4.0: {   'comment': 'TRUE if this activity has been '
                                        'started',
                             'example': 1.0,
                             'field_name': 'completed',
                             'field_type': 'bool'},
                    5.0: {   'example': 1.0,
                             'field_name': 'type',
                             'field_type': 'schedule'},
                    6.0: {   'example': 1.0,
                             'field_name': 'scheduled_time',
                             'field_type': 'local_date_time'}},
    'sdm_profile': {   0.0: {   'example': 1.0,
                                'field_name': 'enabled',
                                'field_type': 'bool'},
                       1.0: {   'example': 1.0,
                                'field_name': 'sdm_ant_id',
                                'field_type': 'uint16z'},
                       2.0: {   'example': 1.0,
                                'field_name': 'sdm_cal_factor',
                                'field_type': 'uint16',
                                'scale': 10.0,
                                'units': '%'},
                       3.0: {   'example': 1.0,
                                'field_name': 'odometer',
                                'field_type': 'uint32',
                                'scale': 100.0,
                                'units': 'm'},
                       4.0: {   'comment': 'Use footpod for speed source '
                                           'instead of GPS',
                                'example': 1.0,
                                'field_name': 'speed_source',
                                'field_type': 'bool'},
                       5.0: {   'example': 1.0,
                                'field_name': 'sdm_ant_id_trans_type',
                                'field_type': 'uint8z'},
                       7.0: {   'comment': 'Rollover counter that can be used '
                                           'to extend the odometer',
                                'example': 1.0,
                                'field_name': 'odometer_rollover',
                                'field_type': 'uint8'},
                       254.0: {   'example': 1.0,
                                  'field_name': 'message_index',
                                  'field_type': 'message_index'}},
    'segment_file': {   1.0: {   'comment': 'UUID of the segment file',
                                 'example': 1.0,
                                 'field_name': 'file_uuid',
                                 'field_type': 'string'},
                        3.0: {   'comment': 'Enabled state of the segment file',
                                 'example': 1.0,
                                 'field_name': 'enabled',
                                 'field_type': 'bool'},
                        4.0: {   'comment': 'Primary key of the user that '
                                            'created the segment file',
                                 'example': 1.0,
                                 'field_name': 'user_profile_primary_key',
                                 'field_type': 'uint32'},
                        7.0: {   'array': '[N]',
                                 'comment': 'Leader type of each leader in the '
                                            'segment file',
                                 'example': 1.0,
                                 'field_name': 'leader_type',
                                 'field_type': 'segment_leaderboard_type'},
                        8.0: {   'array': '[N]',
                                 'comment': 'Group primary key of each leader '
                                            'in the segment file',
                                 'example': 1.0,
                                 'field_name': 'leader_group_primary_key',
                                 'field_type': 'uint32'},
                        9.0: {   'array': '[N]',
                                 'comment': 'Activity ID of each leader in the '
                                            'segment file',
                                 'example': 1.0,
                                 'field_name': 'leader_activity_id',
                                 'field_type': 'uint32'},
                        10.0: {   'array': '[N]',
                                  'comment': 'String version of the activity '
                                             'ID of each leader in the segment '
                                             'file. 21 characters long for '
                                             'each ID, express in decimal',
                                  'field_name': 'leader_activity_id_string',
                                  'field_type': 'string'},
                        254.0: {   'example': 1.0,
                                   'field_name': 'message_index',
                                   'field_type': 'message_index'}},
    'segment_id': {   0.0: {   'comment': 'Friendly name assigned to segment',
                               'example': 1.0,
                               'field_name': 'name',
                               'field_type': 'string'},
                      1.0: {   'comment': 'UUID of the segment',
                               'example': 1.0,
                               'field_name': 'uuid',
                               'field_type': 'string'},
                      2.0: {   'comment': 'Sport associated with the segment',
                               'example': 1.0,
                               'field_name': 'sport',
                               'field_type': 'sport'},
                      3.0: {   'comment': 'Segment enabled for evaluation',
                               'example': 1.0,
                               'field_name': 'enabled',
                               'field_type': 'bool'},
                      4.0: {   'comment': 'Primary key of the user that '
                                          'created the segment ',
                               'example': 1.0,
                               'field_name': 'user_profile_primary_key',
                               'field_type': 'uint32'},
                      5.0: {   'comment': 'ID of the device that created the '
                                          'segment',
                               'example': 1.0,
                               'field_name': 'device_id',
                               'field_type': 'uint32'},
                      6.0: {   'comment': 'Index for the Leader Board entry '
                                          'selected as the default race '
                                          'participant',
                               'example': 1.0,
                               'field_name': 'default_race_leader',
                               'field_type': 'uint8'},
                      7.0: {   'comment': 'Indicates if any segments should be '
                                          'deleted',
                               'example': 1.0,
                               'field_name': 'delete_status',
                               'field_type': 'segment_delete_status'},
                      8.0: {   'comment': 'Indicates how the segment was '
                                          'selected to be sent to the device',
                               'example': 1.0,
                               'field_name': 'selection_type',
                               'field_type': 'segment_selection_type'}},
    'segment_lap': {   0.0: {   'example': 1.0,
                                'field_name': 'event',
                                'field_type': 'event'},
                       1.0: {   'example': 1.0,
                                'field_name': 'event_type',
                                'field_type': 'event_type'},
                       2.0: {   'example': 1.0,
                                'field_name': 'start_time',
                                'field_type': 'date_time'},
                       3.0: {   'example': 1.0,
                                'field_name': 'start_position_lat',
                                'field_type': 'sint32',
                                'units': 'semicircles'},
                       4.0: {   'example': 1.0,
                                'field_name': 'start_position_long',
                                'field_type': 'sint32',
                                'units': 'semicircles'},
                       5.0: {   'example': 1.0,
                                'field_name': 'end_position_lat',
                                'field_type': 'sint32',
                                'units': 'semicircles'},
                       6.0: {   'example': 1.0,
                                'field_name': 'end_position_long',
                                'field_type': 'sint32',
                                'units': 'semicircles'},
                       7.0: {   'comment': 'Time (includes pauses)',
                                'example': 1.0,
                                'field_name': 'total_elapsed_time',
                                'field_type': 'uint32',
                                'scale': 1000.0,
                                'units': 's'},
                       8.0: {   'comment': 'Timer Time (excludes pauses)',
                                'example': 1.0,
                                'field_name': 'total_timer_time',
                                'field_type': 'uint32',
                                'scale': 1000.0,
                                'units': 's'},
                       9.0: {   'example': 1.0,
                                'field_name': 'total_distance',
                                'field_type': 'uint32',
                                'scale': 100.0,
                                'units': 'm'},
                       10.0: {   'example': 1.0,
                                 'field_name': 'total_cycles',
                                 'field_type': 'uint32',
                                 'subfields': {   'total_strokes': {   'example': 1.0,
                                                                       'field_name': 'total_strokes',
                                                                       'field_type': 'uint32',
                                                                       'ref_field_name': 'sport',
                                                                       'ref_field_value': {   'cycling'},
                                                                       'units': 'strokes'}},
                                 'units': 'cycles'},
                       11.0: {   'example': 1.0,
                                 'field_name': 'total_calories',
                                 'field_type': 'uint16',
                                 'units': 'kcal'},
                       12.0: {   'comment': 'If New Leaf',
                                 'example': 1.0,
                                 'field_name': 'total_fat_calories',
                                 'field_type': 'uint16',
                                 'units': 'kcal'},
                       13.0: {   'example': 1.0,
                                 'field_name': 'avg_speed',
                                 'field_type': 'uint16',
                                 'scale': 1000.0,
                                 'units': 'm/s'},
                       14.0: {   'example': 1.0,
                                 'field_name': 'max_speed',
                                 'field_type': 'uint16',
                                 'scale': 1000.0,
                                 'units': 'm/s'},
                       15.0: {   'example': 1.0,
                                 'field_name': 'avg_heart_rate',
                                 'field_type': 'uint8',
                                 'units': 'bpm'},
                       16.0: {   'example': 1.0,
                                 'field_name': 'max_heart_rate',
                                 'field_type': 'uint8',
                                 'units': 'bpm'},
                       17.0: {   'comment': 'total_cycles / total_timer_time '
                                            'if non_zero_avg_cadence otherwise '
                                            'total_cycles / total_elapsed_time',
                                 'example': 1.0,
                                 'field_name': 'avg_cadence',
                                 'field_type': 'uint8',
                                 'units': 'rpm'},
                       18.0: {   'example': 1.0,
                                 'field_name': 'max_cadence',
                                 'field_type': 'uint8',
                                 'units': 'rpm'},
                       19.0: {   'comment': 'total_power / total_timer_time if '
                                            'non_zero_avg_power otherwise '
                                            'total_power / total_elapsed_time',
                                 'example': 1.0,
                                 'field_name': 'avg_power',
                                 'field_type': 'uint16',
                                 'units': 'watts'},
                       20.0: {   'example': 1.0,
                                 'field_name': 'max_power',
                                 'field_type': 'uint16',
                                 'units': 'watts'},
                       21.0: {   'example': 1.0,
                                 'field_name': 'total_ascent',
                                 'field_type': 'uint16',
                                 'units': 'm'},
                       22.0: {   'example': 1.0,
                                 'field_name': 'total_descent',
                                 'field_type': 'uint16',
                                 'units': 'm'},
                       23.0: {   'example': 1.0,
                                 'field_name': 'sport',
                                 'field_type': 'sport'},
                       24.0: {   'example': 1.0,
                                 'field_name': 'event_group',
                                 'field_type': 'uint8'},
                       25.0: {   'comment': 'North east corner latitude.',
                                 'example': 1.0,
                                 'field_name': 'nec_lat',
                                 'field_type': 'sint32',
                                 'units': 'semicircles'},
                       26.0: {   'comment': 'North east corner longitude.',
                                 'example': 1.0,
                                 'field_name': 'nec_long',
                                 'field_type': 'sint32',
                                 'units': 'semicircles'},
                       27.0: {   'comment': 'South west corner latitude.',
                                 'example': 1.0,
                                 'field_name': 'swc_lat',
                                 'field_type': 'sint32',
                                 'units': 'semicircles'},
                       28.0: {   'comment': 'South west corner latitude.',
                                 'example': 1.0,
                                 'field_name': 'swc_long',
                                 'field_type': 'sint32',
                                 'units': 'semicircles'},
                       29.0: {   'example': 16.0,
                                 'field_name': 'name',
                                 'field_type': 'string'},
                       30.0: {   'example': 1.0,
                                 'field_name': 'normalized_power',
                                 'field_type': 'uint16',
                                 'units': 'watts'},
                       31.0: {   'example': 1.0,
                                 'field_name': 'left_right_balance',
                                 'field_type': 'left_right_balance_100'},
                       32.0: {   'example': 1.0,
                                 'field_name': 'sub_sport',
                                 'field_type': 'sub_sport'},
                       33.0: {   'example': 1.0,
                                 'field_name': 'total_work',
                                 'field_type': 'uint32',
                                 'units': 'J'},
                       34.0: {   'example': 1.0,
                                 'field_name': 'avg_altitude',
                                 'field_type': 'uint16',
                                 'offset': 500.0,
                                 'scale': 5.0,
                                 'units': 'm'},
                       35.0: {   'example': 1.0,
                                 'field_name': 'max_altitude',
                                 'field_type': 'uint16',
                                 'offset': 500.0,
                                 'scale': 5.0,
                                 'units': 'm'},
                       36.0: {   'example': 1.0,
                                 'field_name': 'gps_accuracy',
                                 'field_type': 'uint8',
                                 'units': 'm'},
                       37.0: {   'example': 1.0,
                                 'field_name': 'avg_grade',
                                 'field_type': 'sint16',
                                 'scale': 100.0,
                                 'units': '%'},
                       38.0: {   'example': 1.0,
                                 'field_name': 'avg_pos_grade',
                                 'field_type': 'sint16',
                                 'scale': 100.0,
                                 'units': '%'},
                       39.0: {   'example': 1.0,
                                 'field_name': 'avg_neg_grade',
                                 'field_type': 'sint16',
                                 'scale': 100.0,
                                 'units': '%'},
                       40.0: {   'example': 1.0,
                                 'field_name': 'max_pos_grade',
                                 'field_type': 'sint16',
                                 'scale': 100.0,
                                 'units': '%'},
                       41.0: {   'example': 1.0,
                                 'field_name': 'max_neg_grade',
                                 'field_type': 'sint16',
                                 'scale': 100.0,
                                 'units': '%'},
                       42.0: {   'example': 1.0,
                                 'field_name': 'avg_temperature',
                                 'field_type': 'sint8',
                                 'units': 'C'},
                       43.0: {   'example': 1.0,
                                 'field_name': 'max_temperature',
                                 'field_type': 'sint8',
                                 'units': 'C'},
                       44.0: {   'example': 1.0,
                                 'field_name': 'total_moving_time',
                                 'field_type': 'uint32',
                                 'scale': 1000.0,
                                 'units': 's'},
                       45.0: {   'example': 1.0,
                                 'field_name': 'avg_pos_vertical_speed',
                                 'field_type': 'sint16',
                                 'scale': 1000.0,
                                 'units': 'm/s'},
                       46.0: {   'example': 1.0,
                                 'field_name': 'avg_neg_vertical_speed',
                                 'field_type': 'sint16',
                                 'scale': 1000.0,
                                 'units': 'm/s'},
                       47.0: {   'example': 1.0,
                                 'field_name': 'max_pos_vertical_speed',
                                 'field_type': 'sint16',
                                 'scale': 1000.0,
                                 'units': 'm/s'},
                       48.0: {   'example': 1.0,
                                 'field_name': 'max_neg_vertical_speed',
                                 'field_type': 'sint16',
                                 'scale': 1000.0,
                                 'units': 'm/s'},
                       49.0: {   'array': '[N]',
                                 'example': 1.0,
                                 'field_name': 'time_in_hr_zone',
                                 'field_type': 'uint32',
                                 'scale': 1000.0,
                                 'units': 's'},
                       50.0: {   'array': '[N]',
                                 'example': 1.0,
                                 'field_name': 'time_in_speed_zone',
                                 'field_type': 'uint32',
                                 'scale': 1000.0,
                                 'units': 's'},
                       51.0: {   'array': '[N]',
                                 'example': 1.0,
                                 'field_name': 'time_in_cadence_zone',
                                 'field_type': 'uint32',
                                 'scale': 1000.0,
                                 'units': 's'},
                       52.0: {   'array': '[N]',
                                 'example': 1.0,
                                 'field_name': 'time_in_power_zone',
                                 'field_type': 'uint32',
                                 'scale': 1000.0,
                                 'units': 's'},
                       53.0: {   'example': 1.0,
                                 'field_name': 'repetition_num',
                                 'field_type': 'uint16'},
                       54.0: {   'example': 1.0,
                                 'field_name': 'min_altitude',
                                 'field_type': 'uint16',
                                 'offset': 500.0,
                                 'scale': 5.0,
                                 'units': 'm'},
                       55.0: {   'example': 1.0,
                                 'field_name': 'min_heart_rate',
                                 'field_type': 'uint8',
                                 'units': 'bpm'},
                       56.0: {   'example': 1.0,
                                 'field_name': 'active_time',
                                 'field_type': 'uint32',
                                 'scale': 1000.0,
                                 'units': 's'},
                       57.0: {   'example': 1.0,
                                 'field_name': 'wkt_step_index',
                                 'field_type': 'message_index'},
                       58.0: {   'example': 1.0,
                                 'field_name': 'sport_event',
                                 'field_type': 'sport_event'},
                       59.0: {   'example': 1.0,
                                 'field_name': 'avg_left_torque_effectiveness',
                                 'field_type': 'uint8',
                                 'scale': 2.0,
                                 'units': 'percent'},
                       60.0: {   'example': 1.0,
                                 'field_name': 'avg_right_torque_effectiveness',
                                 'field_type': 'uint8',
                                 'scale': 2.0,
                                 'units': 'percent'},
                       61.0: {   'example': 1.0,
                                 'field_name': 'avg_left_pedal_smoothness',
                                 'field_type': 'uint8',
                                 'scale': 2.0,
                                 'units': 'percent'},
                       62.0: {   'example': 1.0,
                                 'field_name': 'avg_right_pedal_smoothness',
                                 'field_type': 'uint8',
                                 'scale': 2.0,
                                 'units': 'percent'},
                       63.0: {   'example': 1.0,
                                 'field_name': 'avg_combined_pedal_smoothness',
                                 'field_type': 'uint8',
                                 'scale': 2.0,
                                 'units': 'percent'},
                       64.0: {   'example': 1.0,
                                 'field_name': 'status',
                                 'field_type': 'segment_lap_status'},
                       65.0: {   'example': 33.0,
                                 'field_name': 'uuid',
                                 'field_type': 'string'},
                       66.0: {   'comment': 'fractional part of the '
                                            'avg_cadence',
                                 'example': 1.0,
                                 'field_name': 'avg_fractional_cadence',
                                 'field_type': 'uint8',
                                 'scale': 128.0,
                                 'units': 'rpm'},
                       67.0: {   'comment': 'fractional part of the '
                                            'max_cadence',
                                 'example': 1.0,
                                 'field_name': 'max_fractional_cadence',
                                 'field_type': 'uint8',
                                 'scale': 128.0,
                                 'units': 'rpm'},
                       68.0: {   'comment': 'fractional part of the '
                                            'total_cycles',
                                 'example': 1.0,
                                 'field_name': 'total_fractional_cycles',
                                 'field_type': 'uint8',
                                 'scale': 128.0,
                                 'units': 'cycles'},
                       69.0: {   'example': 1.0,
                                 'field_name': 'front_gear_shift_count',
                                 'field_type': 'uint16'},
                       70.0: {   'example': 1.0,
                                 'field_name': 'rear_gear_shift_count',
                                 'field_type': 'uint16'},
                       71.0: {   'comment': 'Total time spent in the standing '
                                            'position',
                                 'field_name': 'time_standing',
                                 'field_type': 'uint32',
                                 'scale': 1000.0,
                                 'units': 's'},
                       72.0: {   'comment': 'Number of transitions to the '
                                            'standing state',
                                 'field_name': 'stand_count',
                                 'field_type': 'uint16'},
                       73.0: {   'comment': 'Average left platform center '
                                            'offset',
                                 'field_name': 'avg_left_pco',
                                 'field_type': 'sint8',
                                 'units': 'mm'},
                       74.0: {   'comment': 'Average right platform center '
                                            'offset',
                                 'field_name': 'avg_right_pco',
                                 'field_type': 'sint8',
                                 'units': 'mm'},
                       75.0: {   'array': '[N]',
                                 'comment': 'Average left power phase angles. '
                                            'Data value indexes defined by '
                                            'power_phase_type.',
                                 'field_name': 'avg_left_power_phase',
                                 'field_type': 'uint8',
                                 'scale': 0.7111111,
                                 'units': 'degrees'},
                       76.0: {   'array': '[N]',
                                 'comment': 'Average left power phase peak '
                                            'angles. Data value indexes '
                                            'defined by power_phase_type.',
                                 'field_name': 'avg_left_power_phase_peak',
                                 'field_type': 'uint8',
                                 'scale': 0.7111111,
                                 'units': 'degrees'},
                       77.0: {   'array': '[N]',
                                 'comment': 'Average right power phase angles. '
                                            'Data value indexes defined by '
                                            'power_phase_type.',
                                 'field_name': 'avg_right_power_phase',
                                 'field_type': 'uint8',
                                 'scale': 0.7111111,
                                 'units': 'degrees'},
                       78.0: {   'array': '[N]',
                                 'comment': 'Average right power phase peak '
                                            'angles. Data value indexes '
                                            'defined by power_phase_type.',
                                 'field_name': 'avg_right_power_phase_peak',
                                 'field_type': 'uint8',
                                 'scale': 0.7111111,
                                 'units': 'degrees'},
                       79.0: {   'array': '[N]',
                                 'comment': 'Average power by position. Data '
                                            'value indexes defined by '
                                            'rider_position_type.',
                                 'field_name': 'avg_power_position',
                                 'field_type': 'uint16',
                                 'units': 'watts'},
                       80.0: {   'array': '[N]',
                                 'comment': 'Maximum power by position. Data '
                                            'value indexes defined by '
                                            'rider_position_type.',
                                 'field_name': 'max_power_position',
                                 'field_type': 'uint16',
                                 'units': 'watts'},
                       81.0: {   'array': '[N]',
                                 'comment': 'Average cadence by position. Data '
                                            'value indexes defined by '
                                            'rider_position_type.',
                                 'field_name': 'avg_cadence_position',
                                 'field_type': 'uint8',
                                 'units': 'rpm'},
                       82.0: {   'array': '[N]',
                                 'comment': 'Maximum cadence by position. Data '
                                            'value indexes defined by '
                                            'rider_position_type.',
                                 'field_name': 'max_cadence_position',
                                 'field_type': 'uint8',
                                 'units': 'rpm'},
                       253.0: {   'comment': 'Lap end time.',
                                  'example': 1.0,
                                  'field_name': 'timestamp',
                                  'field_type': 'date_time',
                                  'units': 's'},
                       254.0: {   'example': 1.0,
                                  'field_name': 'message_index',
                                  'field_type': 'message_index'}},
    'segment_leaderboard_entry': {   0.0: {   'comment': 'Friendly name '
                                                         'assigned to leader',
                                              'example': 1.0,
                                              'field_name': 'name',
                                              'field_type': 'string'},
                                     1.0: {   'comment': 'Leader '
                                                         'classification',
                                              'example': 1.0,
                                              'field_name': 'type',
                                              'field_type': 'segment_leaderboard_type'},
                                     2.0: {   'comment': 'Primary user ID of '
                                                         'this leader',
                                              'example': 1.0,
                                              'field_name': 'group_primary_key',
                                              'field_type': 'uint32'},
                                     3.0: {   'comment': 'ID of the activity '
                                                         'associated with this '
                                                         'leader time',
                                              'example': 1.0,
                                              'field_name': 'activity_id',
                                              'field_type': 'uint32'},
                                     4.0: {   'comment': 'Segment Time '
                                                         '(includes pauses)',
                                              'example': 1.0,
                                              'field_name': 'segment_time',
                                              'field_type': 'uint32',
                                              'scale': 1000.0,
                                              'units': 's'},
                                     5.0: {   'comment': 'String version of '
                                                         'the activity_id. 21 '
                                                         'characters long, '
                                                         'express in decimal',
                                              'field_name': 'activity_id_string',
                                              'field_type': 'string'},
                                     254.0: {   'example': 1.0,
                                                'field_name': 'message_index',
                                                'field_type': 'message_index'}},
    'segment_point': {   1.0: {   'example': 1.0,
                                  'field_name': 'position_lat',
                                  'field_type': 'sint32',
                                  'units': 'semicircles'},
                         2.0: {   'example': 1.0,
                                  'field_name': 'position_long',
                                  'field_type': 'sint32',
                                  'units': 'semicircles'},
                         3.0: {   'comment': 'Accumulated distance along the '
                                             'segment at the described point',
                                  'example': 1.0,
                                  'field_name': 'distance',
                                  'field_type': 'uint32',
                                  'scale': 100.0,
                                  'units': 'm'},
                         4.0: {   'comment': 'Accumulated altitude along the '
                                             'segment at the described point',
                                  'example': 1.0,
                                  'field_name': 'altitude',
                                  'field_type': 'uint16',
                                  'offset': 500.0,
                                  'scale': 5.0,
                                  'units': 'm'},
                         5.0: {   'array': '[N]',
                                  'comment': 'Accumualted time each leader '
                                             'board member required to reach '
                                             'the described point. This value '
                                             'is zero for all leader board '
                                             'members at the starting point of '
                                             'the segment. ',
                                  'example': 1.0,
                                  'field_name': 'leader_time',
                                  'field_type': 'uint32',
                                  'scale': 1000.0,
                                  'units': 's'},
                         254.0: {   'example': 1.0,
                                    'field_name': 'message_index',
                                    'field_type': 'message_index'}},
    'session': {   0.0: {   'comment': 'session',
                            'example': 1.0,
                            'field_name': 'event',
                            'field_type': 'event'},
                   1.0: {   'comment': 'stop',
                            'example': 1.0,
                            'field_name': 'event_type',
                            'field_type': 'event_type'},
                   2.0: {   'example': 1.0,
                            'field_name': 'start_time',
                            'field_type': 'date_time'},
                   3.0: {   'example': 1.0,
                            'field_name': 'start_position_lat',
                            'field_type': 'sint32',
                            'units': 'semicircles'},
                   4.0: {   'example': 1.0,
                            'field_name': 'start_position_long',
                            'field_type': 'sint32',
                            'units': 'semicircles'},
                   5.0: {   'example': 1.0,
                            'field_name': 'sport',
                            'field_type': 'sport'},
                   6.0: {   'example': 1.0,
                            'field_name': 'sub_sport',
                            'field_type': 'sub_sport'},
                   7.0: {   'comment': 'Time (includes pauses)',
                            'example': 1.0,
                            'field_name': 'total_elapsed_time',
                            'field_type': 'uint32',
                            'scale': 1000.0,
                            'units': 's'},
                   8.0: {   'comment': 'Timer Time (excludes pauses)',
                            'example': 1.0,
                            'field_name': 'total_timer_time',
                            'field_type': 'uint32',
                            'scale': 1000.0,
                            'units': 's'},
                   9.0: {   'example': 1.0,
                            'field_name': 'total_distance',
                            'field_type': 'uint32',
                            'scale': 100.0,
                            'units': 'm'},
                   10.0: {   'example': 1.0,
                             'field_name': 'total_cycles',
                             'field_type': 'uint32',
                             'subfields': {   'total_strides': {   'example': 1.0,
                                                                   'field_name': 'total_strides',
                                                                   'field_type': 'uint32',
                                                                   'ref_field_name': 'sport',
                                                                   'ref_field_value': {   'running',
                                                                                          'walking'},
                                                                   'units': 'strides'}},
                             'units': 'cycles'},
                   11.0: {   'example': 1.0,
                             'field_name': 'total_calories',
                             'field_type': 'uint16',
                             'units': 'kcal'},
                   13.0: {   'example': 1.0,
                             'field_name': 'total_fat_calories',
                             'field_type': 'uint16',
                             'units': 'kcal'},
                   14.0: {   'bits': 16.0,
                             'comment': 'total_distance / total_timer_time',
                             'components': 'enhanced_avg_speed',
                             'example': 1.0,
                             'field_name': 'avg_speed',
                             'field_type': 'uint16',
                             'scale': 1000.0,
                             'units': 'm/s'},
                   15.0: {   'bits': 16.0,
                             'components': 'enhanced_max_speed',
                             'example': 1.0,
                             'field_name': 'max_speed',
                             'field_type': 'uint16',
                             'scale': 1000.0,
                             'units': 'm/s'},
                   16.0: {   'comment': 'average heart rate (excludes pause '
                                        'time)',
                             'example': 1.0,
                             'field_name': 'avg_heart_rate',
                             'field_type': 'uint8',
                             'units': 'bpm'},
                   17.0: {   'example': 1.0,
                             'field_name': 'max_heart_rate',
                             'field_type': 'uint8',
                             'units': 'bpm'},
                   18.0: {   'comment': 'total_cycles / total_timer_time if '
                                        'non_zero_avg_cadence otherwise '
                                        'total_cycles / total_elapsed_time',
                             'example': 1.0,
                             'field_name': 'avg_cadence',
                             'field_type': 'uint8',
                             'subfields': {   'avg_running_cadence': {   'example': 1.0,
                                                                         'field_name': 'avg_running_cadence',
                                                                         'field_type': 'uint8',
                                                                         'ref_field_name': 'sport',
                                                                         'ref_field_value': {   'running'},
                                                                         'units': 'strides/min'}},
                             'units': 'rpm'},
                   19.0: {   'example': 1.0,
                             'field_name': 'max_cadence',
                             'field_type': 'uint8',
                             'subfields': {   'max_running_cadence': {   'example': 1.0,
                                                                         'field_name': 'max_running_cadence',
                                                                         'field_type': 'uint8',
                                                                         'ref_field_name': 'sport',
                                                                         'ref_field_value': {   'running'},
                                                                         'units': 'strides/min'}},
                             'units': 'rpm'},
                   20.0: {   'comment': 'total_power / total_timer_time if '
                                        'non_zero_avg_power otherwise '
                                        'total_power / total_elapsed_time',
                             'example': 1.0,
                             'field_name': 'avg_power',
                             'field_type': 'uint16',
                             'units': 'watts'},
                   21.0: {   'example': 1.0,
                             'field_name': 'max_power',
                             'field_type': 'uint16',
                             'units': 'watts'},
                   22.0: {   'example': 1.0,
                             'field_name': 'total_ascent',
                             'field_type': 'uint16',
                             'units': 'm'},
                   23.0: {   'example': 1.0,
                             'field_name': 'total_descent',
                             'field_type': 'uint16',
                             'units': 'm'},
                   24.0: {   'example': 1.0,
                             'field_name': 'total_training_effect',
                             'field_type': 'uint8',
                             'scale': 10.0},
                   25.0: {   'example': 1.0,
                             'field_name': 'first_lap_index',
                             'field_type': 'uint16'},
                   26.0: {   'example': 1.0,
                             'field_name': 'num_laps',
                             'field_type': 'uint16'},
                   27.0: {   'example': 1.0,
                             'field_name': 'event_group',
                             'field_type': 'uint8'},
                   28.0: {   'example': 1.0,
                             'field_name': 'trigger',
                             'field_type': 'session_trigger'},
                   29.0: {   'example': 1.0,
                             'field_name': 'nec_lat',
                             'field_type': 'sint32',
                             'units': 'semicircles'},
                   30.0: {   'example': 1.0,
                             'field_name': 'nec_long',
                             'field_type': 'sint32',
                             'units': 'semicircles'},
                   31.0: {   'example': 1.0,
                             'field_name': 'swc_lat',
                             'field_type': 'sint32',
                             'units': 'semicircles'},
                   32.0: {   'example': 1.0,
                             'field_name': 'swc_long',
                             'field_type': 'sint32',
                             'units': 'semicircles'},
                   34.0: {   'example': 1.0,
                             'field_name': 'normalized_power',
                             'field_type': 'uint16',
                             'units': 'watts'},
                   35.0: {   'example': 1.0,
                             'field_name': 'training_stress_score',
                             'field_type': 'uint16',
                             'scale': 10.0,
                             'units': 'tss'},
                   36.0: {   'example': 1.0,
                             'field_name': 'intensity_factor',
                             'field_type': 'uint16',
                             'scale': 1000.0,
                             'units': 'if'},
                   37.0: {   'example': 1.0,
                             'field_name': 'left_right_balance',
                             'field_type': 'left_right_balance_100'},
                   41.0: {   'example': 1.0,
                             'field_name': 'avg_stroke_count',
                             'field_type': 'uint32',
                             'scale': 10.0,
                             'units': 'strokes/lap'},
                   42.0: {   'example': 1.0,
                             'field_name': 'avg_stroke_distance',
                             'field_type': 'uint16',
                             'scale': 100.0,
                             'units': 'm'},
                   43.0: {   'example': 1.0,
                             'field_name': 'swim_stroke',
                             'field_type': 'swim_stroke',
                             'ref_field_name': 'sport',
                             'ref_field_value': 'swimming',
                             'units': 'swim_stroke'},
                   44.0: {   'example': 1.0,
                             'field_name': 'pool_length',
                             'field_type': 'uint16',
                             'scale': 100.0,
                             'units': 'm'},
                   45.0: {   'example': 1.0,
                             'field_name': 'threshold_power',
                             'field_type': 'uint16',
                             'units': 'watts'},
                   46.0: {   'example': 1.0,
                             'field_name': 'pool_length_unit',
                             'field_type': 'display_measure'},
                   47.0: {   'comment': '# of active lengths of swim pool',
                             'example': 1.0,
                             'field_name': 'num_active_lengths',
                             'field_type': 'uint16',
                             'units': 'lengths'},
                   48.0: {   'example': 1.0,
                             'field_name': 'total_work',
                             'field_type': 'uint32',
                             'units': 'J'},
                   49.0: {   'bits': 16.0,
                             'components': 'enhanced_avg_altitude',
                             'example': 1.0,
                             'field_name': 'avg_altitude',
                             'field_type': 'uint16',
                             'offset': 500.0,
                             'scale': 5.0,
                             'units': 'm'},
                   50.0: {   'bits': 16.0,
                             'components': 'enhanced_max_altitude',
                             'example': 1.0,
                             'field_name': 'max_altitude',
                             'field_type': 'uint16',
                             'offset': 500.0,
                             'scale': 5.0,
                             'units': 'm'},
                   51.0: {   'example': 1.0,
                             'field_name': 'gps_accuracy',
                             'field_type': 'uint8',
                             'units': 'm'},
                   52.0: {   'example': 1.0,
                             'field_name': 'avg_grade',
                             'field_type': 'sint16',
                             'scale': 100.0,
                             'units': '%'},
                   53.0: {   'example': 1.0,
                             'field_name': 'avg_pos_grade',
                             'field_type': 'sint16',
                             'scale': 100.0,
                             'units': '%'},
                   54.0: {   'example': 1.0,
                             'field_name': 'avg_neg_grade',
                             'field_type': 'sint16',
                             'scale': 100.0,
                             'units': '%'},
                   55.0: {   'example': 1.0,
                             'field_name': 'max_pos_grade',
                             'field_type': 'sint16',
                             'scale': 100.0,
                             'units': '%'},
                   56.0: {   'example': 1.0,
                             'field_name': 'max_neg_grade',
                             'field_type': 'sint16',
                             'scale': 100.0,
                             'units': '%'},
                   57.0: {   'example': 1.0,
                             'field_name': 'avg_temperature',
                             'field_type': 'sint8',
                             'units': 'C'},
                   58.0: {   'example': 1.0,
                             'field_name': 'max_temperature',
                             'field_type': 'sint8',
                             'units': 'C'},
                   59.0: {   'example': 1.0,
                             'field_name': 'total_moving_time',
                             'field_type': 'uint32',
                             'scale': 1000.0,
                             'units': 's'},
                   60.0: {   'example': 1.0,
                             'field_name': 'avg_pos_vertical_speed',
                             'field_type': 'sint16',
                             'scale': 1000.0,
                             'units': 'm/s'},
                   61.0: {   'example': 1.0,
                             'field_name': 'avg_neg_vertical_speed',
                             'field_type': 'sint16',
                             'scale': 1000.0,
                             'units': 'm/s'},
                   62.0: {   'example': 1.0,
                             'field_name': 'max_pos_vertical_speed',
                             'field_type': 'sint16',
                             'scale': 1000.0,
                             'units': 'm/s'},
                   63.0: {   'example': 1.0,
                             'field_name': 'max_neg_vertical_speed',
                             'field_type': 'sint16',
                             'scale': 1000.0,
                             'units': 'm/s'},
                   64.0: {   'example': 1.0,
                             'field_name': 'min_heart_rate',
                             'field_type': 'uint8',
                             'units': 'bpm'},
                   65.0: {   'array': '[N]',
                             'example': 1.0,
                             'field_name': 'time_in_hr_zone',
                             'field_type': 'uint32',
                             'scale': 1000.0,
                             'units': 's'},
                   66.0: {   'array': '[N]',
                             'example': 1.0,
                             'field_name': 'time_in_speed_zone',
                             'field_type': 'uint32',
                             'scale': 1000.0,
                             'units': 's'},
                   67.0: {   'array': '[N]',
                             'example': 1.0,
                             'field_name': 'time_in_cadence_zone',
                             'field_type': 'uint32',
                             'scale': 1000.0,
                             'units': 's'},
                   68.0: {   'array': '[N]',
                             'example': 1.0,
                             'field_name': 'time_in_power_zone',
                             'field_type': 'uint32',
                             'scale': 1000.0,
                             'units': 's'},
                   69.0: {   'example': 1.0,
                             'field_name': 'avg_lap_time',
                             'field_type': 'uint32',
                             'scale': 1000.0,
                             'units': 's'},
                   70.0: {   'example': 1.0,
                             'field_name': 'best_lap_index',
                             'field_type': 'uint16'},
                   71.0: {   'bits': 16.0,
                             'components': 'enhanced_min_altitude',
                             'example': 1.0,
                             'field_name': 'min_altitude',
                             'field_type': 'uint16',
                             'offset': 500.0,
                             'scale': 5.0,
                             'units': 'm'},
                   82.0: {   'example': 1.0,
                             'field_name': 'player_score',
                             'field_type': 'uint16'},
                   83.0: {   'example': 1.0,
                             'field_name': 'opponent_score',
                             'field_type': 'uint16'},
                   84.0: {   'example': 1.0,
                             'field_name': 'opponent_name',
                             'field_type': 'string'},
                   85.0: {   'array': '[N]',
                             'comment': 'stroke_type enum used as the index',
                             'example': 1.0,
                             'field_name': 'stroke_count',
                             'field_type': 'uint16',
                             'units': 'counts'},
                   86.0: {   'array': '[N]',
                             'comment': 'zone number used as the index',
                             'example': 1.0,
                             'field_name': 'zone_count',
                             'field_type': 'uint16',
                             'units': 'counts'},
                   87.0: {   'example': 1.0,
                             'field_name': 'max_ball_speed',
                             'field_type': 'uint16',
                             'scale': 100.0,
                             'units': 'm/s'},
                   88.0: {   'example': 1.0,
                             'field_name': 'avg_ball_speed',
                             'field_type': 'uint16',
                             'scale': 100.0,
                             'units': 'm/s'},
                   89.0: {   'example': 1.0,
                             'field_name': 'avg_vertical_oscillation',
                             'field_type': 'uint16',
                             'scale': 10.0,
                             'units': 'mm'},
                   90.0: {   'example': 1.0,
                             'field_name': 'avg_stance_time_percent',
                             'field_type': 'uint16',
                             'scale': 100.0,
                             'units': 'percent'},
                   91.0: {   'example': 1.0,
                             'field_name': 'avg_stance_time',
                             'field_type': 'uint16',
                             'scale': 10.0,
                             'units': 'ms'},
                   92.0: {   'comment': 'fractional part of the avg_cadence',
                             'example': 1.0,
                             'field_name': 'avg_fractional_cadence',
                             'field_type': 'uint8',
                             'scale': 128.0,
                             'units': 'rpm'},
                   93.0: {   'comment': 'fractional part of the max_cadence',
                             'example': 1.0,
                             'field_name': 'max_fractional_cadence',
                             'field_type': 'uint8',
                             'scale': 128.0,
                             'units': 'rpm'},
                   94.0: {   'comment': 'fractional part of the total_cycles',
                             'example': 1.0,
                             'field_name': 'total_fractional_cycles',
                             'field_type': 'uint8',
                             'scale': 128.0,
                             'units': 'cycles'},
                   95.0: {   'array': '[N]',
                             'comment': 'Avg saturated and unsaturated '
                                        'hemoglobin',
                             'field_name': 'avg_total_hemoglobin_conc',
                             'field_type': 'uint16',
                             'scale': 100.0,
                             'units': 'g/dL'},
                   96.0: {   'array': '[N]',
                             'comment': 'Min saturated and unsaturated '
                                        'hemoglobin',
                             'field_name': 'min_total_hemoglobin_conc',
                             'field_type': 'uint16',
                             'scale': 100.0,
                             'units': 'g/dL'},
                   97.0: {   'array': '[N]',
                             'comment': 'Max saturated and unsaturated '
                                        'hemoglobin',
                             'field_name': 'max_total_hemoglobin_conc',
                             'field_type': 'uint16',
                             'scale': 100.0,
                             'units': 'g/dL'},
                   98.0: {   'array': '[N]',
                             'comment': 'Avg percentage of hemoglobin '
                                        'saturated with oxygen',
                             'field_name': 'avg_saturated_hemoglobin_percent',
                             'field_type': 'uint16',
                             'scale': 10.0,
                             'units': '%'},
                   99.0: {   'array': '[N]',
                             'comment': 'Min percentage of hemoglobin '
                                        'saturated with oxygen',
                             'field_name': 'min_saturated_hemoglobin_percent',
                             'field_type': 'uint16',
                             'scale': 10.0,
                             'units': '%'},
                   100.0: {   'array': '[N]',
                              'comment': 'Max percentage of hemoglobin '
                                         'saturated with oxygen',
                              'field_name': 'max_saturated_hemoglobin_percent',
                              'field_type': 'uint16',
                              'scale': 10.0,
                              'units': '%'},
                   101.0: {   'field_name': 'avg_left_torque_effectiveness',
                              'field_type': 'uint8',
                              'scale': 2.0,
                              'units': 'percent'},
                   102.0: {   'field_name': 'avg_right_torque_effectiveness',
                              'field_type': 'uint8',
                              'scale': 2.0,
                              'units': 'percent'},
                   103.0: {   'field_name': 'avg_left_pedal_smoothness',
                              'field_type': 'uint8',
                              'scale': 2.0,
                              'units': 'percent'},
                   104.0: {   'field_name': 'avg_right_pedal_smoothness',
                              'field_type': 'uint8',
                              'scale': 2.0,
                              'units': 'percent'},
                   105.0: {   'field_name': 'avg_combined_pedal_smoothness',
                              'field_type': 'uint8',
                              'scale': 2.0,
                              'units': 'percent'},
                   111.0: {   'example': 1.0,
                              'field_name': 'sport_index',
                              'field_type': 'uint8'},
                   112.0: {   'comment': 'Total time spend in the standing '
                                         'position',
                              'field_name': 'time_standing',
                              'field_type': 'uint32',
                              'scale': 1000.0,
                              'units': 's'},
                   113.0: {   'comment': 'Number of transitions to the '
                                         'standing state',
                              'field_name': 'stand_count',
                              'field_type': 'uint16'},
                   114.0: {   'comment': 'Average platform center offset Left',
                              'field_name': 'avg_left_pco',
                              'field_type': 'sint8',
                              'units': 'mm'},
                   115.0: {   'comment': 'Average platform center offset Right',
                              'field_name': 'avg_right_pco',
                              'field_type': 'sint8',
                              'units': 'mm'},
                   116.0: {   'array': '[N]',
                              'comment': 'Average left power phase angles. '
                                         'Indexes defined by power_phase_type.',
                              'field_name': 'avg_left_power_phase',
                              'field_type': 'uint8',
                              'scale': 0.7111111,
                              'units': 'degrees'},
                   117.0: {   'array': '[N]',
                              'comment': 'Average left power phase peak '
                                         'angles. Data value indexes defined '
                                         'by power_phase_type.',
                              'field_name': 'avg_left_power_phase_peak',
                              'field_type': 'uint8',
                              'scale': 0.7111111,
                              'units': 'degrees'},
                   118.0: {   'array': '[N]',
                              'comment': 'Average right power phase angles. '
                                         'Data value indexes defined by '
                                         'power_phase_type.',
                              'field_name': 'avg_right_power_phase',
                              'field_type': 'uint8',
                              'scale': 0.7111111,
                              'units': 'degrees'},
                   119.0: {   'array': '[N]',
                              'comment': 'Average right power phase peak '
                                         'angles data value indexes  defined '
                                         'by power_phase_type.',
                              'field_name': 'avg_right_power_phase_peak',
                              'field_type': 'uint8',
                              'scale': 0.7111111,
                              'units': 'degrees'},
                   120.0: {   'array': '[N]',
                              'comment': 'Average power by position. Data '
                                         'value indexes defined by '
                                         'rider_position_type.',
                              'field_name': 'avg_power_position',
                              'field_type': 'uint16',
                              'units': 'watts'},
                   121.0: {   'array': '[N]',
                              'comment': 'Maximum power by position. Data '
                                         'value indexes defined by '
                                         'rider_position_type.',
                              'field_name': 'max_power_position',
                              'field_type': 'uint16',
                              'units': 'watts'},
                   122.0: {   'array': '[N]',
                              'comment': 'Average cadence by position. Data '
                                         'value indexes defined by '
                                         'rider_position_type.',
                              'field_name': 'avg_cadence_position',
                              'field_type': 'uint8',
                              'units': 'rpm'},
                   123.0: {   'array': '[N]',
                              'comment': 'Maximum cadence by position. Data '
                                         'value indexes defined by '
                                         'rider_position_type.',
                              'field_name': 'max_cadence_position',
                              'field_type': 'uint8',
                              'units': 'rpm'},
                   124.0: {   'comment': 'total_distance / total_timer_time',
                              'example': 1.0,
                              'field_name': 'enhanced_avg_speed',
                              'field_type': 'uint32',
                              'scale': 1000.0,
                              'units': 'm/s'},
                   125.0: {   'example': 1.0,
                              'field_name': 'enhanced_max_speed',
                              'field_type': 'uint32',
                              'scale': 1000.0,
                              'units': 'm/s'},
                   126.0: {   'example': 1.0,
                              'field_name': 'enhanced_avg_altitude',
                              'field_type': 'uint32',
                              'offset': 500.0,
                              'scale': 5.0,
                              'units': 'm'},
                   127.0: {   'example': 1.0,
                              'field_name': 'enhanced_min_altitude',
                              'field_type': 'uint32',
                              'offset': 500.0,
                              'scale': 5.0,
                              'units': 'm'},
                   128.0: {   'example': 1.0,
                              'field_name': 'enhanced_max_altitude',
                              'field_type': 'uint32',
                              'offset': 500.0,
                              'scale': 5.0,
                              'units': 'm'},
                   129.0: {   'comment': 'lev average motor power during '
                                         'session',
                              'field_name': 'avg_lev_motor_power',
                              'field_type': 'uint16',
                              'units': 'watts'},
                   130.0: {   'comment': 'lev maximum motor power during '
                                         'session',
                              'field_name': 'max_lev_motor_power',
                              'field_type': 'uint16',
                              'units': 'watts'},
                   131.0: {   'comment': 'lev battery consumption during '
                                         'session',
                              'field_name': 'lev_battery_consumption',
                              'field_type': 'uint8',
                              'scale': 2.0,
                              'units': 'percent'},
                   253.0: {   'comment': 'Sesson end time.',
                              'example': 1.0,
                              'field_name': 'timestamp',
                              'field_type': 'date_time',
                              'units': 's'},
                   254.0: {   'comment': 'Selected bit is set for the current '
                                         'session.',
                              'example': 1.0,
                              'field_name': 'message_index',
                              'field_type': 'message_index'}},
    'slave_device': {   0.0: {   'example': 1.0,
                                 'field_name': 'manufacturer',
                                 'field_type': 'manufacturer'},
                        1.0: {   'example': 1.0,
                                 'field_name': 'product',
                                 'field_type': 'uint16',
                                 'subfields': {   'garmin_product': {   'example': 1.0,
                                                                        'field_name': 'garmin_product',
                                                                        'field_type': 'garmin_product',
                                                                        'ref_field_name': 'manufacturer',
                                                                        'ref_field_value': {   'dynastream',
                                                                                               'dynastream_oem',
                                                                                               'garmin'}}}}},
    'software': {   3.0: {   'example': 1.0,
                             'field_name': 'version',
                             'field_type': 'uint16',
                             'scale': 100.0},
                    5.0: {   'example': 16.0,
                             'field_name': 'part_number',
                             'field_type': 'string'},
                    254.0: {   'example': 1.0,
                               'field_name': 'message_index',
                               'field_type': 'message_index'}},
    'speed_zone': {   0.0: {   'example': 1.0,
                               'field_name': 'high_value',
                               'field_type': 'uint16',
                               'scale': 1000.0,
                               'units': 'm/s'},
                      1.0: {   'example': 16.0,
                               'field_name': 'name',
                               'field_type': 'string'},
                      254.0: {   'example': 1.0,
                                 'field_name': 'message_index',
                                 'field_type': 'message_index'}},
    'sport': {   0.0: {   'example': 1.0,
                          'field_name': 'sport',
                          'field_type': 'sport'},
                 1.0: {   'example': 1.0,
                          'field_name': 'sub_sport',
                          'field_type': 'sub_sport'},
                 3.0: {   'example': 16.0,
                          'field_name': 'name',
                          'field_type': 'string'}},
    'three_d_sensor_calibration': {   0.0: {   'comment': 'Indicates which '
                                                          'sensor the '
                                                          'calibration is for',
                                               'field_name': 'sensor_type',
                                               'field_type': 'sensor_type'},
                                      1.0: {   'comment': 'Calibration factor '
                                                          'used to convert '
                                                          'from raw ADC value '
                                                          'to degrees, g,  '
                                                          'etc.',
                                               'field_name': 'calibration_factor',
                                               'field_type': 'uint32',
                                               'subfields': {   'accel_cal_factor': {   'comment': 'Accelerometer '
                                                                                                   'calibration '
                                                                                                   'factor',
                                                                                        'field_name': 'accel_cal_factor',
                                                                                        'field_type': 'uint32',
                                                                                        'ref_field_name': 'sensor_type',
                                                                                        'ref_field_value': {   'accelerometer'},
                                                                                        'units': 'g'},
                                                                'gyro_cal_factor': {   'comment': 'Gyro '
                                                                                                  'calibration '
                                                                                                  'factor',
                                                                                       'field_name': 'gyro_cal_factor',
                                                                                       'field_type': 'uint32',
                                                                                       'ref_field_name': 'sensor_type',
                                                                                       'ref_field_value': {   'gyroscope'},
                                                                                       'units': 'deg/s'}}},
                                      2.0: {   'comment': 'Calibration factor '
                                                          'divisor',
                                               'field_name': 'calibration_divisor',
                                               'field_type': 'uint32',
                                               'units': 'counts'},
                                      3.0: {   'comment': 'Level shift value '
                                                          'used to shift the '
                                                          'ADC value back into '
                                                          'range',
                                               'field_name': 'level_shift',
                                               'field_type': 'uint32'},
                                      4.0: {   'array': '[3]',
                                               'comment': 'Internal '
                                                          'calibration '
                                                          'factors, one for '
                                                          'each: xy, yx, zx',
                                               'field_name': 'offset_cal',
                                               'field_type': 'sint32'},
                                      5.0: {   'array': '[9]',
                                               'comment': '3 x 3 rotation '
                                                          'matrix (row major)',
                                               'field_name': 'orientation_matrix',
                                               'field_type': 'sint32',
                                               'scale': 65535.0},
                                      253.0: {   'comment': 'Whole second part '
                                                            'of the timestamp',
                                                 'field_name': 'timestamp',
                                                 'field_type': 'date_time',
                                                 'units': 's'}},
    'timestamp_correlation': {   0.0: {   'comment': 'Fractional part of the '
                                                     'UTC timestamp at the '
                                                     'time the system '
                                                     'timestamp was recorded.',
                                          'field_name': 'fractional_timestamp',
                                          'field_type': 'uint16',
                                          'scale': 32768.0,
                                          'units': 's'},
                                 1.0: {   'comment': 'Whole second part of the '
                                                     'system timestamp',
                                          'field_name': 'system_timestamp',
                                          'field_type': 'date_time',
                                          'units': 's'},
                                 2.0: {   'comment': 'Fractional part of the '
                                                     'system timestamp',
                                          'field_name': 'fractional_system_timestamp',
                                          'field_type': 'uint16',
                                          'scale': 32768.0,
                                          'units': 's'},
                                 3.0: {   'comment': 'timestamp epoch '
                                                     'expressed in local time '
                                                     'used to convert '
                                                     'timestamps to local '
                                                     'time ',
                                          'field_name': 'local_timestamp',
                                          'field_type': 'local_date_time',
                                          'units': 's'},
                                 4.0: {   'comment': 'Millisecond part of the '
                                                     'UTC timestamp at the '
                                                     'time the system '
                                                     'timestamp was recorded.',
                                          'field_name': 'timestamp_ms',
                                          'field_type': 'uint16',
                                          'units': 'ms'},
                                 5.0: {   'comment': 'Millisecond part of the '
                                                     'system timestamp',
                                          'field_name': 'system_timestamp_ms',
                                          'field_type': 'uint16',
                                          'units': 'ms'},
                                 253.0: {   'comment': 'Whole second part of '
                                                       'UTC timestamp at the '
                                                       'time the system '
                                                       'timestamp was '
                                                       'recorded.',
                                            'field_name': 'timestamp',
                                            'field_type': 'date_time',
                                            'units': 's'}},
    'totals': {   0.0: {   'comment': 'Excludes pauses',
                           'example': 1.0,
                           'field_name': 'timer_time',
                           'field_type': 'uint32',
                           'units': 's'},
                  1.0: {   'example': 1.0,
                           'field_name': 'distance',
                           'field_type': 'uint32',
                           'units': 'm'},
                  2.0: {   'example': 1.0,
                           'field_name': 'calories',
                           'field_type': 'uint32',
                           'units': 'kcal'},
                  3.0: {   'example': 1.0,
                           'field_name': 'sport',
                           'field_type': 'sport'},
                  4.0: {   'comment': 'Includes pauses',
                           'example': 1.0,
                           'field_name': 'elapsed_time',
                           'field_type': 'uint32',
                           'units': 's'},
                  5.0: {   'example': 1.0,
                           'field_name': 'sessions',
                           'field_type': 'uint16'},
                  6.0: {   'example': 1.0,
                           'field_name': 'active_time',
                           'field_type': 'uint32',
                           'units': 's'},
                  9.0: {'field_name': 'sport_index', 'field_type': 'uint8'},
                  253.0: {   'example': 1.0,
                             'field_name': 'timestamp',
                             'field_type': 'date_time',
                             'units': 's'},
                  254.0: {   'example': 1.0,
                             'field_name': 'message_index',
                             'field_type': 'message_index'}},
    'training_file': {   0.0: {   'example': 1.0,
                                  'field_name': 'type',
                                  'field_type': 'file'},
                         1.0: {   'example': 1.0,
                                  'field_name': 'manufacturer',
                                  'field_type': 'manufacturer'},
                         2.0: {   'example': 1.0,
                                  'field_name': 'product',
                                  'field_type': 'uint16',
                                  'subfields': {   'garmin_product': {   'example': 1.0,
                                                                         'field_name': 'garmin_product',
                                                                         'field_type': 'garmin_product',
                                                                         'ref_field_name': 'manufacturer',
                                                                         'ref_field_value': {   'dynastream',
                                                                                                'dynastream_oem',
                                                                                                'garmin'}}}},
                         3.0: {   'example': 1.0,
                                  'field_name': 'serial_number',
                                  'field_type': 'uint32z'},
                         4.0: {   'example': 1.0,
                                  'field_name': 'time_created',
                                  'field_type': 'date_time'},
                         253.0: {   'example': 1.0,
                                    'field_name': 'timestamp',
                                    'field_type': 'date_time'}},
    'user_profile': {   0.0: {   'example': 16.0,
                                 'field_name': 'friendly_name',
                                 'field_type': 'string'},
                        1.0: {   'example': 1.0,
                                 'field_name': 'gender',
                                 'field_type': 'gender'},
                        2.0: {   'example': 1.0,
                                 'field_name': 'age',
                                 'field_type': 'uint8',
                                 'units': 'years'},
                        3.0: {   'example': 1.0,
                                 'field_name': 'height',
                                 'field_type': 'uint8',
                                 'scale': 100.0,
                                 'units': 'm'},
                        4.0: {   'example': 1.0,
                                 'field_name': 'weight',
                                 'field_type': 'uint16',
                                 'scale': 10.0,
                                 'units': 'kg'},
                        5.0: {   'example': 1.0,
                                 'field_name': 'language',
                                 'field_type': 'language'},
                        6.0: {   'example': 1.0,
                                 'field_name': 'elev_setting',
                                 'field_type': 'display_measure'},
                        7.0: {   'example': 1.0,
                                 'field_name': 'weight_setting',
                                 'field_type': 'display_measure'},
                        8.0: {   'example': 1.0,
                                 'field_name': 'resting_heart_rate',
                                 'field_type': 'uint8',
                                 'units': 'bpm'},
                        9.0: {   'example': 1.0,
                                 'field_name': 'default_max_running_heart_rate',
                                 'field_type': 'uint8',
                                 'units': 'bpm'},
                        10.0: {   'example': 1.0,
                                  'field_name': 'default_max_biking_heart_rate',
                                  'field_type': 'uint8',
                                  'units': 'bpm'},
                        11.0: {   'example': 1.0,
                                  'field_name': 'default_max_heart_rate',
                                  'field_type': 'uint8',
                                  'units': 'bpm'},
                        12.0: {   'example': 1.0,
                                  'field_name': 'hr_setting',
                                  'field_type': 'display_heart'},
                        13.0: {   'example': 1.0,
                                  'field_name': 'speed_setting',
                                  'field_type': 'display_measure'},
                        14.0: {   'example': 1.0,
                                  'field_name': 'dist_setting',
                                  'field_type': 'display_measure'},
                        16.0: {   'example': 1.0,
                                  'field_name': 'power_setting',
                                  'field_type': 'display_power'},
                        17.0: {   'example': 1.0,
                                  'field_name': 'activity_class',
                                  'field_type': 'activity_class'},
                        18.0: {   'example': 1.0,
                                  'field_name': 'position_setting',
                                  'field_type': 'display_position'},
                        21.0: {   'example': 1.0,
                                  'field_name': 'temperature_setting',
                                  'field_type': 'display_measure'},
                        22.0: {   'example': 1.0,
                                  'field_name': 'local_id',
                                  'field_type': 'user_local_id'},
                        23.0: {   'array': '[6]',
                                  'example': 1.0,
                                  'field_name': 'global_id',
                                  'field_type': 'byte'},
                        30.0: {   'example': 1.0,
                                  'field_name': 'height_setting',
                                  'field_type': 'display_measure'},
                        254.0: {   'example': 1.0,
                                   'field_name': 'message_index',
                                   'field_type': 'message_index'}},
    'video': {   0.0: {'field_name': 'url', 'field_type': 'string'},
                 1.0: {   'field_name': 'hosting_provider',
                          'field_type': 'string'},
                 2.0: {   'comment': 'Playback time of video',
                          'field_name': 'duration',
                          'field_type': 'uint32',
                          'units': 'ms'}},
    'video_clip': {   0.0: {   'field_name': 'clip_number',
                               'field_type': 'uint16'},
                      1.0: {   'field_name': 'start_timestamp',
                               'field_type': 'date_time'},
                      2.0: {   'field_name': 'start_timestamp_ms',
                               'field_type': 'uint16'},
                      3.0: {   'field_name': 'end_timestamp',
                               'field_type': 'date_time'},
                      4.0: {   'field_name': 'end_timestamp_ms',
                               'field_type': 'uint16'},
                      6.0: {   'comment': 'Start of clip in video time',
                               'field_name': 'clip_start',
                               'field_type': 'uint32',
                               'units': 'ms'},
                      7.0: {   'comment': 'End of clip in video time',
                               'field_name': 'clip_end',
                               'field_type': 'uint32',
                               'units': 'ms'}},
    'video_description': {   0.0: {   'comment': 'Total number of description '
                                                 'parts',
                                      'example': 1.0,
                                      'field_name': 'message_count',
                                      'field_type': 'uint16'},
                             1.0: {   'example': 250.0,
                                      'field_name': 'text',
                                      'field_type': 'string'},
                             254.0: {   'comment': 'Long descriptions will be '
                                                   'split into multiple parts',
                                        'example': 1.0,
                                        'field_name': 'message_index',
                                        'field_type': 'message_index'}},
    'video_frame': {   0.0: {   'comment': 'Millisecond part of the timestamp.',
                                'field_name': 'timestamp_ms',
                                'field_type': 'uint16',
                                'units': 'ms'},
                       1.0: {   'comment': 'Number of the frame that the '
                                           'timestamp and timestamp_ms '
                                           'correlate to',
                                'field_name': 'frame_number',
                                'field_type': 'uint32'},
                       253.0: {   'comment': 'Whole second part of the '
                                             'timestamp',
                                  'field_name': 'timestamp',
                                  'field_type': 'date_time',
                                  'units': 's'}},
    'video_title': {   0.0: {   'comment': 'Total number of title parts',
                                'example': 1.0,
                                'field_name': 'message_count',
                                'field_type': 'uint16'},
                       1.0: {   'example': 80.0,
                                'field_name': 'text',
                                'field_type': 'string'},
                       254.0: {   'comment': 'Long titles will be split into '
                                             'multiple parts',
                                  'example': 1.0,
                                  'field_name': 'message_index',
                                  'field_type': 'message_index'}},
    'weather_alert': {   0.0: {   'comment': 'Unique identifier from GCS '
                                             'report ID string, length is 12',
                                  'example': 12.0,
                                  'field_name': 'report_id',
                                  'field_type': 'string'},
                         1.0: {   'comment': 'Time alert was issued',
                                  'example': 1.0,
                                  'field_name': 'issue_time',
                                  'field_type': 'date_time'},
                         2.0: {   'comment': 'Time alert expires',
                                  'example': 1.0,
                                  'field_name': 'expire_time',
                                  'field_type': 'date_time'},
                         3.0: {   'comment': 'Warning, Watch, Advisory, '
                                             'Statement',
                                  'example': 1.0,
                                  'field_name': 'severity',
                                  'field_type': 'weather_severity'},
                         4.0: {   'comment': 'Tornado, Severe Thunderstorm, '
                                             'etc.',
                                  'example': 1.0,
                                  'field_name': 'type',
                                  'field_type': 'weather_severe_type'},
                         253.0: {   'example': 1.0,
                                    'field_name': 'timestamp',
                                    'field_type': 'date_time'}},
    'weather_conditions': {   0.0: {   'comment': 'Current or forecast',
                                       'example': 1.0,
                                       'field_name': 'weather_report',
                                       'field_type': 'weather_report'},
                              1.0: {   'example': 1.0,
                                       'field_name': 'temperature',
                                       'field_type': 'sint8',
                                       'units': 'C'},
                              2.0: {   'comment': 'Corresponds to GSC Response '
                                                  'weatherIcon field',
                                       'example': 1.0,
                                       'field_name': 'condition',
                                       'field_type': 'weather_status'},
                              3.0: {   'example': 1.0,
                                       'field_name': 'wind_direction',
                                       'field_type': 'uint16',
                                       'units': 'degrees'},
                              4.0: {   'example': 1.0,
                                       'field_name': 'wind_speed',
                                       'field_type': 'uint16',
                                       'scale': 1000.0,
                                       'units': 'm/s'},
                              5.0: {   'comment': 'range 0-100',
                                       'example': 1.0,
                                       'field_name': 'precipitation_probability',
                                       'field_type': 'uint8'},
                              6.0: {   'comment': 'Heat Index if  GCS heatIdx '
                                                  'above or equal to 90F or '
                                                  'wind chill if GCS windChill '
                                                  'below or equal to 32F',
                                       'example': 1.0,
                                       'field_name': 'temperature_feels_like',
                                       'field_type': 'sint8',
                                       'units': 'C'},
                              7.0: {   'example': 1.0,
                                       'field_name': 'relative_humidity',
                                       'field_type': 'uint8'},
                              8.0: {   'comment': 'string corresponding to GCS '
                                                  'response location string',
                                       'example': 64.0,
                                       'field_name': 'location',
                                       'field_type': 'string'},
                              9.0: {   'example': 1.0,
                                       'field_name': 'observed_at_time',
                                       'field_type': 'date_time'},
                              10.0: {   'example': 1.0,
                                        'field_name': 'observed_location_lat',
                                        'field_type': 'sint32',
                                        'units': 'semicircles'},
                              11.0: {   'example': 1.0,
                                        'field_name': 'observed_location_long',
                                        'field_type': 'sint32',
                                        'units': 'semicircles'},
                              12.0: {   'example': 1.0,
                                        'field_name': 'day_of_week',
                                        'field_type': 'day_of_week'},
                              13.0: {   'example': 1.0,
                                        'field_name': 'high_temperature',
                                        'field_type': 'sint8',
                                        'units': 'C'},
                              14.0: {   'example': 1.0,
                                        'field_name': 'low_temperature',
                                        'field_type': 'sint8',
                                        'units': 'C'},
                              253.0: {   'comment': 'time of update for '
                                                    'current conditions, else '
                                                    'forecast time',
                                         'example': 1.0,
                                         'field_name': 'timestamp',
                                         'field_type': 'date_time'}},
    'weight_scale': {   0.0: {   'example': 1.0,
                                 'field_name': 'weight',
                                 'field_type': 'weight',
                                 'scale': 100.0,
                                 'units': 'kg'},
                        1.0: {   'example': 1.0,
                                 'field_name': 'percent_fat',
                                 'field_type': 'uint16',
                                 'scale': 100.0,
                                 'units': '%'},
                        2.0: {   'example': 1.0,
                                 'field_name': 'percent_hydration',
                                 'field_type': 'uint16',
                                 'scale': 100.0,
                                 'units': '%'},
                        3.0: {   'example': 1.0,
                                 'field_name': 'visceral_fat_mass',
                                 'field_type': 'uint16',
                                 'scale': 100.0,
                                 'units': 'kg'},
                        4.0: {   'example': 1.0,
                                 'field_name': 'bone_mass',
                                 'field_type': 'uint16',
                                 'scale': 100.0,
                                 'units': 'kg'},
                        5.0: {   'example': 1.0,
                                 'field_name': 'muscle_mass',
                                 'field_type': 'uint16',
                                 'scale': 100.0,
                                 'units': 'kg'},
                        7.0: {   'example': 1.0,
                                 'field_name': 'basal_met',
                                 'field_type': 'uint16',
                                 'scale': 4.0,
                                 'units': 'kcal/day'},
                        8.0: {   'example': 1.0,
                                 'field_name': 'physique_rating',
                                 'field_type': 'uint8'},
                        9.0: {   'comment': '~4kJ per kcal, 0.25 allows max '
                                            '16384 kcal',
                                 'example': 1.0,
                                 'field_name': 'active_met',
                                 'field_type': 'uint16',
                                 'scale': 4.0,
                                 'units': 'kcal/day'},
                        10.0: {   'example': 1.0,
                                  'field_name': 'metabolic_age',
                                  'field_type': 'uint8',
                                  'units': 'years'},
                        11.0: {   'example': 1.0,
                                  'field_name': 'visceral_fat_rating',
                                  'field_type': 'uint8'},
                        12.0: {   'comment': 'Associates this weight scale '
                                             'message to a user.  This '
                                             'corresponds to the index of the '
                                             'user profile message in the '
                                             'weight scale file.',
                                  'example': 1.0,
                                  'field_name': 'user_profile_index',
                                  'field_type': 'message_index'},
                        253.0: {   'example': 1.0,
                                   'field_name': 'timestamp',
                                   'field_type': 'date_time',
                                   'units': 's'}},
    'workout': {   4.0: {   'example': 1.0,
                            'field_name': 'sport',
                            'field_type': 'sport'},
                   5.0: {   'example': 1.0,
                            'field_name': 'capabilities',
                            'field_type': 'workout_capabilities'},
                   6.0: {   'comment': 'number of valid steps',
                            'example': 1.0,
                            'field_name': 'num_valid_steps',
                            'field_type': 'uint16'},
                   8.0: {   'example': 16.0,
                            'field_name': 'wkt_name',
                            'field_type': 'string'}},
    'workout_step': {   0.0: {   'example': 16.0,
                                 'field_name': 'wkt_step_name',
                                 'field_type': 'string'},
                        1.0: {   'example': 1.0,
                                 'field_name': 'duration_type',
                                 'field_type': 'wkt_step_duration'},
                        2.0: {   'example': 1.0,
                                 'field_name': 'duration_value',
                                 'field_type': 'uint32',
                                 'subfields': {   'duration_calories': {   'example': 1.0,
                                                                           'field_name': 'duration_calories',
                                                                           'field_type': 'uint32',
                                                                           'ref_field_name': 'duration_type',
                                                                           'ref_field_value': {   'calories'},
                                                                           'units': 'calories'},
                                                  'duration_distance': {   'example': 1.0,
                                                                           'field_name': 'duration_distance',
                                                                           'field_type': 'uint32',
                                                                           'ref_field_name': 'duration_type',
                                                                           'ref_field_value': {   'distance'},
                                                                           'scale': 100.0,
                                                                           'units': 'm'},
                                                  'duration_hr': {   'example': 1.0,
                                                                     'field_name': 'duration_hr',
                                                                     'field_type': 'workout_hr',
                                                                     'ref_field_name': 'duration_type',
                                                                     'ref_field_value': {   'hr_greater_than',
                                                                                            'hr_less_than'},
                                                                     'units': '% '
                                                                              'or '
                                                                              'bpm'},
                                                  'duration_power': {   'example': 1.0,
                                                                        'field_name': 'duration_power',
                                                                        'field_type': 'workout_power',
                                                                        'ref_field_name': 'duration_type',
                                                                        'ref_field_value': {   'power_greater_than',
                                                                                               'power_less_than'},
                                                                        'units': '% '
                                                                                 'or '
                                                                                 'watts'},
                                                  'duration_step': {   'comment': 'message_index '
                                                                                  'of '
                                                                                  'step '
                                                                                  'to '
                                                                                  'loop '
                                                                                  'back '
                                                                                  'to. '
                                                                                  'Steps '
                                                                                  'are '
                                                                                  'assumed '
                                                                                  'to '
                                                                                  'be '
                                                                                  'in '
                                                                                  'the '
                                                                                  'order '
                                                                                  'by '
                                                                                  'message_index. '
                                                                                  'custom_name '
                                                                                  'and '
                                                                                  'intensity '
                                                                                  'members '
                                                                                  'are '
                                                                                  'undefined '
                                                                                  'for '
                                                                                  'this '
                                                                                  'duration '
                                                                                  'type.',
                                                                       'example': 1.0,
                                                                       'field_name': 'duration_step',
                                                                       'field_type': 'uint32',
                                                                       'ref_field_name': 'duration_type',
                                                                       'ref_field_value': {   'repeat_until_calories',
                                                                                              'repeat_until_distance',
                                                                                              'repeat_until_hr_greater_than',
                                                                                              'repeat_until_hr_less_than',
                                                                                              'repeat_until_power_greater_than',
                                                                                              'repeat_until_power_less_than',
                                                                                              'repeat_until_steps_cmplt',
                                                                                              'repeat_until_time'}},
                                                  'duration_time': {   'example': 1.0,
                                                                       'field_name': 'duration_time',
                                                                       'field_type': 'uint32',
                                                                       'ref_field_name': 'duration_type',
                                                                       'ref_field_value': {   'repetition_time',
                                                                                              'time'},
                                                                       'scale': 1000.0,
                                                                       'units': 's'}}},
                        3.0: {   'example': 1.0,
                                 'field_name': 'target_type',
                                 'field_type': 'wkt_step_target'},
                        4.0: {   'example': 1.0,
                                 'field_name': 'target_value',
                                 'field_type': 'uint32',
                                 'subfields': {   'repeat_calories': {   'example': 1.0,
                                                                         'field_name': 'repeat_calories',
                                                                         'field_type': 'uint32',
                                                                         'ref_field_name': 'duration_type',
                                                                         'ref_field_value': {   'repeat_until_calories'},
                                                                         'units': 'calories'},
                                                  'repeat_distance': {   'example': 1.0,
                                                                         'field_name': 'repeat_distance',
                                                                         'field_type': 'uint32',
                                                                         'ref_field_name': 'duration_type',
                                                                         'ref_field_value': {   'repeat_until_distance'},
                                                                         'scale': 100.0,
                                                                         'units': 'm'},
                                                  'repeat_hr': {   'example': 1.0,
                                                                   'field_name': 'repeat_hr',
                                                                   'field_type': 'workout_hr',
                                                                   'ref_field_name': 'duration_type',
                                                                   'ref_field_value': {   'repeat_until_hr_greater_than',
                                                                                          'repeat_until_hr_less_than'},
                                                                   'units': '% '
                                                                            'or '
                                                                            'bpm'},
                                                  'repeat_power': {   'example': 1.0,
                                                                      'field_name': 'repeat_power',
                                                                      'field_type': 'workout_power',
                                                                      'ref_field_name': 'duration_type',
                                                                      'ref_field_value': {   'repeat_until_power_greater_than',
                                                                                             'repeat_until_power_less_than'},
                                                                      'units': '% '
                                                                               'or '
                                                                               'watts'},
                                                  'repeat_steps': {   'comment': '# '
                                                                                 'of '
                                                                                 'repetitions',
                                                                      'example': 1.0,
                                                                      'field_name': 'repeat_steps',
                                                                      'field_type': 'uint32',
                                                                      'ref_field_name': 'duration_type',
                                                                      'ref_field_value': {   'repeat_until_steps_cmplt'}},
                                                  'repeat_time': {   'example': 1.0,
                                                                     'field_name': 'repeat_time',
                                                                     'field_type': 'uint32',
                                                                     'ref_field_name': 'duration_type',
                                                                     'ref_field_value': {   'repeat_until_time'},
                                                                     'scale': 1000.0,
                                                                     'units': 's'},
                                                  'target_hr_zone': {   'comment': 'hr '
                                                                                   'zone '
                                                                                   '(1-5);Custom '
                                                                                   '=0;',
                                                                        'example': 1.0,
                                                                        'field_name': 'target_hr_zone',
                                                                        'field_type': 'uint32',
                                                                        'ref_field_name': 'target_type',
                                                                        'ref_field_value': {   'heart_rate'}},
                                                  'target_power_zone': {   'comment': 'Power '
                                                                                      'Zone '
                                                                                      '( '
                                                                                      '1-7); '
                                                                                      'Custom '
                                                                                      '= '
                                                                                      '0;',
                                                                           'example': 1.0,
                                                                           'field_name': 'target_power_zone',
                                                                           'field_type': 'uint32',
                                                                           'ref_field_name': 'target_type',
                                                                           'ref_field_value': {   'power'}}}},
                        5.0: {   'example': 1.0,
                                 'field_name': 'custom_target_value_low',
                                 'field_type': 'uint32',
                                 'subfields': {   'custom_target_cadence_low': {   'example': 1.0,
                                                                                   'field_name': 'custom_target_cadence_low',
                                                                                   'field_type': 'uint32',
                                                                                   'ref_field_name': 'target_type',
                                                                                   'ref_field_value': {   'cadence'},
                                                                                   'units': 'rpm'},
                                                  'custom_target_heart_rate_low': {   'example': 1.0,
                                                                                      'field_name': 'custom_target_heart_rate_low',
                                                                                      'field_type': 'workout_hr',
                                                                                      'ref_field_name': 'target_type',
                                                                                      'ref_field_value': {   'heart_rate'},
                                                                                      'units': '% '
                                                                                               'or '
                                                                                               'bpm'},
                                                  'custom_target_power_low': {   'example': 1.0,
                                                                                 'field_name': 'custom_target_power_low',
                                                                                 'field_type': 'workout_power',
                                                                                 'ref_field_name': 'target_type',
                                                                                 'ref_field_value': {   'power'},
                                                                                 'units': '% '
                                                                                          'or '
                                                                                          'watts'},
                                                  'custom_target_speed_low': {   'example': 1.0,
                                                                                 'field_name': 'custom_target_speed_low',
                                                                                 'field_type': 'uint32',
                                                                                 'ref_field_name': 'target_type',
                                                                                 'ref_field_value': {   'speed'},
                                                                                 'scale': 1000.0,
                                                                                 'units': 'm/s'}}},
                        6.0: {   'example': 1.0,
                                 'field_name': 'custom_target_value_high',
                                 'field_type': 'uint32',
                                 'subfields': {   'custom_target_cadence_high': {   'example': 1.0,
                                                                                    'field_name': 'custom_target_cadence_high',
                                                                                    'field_type': 'uint32',
                                                                                    'ref_field_name': 'target_type',
                                                                                    'ref_field_value': {   'cadence'},
                                                                                    'units': 'rpm'},
                                                  'custom_target_heart_rate_high': {   'example': 1.0,
                                                                                       'field_name': 'custom_target_heart_rate_high',
                                                                                       'field_type': 'workout_hr',
                                                                                       'ref_field_name': 'target_type',
                                                                                       'ref_field_value': {   'heart_rate'},
                                                                                       'units': '% '
                                                                                                'or '
                                                                                                'bpm'},
                                                  'custom_target_power_high': {   'example': 1.0,
                                                                                  'field_name': 'custom_target_power_high',
                                                                                  'field_type': 'workout_power',
                                                                                  'ref_field_name': 'target_type',
                                                                                  'ref_field_value': {   'power'},
                                                                                  'units': '% '
                                                                                           'or '
                                                                                           'watts'},
                                                  'custom_target_speed_high': {   'example': 1.0,
                                                                                  'field_name': 'custom_target_speed_high',
                                                                                  'field_type': 'uint32',
                                                                                  'ref_field_name': 'target_type',
                                                                                  'ref_field_value': {   'speed'},
                                                                                  'scale': 1000.0,
                                                                                  'units': 'm/s'}}},
                        7.0: {   'example': 1.0,
                                 'field_name': 'intensity',
                                 'field_type': 'intensity'},
                        254.0: {   'example': 1.0,
                                   'field_name': 'message_index',
                                   'field_type': 'message_index'}},
    'zones_target': {   1.0: {   'example': 1.0,
                                 'field_name': 'max_heart_rate',
                                 'field_type': 'uint8'},
                        2.0: {   'example': 1.0,
                                 'field_name': 'threshold_heart_rate',
                                 'field_type': 'uint8'},
                        3.0: {   'example': 1.0,
                                 'field_name': 'functional_threshold_power',
                                 'field_type': 'uint16'},
                        5.0: {   'example': 1.0,
                                 'field_name': 'hr_calc_type',
                                 'field_type': 'hr_zone_calc'},
                        7.0: {   'example': 1.0,
                                 'field_name': 'pwr_calc_type',
                                 'field_type': 'pwr_zone_calc'}}}

TYPES_INFO = {
    'activity': {0.0: 'manual', 1: 'auto_multi_sport'},
    'activity_class': {100: 'level_max', 127: 'level', 128: 'athlete'},
    'activity_level': {0.0: 'low', 1: 'medium', 2: 'high'},
    'activity_subtype': {   0.0: 'generic',
                            1: 'treadmill',
                            2: 'street',
                            3: 'trail',
                            4: 'track',
                            5: 'spin',
                            6: 'indoor_cycling',
                            7: 'road',
                            8: 'mountain',
                            9: 'downhill',
                            10: 'recumbent',
                            11: 'cyclocross',
                            12: 'hand_cycling',
                            13: 'track_cycling',
                            14: 'indoor_rowing',
                            15: 'elliptical',
                            16: 'stair_climbing',
                            17: 'lap_swimming',
                            18: 'open_water',
                            254: 'all'},
    'activity_type': {   0.0: 'generic',
                         1: 'running',
                         2: 'cycling',
                         3: 'transition',
                         4: 'fitness_equipment',
                         5: 'swimming',
                         6: 'walking',
                         254: 'all'},
    'ant_network': {0.0: 'public', 1: 'antplus', 2: 'antfs', 3: 'private'},
    'antplus_device_type': {   1: 'antfs',
                               11: 'bike_power',
                               12: 'environment_sensor_legacy',
                               15: 'multi_sport_speed_distance',
                               16: 'control',
                               17: 'fitness_equipment',
                               18: 'blood_pressure',
                               19: 'geocache_node',
                               20: 'light_electric_vehicle',
                               25: 'env_sensor',
                               26: 'racquet',
                               27: 'control_hub',
                               31: 'muscle_oxygen',
                               35: 'bike_light_main',
                               36: 'bike_light_shared',
                               38: 'exd',
                               40: 'bike_radar',
                               119: 'weight_scale',
                               120: 'heart_rate',
                               121: 'bike_speed_cadence',
                               122: 'bike_cadence',
                               123: 'bike_speed',
                               124: 'stride_speed_distance'},
    'attitude_stage': {0.0: 'failed', 1: 'aligning', 2: 'degraded', 3: 'valid'},
    'attitude_validity': {   1: 'track_angle_heading_valid',
                             2: 'pitch_valid',
                             4: 'roll_valid',
                             8: 'lateral_body_accel_valid',
                             16: 'normal_body_accel_valid',
                             32: 'turn_rate_valid',
                             64: 'hw_fail',
                             128: 'mag_invalid',
                             256: 'no_gps',
                             512: 'gps_invalid',
                             1024: 'solution_coasting',
                             2048: 'true_track_angle',
                             4096: 'magnetic_heading'},
    'autolap_trigger': {   0.0: 'time',
                           1: 'distance',
                           2: 'position_start',
                           3: 'position_lap',
                           4: 'position_waypoint',
                           5: 'position_marked',
                           6: 'off'},
    'autoscroll': {0.0: 'none', 1: 'slow', 2: 'medium', 3: 'fast'},
    'battery_status': {   1: 'new',
                          2: 'good',
                          3: 'ok',
                          4: 'low',
                          5: 'critical',
                          6: 'charging',
                          7: 'unknown'},
    'bike_light_beam_angle_mode': {0.0: 'manual', 1: 'auto'},
    'bike_light_network_config_type': {   0.0: 'auto',
                                          4: 'individual',
                                          5: 'high_visibility'},
    'body_location': {   0.0: 'left_leg',
                         1: 'left_calf',
                         2: 'left_shin',
                         3: 'left_hamstring',
                         4: 'left_quad',
                         5: 'left_glute',
                         6: 'right_leg',
                         7: 'right_calf',
                         8: 'right_shin',
                         9: 'right_hamstring',
                         10: 'right_quad',
                         11: 'right_glute',
                         12: 'torso_back',
                         13: 'left_lower_back',
                         14: 'left_upper_back',
                         15: 'right_lower_back',
                         16: 'right_upper_back',
                         17: 'torso_front',
                         18: 'left_abdomen',
                         19: 'left_chest',
                         20: 'right_abdomen',
                         21: 'right_chest',
                         22: 'left_arm',
                         23: 'left_shoulder',
                         24: 'left_bicep',
                         25: 'left_tricep',
                         26: 'left_brachioradialis',
                         27: 'left_forearm_extensors',
                         28: 'right_arm',
                         29: 'right_shoulder',
                         30: 'right_bicep',
                         31: 'right_tricep',
                         32: 'right_brachioradialis',
                         33: 'right_forearm_extensors',
                         34: 'neck',
                         35: 'throat'},
    'bp_status': {   0.0: 'no_error',
                     1: 'error_incomplete_data',
                     2: 'error_no_measurement',
                     3: 'error_data_out_of_range',
                     4: 'error_irregular_heart_rate'},
    'camera_event_type': {   0.0: 'video_start',
                             1: 'video_split',
                             2: 'video_end',
                             3: 'photo_taken',
                             4: 'video_second_stream_start',
                             5: 'video_second_stream_split',
                             6: 'video_second_stream_end',
                             7: 'video_split_start',
                             8: 'video_second_stream_split_start'},
    'camera_orientation_type': {   0.0: 'camera_orientation_0',
                                   1: 'camera_orientation_90',
                                   2: 'camera_orientation_180',
                                   3: 'camera_orientation_270'},
    'checksum': {0.0: 'clear', 1: 'ok'},
    'comm_timeout_type': {   0.0: 'wildcard_pairing_timeout',
                             1: 'pairing_timeout',
                             2: 'connection_lost',
                             3: 'connection_timeout'},
    'connectivity_capabilities': {   1: 'bluetooth',
                                     2: 'bluetooth_le',
                                     4: 'ant',
                                     8: 'activity_upload',
                                     16: 'course_download',
                                     32: 'workout_download',
                                     64: 'live_track',
                                     128: 'weather_conditions',
                                     256: 'weather_alerts',
                                     512: 'gps_ephemeris_download',
                                     1024: 'explicit_archive',
                                     2048: 'setup_incomplete',
                                     4096: 'continue_sync_after_software_update',
                                     8192: 'connect_iq_app_download',
                                     16384: 'golf_course_download',
                                     32768: 'device_initiates_sync',
                                     65536: 'connect_iq_watch_app_download',
                                     131072: 'connect_iq_widget_download',
                                     262144: 'connect_iq_watch_face_download',
                                     524288: 'connect_iq_data_field_download',
                                     1048576: 'connect_iq_app_managment',
                                     2097152: 'swing_sensor',
                                     4194304: 'swing_sensor_remote',
                                     8388608: 'incident_detection',
                                     16777216: 'audio_prompts',
                                     33554432: 'wifi_verification',
                                     67108864: 'true_up',
                                     134217728: 'find_my_watch',
                                     268435456: 'remote_manual_sync'},
    'course_capabilities': {   1: 'processed',
                               2: 'valid',
                               4: 'time',
                               8: 'distance',
                               16: 'position',
                               32: 'heart_rate',
                               64: 'power',
                               128: 'cadence',
                               256: 'training',
                               512: 'navigation',
                               1024: 'bikeway'},
    'course_point': {   0.0: 'generic',
                        1: 'summit',
                        2: 'valley',
                        3: 'water',
                        4: 'food',
                        5: 'danger',
                        6: 'left',
                        7: 'right',
                        8: 'straight',
                        9: 'first_aid',
                        10: 'fourth_category',
                        11: 'third_category',
                        12: 'second_category',
                        13: 'first_category',
                        14: 'hors_category',
                        15: 'sprint',
                        16: 'left_fork',
                        17: 'right_fork',
                        18: 'middle_fork',
                        19: 'slight_left',
                        20: 'sharp_left',
                        21: 'slight_right',
                        22: 'sharp_right',
                        23: 'u_turn',
                        24: 'segment_start',
                        25: 'segment_end'},
    'date_time': {268435456: 'min'},
    'day_of_week': {   0.0: 'sunday',
                       1: 'monday',
                       2: 'tuesday',
                       3: 'wednesday',
                       4: 'thursday',
                       5: 'friday',
                       6: 'saturday'},
    'device_index': {0.0: 'creator'},
    'display_heart': {0.0: 'bpm', 1: 'max', 2: 'reserve'},
    'display_measure': {0.0: 'metric', 1: 'statute'},
    'display_orientation': {   0.0: 'auto',
                               1: 'portrait',
                               2: 'landscape',
                               3: 'portrait_flipped',
                               4: 'landscape_flipped'},
    'display_position': {   0.0: 'degree',
                            1: 'degree_minute',
                            2: 'degree_minute_second',
                            3: 'austrian_grid',
                            4: 'british_grid',
                            5: 'dutch_grid',
                            6: 'hungarian_grid',
                            7: 'finnish_grid',
                            8: 'german_grid',
                            9: 'icelandic_grid',
                            10: 'indonesian_equatorial',
                            11: 'indonesian_irian',
                            12: 'indonesian_southern',
                            13: 'india_zone_0',
                            14: 'india_zone_IA',
                            15: 'india_zone_IB',
                            16: 'india_zone_IIA',
                            17: 'india_zone_IIB',
                            18: 'india_zone_IIIA',
                            19: 'india_zone_IIIB',
                            20: 'india_zone_IVA',
                            21: 'india_zone_IVB',
                            22: 'irish_transverse',
                            23: 'irish_grid',
                            24: 'loran',
                            25: 'maidenhead_grid',
                            26: 'mgrs_grid',
                            27: 'new_zealand_grid',
                            28: 'new_zealand_transverse',
                            29: 'qatar_grid',
                            30: 'modified_swedish_grid',
                            31: 'swedish_grid',
                            32: 'south_african_grid',
                            33: 'swiss_grid',
                            34: 'taiwan_grid',
                            35: 'united_states_grid',
                            36: 'utm_ups_grid',
                            37: 'west_malayan',
                            38: 'borneo_rso',
                            39: 'estonian_grid',
                            40: 'latvian_grid',
                            41: 'swedish_ref_99_grid'},
    'display_power': {0.0: 'watts', 1: 'percent_ftp'},
    'event': {   0.0: 'timer',
                 3: 'workout',
                 4: 'workout_step',
                 5: 'power_down',
                 6: 'power_up',
                 7: 'off_course',
                 8: 'session',
                 9: 'lap',
                 10: 'course_point',
                 11: 'battery',
                 12: 'virtual_partner_pace',
                 13: 'hr_high_alert',
                 14: 'hr_low_alert',
                 15: 'speed_high_alert',
                 16: 'speed_low_alert',
                 17: 'cad_high_alert',
                 18: 'cad_low_alert',
                 19: 'power_high_alert',
                 20: 'power_low_alert',
                 21: 'recovery_hr',
                 22: 'battery_low',
                 23: 'time_duration_alert',
                 24: 'distance_duration_alert',
                 25: 'calorie_duration_alert',
                 26: 'activity',
                 27: 'fitness_equipment',
                 28: 'length',
                 32: 'user_marker',
                 33: 'sport_point',
                 36: 'calibration',
                 42: 'front_gear_change',
                 43: 'rear_gear_change',
                 44: 'rider_position_change',
                 45: 'elev_high_alert',
                 46: 'elev_low_alert',
                 47: 'comm_timeout'},
    'event_type': {   0.0: 'start',
                      1: 'stop',
                      2: 'consecutive_depreciated',
                      3: 'marker',
                      4: 'stop_all',
                      5: 'begin_depreciated',
                      6: 'end_depreciated',
                      7: 'end_all_depreciated',
                      8: 'stop_disable',
                      9: 'stop_disable_all'},
    'exd_data_units': {   0.0: 'no_units',
                          1: 'laps',
                          2: 'miles_per_hour',
                          3: 'kilometers_per_hour',
                          4: 'feet_per_hour',
                          5: 'meters_per_hour',
                          6: 'degrees_celsius',
                          7: 'degrees_farenheit',
                          8: 'zone',
                          9: 'gear',
                          10: 'rpm',
                          11: 'bpm',
                          12: 'degrees',
                          13: 'millimeters',
                          14: 'meters',
                          15: 'kilometers',
                          16: 'feet',
                          17: 'yards',
                          18: 'kilofeet',
                          19: 'miles',
                          20: 'time',
                          21: 'enum_turn_type',
                          22: 'percent',
                          23: 'watts',
                          24: 'watts_per_kilogram',
                          25: 'enum_battery_status',
                          26: 'enum_bike_light_beam_angle_mode',
                          27: 'enum_bike_light_battery_status',
                          28: 'enum_bike_light_network_config_type',
                          29: 'lights',
                          30: 'seconds',
                          31: 'minutes',
                          32: 'hours',
                          33: 'calories',
                          34: 'kilojoules',
                          35: 'milliseconds',
                          36: 'second_per_mile',
                          37: 'second_per_kilometer',
                          38: 'centimeter',
                          39: 'enum_course_point',
                          40: 'bradians',
                          41: 'enum_sport'},
    'exd_descriptors': {   0.0: 'bike_light_battery_status',
                           1: 'beam_angle_status',
                           2: 'batery_level',
                           3: 'light_network_mode',
                           4: 'number_lights_connected',
                           5: 'cadence',
                           6: 'distance',
                           7: 'estimated_time_of_arrival',
                           8: 'heading',
                           9: 'time',
                           10: 'battery_level',
                           11: 'trainer_resistance',
                           12: 'trainer_target_power',
                           13: 'time_seated',
                           14: 'time_standing',
                           15: 'elevation',
                           16: 'grade',
                           17: 'ascent',
                           18: 'descent',
                           19: 'vertical_speed',
                           20: 'di2_battery_level',
                           21: 'front_gear',
                           22: 'rear_gear',
                           23: 'gear_ratio',
                           24: 'heart_rate',
                           25: 'heart_rate_zone',
                           26: 'time_in_heart_rate_zone',
                           27: 'heart_rate_reserve',
                           28: 'calories',
                           29: 'gps_accuracy',
                           30: 'gps_signal_strength',
                           31: 'temperature',
                           32: 'time_of_day',
                           33: 'balance',
                           34: 'pedal_smoothness',
                           35: 'power',
                           36: 'functional_threshold_power',
                           37: 'intensity_factor',
                           38: 'work',
                           39: 'power_ratio',
                           40: 'normalized_power',
                           41: 'training_stress_Score',
                           42: 'time_on_zone',
                           43: 'speed',
                           44: 'laps',
                           45: 'reps',
                           46: 'workout_step',
                           47: 'course_distance',
                           48: 'navigation_distance',
                           49: 'course_estimated_time_of_arrival',
                           50: 'navigation_estimated_time_of_arrival',
                           51: 'course_time',
                           52: 'navigation_time',
                           53: 'course_heading',
                           54: 'navigation_heading',
                           55: 'power_zone',
                           56: 'torque_effectiveness',
                           57: 'timer_time',
                           58: 'power_weight_ratio',
                           59: 'left_platform_center_offset',
                           60: 'right_platform_center_offset',
                           61: 'left_power_phase_start_angle',
                           62: 'right_power_phase_start_angle',
                           63: 'left_power_phase_finish_angle',
                           64: 'right_power_phase_finish_angle',
                           65: 'gears',
                           66: 'pace',
                           67: 'training_effect',
                           68: 'vertical_oscillation',
                           69: 'vertical_ratio',
                           70: 'ground_contact_time',
                           71: 'left_ground_contact_time_balance',
                           72: 'right_ground_contact_time_balance',
                           73: 'stride_length',
                           74: 'running_cadence',
                           75: 'performance_condition',
                           76: 'course_type',
                           77: 'time_in_power_zone',
                           78: 'navigation_turn',
                           79: 'course_location',
                           80: 'navigation_location',
                           81: 'compass',
                           82: 'gear_combo'},
    'exd_display_type': {   0.0: 'numerical',
                            1: 'simple',
                            2: 'graph',
                            3: 'bar',
                            4: 'circle_graph',
                            5: 'virtual_partner',
                            6: 'balance',
                            7: 'string_list',
                            8: 'string',
                            9: 'simple_dynamic_icon',
                            10: 'gauge'},
    'exd_layout': {   0.0: 'full_screen',
                      1: 'half_vertical',
                      2: 'half_horizontal',
                      3: 'half_vertical_right_split',
                      4: 'half_horizontal_bottom_split',
                      5: 'full_quarter_split',
                      6: 'half_vertical_left_split',
                      7: 'half_horizontal_top_split'},
    'exd_qualifiers': {   0.0: 'no_qualifier',
                          1: 'instantaneous',
                          2: 'average',
                          3: 'lap',
                          4: 'maximum',
                          5: 'maximum_average',
                          6: 'maximum_lap',
                          7: 'last_lap',
                          8: 'average_lap',
                          9: 'to_destination',
                          10: 'to_go',
                          11: 'to_next',
                          12: 'next_course_point',
                          13: 'total',
                          14: 'three_second_average',
                          15: 'ten_second_average',
                          16: 'thirty_second_average',
                          17: 'percent_maximum',
                          18: 'percent_maximum_average',
                          19: 'lap_percent_maximum',
                          20: 'elapsed',
                          21: 'sunrise',
                          22: 'sunset',
                          23: 'compared_to_virtual_partner',
                          24: 'maximum_24h',
                          25: 'minimum_24h',
                          26: 'minimum',
                          27: 'first',
                          28: 'second',
                          29: 'third',
                          30: 'shifter',
                          31: 'last_sport',
                          242: 'zone_9',
                          243: 'zone_8',
                          244: 'zone_7',
                          245: 'zone_6',
                          246: 'zone_5',
                          247: 'zone_4',
                          248: 'zone_3',
                          249: 'zone_2',
                          250: 'zone_1'},
    'file': {   1: 'device',
                2: 'settings',
                3: 'sport',
                4: 'activity',
                5: 'workout',
                6: 'course',
                7: 'schedules',
                9: 'weight',
                10: 'totals',
                11: 'goals',
                14: 'blood_pressure',
                15: 'monitoring_a',
                20: 'activity_summary',
                28: 'monitoring_daily',
                32: 'monitoring_b',
                34: 'segment',
                35: 'segment_list',
                40: 'exd_configuration',
                247: 'mfg_range_min',
                254: 'mfg_range_max'},
    'file_flags': {2: 'read', 4: 'write', 8: 'erase'},
    'fit_base_type': {   0.0: 'enum',
                         1: 'sint8',
                         2: 'uint8',
                         7: 'string',
                         10: 'uint8z',
                         13: 'byte',
                         131: 'sint16',
                         132: 'uint16',
                         133: 'sint32',
                         134: 'uint32',
                         136: 'float32',
                         137: 'float64',
                         139: 'uint16z',
                         140: 'uint32z',
                         142: 'sint64',
                         143: 'uint64',
                         144: 'uint64z'},
    'fit_base_unit': {0.0: 'other'},
    'fitness_equipment_state': {   0.0: 'ready',
                                   1: 'in_use',
                                   2: 'paused',
                                   3: 'unknown'},
    'garmin_product': {   1: 'hrm1',
                          2: 'axh01',
                          3: 'axb01',
                          4: 'axb02',
                          5: 'hrm2ss',
                          6: 'dsi_alf02',
                          7: 'hrm3ss',
                          8: 'hrm_run_single_byte_product_id',
                          9: 'bsm',
                          10: 'bcm',
                          11: 'axs01',
                          12: 'hrm_tri_single_byte_product_id',
                          14: 'fr225_single_byte_product_id',
                          473: 'fr301_china',
                          474: 'fr301_japan',
                          475: 'fr301_korea',
                          494: 'fr301_taiwan',
                          717: 'fr405',
                          782: 'fr50',
                          987: 'fr405_japan',
                          988: 'fr60',
                          1011: 'dsi_alf01',
                          1018: 'fr310xt',
                          1036: 'edge500',
                          1124: 'fr110',
                          1169: 'edge800',
                          1199: 'edge500_taiwan',
                          1213: 'edge500_japan',
                          1253: 'chirp',
                          1274: 'fr110_japan',
                          1325: 'edge200',
                          1328: 'fr910xt',
                          1333: 'edge800_taiwan',
                          1334: 'edge800_japan',
                          1341: 'alf04',
                          1345: 'fr610',
                          1360: 'fr210_japan',
                          1380: 'vector_ss',
                          1381: 'vector_cp',
                          1386: 'edge800_china',
                          1387: 'edge500_china',
                          1410: 'fr610_japan',
                          1422: 'edge500_korea',
                          1436: 'fr70',
                          1446: 'fr310xt_4t',
                          1461: 'amx',
                          1482: 'fr10',
                          1497: 'edge800_korea',
                          1499: 'swim',
                          1537: 'fr910xt_china',
                          1551: 'fenix',
                          1555: 'edge200_taiwan',
                          1561: 'edge510',
                          1567: 'edge810',
                          1570: 'tempe',
                          1600: 'fr910xt_japan',
                          1623: 'fr620',
                          1632: 'fr220',
                          1664: 'fr910xt_korea',
                          1688: 'fr10_japan',
                          1721: 'edge810_japan',
                          1735: 'virb_elite',
                          1736: 'edge_touring',
                          1742: 'edge510_japan',
                          1743: 'hrm_tri',
                          1752: 'hrm_run',
                          1765: 'fr920xt',
                          1821: 'edge510_asia',
                          1822: 'edge810_china',
                          1823: 'edge810_taiwan',
                          1836: 'edge1000',
                          1837: 'vivo_fit',
                          1853: 'virb_remote',
                          1885: 'vivo_ki',
                          1903: 'fr15',
                          1907: 'vivo_active',
                          1918: 'edge510_korea',
                          1928: 'fr620_japan',
                          1929: 'fr620_china',
                          1930: 'fr220_japan',
                          1931: 'fr220_china',
                          1936: 'approach_s6',
                          1956: 'vivo_smart',
                          1967: 'fenix2',
                          1988: 'epix',
                          2050: 'fenix3',
                          2052: 'edge1000_taiwan',
                          2053: 'edge1000_japan',
                          2061: 'fr15_japan',
                          2067: 'edge520',
                          2070: 'edge1000_china',
                          2072: 'fr620_russia',
                          2073: 'fr220_russia',
                          2079: 'vector_s',
                          2100: 'edge1000_korea',
                          2130: 'fr920xt_taiwan',
                          2131: 'fr920xt_china',
                          2132: 'fr920xt_japan',
                          2134: 'virbx',
                          2135: 'vivo_smart_apac',
                          2140: 'etrex_touch',
                          2147: 'edge25',
                          2148: 'fr25',
                          2150: 'vivo_fit2',
                          2153: 'fr225',
                          2156: 'fr630',
                          2157: 'fr230',
                          2160: 'vivo_active_apac',
                          2161: 'vector_2',
                          2162: 'vector_2s',
                          2172: 'virbxe',
                          2173: 'fr620_taiwan',
                          2174: 'fr220_taiwan',
                          2175: 'truswing',
                          2188: 'fenix3_china',
                          2189: 'fenix3_twn',
                          2192: 'varia_headlight',
                          2193: 'varia_taillight_old',
                          2204: 'edge_explore_1000',
                          2219: 'fr225_asia',
                          2225: 'varia_radar_taillight',
                          2226: 'varia_radar_display',
                          2238: 'edge20',
                          2262: 'd2_bravo',
                          2266: 'approach_s20',
                          2276: 'varia_remote',
                          2327: 'hrm4_run',
                          2337: 'vivo_active_hr',
                          2348: 'vivo_smart_hr',
                          2398: 'varia_vision',
                          2406: 'vivo_fit3',
                          2413: 'fenix3_hr',
                          2429: 'index_smart_scale',
                          2431: 'fr235',
                          2496: 'nautix',
                          10007: 'sdm4',
                          10014: 'edge_remote',
                          20119: 'training_center',
                          65531: 'connectiq_simulator',
                          65532: 'android_antplus_plugin',
                          65534: 'connect'},
    'gender': {0.0: 'female', 1: 'male'},
    'goal': {   0.0: 'time',
                1: 'distance',
                2: 'calories',
                3: 'frequency',
                4: 'steps'},
    'goal_recurrence': {   0.0: 'off',
                           1: 'daily',
                           2: 'weekly',
                           3: 'monthly',
                           4: 'yearly',
                           5: 'custom'},
    'hr_type': {0.0: 'normal', 1: 'irregular'},
    'hr_zone_calc': {0.0: 'custom', 1: 'percent_max_hr', 2: 'percent_hrr'},
    'intensity': {0.0: 'active', 1: 'rest', 2: 'warmup', 3: 'cooldown'},
    'language': {   0.0: 'english',
                    1: 'french',
                    2: 'italian',
                    3: 'german',
                    4: 'spanish',
                    5: 'croatian',
                    6: 'czech',
                    7: 'danish',
                    8: 'dutch',
                    9: 'finnish',
                    10: 'greek',
                    11: 'hungarian',
                    12: 'norwegian',
                    13: 'polish',
                    14: 'portuguese',
                    15: 'slovakian',
                    16: 'slovenian',
                    17: 'swedish',
                    18: 'russian',
                    19: 'turkish',
                    20: 'latvian',
                    21: 'ukrainian',
                    22: 'arabic',
                    23: 'farsi',
                    24: 'bulgarian',
                    25: 'romanian',
                    26: 'chinese',
                    27: 'japanese',
                    28: 'korean',
                    29: 'taiwanese',
                    30: 'thai',
                    31: 'hebrew',
                    32: 'brazilian_portuguese',
                    33: 'indonesian',
                    254: 'custom'},
    'language_bits_0': {   1: 'english',
                           2: 'french',
                           4: 'italian',
                           8: 'german',
                           16: 'spanish',
                           32: 'croatian',
                           64: 'czech',
                           128: 'danish'},
    'language_bits_1': {   1: 'dutch',
                           2: 'finnish',
                           4: 'greek',
                           8: 'hungarian',
                           16: 'norwegian',
                           32: 'polish',
                           64: 'portuguese',
                           128: 'slovakian'},
    'language_bits_2': {   1: 'slovenian',
                           2: 'swedish',
                           4: 'russian',
                           8: 'turkish',
                           16: 'latvian',
                           32: 'ukrainian',
                           64: 'arabic',
                           128: 'farsi'},
    'language_bits_3': {   1: 'bulgarian',
                           2: 'romanian',
                           4: 'chinese',
                           8: 'japanese',
                           16: 'korean',
                           32: 'taiwanese',
                           64: 'thai',
                           128: 'hebrew'},
    'language_bits_4': {1: 'brazilian_portuguese', 2: 'indonesian'},
    'lap_trigger': {   0.0: 'manual',
                       1: 'time',
                       2: 'distance',
                       3: 'position_start',
                       4: 'position_lap',
                       5: 'position_waypoint',
                       6: 'position_marked',
                       7: 'session_end',
                       8: 'fitness_equipment'},
    'left_right_balance': {127: 'mask', 128: 'right'},
    'left_right_balance_100': {16383: 'mask', 32768: 'right'},
    'length_type': {0.0: 'idle', 1: 'active'},
    'local_date_time': {268435456: 'min'},
    'manufacturer': {   1: 'garmin',
                        2: 'garmin_fr405_antfs',
                        3: 'zephyr',
                        4: 'dayton',
                        5: 'idt',
                        6: 'srm',
                        7: 'quarq',
                        8: 'ibike',
                        9: 'saris',
                        10: 'spark_hk',
                        11: 'tanita',
                        12: 'echowell',
                        13: 'dynastream_oem',
                        14: 'nautilus',
                        15: 'dynastream',
                        16: 'timex',
                        17: 'metrigear',
                        18: 'xelic',
                        19: 'beurer',
                        20: 'cardiosport',
                        21: 'a_and_d',
                        22: 'hmm',
                        23: 'suunto',
                        24: 'thita_elektronik',
                        25: 'gpulse',
                        26: 'clean_mobile',
                        27: 'pedal_brain',
                        28: 'peaksware',
                        29: 'saxonar',
                        30: 'lemond_fitness',
                        31: 'dexcom',
                        32: 'wahoo_fitness',
                        33: 'octane_fitness',
                        34: 'archinoetics',
                        35: 'the_hurt_box',
                        36: 'citizen_systems',
                        37: 'magellan',
                        38: 'osynce',
                        39: 'holux',
                        40: 'concept2',
                        42: 'one_giant_leap',
                        43: 'ace_sensor',
                        44: 'brim_brothers',
                        45: 'xplova',
                        46: 'perception_digital',
                        47: 'bf1systems',
                        48: 'pioneer',
                        49: 'spantec',
                        50: 'metalogics',
                        51: '4iiiis',
                        52: 'seiko_epson',
                        53: 'seiko_epson_oem',
                        54: 'ifor_powell',
                        55: 'maxwell_guider',
                        56: 'star_trac',
                        57: 'breakaway',
                        58: 'alatech_technology_ltd',
                        59: 'mio_technology_europe',
                        60: 'rotor',
                        61: 'geonaute',
                        62: 'id_bike',
                        63: 'specialized',
                        64: 'wtek',
                        65: 'physical_enterprises',
                        66: 'north_pole_engineering',
                        67: 'bkool',
                        68: 'cateye',
                        69: 'stages_cycling',
                        70: 'sigmasport',
                        71: 'tomtom',
                        72: 'peripedal',
                        73: 'wattbike',
                        76: 'moxy',
                        77: 'ciclosport',
                        78: 'powerbahn',
                        79: 'acorn_projects_aps',
                        80: 'lifebeam',
                        81: 'bontrager',
                        82: 'wellgo',
                        83: 'scosche',
                        84: 'magura',
                        85: 'woodway',
                        86: 'elite',
                        87: 'nielsen_kellerman',
                        88: 'dk_city',
                        89: 'tacx',
                        90: 'direction_technology',
                        91: 'magtonic',
                        92: '1partcarbon',
                        93: 'inside_ride_technologies',
                        94: 'sound_of_motion',
                        95: 'stryd',
                        96: 'icg',
                        97: 'MiPulse',
                        98: 'bsx_athletics',
                        99: 'look',
                        100: 'campagnolo_srl',
                        101: 'body_bike_smart',
                        102: 'praxisworks',
                        103: 'limits_technology',
                        104: 'topaction_technology',
                        105: 'cosinuss',
                        255: 'development',
                        257: 'healthandlife',
                        258: 'lezyne',
                        259: 'scribe_labs',
                        260: 'zwift',
                        261: 'watteam',
                        262: 'recon',
                        263: 'favero_electronics',
                        264: 'dynovelo',
                        265: 'strava',
                        266: 'precor',
                        267: 'bryton',
                        268: 'sram',
                        269: 'navman',
                        270: 'cobi',
                        271: 'spivi',
                        272: 'mio_magellan',
                        273: 'evesports',
                        5759: 'actigraphcorp'},
    'mesg_count': {   0.0: 'num_per_file',
                      1: 'max_per_file',
                      2: 'max_per_file_type'},
    'mesg_num': {   0.0: 'file_id',
                    1: 'capabilities',
                    2: 'device_settings',
                    3: 'user_profile',
                    4: 'hrm_profile',
                    5: 'sdm_profile',
                    6: 'bike_profile',
                    7: 'zones_target',
                    8: 'hr_zone',
                    9: 'power_zone',
                    10: 'met_zone',
                    12: 'sport',
                    15: 'goal',
                    18: 'session',
                    19: 'lap',
                    20: 'record',
                    21: 'event',
                    23: 'device_info',
                    26: 'workout',
                    27: 'workout_step',
                    28: 'schedule',
                    30: 'weight_scale',
                    31: 'course',
                    32: 'course_point',
                    33: 'totals',
                    34: 'activity',
                    35: 'software',
                    37: 'file_capabilities',
                    38: 'mesg_capabilities',
                    39: 'field_capabilities',
                    49: 'file_creator',
                    51: 'blood_pressure',
                    53: 'speed_zone',
                    55: 'monitoring',
                    72: 'training_file',
                    78: 'hrv',
                    80: 'ant_rx',
                    81: 'ant_tx',
                    82: 'ant_channel_id',
                    101: 'length',
                    103: 'monitoring_info',
                    105: 'pad',
                    106: 'slave_device',
                    127: 'connectivity',
                    128: 'weather_conditions',
                    129: 'weather_alert',
                    131: 'cadence_zone',
                    132: 'hr',
                    142: 'segment_lap',
                    145: 'memo_glob',
                    148: 'segment_id',
                    149: 'segment_leaderboard_entry',
                    150: 'segment_point',
                    151: 'segment_file',
                    160: 'gps_metadata',
                    161: 'camera_event',
                    162: 'timestamp_correlation',
                    164: 'gyroscope_data',
                    165: 'accelerometer_data',
                    167: 'three_d_sensor_calibration',
                    169: 'video_frame',
                    174: 'obdii_data',
                    177: 'nmea_sentence',
                    178: 'aviation_attitude',
                    184: 'video',
                    185: 'video_title',
                    186: 'video_description',
                    187: 'video_clip',
                    200: 'exd_screen_configuration',
                    201: 'exd_data_field_configuration',
                    202: 'exd_data_concept_configuration',
                    206: 'field_description',
                    207: 'developer_data_id',
                    208: 'magnetometer_data',
                    65280: 'mfg_range_min',
                    65534: 'mfg_range_max'},
    'message_index': {4095: 'mask', 28672: 'reserved', 32768: 'selected'},
    'power_phase_type': {   0.0: 'power_phase_start_angle',
                            1: 'power_phase_end_angle',
                            2: 'power_phase_arc_length',
                            3: 'power_phase_center'},
    'pwr_zone_calc': {0.0: 'custom', 1: 'percent_ftp'},
    'rider_position_type': {0.0: 'seated', 1: 'standing'},
    'schedule': {0.0: 'workout', 1: 'course'},
    'segment_delete_status': {   0.0: 'do_not_delete',
                                 1: 'delete_one',
                                 2: 'delete_all'},
    'segment_lap_status': {0.0: 'end', 1: 'fail'},
    'segment_leaderboard_type': {   0.0: 'overall',
                                    1: 'personal_best',
                                    2: 'connections',
                                    3: 'group',
                                    4: 'challenger',
                                    5: 'kom',
                                    6: 'qom',
                                    7: 'pr',
                                    8: 'goal',
                                    9: 'rival',
                                    10: 'club_leader'},
    'segment_selection_type': {0.0: 'starred', 1: 'suggested'},
    'sensor_type': {0.0: 'accelerometer', 1: 'gyroscope', 2: 'compass'},
    'session_trigger': {   0.0: 'activity_end',
                           1: 'manual',
                           2: 'auto_multi_sport',
                           3: 'fitness_equipment'},
    'side': {0.0: 'right', 1: 'left'},
    'source_type': {   0.0: 'ant',
                       1: 'antplus',
                       2: 'bluetooth',
                       3: 'bluetooth_low_energy',
                       4: 'wifi',
                       5: 'local'},
    'sport': {   0.0: 'generic',
                 1: 'running',
                 2: 'cycling',
                 3: 'transition',
                 4: 'fitness_equipment',
                 5: 'swimming',
                 6: 'basketball',
                 7: 'soccer',
                 8: 'tennis',
                 9: 'american_football',
                 10: 'training',
                 11: 'walking',
                 12: 'cross_country_skiing',
                 13: 'alpine_skiing',
                 14: 'snowboarding',
                 15: 'rowing',
                 16: 'mountaineering',
                 17: 'hiking',
                 18: 'multisport',
                 19: 'paddling',
                 20: 'flying',
                 21: 'e_biking',
                 22: 'motorcycling',
                 23: 'boating',
                 24: 'driving',
                 25: 'golf',
                 26: 'hang_gliding',
                 27: 'horseback_riding',
                 28: 'hunting',
                 29: 'fishing',
                 30: 'inline_skating',
                 31: 'rock_climbing',
                 32: 'sailing',
                 33: 'ice_skating',
                 34: 'sky_diving',
                 35: 'snowshoeing',
                 36: 'snowmobiling',
                 37: 'stand_up_paddleboarding',
                 38: 'surfing',
                 39: 'wakeboarding',
                 40: 'water_skiing',
                 41: 'kayaking',
                 42: 'rafting',
                 43: 'windsurfing',
                 44: 'kitesurfing',
                 45: 'tactical',
                 46: 'jumpmaster',
                 254: 'all'},
    'sport_bits_0': {   1: 'generic',
                        2: 'running',
                        4: 'cycling',
                        8: 'transition',
                        16: 'fitness_equipment',
                        32: 'swimming',
                        64: 'basketball',
                        128: 'soccer'},
    'sport_bits_1': {   1: 'tennis',
                        2: 'american_football',
                        4: 'training',
                        8: 'walking',
                        16: 'cross_country_skiing',
                        32: 'alpine_skiing',
                        64: 'snowboarding',
                        128: 'rowing'},
    'sport_bits_2': {   1: 'mountaineering',
                        2: 'hiking',
                        4: 'multisport',
                        8: 'paddling',
                        16: 'flying',
                        32: 'e_biking',
                        64: 'motorcycling',
                        128: 'boating'},
    'sport_bits_3': {   1: 'driving',
                        2: 'golf',
                        4: 'hang_gliding',
                        8: 'horseback_riding',
                        16: 'hunting',
                        32: 'fishing',
                        64: 'inline_skating',
                        128: 'rock_climbing'},
    'sport_bits_4': {   1: 'sailing',
                        2: 'ice_skating',
                        4: 'sky_diving',
                        8: 'snowshoeing',
                        16: 'snowmobiling',
                        32: 'stand_up_paddleboarding',
                        64: 'surfing',
                        128: 'wakeboarding'},
    'sport_bits_5': {   1: 'water_skiing',
                        2: 'kayaking',
                        4: 'rafting',
                        8: 'windsurfing',
                        16: 'kitesurfing',
                        32: 'tactical',
                        64: 'jumpmaster'},
    'sport_event': {   0.0: 'uncategorized',
                       1: 'geocaching',
                       2: 'fitness',
                       3: 'recreation',
                       4: 'race',
                       5: 'special_event',
                       6: 'training',
                       7: 'transportation',
                       8: 'touring'},
    'stroke_type': {   0.0: 'no_event',
                       1: 'other',
                       2: 'serve',
                       3: 'forehand',
                       4: 'backhand',
                       5: 'smash'},
    'sub_sport': {   0.0: 'generic',
                     1: 'treadmill',
                     2: 'street',
                     3: 'trail',
                     4: 'track',
                     5: 'spin',
                     6: 'indoor_cycling',
                     7: 'road',
                     8: 'mountain',
                     9: 'downhill',
                     10: 'recumbent',
                     11: 'cyclocross',
                     12: 'hand_cycling',
                     13: 'track_cycling',
                     14: 'indoor_rowing',
                     15: 'elliptical',
                     16: 'stair_climbing',
                     17: 'lap_swimming',
                     18: 'open_water',
                     19: 'flexibility_training',
                     20: 'strength_training',
                     21: 'warm_up',
                     22: 'match',
                     23: 'exercise',
                     24: 'challenge',
                     25: 'indoor_skiing',
                     26: 'cardio_training',
                     27: 'indoor_walking',
                     28: 'e_bike_fitness',
                     29: 'bmx',
                     30: 'casual_walking',
                     31: 'speed_walking',
                     32: 'bike_to_run_transition',
                     33: 'run_to_bike_transition',
                     34: 'swim_to_bike_transition',
                     35: 'atv',
                     36: 'motocross',
                     37: 'backcountry',
                     38: 'resort',
                     39: 'rc_drone',
                     40: 'wingsuit',
                     41: 'whitewater',
                     42: 'skate_skiing',
                     43: 'yoga',
                     44: 'pilates',
                     45: 'indoor_running',
                     46: 'gravel_cycling',
                     47: 'e_bike_mountain',
                     48: 'commuting',
                     254: 'all'},
    'supported_exd_screen_layouts': {   1: 'full_screen',
                                        2: 'half_vertical',
                                        4: 'half_horizontal',
                                        8: 'half_vertical_right_split',
                                        16: 'half_horizontal_bottom_split',
                                        32: 'full_quarter_split',
                                        64: 'half_vertical_left_split',
                                        128: 'half_horizontal_top_split'},
    'swim_stroke': {   0.0: 'freestyle',
                       1: 'backstroke',
                       2: 'breaststroke',
                       3: 'butterfly',
                       4: 'drill',
                       5: 'mixed',
                       6: 'im'},
    'time_mode': {   0.0: 'hour12',
                     1: 'hour24',
                     2: 'military',
                     3: 'hour_12_with_seconds',
                     4: 'hour_24_with_seconds'},
    'time_zone': {   0.0: 'almaty',
                     1: 'bangkok',
                     2: 'bombay',
                     3: 'brasilia',
                     4: 'cairo',
                     5: 'cape_verde_is',
                     6: 'darwin',
                     7: 'eniwetok',
                     8: 'fiji',
                     9: 'hong_kong',
                     10: 'islamabad',
                     11: 'kabul',
                     12: 'magadan',
                     13: 'mid_atlantic',
                     14: 'moscow',
                     15: 'muscat',
                     16: 'newfoundland',
                     17: 'samoa',
                     18: 'sydney',
                     19: 'tehran',
                     20: 'tokyo',
                     21: 'us_alaska',
                     22: 'us_atlantic',
                     23: 'us_central',
                     24: 'us_eastern',
                     25: 'us_hawaii',
                     26: 'us_mountain',
                     27: 'us_pacific',
                     28: 'other',
                     29: 'auckland',
                     30: 'kathmandu',
                     31: 'europe_western_wet',
                     32: 'europe_central_cet',
                     33: 'europe_eastern_eet',
                     34: 'jakarta',
                     35: 'perth',
                     36: 'adelaide',
                     37: 'brisbane',
                     38: 'tasmania',
                     39: 'iceland',
                     40: 'amsterdam',
                     41: 'athens',
                     42: 'barcelona',
                     43: 'berlin',
                     44: 'brussels',
                     45: 'budapest',
                     46: 'copenhagen',
                     47: 'dublin',
                     48: 'helsinki',
                     49: 'lisbon',
                     50: 'london',
                     51: 'madrid',
                     52: 'munich',
                     53: 'oslo',
                     54: 'paris',
                     55: 'prague',
                     56: 'reykjavik',
                     57: 'rome',
                     58: 'stockholm',
                     59: 'vienna',
                     60: 'warsaw',
                     61: 'zurich',
                     62: 'quebec',
                     63: 'ontario',
                     64: 'manitoba',
                     65: 'saskatchewan',
                     66: 'alberta',
                     67: 'british_columbia',
                     68: 'boise',
                     69: 'boston',
                     70: 'chicago',
                     71: 'dallas',
                     72: 'denver',
                     73: 'kansas_city',
                     74: 'las_vegas',
                     75: 'los_angeles',
                     76: 'miami',
                     77: 'minneapolis',
                     78: 'new_york',
                     79: 'new_orleans',
                     80: 'phoenix',
                     81: 'santa_fe',
                     82: 'seattle',
                     83: 'washington_dc',
                     84: 'us_arizona',
                     85: 'chita',
                     86: 'ekaterinburg',
                     87: 'irkutsk',
                     88: 'kaliningrad',
                     89: 'krasnoyarsk',
                     90: 'novosibirsk',
                     91: 'petropavlovsk_kamchatskiy',
                     92: 'samara',
                     93: 'vladivostok',
                     94: 'mexico_central',
                     95: 'mexico_mountain',
                     96: 'mexico_pacific',
                     97: 'cape_town',
                     98: 'winkhoek',
                     99: 'lagos',
                     100: 'riyahd',
                     101: 'venezuela',
                     102: 'australia_lh',
                     103: 'santiago',
                     253: 'manual',
                     254: 'automatic'},
    'timer_trigger': {0.0: 'manual', 1: 'auto', 2: 'fitness_equipment'},
    'turn_type': {   0.0: 'arriving_idx',
                     1: 'arriving_left_idx',
                     2: 'arriving_right_idx',
                     3: 'arriving_via_idx',
                     4: 'arriving_via_left_idx',
                     5: 'arriving_via_right_idx',
                     6: 'bear_keep_left_idx',
                     7: 'bear_keep_right_idx',
                     8: 'continue_idx',
                     9: 'exit_left_idx',
                     10: 'exit_right_idx',
                     11: 'ferry_idx',
                     12: 'roundabout_45_idx',
                     13: 'roundabout_90_idx',
                     14: 'roundabout_135_idx',
                     15: 'roundabout_180_idx',
                     16: 'roundabout_225_idx',
                     17: 'roundabout_270_idx',
                     18: 'roundabout_315_idx',
                     19: 'roundabout_360_idx',
                     20: 'roundabout_neg_45_idx',
                     21: 'roundabout_neg_90_idx',
                     22: 'roundabout_neg_135_idx',
                     23: 'roundabout_neg_180_idx',
                     24: 'roundabout_neg_225_idx',
                     25: 'roundabout_neg_270_idx',
                     26: 'roundabout_neg_315_idx',
                     27: 'roundabout_neg_360_idx',
                     28: 'roundabout_generic_idx',
                     29: 'roundabout_neg_generic_idx',
                     30: 'sharp_turn_left_idx',
                     31: 'sharp_turn_right_idx',
                     32: 'turn_left_idx',
                     33: 'turn_right_idx',
                     34: 'uturn_left_idx',
                     35: 'uturn_right_idx',
                     36: 'icon_inv_idx',
                     37: 'icon_idx_cnt'},
    'user_local_id': {   0: 'local_min',
                         15: 'local_max',
                         16: 'stationary_min',
                         255: 'stationary_max',
                         256: 'portable_min',
                         65534: 'portable_max'},
    'weather_report': {   0.0: 'current',
                          1: 'hourly_forecast',
                          2: 'daily_forecast'},
    'weather_severe_type': {   0.0: 'unspecified',
                               1: 'tornado',
                               2: 'tsunami',
                               3: 'hurricane',
                               4: 'extreme_wind',
                               5: 'typhoon',
                               6: 'inland_hurricane',
                               7: 'hurricane_force_wind',
                               8: 'waterspout',
                               9: 'severe_thunderstorm',
                               10: 'wreckhouse_winds',
                               11: 'les_suetes_wind',
                               12: 'avalanche',
                               13: 'flash_flood',
                               14: 'tropical_storm',
                               15: 'inland_tropical_storm',
                               16: 'blizzard',
                               17: 'ice_storm',
                               18: 'freezing_rain',
                               19: 'debris_flow',
                               20: 'flash_freeze',
                               21: 'dust_storm',
                               22: 'high_wind',
                               23: 'winter_storm',
                               24: 'heavy_freezing_spray',
                               25: 'extreme_cold',
                               26: 'wind_chill',
                               27: 'cold_wave',
                               28: 'heavy_snow_alert',
                               29: 'lake_effect_blowing_snow',
                               30: 'snow_squall',
                               31: 'lake_effect_snow',
                               32: 'winter_weather',
                               33: 'sleet',
                               34: 'snowfall',
                               35: 'snow_and_blowing_snow',
                               36: 'blowing_snow',
                               37: 'snow_alert',
                               38: 'arctic_outflow',
                               39: 'freezing_drizzle',
                               40: 'storm',
                               41: 'storm_surge',
                               42: 'rainfall',
                               43: 'areal_flood',
                               44: 'coastal_flood',
                               45: 'lakeshore_flood',
                               46: 'excessive_heat',
                               47: 'heat',
                               48: 'weather',
                               49: 'high_heat_and_humidity',
                               50: 'humidex_and_health',
                               51: 'humidex',
                               52: 'gale',
                               53: 'freezing_spray',
                               54: 'special_marine',
                               55: 'squall',
                               56: 'strong_wind',
                               57: 'lake_wind',
                               58: 'marine_weather',
                               59: 'wind',
                               60: 'small_craft_hazardous_seas',
                               61: 'hazardous_seas',
                               62: 'small_craft',
                               63: 'small_craft_winds',
                               64: 'small_craft_rough_bar',
                               65: 'high_water_level',
                               66: 'ashfall',
                               67: 'freezing_fog',
                               68: 'dense_fog',
                               69: 'dense_smoke',
                               70: 'blowing_dust',
                               71: 'hard_freeze',
                               72: 'freeze',
                               73: 'frost',
                               74: 'fire_weather',
                               75: 'flood',
                               76: 'rip_tide',
                               77: 'high_surf',
                               78: 'smog',
                               79: 'air_quality',
                               80: 'brisk_wind',
                               81: 'air_stagnation',
                               82: 'low_water',
                               83: 'hydrological',
                               84: 'special_weather'},
    'weather_severity': {   0.0: 'unknown',
                            1: 'warning',
                            2: 'watch',
                            3: 'advisory',
                            4: 'statement'},
    'weather_status': {   0.0: 'clear',
                          1: 'partly_cloudy',
                          2: 'mostly_cloudy',
                          3: 'rain',
                          4: 'snow',
                          5: 'windy',
                          6: 'thunderstorms',
                          7: 'wintry_mix',
                          8: 'fog',
                          11: 'hazy',
                          12: 'hail',
                          13: 'scattered_showers',
                          14: 'scattered_thunderstorms',
                          15: 'unknown_precipitation',
                          16: 'light_rain',
                          17: 'heavy_rain',
                          18: 'light_snow',
                          19: 'heavy_snow',
                          20: 'light_rain_snow',
                          21: 'heavy_rain_snow',
                          22: 'cloudy'},
    'weight': {65534: 'calculating'},
    'wkt_step_duration': {   0.0: 'time',
                             1: 'distance',
                             2: 'hr_less_than',
                             3: 'hr_greater_than',
                             4: 'calories',
                             5: 'open',
                             6: 'repeat_until_steps_cmplt',
                             7: 'repeat_until_time',
                             8: 'repeat_until_distance',
                             9: 'repeat_until_calories',
                             10: 'repeat_until_hr_less_than',
                             11: 'repeat_until_hr_greater_than',
                             12: 'repeat_until_power_less_than',
                             13: 'repeat_until_power_greater_than',
                             14: 'power_less_than',
                             15: 'power_greater_than',
                             28: 'repetition_time'},
    'wkt_step_target': {   0.0: 'speed',
                           1: 'heart_rate',
                           2: 'open',
                           3: 'cadence',
                           4: 'power',
                           5: 'grade',
                           6: 'resistance'},
    'workout_capabilities': {   1: 'interval',
                                2: 'custom',
                                4: 'fitness_equipment',
                                8: 'firstbeat',
                                16: 'new_leaf',
                                32: 'tcx',
                                128: 'speed',
                                256: 'heart_rate',
                                512: 'distance',
                                1024: 'cadence',
                                2048: 'power',
                                4096: 'grade',
                                8192: 'resistance',
                                16384: 'protected'},
    'workout_hr': {100: 'bpm_offset'},
    'workout_power': {1000: 'watts_offset'}}

GLOBAL_MESG_NUMS = {
    0.0: 'file_id',
    1: 'capabilities',
    2: 'device_settings',
    3: 'user_profile',
    4: 'hrm_profile',
    5: 'sdm_profile',
    6: 'bike_profile',
    7: 'zones_target',
    8: 'hr_zone',
    9: 'power_zone',
    10: 'met_zone',
    12: 'sport',
    15: 'goal',
    18: 'session',
    19: 'lap',
    20: 'record',
    21: 'event',
    23: 'device_info',
    26: 'workout',
    27: 'workout_step',
    28: 'schedule',
    30: 'weight_scale',
    31: 'course',
    32: 'course_point',
    33: 'totals',
    34: 'activity',
    35: 'software',
    37: 'file_capabilities',
    38: 'mesg_capabilities',
    39: 'field_capabilities',
    49: 'file_creator',
    51: 'blood_pressure',
    53: 'speed_zone',
    55: 'monitoring',
    72: 'training_file',
    78: 'hrv',
    80: 'ant_rx',
    81: 'ant_tx',
    82: 'ant_channel_id',
    101: 'length',
    103: 'monitoring_info',
    105: 'pad',
    106: 'slave_device',
    127: 'connectivity',
    128: 'weather_conditions',
    129: 'weather_alert',
    131: 'cadence_zone',
    132: 'hr',
    142: 'segment_lap',
    145: 'memo_glob',
    148: 'segment_id',
    149: 'segment_leaderboard_entry',
    150: 'segment_point',
    151: 'segment_file',
    160: 'gps_metadata',
    161: 'camera_event',
    162: 'timestamp_correlation',
    164: 'gyroscope_data',
    165: 'accelerometer_data',
    167: 'three_d_sensor_calibration',
    169: 'video_frame',
    174: 'obdii_data',
    177: 'nmea_sentence',
    178: 'aviation_attitude',
    184: 'video',
    185: 'video_title',
    186: 'video_description',
    187: 'video_clip',
    200: 'exd_screen_configuration',
    201: 'exd_data_field_configuration',
    202: 'exd_data_concept_configuration',
    206: 'field_description',
    207: 'developer_data_id',
    208: 'magnetometer_data',
    65280: 'mfg_range_min',
    65534: 'mfg_range_max'}
