#region Copyright
////////////////////////////////////////////////////////////////////////////////
// The following FIT Protocol software provided may be used with FIT protocol
// devices only and remains the copyrighted property of Dynastream Innovations Inc.
// The software is being provided on an "as-is" basis and as an accommodation,
// and therefore all warranties, representations, or guarantees of any kind
// (whether express, implied or statutory) including, without limitation,
// warranties of merchantability, non-infringement, or fitness for a particular
// purpose, are specifically disclaimed.
//
// Copyright 2016 Dynastream Innovations Inc.
////////////////////////////////////////////////////////////////////////////////
// ****WARNING**** This file is auto-generated! Do NOT edit this file.
// Profile Version = 16.60Release
// Tag = production-akw-16.60.00-0-g5d3d436
////////////////////////////////////////////////////////////////////////////////
#endregion
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.IO;
namespace Dynastream.Fit
{
///
/// Represents the Fit Profile including message, field and type definition.
///
public static class Profile
{
#region Fields
[Obsolete("This field will be made private in version 18.00; Use GetMesg() instead;")]
public static List mesgs = new List();
private static readonly Dictionary m_mesgLookup = new Dictionary();
#region Profile Mesg Indices
// These are the indices into the mesgs array
public readonly static ushort FileIdIndex;
public readonly static ushort FileCreatorIndex;
public readonly static ushort TimestampCorrelationIndex;
public readonly static ushort SoftwareIndex;
public readonly static ushort SlaveDeviceIndex;
public readonly static ushort CapabilitiesIndex;
public readonly static ushort FileCapabilitiesIndex;
public readonly static ushort MesgCapabilitiesIndex;
public readonly static ushort FieldCapabilitiesIndex;
public readonly static ushort DeviceSettingsIndex;
public readonly static ushort UserProfileIndex;
public readonly static ushort HrmProfileIndex;
public readonly static ushort SdmProfileIndex;
public readonly static ushort BikeProfileIndex;
public readonly static ushort ZonesTargetIndex;
public readonly static ushort SportIndex;
public readonly static ushort HrZoneIndex;
public readonly static ushort SpeedZoneIndex;
public readonly static ushort CadenceZoneIndex;
public readonly static ushort PowerZoneIndex;
public readonly static ushort MetZoneIndex;
public readonly static ushort GoalIndex;
public readonly static ushort ActivityIndex;
public readonly static ushort SessionIndex;
public readonly static ushort LapIndex;
public readonly static ushort LengthIndex;
public readonly static ushort RecordIndex;
public readonly static ushort EventIndex;
public readonly static ushort DeviceInfoIndex;
public readonly static ushort TrainingFileIndex;
public readonly static ushort HrvIndex;
public readonly static ushort CameraEventIndex;
public readonly static ushort GyroscopeDataIndex;
public readonly static ushort AccelerometerDataIndex;
public readonly static ushort ThreeDSensorCalibrationIndex;
public readonly static ushort VideoFrameIndex;
public readonly static ushort ObdiiDataIndex;
public readonly static ushort NmeaSentenceIndex;
public readonly static ushort AviationAttitudeIndex;
public readonly static ushort VideoIndex;
public readonly static ushort VideoTitleIndex;
public readonly static ushort VideoDescriptionIndex;
public readonly static ushort VideoClipIndex;
public readonly static ushort CourseIndex;
public readonly static ushort CoursePointIndex;
public readonly static ushort SegmentIdIndex;
public readonly static ushort SegmentLeaderboardEntryIndex;
public readonly static ushort SegmentPointIndex;
public readonly static ushort SegmentLapIndex;
public readonly static ushort SegmentFileIndex;
public readonly static ushort WorkoutIndex;
public readonly static ushort WorkoutStepIndex;
public readonly static ushort ScheduleIndex;
public readonly static ushort TotalsIndex;
public readonly static ushort WeightScaleIndex;
public readonly static ushort BloodPressureIndex;
public readonly static ushort MonitoringInfoIndex;
public readonly static ushort MonitoringIndex;
public readonly static ushort HrIndex;
public readonly static ushort MemoGlobIndex;
public readonly static ushort AntChannelIdIndex;
public readonly static ushort AntRxIndex;
public readonly static ushort AntTxIndex;
public readonly static ushort PadIndex;
//public readonly static ushort InvalidIndex;
#endregion// Profile Mesg Indices
#endregion // Fields
#region Properties
#endregion
#region Constructors
///
/// Static constructor to build the profile object
///
static Profile()
{
// Disable the Obsolete Warning that is raised by using mesgs
#pragma warning disable 0618
ushort mesgIndex = 0;
ushort fieldIndex, subfieldIndex;
// FileId
Mesg fileIdMesg = new Mesg("FileId", MesgNum.FileId);
fieldIndex = 0;
fileIdMesg.SetField(new Field("Type", 0, 0, 1, 0, "", false));
fieldIndex++;
fileIdMesg.SetField(new Field("Manufacturer", 1, 132, 1, 0, "", false));
fieldIndex++;
fileIdMesg.SetField(new Field("Product", 2, 132, 1, 0, "", false));
subfieldIndex = 0;
fileIdMesg.fields[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, ""));
fileIdMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 1);
fileIdMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 15);
fileIdMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 13);
subfieldIndex++;
fieldIndex++;
fileIdMesg.SetField(new Field("SerialNumber", 3, 140, 1, 0, "", false));
fieldIndex++;
fileIdMesg.SetField(new Field("TimeCreated", 4, 134, 1, 0, "", false));
fieldIndex++;
fileIdMesg.SetField(new Field("Number", 5, 132, 1, 0, "", false));
fieldIndex++;
fileIdMesg.SetField(new Field("ProductName", 8, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(fileIdMesg);
FileIdIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.FileId, fileIdMesg);
mesgIndex++;
// FileCreator
Mesg fileCreatorMesg = new Mesg("FileCreator", MesgNum.FileCreator);
fieldIndex = 0;
fileCreatorMesg.SetField(new Field("SoftwareVersion", 0, 132, 1, 0, "", false));
fieldIndex++;
fileCreatorMesg.SetField(new Field("HardwareVersion", 1, 2, 1, 0, "", false));
fieldIndex++;
mesgs.Add(fileCreatorMesg);
FileCreatorIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.FileCreator, fileCreatorMesg);
mesgIndex++;
// TimestampCorrelation
Mesg timestampCorrelationMesg = new Mesg("TimestampCorrelation", MesgNum.TimestampCorrelation);
fieldIndex = 0;
timestampCorrelationMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
timestampCorrelationMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false));
fieldIndex++;
timestampCorrelationMesg.SetField(new Field("SystemTimestamp", 1, 134, 1, 0, "s", false));
fieldIndex++;
timestampCorrelationMesg.SetField(new Field("FractionalSystemTimestamp", 2, 132, 32768, 0, "s", false));
fieldIndex++;
timestampCorrelationMesg.SetField(new Field("LocalTimestamp", 3, 134, 1, 0, "s", false));
fieldIndex++;
timestampCorrelationMesg.SetField(new Field("TimestampMs", 4, 132, 1, 0, "ms", false));
fieldIndex++;
timestampCorrelationMesg.SetField(new Field("SystemTimestampMs", 5, 132, 1, 0, "ms", false));
fieldIndex++;
mesgs.Add(timestampCorrelationMesg);
TimestampCorrelationIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.TimestampCorrelation, timestampCorrelationMesg);
mesgIndex++;
// Software
Mesg softwareMesg = new Mesg("Software", MesgNum.Software);
fieldIndex = 0;
softwareMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
softwareMesg.SetField(new Field("Version", 3, 132, 100, 0, "", false));
fieldIndex++;
softwareMesg.SetField(new Field("PartNumber", 5, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(softwareMesg);
SoftwareIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Software, softwareMesg);
mesgIndex++;
// SlaveDevice
Mesg slaveDeviceMesg = new Mesg("SlaveDevice", MesgNum.SlaveDevice);
fieldIndex = 0;
slaveDeviceMesg.SetField(new Field("Manufacturer", 0, 132, 1, 0, "", false));
fieldIndex++;
slaveDeviceMesg.SetField(new Field("Product", 1, 132, 1, 0, "", false));
subfieldIndex = 0;
slaveDeviceMesg.fields[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, ""));
slaveDeviceMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 1);
slaveDeviceMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 15);
slaveDeviceMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 13);
subfieldIndex++;
fieldIndex++;
mesgs.Add(slaveDeviceMesg);
SlaveDeviceIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.SlaveDevice, slaveDeviceMesg);
mesgIndex++;
// Capabilities
Mesg capabilitiesMesg = new Mesg("Capabilities", MesgNum.Capabilities);
fieldIndex = 0;
capabilitiesMesg.SetField(new Field("Languages", 0, 10, 1, 0, "", false));
fieldIndex++;
capabilitiesMesg.SetField(new Field("Sports", 1, 10, 1, 0, "", false));
fieldIndex++;
capabilitiesMesg.SetField(new Field("WorkoutsSupported", 21, 140, 1, 0, "", false));
fieldIndex++;
capabilitiesMesg.SetField(new Field("ConnectivitySupported", 23, 140, 1, 0, "", false));
fieldIndex++;
mesgs.Add(capabilitiesMesg);
CapabilitiesIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Capabilities, capabilitiesMesg);
mesgIndex++;
// FileCapabilities
Mesg fileCapabilitiesMesg = new Mesg("FileCapabilities", MesgNum.FileCapabilities);
fieldIndex = 0;
fileCapabilitiesMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
fileCapabilitiesMesg.SetField(new Field("Type", 0, 0, 1, 0, "", false));
fieldIndex++;
fileCapabilitiesMesg.SetField(new Field("Flags", 1, 10, 1, 0, "", false));
fieldIndex++;
fileCapabilitiesMesg.SetField(new Field("Directory", 2, 7, 1, 0, "", false));
fieldIndex++;
fileCapabilitiesMesg.SetField(new Field("MaxCount", 3, 132, 1, 0, "", false));
fieldIndex++;
fileCapabilitiesMesg.SetField(new Field("MaxSize", 4, 134, 1, 0, "bytes", false));
fieldIndex++;
mesgs.Add(fileCapabilitiesMesg);
FileCapabilitiesIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.FileCapabilities, fileCapabilitiesMesg);
mesgIndex++;
// MesgCapabilities
Mesg mesgCapabilitiesMesg = new Mesg("MesgCapabilities", MesgNum.MesgCapabilities);
fieldIndex = 0;
mesgCapabilitiesMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
mesgCapabilitiesMesg.SetField(new Field("File", 0, 0, 1, 0, "", false));
fieldIndex++;
mesgCapabilitiesMesg.SetField(new Field("MesgNum", 1, 132, 1, 0, "", false));
fieldIndex++;
mesgCapabilitiesMesg.SetField(new Field("CountType", 2, 0, 1, 0, "", false));
fieldIndex++;
mesgCapabilitiesMesg.SetField(new Field("Count", 3, 132, 1, 0, "", false));
subfieldIndex = 0;
mesgCapabilitiesMesg.fields[fieldIndex].subfields.Add(new Subfield("NumPerFile", 132, 1, 0, ""));
mesgCapabilitiesMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(2, 0);
subfieldIndex++;
mesgCapabilitiesMesg.fields[fieldIndex].subfields.Add(new Subfield("MaxPerFile", 132, 1, 0, ""));
mesgCapabilitiesMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(2, 1);
subfieldIndex++;
mesgCapabilitiesMesg.fields[fieldIndex].subfields.Add(new Subfield("MaxPerFileType", 132, 1, 0, ""));
mesgCapabilitiesMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(2, 2);
subfieldIndex++;
fieldIndex++;
mesgs.Add(mesgCapabilitiesMesg);
MesgCapabilitiesIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.MesgCapabilities, mesgCapabilitiesMesg);
mesgIndex++;
// FieldCapabilities
Mesg fieldCapabilitiesMesg = new Mesg("FieldCapabilities", MesgNum.FieldCapabilities);
fieldIndex = 0;
fieldCapabilitiesMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
fieldCapabilitiesMesg.SetField(new Field("File", 0, 0, 1, 0, "", false));
fieldIndex++;
fieldCapabilitiesMesg.SetField(new Field("MesgNum", 1, 132, 1, 0, "", false));
fieldIndex++;
fieldCapabilitiesMesg.SetField(new Field("FieldNum", 2, 2, 1, 0, "", false));
fieldIndex++;
fieldCapabilitiesMesg.SetField(new Field("Count", 3, 132, 1, 0, "", false));
fieldIndex++;
mesgs.Add(fieldCapabilitiesMesg);
FieldCapabilitiesIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.FieldCapabilities, fieldCapabilitiesMesg);
mesgIndex++;
// DeviceSettings
Mesg deviceSettingsMesg = new Mesg("DeviceSettings", MesgNum.DeviceSettings);
fieldIndex = 0;
deviceSettingsMesg.SetField(new Field("ActiveTimeZone", 0, 2, 1, 0, "", false));
fieldIndex++;
deviceSettingsMesg.SetField(new Field("UtcOffset", 1, 134, 1, 0, "", false));
fieldIndex++;
deviceSettingsMesg.SetField(new Field("TimeOffset", 2, 134, 1, 0, "s", false));
fieldIndex++;
deviceSettingsMesg.SetField(new Field("TimeZoneOffset", 5, 1, 4, 0, "hr", false));
fieldIndex++;
mesgs.Add(deviceSettingsMesg);
DeviceSettingsIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.DeviceSettings, deviceSettingsMesg);
mesgIndex++;
// UserProfile
Mesg userProfileMesg = new Mesg("UserProfile", MesgNum.UserProfile);
fieldIndex = 0;
userProfileMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("FriendlyName", 0, 7, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("Gender", 1, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("Age", 2, 2, 1, 0, "years", false));
fieldIndex++;
userProfileMesg.SetField(new Field("Height", 3, 2, 100, 0, "m", false));
fieldIndex++;
userProfileMesg.SetField(new Field("Weight", 4, 132, 10, 0, "kg", false));
fieldIndex++;
userProfileMesg.SetField(new Field("Language", 5, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("ElevSetting", 6, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("WeightSetting", 7, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("RestingHeartRate", 8, 2, 1, 0, "bpm", false));
fieldIndex++;
userProfileMesg.SetField(new Field("DefaultMaxRunningHeartRate", 9, 2, 1, 0, "bpm", false));
fieldIndex++;
userProfileMesg.SetField(new Field("DefaultMaxBikingHeartRate", 10, 2, 1, 0, "bpm", false));
fieldIndex++;
userProfileMesg.SetField(new Field("DefaultMaxHeartRate", 11, 2, 1, 0, "bpm", false));
fieldIndex++;
userProfileMesg.SetField(new Field("HrSetting", 12, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("SpeedSetting", 13, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("DistSetting", 14, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("PowerSetting", 16, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("ActivityClass", 17, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("PositionSetting", 18, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("TemperatureSetting", 21, 0, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("LocalId", 22, 132, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("GlobalId", 23, 13, 1, 0, "", false));
fieldIndex++;
userProfileMesg.SetField(new Field("HeightSetting", 30, 0, 1, 0, "", false));
fieldIndex++;
mesgs.Add(userProfileMesg);
UserProfileIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.UserProfile, userProfileMesg);
mesgIndex++;
// HrmProfile
Mesg hrmProfileMesg = new Mesg("HrmProfile", MesgNum.HrmProfile);
fieldIndex = 0;
hrmProfileMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
hrmProfileMesg.SetField(new Field("Enabled", 0, 0, 1, 0, "", false));
fieldIndex++;
hrmProfileMesg.SetField(new Field("HrmAntId", 1, 139, 1, 0, "", false));
fieldIndex++;
hrmProfileMesg.SetField(new Field("LogHrv", 2, 0, 1, 0, "", false));
fieldIndex++;
hrmProfileMesg.SetField(new Field("HrmAntIdTransType", 3, 10, 1, 0, "", false));
fieldIndex++;
mesgs.Add(hrmProfileMesg);
HrmProfileIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.HrmProfile, hrmProfileMesg);
mesgIndex++;
// SdmProfile
Mesg sdmProfileMesg = new Mesg("SdmProfile", MesgNum.SdmProfile);
fieldIndex = 0;
sdmProfileMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
sdmProfileMesg.SetField(new Field("Enabled", 0, 0, 1, 0, "", false));
fieldIndex++;
sdmProfileMesg.SetField(new Field("SdmAntId", 1, 139, 1, 0, "", false));
fieldIndex++;
sdmProfileMesg.SetField(new Field("SdmCalFactor", 2, 132, 10, 0, "%", false));
fieldIndex++;
sdmProfileMesg.SetField(new Field("Odometer", 3, 134, 100, 0, "m", false));
fieldIndex++;
sdmProfileMesg.SetField(new Field("SpeedSource", 4, 0, 1, 0, "", false));
fieldIndex++;
sdmProfileMesg.SetField(new Field("SdmAntIdTransType", 5, 10, 1, 0, "", false));
fieldIndex++;
sdmProfileMesg.SetField(new Field("OdometerRollover", 7, 2, 1, 0, "", false));
fieldIndex++;
mesgs.Add(sdmProfileMesg);
SdmProfileIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.SdmProfile, sdmProfileMesg);
mesgIndex++;
// BikeProfile
Mesg bikeProfileMesg = new Mesg("BikeProfile", MesgNum.BikeProfile);
fieldIndex = 0;
bikeProfileMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("Sport", 1, 0, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("SubSport", 2, 0, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("Odometer", 3, 134, 100, 0, "m", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("BikeSpdAntId", 4, 139, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("BikeCadAntId", 5, 139, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("BikeSpdcadAntId", 6, 139, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("BikePowerAntId", 7, 139, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("CustomWheelsize", 8, 132, 1000, 0, "m", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("AutoWheelsize", 9, 132, 1000, 0, "m", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("BikeWeight", 10, 132, 10, 0, "kg", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("PowerCalFactor", 11, 132, 10, 0, "%", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("AutoWheelCal", 12, 0, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("AutoPowerZero", 13, 0, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("Id", 14, 2, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("SpdEnabled", 15, 0, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("CadEnabled", 16, 0, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("SpdcadEnabled", 17, 0, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("PowerEnabled", 18, 0, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("CrankLength", 19, 2, 2, -110, "mm", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("Enabled", 20, 0, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("BikeSpdAntIdTransType", 21, 10, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("BikeCadAntIdTransType", 22, 10, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("BikeSpdcadAntIdTransType", 23, 10, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("BikePowerAntIdTransType", 24, 10, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("OdometerRollover", 37, 2, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("FrontGearNum", 38, 10, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("FrontGear", 39, 10, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("RearGearNum", 40, 10, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("RearGear", 41, 10, 1, 0, "", false));
fieldIndex++;
bikeProfileMesg.SetField(new Field("ShimanoDi2Enabled", 44, 0, 1, 0, "", false));
fieldIndex++;
mesgs.Add(bikeProfileMesg);
BikeProfileIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.BikeProfile, bikeProfileMesg);
mesgIndex++;
// ZonesTarget
Mesg zonesTargetMesg = new Mesg("ZonesTarget", MesgNum.ZonesTarget);
fieldIndex = 0;
zonesTargetMesg.SetField(new Field("MaxHeartRate", 1, 2, 1, 0, "", false));
fieldIndex++;
zonesTargetMesg.SetField(new Field("ThresholdHeartRate", 2, 2, 1, 0, "", false));
fieldIndex++;
zonesTargetMesg.SetField(new Field("FunctionalThresholdPower", 3, 132, 1, 0, "", false));
fieldIndex++;
zonesTargetMesg.SetField(new Field("HrCalcType", 5, 0, 1, 0, "", false));
fieldIndex++;
zonesTargetMesg.SetField(new Field("PwrCalcType", 7, 0, 1, 0, "", false));
fieldIndex++;
mesgs.Add(zonesTargetMesg);
ZonesTargetIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.ZonesTarget, zonesTargetMesg);
mesgIndex++;
// Sport
Mesg sportMesg = new Mesg("Sport", MesgNum.Sport);
fieldIndex = 0;
sportMesg.SetField(new Field("Sport", 0, 0, 1, 0, "", false));
fieldIndex++;
sportMesg.SetField(new Field("SubSport", 1, 0, 1, 0, "", false));
fieldIndex++;
sportMesg.SetField(new Field("Name", 3, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(sportMesg);
SportIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Sport, sportMesg);
mesgIndex++;
// HrZone
Mesg hrZoneMesg = new Mesg("HrZone", MesgNum.HrZone);
fieldIndex = 0;
hrZoneMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
hrZoneMesg.SetField(new Field("HighBpm", 1, 2, 1, 0, "bpm", false));
fieldIndex++;
hrZoneMesg.SetField(new Field("Name", 2, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(hrZoneMesg);
HrZoneIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.HrZone, hrZoneMesg);
mesgIndex++;
// SpeedZone
Mesg speedZoneMesg = new Mesg("SpeedZone", MesgNum.SpeedZone);
fieldIndex = 0;
speedZoneMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
speedZoneMesg.SetField(new Field("HighValue", 0, 132, 1000, 0, "m/s", false));
fieldIndex++;
speedZoneMesg.SetField(new Field("Name", 1, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(speedZoneMesg);
SpeedZoneIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.SpeedZone, speedZoneMesg);
mesgIndex++;
// CadenceZone
Mesg cadenceZoneMesg = new Mesg("CadenceZone", MesgNum.CadenceZone);
fieldIndex = 0;
cadenceZoneMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
cadenceZoneMesg.SetField(new Field("HighValue", 0, 2, 1, 0, "rpm", false));
fieldIndex++;
cadenceZoneMesg.SetField(new Field("Name", 1, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(cadenceZoneMesg);
CadenceZoneIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.CadenceZone, cadenceZoneMesg);
mesgIndex++;
// PowerZone
Mesg powerZoneMesg = new Mesg("PowerZone", MesgNum.PowerZone);
fieldIndex = 0;
powerZoneMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
powerZoneMesg.SetField(new Field("HighValue", 1, 132, 1, 0, "watts", false));
fieldIndex++;
powerZoneMesg.SetField(new Field("Name", 2, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(powerZoneMesg);
PowerZoneIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.PowerZone, powerZoneMesg);
mesgIndex++;
// MetZone
Mesg metZoneMesg = new Mesg("MetZone", MesgNum.MetZone);
fieldIndex = 0;
metZoneMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
metZoneMesg.SetField(new Field("HighBpm", 1, 2, 1, 0, "", false));
fieldIndex++;
metZoneMesg.SetField(new Field("Calories", 2, 132, 10, 0, "kcal / min", false));
fieldIndex++;
metZoneMesg.SetField(new Field("FatCalories", 3, 2, 10, 0, "kcal / min", false));
fieldIndex++;
mesgs.Add(metZoneMesg);
MetZoneIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.MetZone, metZoneMesg);
mesgIndex++;
// Goal
Mesg goalMesg = new Mesg("Goal", MesgNum.Goal);
fieldIndex = 0;
goalMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("Sport", 0, 0, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("SubSport", 1, 0, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("StartDate", 2, 134, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("EndDate", 3, 134, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("Type", 4, 0, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("Value", 5, 134, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("Repeat", 6, 0, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("TargetValue", 7, 134, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("Recurrence", 8, 0, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("RecurrenceValue", 9, 132, 1, 0, "", false));
fieldIndex++;
goalMesg.SetField(new Field("Enabled", 10, 0, 1, 0, "", false));
fieldIndex++;
mesgs.Add(goalMesg);
GoalIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Goal, goalMesg);
mesgIndex++;
// Activity
Mesg activityMesg = new Mesg("Activity", MesgNum.Activity);
fieldIndex = 0;
activityMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false));
fieldIndex++;
activityMesg.SetField(new Field("TotalTimerTime", 0, 134, 1000, 0, "s", false));
fieldIndex++;
activityMesg.SetField(new Field("NumSessions", 1, 132, 1, 0, "", false));
fieldIndex++;
activityMesg.SetField(new Field("Type", 2, 0, 1, 0, "", false));
fieldIndex++;
activityMesg.SetField(new Field("Event", 3, 0, 1, 0, "", false));
fieldIndex++;
activityMesg.SetField(new Field("EventType", 4, 0, 1, 0, "", false));
fieldIndex++;
activityMesg.SetField(new Field("LocalTimestamp", 5, 134, 1, 0, "", false));
fieldIndex++;
activityMesg.SetField(new Field("EventGroup", 6, 2, 1, 0, "", false));
fieldIndex++;
mesgs.Add(activityMesg);
ActivityIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Activity, activityMesg);
mesgIndex++;
// Session
Mesg sessionMesg = new Mesg("Session", MesgNum.Session);
fieldIndex = 0;
sessionMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("StartPositionLat", 3, 133, 1, 0, "semicircles", false));
fieldIndex++;
sessionMesg.SetField(new Field("StartPositionLong", 4, 133, 1, 0, "semicircles", false));
fieldIndex++;
sessionMesg.SetField(new Field("Sport", 5, 0, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("SubSport", 6, 0, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalElapsedTime", 7, 134, 1000, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalTimerTime", 8, 134, 1000, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalDistance", 9, 134, 100, 0, "m", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalCycles", 10, 134, 1, 0, "cycles", false));
subfieldIndex = 0;
sessionMesg.fields[fieldIndex].subfields.Add(new Subfield("TotalStrides", 134, 1, 0, "strides"));
sessionMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(5, 1);
sessionMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(5, 11);
subfieldIndex++;
fieldIndex++;
sessionMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalFatCalories", 13, 132, 1, 0, "kcal", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgSpeed", 14, 132, 1000, 0, "m/s", false));
sessionMesg.fields[fieldIndex].components.Add(new FieldComponent(124, false, 16, 1000, 0)); // enhanced_avg_speed
fieldIndex++;
sessionMesg.SetField(new Field("MaxSpeed", 15, 132, 1000, 0, "m/s", false));
sessionMesg.fields[fieldIndex].components.Add(new FieldComponent(125, false, 16, 1000, 0)); // enhanced_max_speed
fieldIndex++;
sessionMesg.SetField(new Field("AvgHeartRate", 16, 2, 1, 0, "bpm", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxHeartRate", 17, 2, 1, 0, "bpm", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgCadence", 18, 2, 1, 0, "rpm", false));
subfieldIndex = 0;
sessionMesg.fields[fieldIndex].subfields.Add(new Subfield("AvgRunningCadence", 2, 1, 0, "strides/min"));
sessionMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(5, 1);
subfieldIndex++;
fieldIndex++;
sessionMesg.SetField(new Field("MaxCadence", 19, 2, 1, 0, "rpm", false));
subfieldIndex = 0;
sessionMesg.fields[fieldIndex].subfields.Add(new Subfield("MaxRunningCadence", 2, 1, 0, "strides/min"));
sessionMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(5, 1);
subfieldIndex++;
fieldIndex++;
sessionMesg.SetField(new Field("AvgPower", 20, 132, 1, 0, "watts", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxPower", 21, 132, 1, 0, "watts", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalAscent", 22, 132, 1, 0, "m", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalDescent", 23, 132, 1, 0, "m", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalTrainingEffect", 24, 2, 10, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("FirstLapIndex", 25, 132, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("NumLaps", 26, 132, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("EventGroup", 27, 2, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("Trigger", 28, 0, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("NecLat", 29, 133, 1, 0, "semicircles", false));
fieldIndex++;
sessionMesg.SetField(new Field("NecLong", 30, 133, 1, 0, "semicircles", false));
fieldIndex++;
sessionMesg.SetField(new Field("SwcLat", 31, 133, 1, 0, "semicircles", false));
fieldIndex++;
sessionMesg.SetField(new Field("SwcLong", 32, 133, 1, 0, "semicircles", false));
fieldIndex++;
sessionMesg.SetField(new Field("NormalizedPower", 34, 132, 1, 0, "watts", false));
fieldIndex++;
sessionMesg.SetField(new Field("TrainingStressScore", 35, 132, 10, 0, "tss", false));
fieldIndex++;
sessionMesg.SetField(new Field("IntensityFactor", 36, 132, 1000, 0, "if", false));
fieldIndex++;
sessionMesg.SetField(new Field("LeftRightBalance", 37, 132, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgStrokeCount", 41, 134, 10, 0, "strokes/lap", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgStrokeDistance", 42, 132, 100, 0, "m", false));
fieldIndex++;
sessionMesg.SetField(new Field("SwimStroke", 43, 0, 1, 0, "swim_stroke", false));
fieldIndex++;
sessionMesg.SetField(new Field("PoolLength", 44, 132, 100, 0, "m", false));
fieldIndex++;
sessionMesg.SetField(new Field("ThresholdPower", 45, 132, 1, 0, "watts", false));
fieldIndex++;
sessionMesg.SetField(new Field("PoolLengthUnit", 46, 0, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("NumActiveLengths", 47, 132, 1, 0, "lengths", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalWork", 48, 134, 1, 0, "J", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgAltitude", 49, 132, 5, 500, "m", false));
sessionMesg.fields[fieldIndex].components.Add(new FieldComponent(126, false, 16, 5, 500)); // enhanced_avg_altitude
fieldIndex++;
sessionMesg.SetField(new Field("MaxAltitude", 50, 132, 5, 500, "m", false));
sessionMesg.fields[fieldIndex].components.Add(new FieldComponent(128, false, 16, 5, 500)); // enhanced_max_altitude
fieldIndex++;
sessionMesg.SetField(new Field("GpsAccuracy", 51, 2, 1, 0, "m", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgGrade", 52, 131, 100, 0, "%", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgPosGrade", 53, 131, 100, 0, "%", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgNegGrade", 54, 131, 100, 0, "%", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxPosGrade", 55, 131, 100, 0, "%", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxNegGrade", 56, 131, 100, 0, "%", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgTemperature", 57, 1, 1, 0, "C", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxTemperature", 58, 1, 1, 0, "C", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalMovingTime", 59, 134, 1000, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgPosVerticalSpeed", 60, 131, 1000, 0, "m/s", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgNegVerticalSpeed", 61, 131, 1000, 0, "m/s", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxPosVerticalSpeed", 62, 131, 1000, 0, "m/s", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxNegVerticalSpeed", 63, 131, 1000, 0, "m/s", false));
fieldIndex++;
sessionMesg.SetField(new Field("MinHeartRate", 64, 2, 1, 0, "bpm", false));
fieldIndex++;
sessionMesg.SetField(new Field("TimeInHrZone", 65, 134, 1000, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("TimeInSpeedZone", 66, 134, 1000, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("TimeInCadenceZone", 67, 134, 1000, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("TimeInPowerZone", 68, 134, 1000, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgLapTime", 69, 134, 1000, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("BestLapIndex", 70, 132, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("MinAltitude", 71, 132, 5, 500, "m", false));
sessionMesg.fields[fieldIndex].components.Add(new FieldComponent(127, false, 16, 5, 500)); // enhanced_min_altitude
fieldIndex++;
sessionMesg.SetField(new Field("PlayerScore", 82, 132, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("OpponentScore", 83, 132, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("OpponentName", 84, 7, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("StrokeCount", 85, 132, 1, 0, "counts", false));
fieldIndex++;
sessionMesg.SetField(new Field("ZoneCount", 86, 132, 1, 0, "counts", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxBallSpeed", 87, 132, 100, 0, "m/s", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgBallSpeed", 88, 132, 100, 0, "m/s", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgVerticalOscillation", 89, 132, 10, 0, "mm", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgStanceTimePercent", 90, 132, 100, 0, "percent", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgStanceTime", 91, 132, 10, 0, "ms", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgFractionalCadence", 92, 2, 128, 0, "rpm", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxFractionalCadence", 93, 2, 128, 0, "rpm", false));
fieldIndex++;
sessionMesg.SetField(new Field("TotalFractionalCycles", 94, 2, 128, 0, "cycles", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgTotalHemoglobinConc", 95, 132, 100, 0, "g/dL", false));
fieldIndex++;
sessionMesg.SetField(new Field("MinTotalHemoglobinConc", 96, 132, 100, 0, "g/dL", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxTotalHemoglobinConc", 97, 132, 100, 0, "g/dL", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgSaturatedHemoglobinPercent", 98, 132, 10, 0, "%", false));
fieldIndex++;
sessionMesg.SetField(new Field("MinSaturatedHemoglobinPercent", 99, 132, 10, 0, "%", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxSaturatedHemoglobinPercent", 100, 132, 10, 0, "%", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgLeftTorqueEffectiveness", 101, 2, 2, 0, "percent", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgRightTorqueEffectiveness", 102, 2, 2, 0, "percent", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgLeftPedalSmoothness", 103, 2, 2, 0, "percent", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgRightPedalSmoothness", 104, 2, 2, 0, "percent", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgCombinedPedalSmoothness", 105, 2, 2, 0, "percent", false));
fieldIndex++;
sessionMesg.SetField(new Field("SportIndex", 111, 2, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("TimeStanding", 112, 134, 1000, 0, "s", false));
fieldIndex++;
sessionMesg.SetField(new Field("StandCount", 113, 132, 1, 0, "", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgLeftPco", 114, 1, 1, 0, "mm", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgRightPco", 115, 1, 1, 0, "mm", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgLeftPowerPhase", 116, 2, 1, 0, "degrees", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgLeftPowerPhasePeak", 117, 2, 1, 0, "degrees", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgRightPowerPhase", 118, 2, 1, 0, "degrees", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgRightPowerPhasePeak", 119, 2, 1, 0, "degrees", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgPowerPosition", 120, 132, 1, 0, "watts", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxPowerPosition", 121, 132, 1, 0, "watts", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgCadencePosition", 122, 2, 1, 0, "rpm", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxCadencePosition", 123, 2, 1, 0, "rpm", false));
fieldIndex++;
sessionMesg.SetField(new Field("EnhancedAvgSpeed", 124, 134, 1000, 0, "m/s", false));
fieldIndex++;
sessionMesg.SetField(new Field("EnhancedMaxSpeed", 125, 134, 1000, 0, "m/s", false));
fieldIndex++;
sessionMesg.SetField(new Field("EnhancedAvgAltitude", 126, 134, 5, 500, "m", false));
fieldIndex++;
sessionMesg.SetField(new Field("EnhancedMinAltitude", 127, 134, 5, 500, "m", false));
fieldIndex++;
sessionMesg.SetField(new Field("EnhancedMaxAltitude", 128, 134, 5, 500, "m", false));
fieldIndex++;
sessionMesg.SetField(new Field("AvgLevMotorPower", 129, 132, 1, 0, "watts", false));
fieldIndex++;
sessionMesg.SetField(new Field("MaxLevMotorPower", 130, 132, 1, 0, "watts", false));
fieldIndex++;
sessionMesg.SetField(new Field("LevBatteryConsumption", 131, 2, 2, 0, "percent", false));
fieldIndex++;
mesgs.Add(sessionMesg);
SessionIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Session, sessionMesg);
mesgIndex++;
// Lap
Mesg lapMesg = new Mesg("Lap", MesgNum.Lap);
fieldIndex = 0;
lapMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
lapMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("StartPositionLat", 3, 133, 1, 0, "semicircles", false));
fieldIndex++;
lapMesg.SetField(new Field("StartPositionLong", 4, 133, 1, 0, "semicircles", false));
fieldIndex++;
lapMesg.SetField(new Field("EndPositionLat", 5, 133, 1, 0, "semicircles", false));
fieldIndex++;
lapMesg.SetField(new Field("EndPositionLong", 6, 133, 1, 0, "semicircles", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalElapsedTime", 7, 134, 1000, 0, "s", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalTimerTime", 8, 134, 1000, 0, "s", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalDistance", 9, 134, 100, 0, "m", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalCycles", 10, 134, 1, 0, "cycles", false));
subfieldIndex = 0;
lapMesg.fields[fieldIndex].subfields.Add(new Subfield("TotalStrides", 134, 1, 0, "strides"));
lapMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(25, 1);
lapMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(25, 11);
subfieldIndex++;
fieldIndex++;
lapMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalFatCalories", 12, 132, 1, 0, "kcal", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgSpeed", 13, 132, 1000, 0, "m/s", false));
lapMesg.fields[fieldIndex].components.Add(new FieldComponent(110, false, 16, 1000, 0)); // enhanced_avg_speed
fieldIndex++;
lapMesg.SetField(new Field("MaxSpeed", 14, 132, 1000, 0, "m/s", false));
lapMesg.fields[fieldIndex].components.Add(new FieldComponent(111, false, 16, 1000, 0)); // enhanced_max_speed
fieldIndex++;
lapMesg.SetField(new Field("AvgHeartRate", 15, 2, 1, 0, "bpm", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxHeartRate", 16, 2, 1, 0, "bpm", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgCadence", 17, 2, 1, 0, "rpm", false));
subfieldIndex = 0;
lapMesg.fields[fieldIndex].subfields.Add(new Subfield("AvgRunningCadence", 2, 1, 0, "strides/min"));
lapMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(25, 1);
subfieldIndex++;
fieldIndex++;
lapMesg.SetField(new Field("MaxCadence", 18, 2, 1, 0, "rpm", false));
subfieldIndex = 0;
lapMesg.fields[fieldIndex].subfields.Add(new Subfield("MaxRunningCadence", 2, 1, 0, "strides/min"));
lapMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(25, 1);
subfieldIndex++;
fieldIndex++;
lapMesg.SetField(new Field("AvgPower", 19, 132, 1, 0, "watts", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxPower", 20, 132, 1, 0, "watts", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalAscent", 21, 132, 1, 0, "m", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalDescent", 22, 132, 1, 0, "m", false));
fieldIndex++;
lapMesg.SetField(new Field("Intensity", 23, 0, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("LapTrigger", 24, 0, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("Sport", 25, 0, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("EventGroup", 26, 2, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("NumLengths", 32, 132, 1, 0, "lengths", false));
fieldIndex++;
lapMesg.SetField(new Field("NormalizedPower", 33, 132, 1, 0, "watts", false));
fieldIndex++;
lapMesg.SetField(new Field("LeftRightBalance", 34, 132, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("FirstLengthIndex", 35, 132, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgStrokeDistance", 37, 132, 100, 0, "m", false));
fieldIndex++;
lapMesg.SetField(new Field("SwimStroke", 38, 0, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("SubSport", 39, 0, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("NumActiveLengths", 40, 132, 1, 0, "lengths", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalWork", 41, 134, 1, 0, "J", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgAltitude", 42, 132, 5, 500, "m", false));
lapMesg.fields[fieldIndex].components.Add(new FieldComponent(112, false, 16, 5, 500)); // enhanced_avg_altitude
fieldIndex++;
lapMesg.SetField(new Field("MaxAltitude", 43, 132, 5, 500, "m", false));
lapMesg.fields[fieldIndex].components.Add(new FieldComponent(114, false, 16, 5, 500)); // enhanced_max_altitude
fieldIndex++;
lapMesg.SetField(new Field("GpsAccuracy", 44, 2, 1, 0, "m", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgGrade", 45, 131, 100, 0, "%", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgPosGrade", 46, 131, 100, 0, "%", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgNegGrade", 47, 131, 100, 0, "%", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxPosGrade", 48, 131, 100, 0, "%", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxNegGrade", 49, 131, 100, 0, "%", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgTemperature", 50, 1, 1, 0, "C", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxTemperature", 51, 1, 1, 0, "C", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalMovingTime", 52, 134, 1000, 0, "s", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgPosVerticalSpeed", 53, 131, 1000, 0, "m/s", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgNegVerticalSpeed", 54, 131, 1000, 0, "m/s", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxPosVerticalSpeed", 55, 131, 1000, 0, "m/s", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxNegVerticalSpeed", 56, 131, 1000, 0, "m/s", false));
fieldIndex++;
lapMesg.SetField(new Field("TimeInHrZone", 57, 134, 1000, 0, "s", false));
fieldIndex++;
lapMesg.SetField(new Field("TimeInSpeedZone", 58, 134, 1000, 0, "s", false));
fieldIndex++;
lapMesg.SetField(new Field("TimeInCadenceZone", 59, 134, 1000, 0, "s", false));
fieldIndex++;
lapMesg.SetField(new Field("TimeInPowerZone", 60, 134, 1000, 0, "s", false));
fieldIndex++;
lapMesg.SetField(new Field("RepetitionNum", 61, 132, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("MinAltitude", 62, 132, 5, 500, "m", false));
lapMesg.fields[fieldIndex].components.Add(new FieldComponent(113, false, 16, 5, 500)); // enhanced_min_altitude
fieldIndex++;
lapMesg.SetField(new Field("MinHeartRate", 63, 2, 1, 0, "bpm", false));
fieldIndex++;
lapMesg.SetField(new Field("WktStepIndex", 71, 132, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("OpponentScore", 74, 132, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("StrokeCount", 75, 132, 1, 0, "counts", false));
fieldIndex++;
lapMesg.SetField(new Field("ZoneCount", 76, 132, 1, 0, "counts", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgVerticalOscillation", 77, 132, 10, 0, "mm", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgStanceTimePercent", 78, 132, 100, 0, "percent", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgStanceTime", 79, 132, 10, 0, "ms", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgFractionalCadence", 80, 2, 128, 0, "rpm", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxFractionalCadence", 81, 2, 128, 0, "rpm", false));
fieldIndex++;
lapMesg.SetField(new Field("TotalFractionalCycles", 82, 2, 128, 0, "cycles", false));
fieldIndex++;
lapMesg.SetField(new Field("PlayerScore", 83, 132, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgTotalHemoglobinConc", 84, 132, 100, 0, "g/dL", false));
fieldIndex++;
lapMesg.SetField(new Field("MinTotalHemoglobinConc", 85, 132, 100, 0, "g/dL", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxTotalHemoglobinConc", 86, 132, 100, 0, "g/dL", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgSaturatedHemoglobinPercent", 87, 132, 10, 0, "%", false));
fieldIndex++;
lapMesg.SetField(new Field("MinSaturatedHemoglobinPercent", 88, 132, 10, 0, "%", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxSaturatedHemoglobinPercent", 89, 132, 10, 0, "%", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgLeftTorqueEffectiveness", 91, 2, 2, 0, "percent", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgRightTorqueEffectiveness", 92, 2, 2, 0, "percent", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgLeftPedalSmoothness", 93, 2, 2, 0, "percent", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgRightPedalSmoothness", 94, 2, 2, 0, "percent", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgCombinedPedalSmoothness", 95, 2, 2, 0, "percent", false));
fieldIndex++;
lapMesg.SetField(new Field("TimeStanding", 98, 134, 1000, 0, "s", false));
fieldIndex++;
lapMesg.SetField(new Field("StandCount", 99, 132, 1, 0, "", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgLeftPco", 100, 1, 1, 0, "mm", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgRightPco", 101, 1, 1, 0, "mm", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgLeftPowerPhase", 102, 2, 1, 0, "degrees", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgLeftPowerPhasePeak", 103, 2, 1, 0, "degrees", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgRightPowerPhase", 104, 2, 1, 0, "degrees", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgRightPowerPhasePeak", 105, 2, 1, 0, "degrees", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgPowerPosition", 106, 132, 1, 0, "watts", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxPowerPosition", 107, 132, 1, 0, "watts", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgCadencePosition", 108, 2, 1, 0, "rpm", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxCadencePosition", 109, 2, 1, 0, "rpm", false));
fieldIndex++;
lapMesg.SetField(new Field("EnhancedAvgSpeed", 110, 134, 1000, 0, "m/s", false));
fieldIndex++;
lapMesg.SetField(new Field("EnhancedMaxSpeed", 111, 134, 1000, 0, "m/s", false));
fieldIndex++;
lapMesg.SetField(new Field("EnhancedAvgAltitude", 112, 134, 5, 500, "m", false));
fieldIndex++;
lapMesg.SetField(new Field("EnhancedMinAltitude", 113, 134, 5, 500, "m", false));
fieldIndex++;
lapMesg.SetField(new Field("EnhancedMaxAltitude", 114, 134, 5, 500, "m", false));
fieldIndex++;
lapMesg.SetField(new Field("AvgLevMotorPower", 115, 132, 1, 0, "watts", false));
fieldIndex++;
lapMesg.SetField(new Field("MaxLevMotorPower", 116, 132, 1, 0, "watts", false));
fieldIndex++;
lapMesg.SetField(new Field("LevBatteryConsumption", 117, 2, 2, 0, "percent", false));
fieldIndex++;
mesgs.Add(lapMesg);
LapIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Lap, lapMesg);
mesgIndex++;
// Length
Mesg lengthMesg = new Mesg("Length", MesgNum.Length);
fieldIndex = 0;
lengthMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
lengthMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false));
fieldIndex++;
lengthMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false));
fieldIndex++;
lengthMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false));
fieldIndex++;
lengthMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false));
fieldIndex++;
lengthMesg.SetField(new Field("TotalElapsedTime", 3, 134, 1000, 0, "s", false));
fieldIndex++;
lengthMesg.SetField(new Field("TotalTimerTime", 4, 134, 1000, 0, "s", false));
fieldIndex++;
lengthMesg.SetField(new Field("TotalStrokes", 5, 132, 1, 0, "strokes", false));
fieldIndex++;
lengthMesg.SetField(new Field("AvgSpeed", 6, 132, 1000, 0, "m/s", false));
fieldIndex++;
lengthMesg.SetField(new Field("SwimStroke", 7, 0, 1, 0, "swim_stroke", false));
fieldIndex++;
lengthMesg.SetField(new Field("AvgSwimmingCadence", 9, 2, 1, 0, "strokes/min", false));
fieldIndex++;
lengthMesg.SetField(new Field("EventGroup", 10, 2, 1, 0, "", false));
fieldIndex++;
lengthMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false));
fieldIndex++;
lengthMesg.SetField(new Field("LengthType", 12, 0, 1, 0, "", false));
fieldIndex++;
lengthMesg.SetField(new Field("PlayerScore", 18, 132, 1, 0, "", false));
fieldIndex++;
lengthMesg.SetField(new Field("OpponentScore", 19, 132, 1, 0, "", false));
fieldIndex++;
lengthMesg.SetField(new Field("StrokeCount", 20, 132, 1, 0, "counts", false));
fieldIndex++;
lengthMesg.SetField(new Field("ZoneCount", 21, 132, 1, 0, "counts", false));
fieldIndex++;
mesgs.Add(lengthMesg);
LengthIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Length, lengthMesg);
mesgIndex++;
// Record
Mesg recordMesg = new Mesg("Record", MesgNum.Record);
fieldIndex = 0;
recordMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
recordMesg.SetField(new Field("PositionLat", 0, 133, 1, 0, "semicircles", false));
fieldIndex++;
recordMesg.SetField(new Field("PositionLong", 1, 133, 1, 0, "semicircles", false));
fieldIndex++;
recordMesg.SetField(new Field("Altitude", 2, 132, 5, 500, "m", false));
recordMesg.fields[fieldIndex].components.Add(new FieldComponent(78, false, 16, 5, 500)); // enhanced_altitude
fieldIndex++;
recordMesg.SetField(new Field("HeartRate", 3, 2, 1, 0, "bpm", false));
fieldIndex++;
recordMesg.SetField(new Field("Cadence", 4, 2, 1, 0, "rpm", false));
fieldIndex++;
recordMesg.SetField(new Field("Distance", 5, 134, 100, 0, "m", true));
fieldIndex++;
recordMesg.SetField(new Field("Speed", 6, 132, 1000, 0, "m/s", false));
recordMesg.fields[fieldIndex].components.Add(new FieldComponent(73, false, 16, 1000, 0)); // enhanced_speed
fieldIndex++;
recordMesg.SetField(new Field("Power", 7, 132, 1, 0, "watts", false));
fieldIndex++;
recordMesg.SetField(new Field("CompressedSpeedDistance", 8, 13, 1, 0, "", false));
recordMesg.fields[fieldIndex].components.Add(new FieldComponent(6, false, 12, 100, 0)); // speed
recordMesg.fields[fieldIndex].components.Add(new FieldComponent(5, true, 12, 16, 0)); // distance
fieldIndex++;
recordMesg.SetField(new Field("Grade", 9, 131, 100, 0, "%", false));
fieldIndex++;
recordMesg.SetField(new Field("Resistance", 10, 2, 1, 0, "", false));
fieldIndex++;
recordMesg.SetField(new Field("TimeFromCourse", 11, 133, 1000, 0, "s", false));
fieldIndex++;
recordMesg.SetField(new Field("CycleLength", 12, 2, 100, 0, "m", false));
fieldIndex++;
recordMesg.SetField(new Field("Temperature", 13, 1, 1, 0, "C", false));
fieldIndex++;
recordMesg.SetField(new Field("Speed1s", 17, 2, 16, 0, "m/s", false));
fieldIndex++;
recordMesg.SetField(new Field("Cycles", 18, 2, 1, 0, "cycles", false));
recordMesg.fields[fieldIndex].components.Add(new FieldComponent(19, true, 8, 1, 0)); // total_cycles
fieldIndex++;
recordMesg.SetField(new Field("TotalCycles", 19, 134, 1, 0, "cycles", true));
fieldIndex++;
recordMesg.SetField(new Field("CompressedAccumulatedPower", 28, 132, 1, 0, "watts", false));
recordMesg.fields[fieldIndex].components.Add(new FieldComponent(29, true, 16, 1, 0)); // accumulated_power
fieldIndex++;
recordMesg.SetField(new Field("AccumulatedPower", 29, 134, 1, 0, "watts", true));
fieldIndex++;
recordMesg.SetField(new Field("LeftRightBalance", 30, 2, 1, 0, "", false));
fieldIndex++;
recordMesg.SetField(new Field("GpsAccuracy", 31, 2, 1, 0, "m", false));
fieldIndex++;
recordMesg.SetField(new Field("VerticalSpeed", 32, 131, 1000, 0, "m/s", false));
fieldIndex++;
recordMesg.SetField(new Field("Calories", 33, 132, 1, 0, "kcal", false));
fieldIndex++;
recordMesg.SetField(new Field("VerticalOscillation", 39, 132, 10, 0, "mm", false));
fieldIndex++;
recordMesg.SetField(new Field("StanceTimePercent", 40, 132, 100, 0, "percent", false));
fieldIndex++;
recordMesg.SetField(new Field("StanceTime", 41, 132, 10, 0, "ms", false));
fieldIndex++;
recordMesg.SetField(new Field("ActivityType", 42, 0, 1, 0, "", false));
fieldIndex++;
recordMesg.SetField(new Field("LeftTorqueEffectiveness", 43, 2, 2, 0, "percent", false));
fieldIndex++;
recordMesg.SetField(new Field("RightTorqueEffectiveness", 44, 2, 2, 0, "percent", false));
fieldIndex++;
recordMesg.SetField(new Field("LeftPedalSmoothness", 45, 2, 2, 0, "percent", false));
fieldIndex++;
recordMesg.SetField(new Field("RightPedalSmoothness", 46, 2, 2, 0, "percent", false));
fieldIndex++;
recordMesg.SetField(new Field("CombinedPedalSmoothness", 47, 2, 2, 0, "percent", false));
fieldIndex++;
recordMesg.SetField(new Field("Time128", 48, 2, 128, 0, "s", false));
fieldIndex++;
recordMesg.SetField(new Field("StrokeType", 49, 0, 1, 0, "", false));
fieldIndex++;
recordMesg.SetField(new Field("Zone", 50, 2, 1, 0, "", false));
fieldIndex++;
recordMesg.SetField(new Field("BallSpeed", 51, 132, 100, 0, "m/s", false));
fieldIndex++;
recordMesg.SetField(new Field("Cadence256", 52, 132, 256, 0, "rpm", false));
fieldIndex++;
recordMesg.SetField(new Field("FractionalCadence", 53, 2, 128, 0, "rpm", false));
fieldIndex++;
recordMesg.SetField(new Field("TotalHemoglobinConc", 54, 132, 100, 0, "g/dL", false));
fieldIndex++;
recordMesg.SetField(new Field("TotalHemoglobinConcMin", 55, 132, 100, 0, "g/dL", false));
fieldIndex++;
recordMesg.SetField(new Field("TotalHemoglobinConcMax", 56, 132, 100, 0, "g/dL", false));
fieldIndex++;
recordMesg.SetField(new Field("SaturatedHemoglobinPercent", 57, 132, 10, 0, "%", false));
fieldIndex++;
recordMesg.SetField(new Field("SaturatedHemoglobinPercentMin", 58, 132, 10, 0, "%", false));
fieldIndex++;
recordMesg.SetField(new Field("SaturatedHemoglobinPercentMax", 59, 132, 10, 0, "%", false));
fieldIndex++;
recordMesg.SetField(new Field("DeviceIndex", 62, 2, 1, 0, "", false));
fieldIndex++;
recordMesg.SetField(new Field("LeftPco", 67, 1, 1, 0, "mm", false));
fieldIndex++;
recordMesg.SetField(new Field("RightPco", 68, 1, 1, 0, "mm", false));
fieldIndex++;
recordMesg.SetField(new Field("LeftPowerPhase", 69, 2, 1, 0, "degrees", false));
fieldIndex++;
recordMesg.SetField(new Field("LeftPowerPhasePeak", 70, 2, 1, 0, "degrees", false));
fieldIndex++;
recordMesg.SetField(new Field("RightPowerPhase", 71, 2, 1, 0, "degrees", false));
fieldIndex++;
recordMesg.SetField(new Field("RightPowerPhasePeak", 72, 2, 1, 0, "degrees", false));
fieldIndex++;
recordMesg.SetField(new Field("EnhancedSpeed", 73, 134, 1000, 0, "m/s", false));
fieldIndex++;
recordMesg.SetField(new Field("EnhancedAltitude", 78, 134, 5, 500, "m", false));
fieldIndex++;
recordMesg.SetField(new Field("BatterySoc", 81, 2, 2, 0, "percent", false));
fieldIndex++;
recordMesg.SetField(new Field("MotorPower", 82, 132, 1, 0, "watts", false));
fieldIndex++;
mesgs.Add(recordMesg);
RecordIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Record, recordMesg);
mesgIndex++;
// Event
Mesg eventMesg = new Mesg("Event", MesgNum.Event);
fieldIndex = 0;
eventMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
eventMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false));
fieldIndex++;
eventMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false));
fieldIndex++;
eventMesg.SetField(new Field("Data16", 2, 132, 1, 0, "", false));
eventMesg.fields[fieldIndex].components.Add(new FieldComponent(3, false, 16, 1, 0)); // data
fieldIndex++;
eventMesg.SetField(new Field("Data", 3, 134, 1, 0, "", false));
subfieldIndex = 0;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("TimerTrigger", 0, 1, 0, ""));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 0);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("CoursePointIndex", 132, 1, 0, ""));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 10);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("BatteryLevel", 132, 1000, 0, "V"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 11);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("VirtualPartnerSpeed", 132, 1000, 0, "m/s"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 12);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("HrHighAlert", 2, 1, 0, "bpm"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 13);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("HrLowAlert", 2, 1, 0, "bpm"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 14);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("SpeedHighAlert", 134, 1000, 0, "m/s"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 15);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("SpeedLowAlert", 134, 1000, 0, "m/s"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 16);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("CadHighAlert", 132, 1, 0, "rpm"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 17);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("CadLowAlert", 132, 1, 0, "rpm"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 18);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("PowerHighAlert", 132, 1, 0, "watts"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 19);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("PowerLowAlert", 132, 1, 0, "watts"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 20);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("TimeDurationAlert", 134, 1000, 0, "s"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 23);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("DistanceDurationAlert", 134, 100, 0, "m"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 24);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("CalorieDurationAlert", 134, 1, 0, "calories"));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 25);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("FitnessEquipmentState", 0, 1, 0, ""));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 27);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("SportPoint", 134, 1, 0, ""));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 33);
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(7, false, 16, 1, 0)); // score
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(8, false, 16, 1, 0)); // opponent_score
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("GearChangeData", 134, 1, 0, ""));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 42);
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 43);
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(11, false, 8, 1, 0)); // rear_gear_num
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(12, false, 8, 1, 0)); // rear_gear
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(9, false, 8, 1, 0)); // front_gear_num
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddComponent(new FieldComponent(10, false, 8, 1, 0)); // front_gear
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("RiderPosition", 0, 1, 0, ""));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 44);
subfieldIndex++;
eventMesg.fields[fieldIndex].subfields.Add(new Subfield("CommTimeout", 132, 1, 0, ""));
eventMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 47);
subfieldIndex++;
fieldIndex++;
eventMesg.SetField(new Field("EventGroup", 4, 2, 1, 0, "", false));
fieldIndex++;
eventMesg.SetField(new Field("Score", 7, 132, 1, 0, "", false));
fieldIndex++;
eventMesg.SetField(new Field("OpponentScore", 8, 132, 1, 0, "", false));
fieldIndex++;
eventMesg.SetField(new Field("FrontGearNum", 9, 10, 1, 0, "", false));
fieldIndex++;
eventMesg.SetField(new Field("FrontGear", 10, 10, 1, 0, "", false));
fieldIndex++;
eventMesg.SetField(new Field("RearGearNum", 11, 10, 1, 0, "", false));
fieldIndex++;
eventMesg.SetField(new Field("RearGear", 12, 10, 1, 0, "", false));
fieldIndex++;
eventMesg.SetField(new Field("DeviceIndex", 13, 2, 1, 0, "", false));
fieldIndex++;
mesgs.Add(eventMesg);
EventIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Event, eventMesg);
mesgIndex++;
// DeviceInfo
Mesg deviceInfoMesg = new Mesg("DeviceInfo", MesgNum.DeviceInfo);
fieldIndex = 0;
deviceInfoMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("DeviceIndex", 0, 2, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("DeviceType", 1, 2, 1, 0, "", false));
subfieldIndex = 0;
deviceInfoMesg.fields[fieldIndex].subfields.Add(new Subfield("AntplusDeviceType", 2, 1, 0, ""));
deviceInfoMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(25, 1);
subfieldIndex++;
deviceInfoMesg.fields[fieldIndex].subfields.Add(new Subfield("AntDeviceType", 2, 1, 0, ""));
deviceInfoMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(25, 0);
subfieldIndex++;
fieldIndex++;
deviceInfoMesg.SetField(new Field("Manufacturer", 2, 132, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("SerialNumber", 3, 140, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("Product", 4, 132, 1, 0, "", false));
subfieldIndex = 0;
deviceInfoMesg.fields[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, ""));
deviceInfoMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(2, 1);
deviceInfoMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(2, 15);
deviceInfoMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(2, 13);
subfieldIndex++;
fieldIndex++;
deviceInfoMesg.SetField(new Field("SoftwareVersion", 5, 132, 100, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("HardwareVersion", 6, 2, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("CumOperatingTime", 7, 134, 1, 0, "s", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("BatteryVoltage", 10, 132, 256, 0, "V", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("BatteryStatus", 11, 2, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("SensorPosition", 18, 0, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("Descriptor", 19, 7, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("AntTransmissionType", 20, 10, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("AntDeviceNumber", 21, 139, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("AntNetwork", 22, 0, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("SourceType", 25, 0, 1, 0, "", false));
fieldIndex++;
deviceInfoMesg.SetField(new Field("ProductName", 27, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(deviceInfoMesg);
DeviceInfoIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.DeviceInfo, deviceInfoMesg);
mesgIndex++;
// TrainingFile
Mesg trainingFileMesg = new Mesg("TrainingFile", MesgNum.TrainingFile);
fieldIndex = 0;
trainingFileMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false));
fieldIndex++;
trainingFileMesg.SetField(new Field("Type", 0, 0, 1, 0, "", false));
fieldIndex++;
trainingFileMesg.SetField(new Field("Manufacturer", 1, 132, 1, 0, "", false));
fieldIndex++;
trainingFileMesg.SetField(new Field("Product", 2, 132, 1, 0, "", false));
subfieldIndex = 0;
trainingFileMesg.fields[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, ""));
trainingFileMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 1);
trainingFileMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 15);
trainingFileMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 13);
subfieldIndex++;
fieldIndex++;
trainingFileMesg.SetField(new Field("SerialNumber", 3, 140, 1, 0, "", false));
fieldIndex++;
trainingFileMesg.SetField(new Field("TimeCreated", 4, 134, 1, 0, "", false));
fieldIndex++;
mesgs.Add(trainingFileMesg);
TrainingFileIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.TrainingFile, trainingFileMesg);
mesgIndex++;
// Hrv
Mesg hrvMesg = new Mesg("Hrv", MesgNum.Hrv);
fieldIndex = 0;
hrvMesg.SetField(new Field("Time", 0, 132, 1000, 0, "s", false));
fieldIndex++;
mesgs.Add(hrvMesg);
HrvIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Hrv, hrvMesg);
mesgIndex++;
// CameraEvent
Mesg cameraEventMesg = new Mesg("CameraEvent", MesgNum.CameraEvent);
fieldIndex = 0;
cameraEventMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
cameraEventMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false));
fieldIndex++;
cameraEventMesg.SetField(new Field("CameraEventType", 1, 0, 1, 0, "", false));
fieldIndex++;
cameraEventMesg.SetField(new Field("CameraFileUuid", 2, 7, 1, 0, "", false));
fieldIndex++;
cameraEventMesg.SetField(new Field("CameraOrientation", 3, 0, 1, 0, "", false));
fieldIndex++;
mesgs.Add(cameraEventMesg);
CameraEventIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.CameraEvent, cameraEventMesg);
mesgIndex++;
// GyroscopeData
Mesg gyroscopeDataMesg = new Mesg("GyroscopeData", MesgNum.GyroscopeData);
fieldIndex = 0;
gyroscopeDataMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
gyroscopeDataMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false));
fieldIndex++;
gyroscopeDataMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false));
fieldIndex++;
gyroscopeDataMesg.SetField(new Field("GyroX", 2, 132, 1, 0, "counts", false));
fieldIndex++;
gyroscopeDataMesg.SetField(new Field("GyroY", 3, 132, 1, 0, "counts", false));
fieldIndex++;
gyroscopeDataMesg.SetField(new Field("GyroZ", 4, 132, 1, 0, "counts", false));
fieldIndex++;
gyroscopeDataMesg.SetField(new Field("CalibratedGyroX", 5, 136, 1, 0, "deg/s", false));
fieldIndex++;
gyroscopeDataMesg.SetField(new Field("CalibratedGyroY", 6, 136, 1, 0, "deg/s", false));
fieldIndex++;
gyroscopeDataMesg.SetField(new Field("CalibratedGyroZ", 7, 136, 1, 0, "deg/s", false));
fieldIndex++;
mesgs.Add(gyroscopeDataMesg);
GyroscopeDataIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.GyroscopeData, gyroscopeDataMesg);
mesgIndex++;
// AccelerometerData
Mesg accelerometerDataMesg = new Mesg("AccelerometerData", MesgNum.AccelerometerData);
fieldIndex = 0;
accelerometerDataMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
accelerometerDataMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false));
fieldIndex++;
accelerometerDataMesg.SetField(new Field("SampleTimeOffset", 1, 132, 1, 0, "ms", false));
fieldIndex++;
accelerometerDataMesg.SetField(new Field("AccelX", 2, 132, 1, 0, "counts", false));
fieldIndex++;
accelerometerDataMesg.SetField(new Field("AccelY", 3, 132, 1, 0, "counts", false));
fieldIndex++;
accelerometerDataMesg.SetField(new Field("AccelZ", 4, 132, 1, 0, "counts", false));
fieldIndex++;
accelerometerDataMesg.SetField(new Field("CalibratedAccelX", 5, 136, 1, 0, "g", false));
fieldIndex++;
accelerometerDataMesg.SetField(new Field("CalibratedAccelY", 6, 136, 1, 0, "g", false));
fieldIndex++;
accelerometerDataMesg.SetField(new Field("CalibratedAccelZ", 7, 136, 1, 0, "g", false));
fieldIndex++;
mesgs.Add(accelerometerDataMesg);
AccelerometerDataIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.AccelerometerData, accelerometerDataMesg);
mesgIndex++;
// ThreeDSensorCalibration
Mesg threeDSensorCalibrationMesg = new Mesg("ThreeDSensorCalibration", MesgNum.ThreeDSensorCalibration);
fieldIndex = 0;
threeDSensorCalibrationMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
threeDSensorCalibrationMesg.SetField(new Field("SensorType", 0, 0, 1, 0, "", false));
fieldIndex++;
threeDSensorCalibrationMesg.SetField(new Field("CalibrationFactor", 1, 134, 1, 0, "", false));
subfieldIndex = 0;
threeDSensorCalibrationMesg.fields[fieldIndex].subfields.Add(new Subfield("AccelCalFactor", 134, 1, 0, "g"));
threeDSensorCalibrationMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 0);
subfieldIndex++;
threeDSensorCalibrationMesg.fields[fieldIndex].subfields.Add(new Subfield("GyroCalFactor", 134, 1, 0, "deg/s"));
threeDSensorCalibrationMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 1);
subfieldIndex++;
fieldIndex++;
threeDSensorCalibrationMesg.SetField(new Field("CalibrationDivisor", 2, 134, 1, 0, "counts", false));
fieldIndex++;
threeDSensorCalibrationMesg.SetField(new Field("LevelShift", 3, 134, 1, 0, "", false));
fieldIndex++;
threeDSensorCalibrationMesg.SetField(new Field("OffsetCal", 4, 133, 1, 0, "", false));
fieldIndex++;
threeDSensorCalibrationMesg.SetField(new Field("OrientationMatrix", 5, 133, 65535, 0, "", false));
fieldIndex++;
mesgs.Add(threeDSensorCalibrationMesg);
ThreeDSensorCalibrationIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.ThreeDSensorCalibration, threeDSensorCalibrationMesg);
mesgIndex++;
// VideoFrame
Mesg videoFrameMesg = new Mesg("VideoFrame", MesgNum.VideoFrame);
fieldIndex = 0;
videoFrameMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
videoFrameMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false));
fieldIndex++;
videoFrameMesg.SetField(new Field("FrameNumber", 1, 134, 1, 0, "", false));
fieldIndex++;
mesgs.Add(videoFrameMesg);
VideoFrameIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.VideoFrame, videoFrameMesg);
mesgIndex++;
// ObdiiData
Mesg obdiiDataMesg = new Mesg("ObdiiData", MesgNum.ObdiiData);
fieldIndex = 0;
obdiiDataMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
obdiiDataMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false));
fieldIndex++;
obdiiDataMesg.SetField(new Field("TimeOffset", 1, 132, 1, 0, "ms", false));
fieldIndex++;
obdiiDataMesg.SetField(new Field("Pid", 2, 13, 1, 0, "", false));
fieldIndex++;
obdiiDataMesg.SetField(new Field("RawData", 3, 13, 1, 0, "", false));
fieldIndex++;
obdiiDataMesg.SetField(new Field("PidDataSize", 4, 2, 1, 0, "", false));
fieldIndex++;
obdiiDataMesg.SetField(new Field("SystemTime", 5, 134, 1, 0, "", false));
fieldIndex++;
obdiiDataMesg.SetField(new Field("StartTimestamp", 6, 134, 1, 0, "", false));
fieldIndex++;
obdiiDataMesg.SetField(new Field("StartTimestampMs", 7, 132, 1, 0, "ms", false));
fieldIndex++;
mesgs.Add(obdiiDataMesg);
ObdiiDataIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.ObdiiData, obdiiDataMesg);
mesgIndex++;
// NmeaSentence
Mesg nmeaSentenceMesg = new Mesg("NmeaSentence", MesgNum.NmeaSentence);
fieldIndex = 0;
nmeaSentenceMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
nmeaSentenceMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false));
fieldIndex++;
nmeaSentenceMesg.SetField(new Field("Sentence", 1, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(nmeaSentenceMesg);
NmeaSentenceIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.NmeaSentence, nmeaSentenceMesg);
mesgIndex++;
// AviationAttitude
Mesg aviationAttitudeMesg = new Mesg("AviationAttitude", MesgNum.AviationAttitude);
fieldIndex = 0;
aviationAttitudeMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("TimestampMs", 0, 132, 1, 0, "ms", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("SystemTime", 1, 134, 1, 0, "ms", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("Pitch", 2, 131, 1, 0, "radians", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("Roll", 3, 131, 1, 0, "radians", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("AccelLateral", 4, 131, 100, 0, "m/s^2", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("AccelNormal", 5, 131, 100, 0, "m/s^2", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("TurnRate", 6, 131, 1024, 0, "radians/second", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("Stage", 7, 0, 1, 0, "", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("AttitudeStageComplete", 8, 2, 1, 0, "%", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("Track", 9, 132, 1, 0, "radians", false));
fieldIndex++;
aviationAttitudeMesg.SetField(new Field("Validity", 10, 132, 1, 0, "", false));
fieldIndex++;
mesgs.Add(aviationAttitudeMesg);
AviationAttitudeIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.AviationAttitude, aviationAttitudeMesg);
mesgIndex++;
// Video
Mesg videoMesg = new Mesg("Video", MesgNum.Video);
fieldIndex = 0;
videoMesg.SetField(new Field("Url", 0, 7, 1, 0, "", false));
fieldIndex++;
videoMesg.SetField(new Field("HostingProvider", 1, 7, 1, 0, "", false));
fieldIndex++;
videoMesg.SetField(new Field("Duration", 2, 134, 1, 0, "ms", false));
fieldIndex++;
mesgs.Add(videoMesg);
VideoIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Video, videoMesg);
mesgIndex++;
// VideoTitle
Mesg videoTitleMesg = new Mesg("VideoTitle", MesgNum.VideoTitle);
fieldIndex = 0;
videoTitleMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
videoTitleMesg.SetField(new Field("MessageCount", 0, 132, 1, 0, "", false));
fieldIndex++;
videoTitleMesg.SetField(new Field("Text", 1, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(videoTitleMesg);
VideoTitleIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.VideoTitle, videoTitleMesg);
mesgIndex++;
// VideoDescription
Mesg videoDescriptionMesg = new Mesg("VideoDescription", MesgNum.VideoDescription);
fieldIndex = 0;
videoDescriptionMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
videoDescriptionMesg.SetField(new Field("MessageCount", 0, 132, 1, 0, "", false));
fieldIndex++;
videoDescriptionMesg.SetField(new Field("Text", 1, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(videoDescriptionMesg);
VideoDescriptionIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.VideoDescription, videoDescriptionMesg);
mesgIndex++;
// VideoClip
Mesg videoClipMesg = new Mesg("VideoClip", MesgNum.VideoClip);
fieldIndex = 0;
videoClipMesg.SetField(new Field("ClipNumber", 0, 132, 1, 0, "", false));
fieldIndex++;
videoClipMesg.SetField(new Field("StartTimestamp", 1, 134, 1, 0, "", false));
fieldIndex++;
videoClipMesg.SetField(new Field("StartTimestampMs", 2, 132, 1, 0, "", false));
fieldIndex++;
videoClipMesg.SetField(new Field("EndTimestamp", 3, 134, 1, 0, "", false));
fieldIndex++;
videoClipMesg.SetField(new Field("EndTimestampMs", 4, 132, 1, 0, "", false));
fieldIndex++;
videoClipMesg.SetField(new Field("ClipStart", 6, 134, 1, 0, "ms", false));
fieldIndex++;
videoClipMesg.SetField(new Field("ClipEnd", 7, 134, 1, 0, "ms", false));
fieldIndex++;
mesgs.Add(videoClipMesg);
VideoClipIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.VideoClip, videoClipMesg);
mesgIndex++;
// Course
Mesg courseMesg = new Mesg("Course", MesgNum.Course);
fieldIndex = 0;
courseMesg.SetField(new Field("Sport", 4, 0, 1, 0, "", false));
fieldIndex++;
courseMesg.SetField(new Field("Name", 5, 7, 1, 0, "", false));
fieldIndex++;
courseMesg.SetField(new Field("Capabilities", 6, 140, 1, 0, "", false));
fieldIndex++;
mesgs.Add(courseMesg);
CourseIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Course, courseMesg);
mesgIndex++;
// CoursePoint
Mesg coursePointMesg = new Mesg("CoursePoint", MesgNum.CoursePoint);
fieldIndex = 0;
coursePointMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
coursePointMesg.SetField(new Field("Timestamp", 1, 134, 1, 0, "", false));
fieldIndex++;
coursePointMesg.SetField(new Field("PositionLat", 2, 133, 1, 0, "semicircles", false));
fieldIndex++;
coursePointMesg.SetField(new Field("PositionLong", 3, 133, 1, 0, "semicircles", false));
fieldIndex++;
coursePointMesg.SetField(new Field("Distance", 4, 134, 100, 0, "m", false));
fieldIndex++;
coursePointMesg.SetField(new Field("Type", 5, 0, 1, 0, "", false));
fieldIndex++;
coursePointMesg.SetField(new Field("Name", 6, 7, 1, 0, "", false));
fieldIndex++;
coursePointMesg.SetField(new Field("Favorite", 8, 0, 1, 0, "", false));
fieldIndex++;
mesgs.Add(coursePointMesg);
CoursePointIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.CoursePoint, coursePointMesg);
mesgIndex++;
// SegmentId
Mesg segmentIdMesg = new Mesg("SegmentId", MesgNum.SegmentId);
fieldIndex = 0;
segmentIdMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false));
fieldIndex++;
segmentIdMesg.SetField(new Field("Uuid", 1, 7, 1, 0, "", false));
fieldIndex++;
segmentIdMesg.SetField(new Field("Sport", 2, 0, 1, 0, "", false));
fieldIndex++;
segmentIdMesg.SetField(new Field("Enabled", 3, 0, 1, 0, "", false));
fieldIndex++;
segmentIdMesg.SetField(new Field("UserProfilePrimaryKey", 4, 134, 1, 0, "", false));
fieldIndex++;
segmentIdMesg.SetField(new Field("DeviceId", 5, 134, 1, 0, "", false));
fieldIndex++;
segmentIdMesg.SetField(new Field("DefaultRaceLeader", 6, 2, 1, 0, "", false));
fieldIndex++;
segmentIdMesg.SetField(new Field("DeleteStatus", 7, 0, 1, 0, "", false));
fieldIndex++;
segmentIdMesg.SetField(new Field("SelectionType", 8, 0, 1, 0, "", false));
fieldIndex++;
mesgs.Add(segmentIdMesg);
SegmentIdIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.SegmentId, segmentIdMesg);
mesgIndex++;
// SegmentLeaderboardEntry
Mesg segmentLeaderboardEntryMesg = new Mesg("SegmentLeaderboardEntry", MesgNum.SegmentLeaderboardEntry);
fieldIndex = 0;
segmentLeaderboardEntryMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
segmentLeaderboardEntryMesg.SetField(new Field("Name", 0, 7, 1, 0, "", false));
fieldIndex++;
segmentLeaderboardEntryMesg.SetField(new Field("Type", 1, 0, 1, 0, "", false));
fieldIndex++;
segmentLeaderboardEntryMesg.SetField(new Field("GroupPrimaryKey", 2, 134, 1, 0, "", false));
fieldIndex++;
segmentLeaderboardEntryMesg.SetField(new Field("ActivityId", 3, 134, 1, 0, "", false));
fieldIndex++;
segmentLeaderboardEntryMesg.SetField(new Field("SegmentTime", 4, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLeaderboardEntryMesg.SetField(new Field("ActivityIdString", 5, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(segmentLeaderboardEntryMesg);
SegmentLeaderboardEntryIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.SegmentLeaderboardEntry, segmentLeaderboardEntryMesg);
mesgIndex++;
// SegmentPoint
Mesg segmentPointMesg = new Mesg("SegmentPoint", MesgNum.SegmentPoint);
fieldIndex = 0;
segmentPointMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
segmentPointMesg.SetField(new Field("PositionLat", 1, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentPointMesg.SetField(new Field("PositionLong", 2, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentPointMesg.SetField(new Field("Distance", 3, 134, 100, 0, "m", false));
fieldIndex++;
segmentPointMesg.SetField(new Field("Altitude", 4, 132, 5, 500, "m", false));
fieldIndex++;
segmentPointMesg.SetField(new Field("LeaderTime", 5, 134, 1000, 0, "s", false));
fieldIndex++;
mesgs.Add(segmentPointMesg);
SegmentPointIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.SegmentPoint, segmentPointMesg);
mesgIndex++;
// SegmentLap
Mesg segmentLapMesg = new Mesg("SegmentLap", MesgNum.SegmentLap);
fieldIndex = 0;
segmentLapMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("Event", 0, 0, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("EventType", 1, 0, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("StartTime", 2, 134, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("StartPositionLat", 3, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("StartPositionLong", 4, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("EndPositionLat", 5, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("EndPositionLong", 6, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalElapsedTime", 7, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalTimerTime", 8, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalDistance", 9, 134, 100, 0, "m", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalCycles", 10, 134, 1, 0, "cycles", false));
subfieldIndex = 0;
segmentLapMesg.fields[fieldIndex].subfields.Add(new Subfield("TotalStrokes", 134, 1, 0, "strokes"));
segmentLapMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(23, 2);
subfieldIndex++;
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalCalories", 11, 132, 1, 0, "kcal", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalFatCalories", 12, 132, 1, 0, "kcal", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgSpeed", 13, 132, 1000, 0, "m/s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxSpeed", 14, 132, 1000, 0, "m/s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgHeartRate", 15, 2, 1, 0, "bpm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxHeartRate", 16, 2, 1, 0, "bpm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgCadence", 17, 2, 1, 0, "rpm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxCadence", 18, 2, 1, 0, "rpm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgPower", 19, 132, 1, 0, "watts", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxPower", 20, 132, 1, 0, "watts", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalAscent", 21, 132, 1, 0, "m", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalDescent", 22, 132, 1, 0, "m", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("Sport", 23, 0, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("EventGroup", 24, 2, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("NecLat", 25, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("NecLong", 26, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("SwcLat", 27, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("SwcLong", 28, 133, 1, 0, "semicircles", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("Name", 29, 7, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("NormalizedPower", 30, 132, 1, 0, "watts", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("LeftRightBalance", 31, 132, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("SubSport", 32, 0, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalWork", 33, 134, 1, 0, "J", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgAltitude", 34, 132, 5, 500, "m", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxAltitude", 35, 132, 5, 500, "m", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("GpsAccuracy", 36, 2, 1, 0, "m", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgGrade", 37, 131, 100, 0, "%", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgPosGrade", 38, 131, 100, 0, "%", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgNegGrade", 39, 131, 100, 0, "%", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxPosGrade", 40, 131, 100, 0, "%", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxNegGrade", 41, 131, 100, 0, "%", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgTemperature", 42, 1, 1, 0, "C", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxTemperature", 43, 1, 1, 0, "C", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalMovingTime", 44, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgPosVerticalSpeed", 45, 131, 1000, 0, "m/s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgNegVerticalSpeed", 46, 131, 1000, 0, "m/s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxPosVerticalSpeed", 47, 131, 1000, 0, "m/s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxNegVerticalSpeed", 48, 131, 1000, 0, "m/s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TimeInHrZone", 49, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TimeInSpeedZone", 50, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TimeInCadenceZone", 51, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TimeInPowerZone", 52, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("RepetitionNum", 53, 132, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MinAltitude", 54, 132, 5, 500, "m", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MinHeartRate", 55, 2, 1, 0, "bpm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("ActiveTime", 56, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("WktStepIndex", 57, 132, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("SportEvent", 58, 0, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgLeftTorqueEffectiveness", 59, 2, 2, 0, "percent", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgRightTorqueEffectiveness", 60, 2, 2, 0, "percent", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgLeftPedalSmoothness", 61, 2, 2, 0, "percent", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgRightPedalSmoothness", 62, 2, 2, 0, "percent", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgCombinedPedalSmoothness", 63, 2, 2, 0, "percent", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("Status", 64, 0, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("Uuid", 65, 7, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgFractionalCadence", 66, 2, 128, 0, "rpm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxFractionalCadence", 67, 2, 128, 0, "rpm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TotalFractionalCycles", 68, 2, 128, 0, "cycles", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("FrontGearShiftCount", 69, 132, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("RearGearShiftCount", 70, 132, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("TimeStanding", 71, 134, 1000, 0, "s", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("StandCount", 72, 132, 1, 0, "", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgLeftPco", 73, 1, 1, 0, "mm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgRightPco", 74, 1, 1, 0, "mm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgLeftPowerPhase", 75, 2, 1, 0, "degrees", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgLeftPowerPhasePeak", 76, 2, 1, 0, "degrees", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgRightPowerPhase", 77, 2, 1, 0, "degrees", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgRightPowerPhasePeak", 78, 2, 1, 0, "degrees", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgPowerPosition", 79, 132, 1, 0, "watts", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxPowerPosition", 80, 132, 1, 0, "watts", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("AvgCadencePosition", 81, 2, 1, 0, "rpm", false));
fieldIndex++;
segmentLapMesg.SetField(new Field("MaxCadencePosition", 82, 2, 1, 0, "rpm", false));
fieldIndex++;
mesgs.Add(segmentLapMesg);
SegmentLapIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.SegmentLap, segmentLapMesg);
mesgIndex++;
// SegmentFile
Mesg segmentFileMesg = new Mesg("SegmentFile", MesgNum.SegmentFile);
fieldIndex = 0;
segmentFileMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
segmentFileMesg.SetField(new Field("FileUuid", 1, 7, 1, 0, "", false));
fieldIndex++;
segmentFileMesg.SetField(new Field("Enabled", 3, 0, 1, 0, "", false));
fieldIndex++;
segmentFileMesg.SetField(new Field("UserProfilePrimaryKey", 4, 134, 1, 0, "", false));
fieldIndex++;
segmentFileMesg.SetField(new Field("LeaderType", 7, 0, 1, 0, "", false));
fieldIndex++;
segmentFileMesg.SetField(new Field("LeaderGroupPrimaryKey", 8, 134, 1, 0, "", false));
fieldIndex++;
segmentFileMesg.SetField(new Field("LeaderActivityId", 9, 134, 1, 0, "", false));
fieldIndex++;
segmentFileMesg.SetField(new Field("LeaderActivityIdString", 10, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(segmentFileMesg);
SegmentFileIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.SegmentFile, segmentFileMesg);
mesgIndex++;
// Workout
Mesg workoutMesg = new Mesg("Workout", MesgNum.Workout);
fieldIndex = 0;
workoutMesg.SetField(new Field("Sport", 4, 0, 1, 0, "", false));
fieldIndex++;
workoutMesg.SetField(new Field("Capabilities", 5, 140, 1, 0, "", false));
fieldIndex++;
workoutMesg.SetField(new Field("NumValidSteps", 6, 132, 1, 0, "", false));
fieldIndex++;
workoutMesg.SetField(new Field("WktName", 8, 7, 1, 0, "", false));
fieldIndex++;
mesgs.Add(workoutMesg);
WorkoutIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Workout, workoutMesg);
mesgIndex++;
// WorkoutStep
Mesg workoutStepMesg = new Mesg("WorkoutStep", MesgNum.WorkoutStep);
fieldIndex = 0;
workoutStepMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
workoutStepMesg.SetField(new Field("WktStepName", 0, 7, 1, 0, "", false));
fieldIndex++;
workoutStepMesg.SetField(new Field("DurationType", 1, 0, 1, 0, "", false));
fieldIndex++;
workoutStepMesg.SetField(new Field("DurationValue", 2, 134, 1, 0, "", false));
subfieldIndex = 0;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("DurationTime", 134, 1000, 0, "s"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 0);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 28);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("DurationDistance", 134, 100, 0, "m"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 1);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("DurationHr", 134, 1, 0, "% or bpm"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 2);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 3);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("DurationCalories", 134, 1, 0, "calories"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 4);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("DurationStep", 134, 1, 0, ""));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 6);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 7);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 8);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 9);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 10);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 11);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 12);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 13);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("DurationPower", 134, 1, 0, "% or watts"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 14);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 15);
subfieldIndex++;
fieldIndex++;
workoutStepMesg.SetField(new Field("TargetType", 3, 0, 1, 0, "", false));
fieldIndex++;
workoutStepMesg.SetField(new Field("TargetValue", 4, 134, 1, 0, "", false));
subfieldIndex = 0;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("TargetHrZone", 134, 1, 0, ""));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 1);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("TargetPowerZone", 134, 1, 0, ""));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 4);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("RepeatSteps", 134, 1, 0, ""));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 6);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("RepeatTime", 134, 1000, 0, "s"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 7);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("RepeatDistance", 134, 100, 0, "m"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 8);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("RepeatCalories", 134, 1, 0, "calories"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 9);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("RepeatHr", 134, 1, 0, "% or bpm"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 10);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 11);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("RepeatPower", 134, 1, 0, "% or watts"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 12);
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(1, 13);
subfieldIndex++;
fieldIndex++;
workoutStepMesg.SetField(new Field("CustomTargetValueLow", 5, 134, 1, 0, "", false));
subfieldIndex = 0;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("CustomTargetSpeedLow", 134, 1000, 0, "m/s"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 0);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("CustomTargetHeartRateLow", 134, 1, 0, "% or bpm"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 1);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("CustomTargetCadenceLow", 134, 1, 0, "rpm"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 3);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("CustomTargetPowerLow", 134, 1, 0, "% or watts"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 4);
subfieldIndex++;
fieldIndex++;
workoutStepMesg.SetField(new Field("CustomTargetValueHigh", 6, 134, 1, 0, "", false));
subfieldIndex = 0;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("CustomTargetSpeedHigh", 134, 1000, 0, "m/s"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 0);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("CustomTargetHeartRateHigh", 134, 1, 0, "% or bpm"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 1);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("CustomTargetCadenceHigh", 134, 1, 0, "rpm"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 3);
subfieldIndex++;
workoutStepMesg.fields[fieldIndex].subfields.Add(new Subfield("CustomTargetPowerHigh", 134, 1, 0, "% or watts"));
workoutStepMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(3, 4);
subfieldIndex++;
fieldIndex++;
workoutStepMesg.SetField(new Field("Intensity", 7, 0, 1, 0, "", false));
fieldIndex++;
mesgs.Add(workoutStepMesg);
WorkoutStepIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.WorkoutStep, workoutStepMesg);
mesgIndex++;
// Schedule
Mesg scheduleMesg = new Mesg("Schedule", MesgNum.Schedule);
fieldIndex = 0;
scheduleMesg.SetField(new Field("Manufacturer", 0, 132, 1, 0, "", false));
fieldIndex++;
scheduleMesg.SetField(new Field("Product", 1, 132, 1, 0, "", false));
subfieldIndex = 0;
scheduleMesg.fields[fieldIndex].subfields.Add(new Subfield("GarminProduct", 132, 1, 0, ""));
scheduleMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 1);
scheduleMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 15);
scheduleMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(0, 13);
subfieldIndex++;
fieldIndex++;
scheduleMesg.SetField(new Field("SerialNumber", 2, 140, 1, 0, "", false));
fieldIndex++;
scheduleMesg.SetField(new Field("TimeCreated", 3, 134, 1, 0, "", false));
fieldIndex++;
scheduleMesg.SetField(new Field("Completed", 4, 0, 1, 0, "", false));
fieldIndex++;
scheduleMesg.SetField(new Field("Type", 5, 0, 1, 0, "", false));
fieldIndex++;
scheduleMesg.SetField(new Field("ScheduledTime", 6, 134, 1, 0, "", false));
fieldIndex++;
mesgs.Add(scheduleMesg);
ScheduleIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Schedule, scheduleMesg);
mesgIndex++;
// Totals
Mesg totalsMesg = new Mesg("Totals", MesgNum.Totals);
fieldIndex = 0;
totalsMesg.SetField(new Field("MessageIndex", 254, 132, 1, 0, "", false));
fieldIndex++;
totalsMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
totalsMesg.SetField(new Field("TimerTime", 0, 134, 1, 0, "s", false));
fieldIndex++;
totalsMesg.SetField(new Field("Distance", 1, 134, 1, 0, "m", false));
fieldIndex++;
totalsMesg.SetField(new Field("Calories", 2, 134, 1, 0, "kcal", false));
fieldIndex++;
totalsMesg.SetField(new Field("Sport", 3, 0, 1, 0, "", false));
fieldIndex++;
totalsMesg.SetField(new Field("ElapsedTime", 4, 134, 1, 0, "s", false));
fieldIndex++;
totalsMesg.SetField(new Field("Sessions", 5, 132, 1, 0, "", false));
fieldIndex++;
totalsMesg.SetField(new Field("ActiveTime", 6, 134, 1, 0, "s", false));
fieldIndex++;
totalsMesg.SetField(new Field("SportIndex", 9, 2, 1, 0, "", false));
fieldIndex++;
mesgs.Add(totalsMesg);
TotalsIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Totals, totalsMesg);
mesgIndex++;
// WeightScale
Mesg weightScaleMesg = new Mesg("WeightScale", MesgNum.WeightScale);
fieldIndex = 0;
weightScaleMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("Weight", 0, 132, 100, 0, "kg", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("PercentFat", 1, 132, 100, 0, "%", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("PercentHydration", 2, 132, 100, 0, "%", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("VisceralFatMass", 3, 132, 100, 0, "kg", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("BoneMass", 4, 132, 100, 0, "kg", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("MuscleMass", 5, 132, 100, 0, "kg", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("BasalMet", 7, 132, 4, 0, "kcal/day", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("PhysiqueRating", 8, 2, 1, 0, "", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("ActiveMet", 9, 132, 4, 0, "kcal/day", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("MetabolicAge", 10, 2, 1, 0, "years", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("VisceralFatRating", 11, 2, 1, 0, "", false));
fieldIndex++;
weightScaleMesg.SetField(new Field("UserProfileIndex", 12, 132, 1, 0, "", false));
fieldIndex++;
mesgs.Add(weightScaleMesg);
WeightScaleIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.WeightScale, weightScaleMesg);
mesgIndex++;
// BloodPressure
Mesg bloodPressureMesg = new Mesg("BloodPressure", MesgNum.BloodPressure);
fieldIndex = 0;
bloodPressureMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("SystolicPressure", 0, 132, 1, 0, "mmHg", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("DiastolicPressure", 1, 132, 1, 0, "mmHg", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("MeanArterialPressure", 2, 132, 1, 0, "mmHg", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("Map3SampleMean", 3, 132, 1, 0, "mmHg", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("MapMorningValues", 4, 132, 1, 0, "mmHg", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("MapEveningValues", 5, 132, 1, 0, "mmHg", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("HeartRate", 6, 2, 1, 0, "bpm", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("HeartRateType", 7, 0, 1, 0, "", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("Status", 8, 0, 1, 0, "", false));
fieldIndex++;
bloodPressureMesg.SetField(new Field("UserProfileIndex", 9, 132, 1, 0, "", false));
fieldIndex++;
mesgs.Add(bloodPressureMesg);
BloodPressureIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.BloodPressure, bloodPressureMesg);
mesgIndex++;
// MonitoringInfo
Mesg monitoringInfoMesg = new Mesg("MonitoringInfo", MesgNum.MonitoringInfo);
fieldIndex = 0;
monitoringInfoMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
monitoringInfoMesg.SetField(new Field("LocalTimestamp", 0, 134, 1, 0, "s", false));
fieldIndex++;
monitoringInfoMesg.SetField(new Field("ActivityType", 1, 0, 1, 0, "", false));
fieldIndex++;
monitoringInfoMesg.SetField(new Field("CyclesToDistance", 3, 132, 5000, 0, "m/cycle", false));
fieldIndex++;
monitoringInfoMesg.SetField(new Field("CyclesToCalories", 4, 132, 5000, 0, "kcal/cycle", false));
fieldIndex++;
monitoringInfoMesg.SetField(new Field("RestingMetabolicRate", 5, 132, 1, 0, "kcal / day", false));
fieldIndex++;
mesgs.Add(monitoringInfoMesg);
MonitoringInfoIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.MonitoringInfo, monitoringInfoMesg);
mesgIndex++;
// Monitoring
Mesg monitoringMesg = new Mesg("Monitoring", MesgNum.Monitoring);
fieldIndex = 0;
monitoringMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
monitoringMesg.SetField(new Field("DeviceIndex", 0, 2, 1, 0, "", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Calories", 1, 132, 1, 0, "kcal", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Distance", 2, 134, 100, 0, "m", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Cycles", 3, 134, 2, 0, "cycles", false));
subfieldIndex = 0;
monitoringMesg.fields[fieldIndex].subfields.Add(new Subfield("Steps", 134, 1, 0, "steps"));
monitoringMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(5, 6);
monitoringMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(5, 1);
subfieldIndex++;
monitoringMesg.fields[fieldIndex].subfields.Add(new Subfield("Strokes", 134, 2, 0, "strokes"));
monitoringMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(5, 2);
monitoringMesg.fields[fieldIndex].subfields[subfieldIndex].AddMap(5, 5);
subfieldIndex++;
fieldIndex++;
monitoringMesg.SetField(new Field("ActiveTime", 4, 134, 1000, 0, "s", false));
fieldIndex++;
monitoringMesg.SetField(new Field("ActivityType", 5, 0, 1, 0, "", false));
fieldIndex++;
monitoringMesg.SetField(new Field("ActivitySubtype", 6, 0, 1, 0, "", false));
fieldIndex++;
monitoringMesg.SetField(new Field("ActivityLevel", 7, 0, 1, 0, "", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Distance16", 8, 132, 1, 0, "100 * m", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Cycles16", 9, 132, 1, 0, "2 * cycles (steps)", false));
fieldIndex++;
monitoringMesg.SetField(new Field("ActiveTime16", 10, 132, 1, 0, "s", false));
fieldIndex++;
monitoringMesg.SetField(new Field("LocalTimestamp", 11, 134, 1, 0, "", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Temperature", 12, 131, 100, 0, "C", false));
fieldIndex++;
monitoringMesg.SetField(new Field("TemperatureMin", 14, 131, 100, 0, "C", false));
fieldIndex++;
monitoringMesg.SetField(new Field("TemperatureMax", 15, 131, 100, 0, "C", false));
fieldIndex++;
monitoringMesg.SetField(new Field("ActivityTime", 16, 132, 1, 0, "minutes", false));
fieldIndex++;
monitoringMesg.SetField(new Field("ActiveCalories", 19, 132, 1, 0, "kcal", false));
fieldIndex++;
monitoringMesg.SetField(new Field("CurrentActivityTypeIntensity", 24, 13, 1, 0, "", false));
monitoringMesg.fields[fieldIndex].components.Add(new FieldComponent(5, false, 5, 1, 0)); // activity_type
monitoringMesg.fields[fieldIndex].components.Add(new FieldComponent(28, false, 3, 1, 0)); // intensity
fieldIndex++;
monitoringMesg.SetField(new Field("TimestampMin8", 25, 2, 1, 0, "min", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Timestamp16", 26, 132, 1, 0, "s", false));
fieldIndex++;
monitoringMesg.SetField(new Field("HeartRate", 27, 2, 1, 0, "bpm", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Intensity", 28, 2, 10, 0, "", false));
fieldIndex++;
monitoringMesg.SetField(new Field("DurationMin", 29, 132, 1, 0, "min", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Duration", 30, 134, 1, 0, "s", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Ascent", 31, 134, 1000, 0, "m", false));
fieldIndex++;
monitoringMesg.SetField(new Field("Descent", 32, 134, 1000, 0, "m", false));
fieldIndex++;
monitoringMesg.SetField(new Field("ModerateActivityMinutes", 33, 132, 1, 0, "minutes", false));
fieldIndex++;
monitoringMesg.SetField(new Field("VigorousActivityMinutes", 34, 132, 1, 0, "minutes", false));
fieldIndex++;
mesgs.Add(monitoringMesg);
MonitoringIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Monitoring, monitoringMesg);
mesgIndex++;
// Hr
Mesg hrMesg = new Mesg("Hr", MesgNum.Hr);
fieldIndex = 0;
hrMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "", false));
fieldIndex++;
hrMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false));
fieldIndex++;
hrMesg.SetField(new Field("Time256", 1, 2, 256, 0, "s", false));
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(0, false, 8, 256, 0)); // fractional_timestamp
fieldIndex++;
hrMesg.SetField(new Field("FilteredBpm", 6, 2, 1, 0, "bpm", false));
fieldIndex++;
hrMesg.SetField(new Field("EventTimestamp", 9, 134, 1024, 0, "s", true));
fieldIndex++;
hrMesg.SetField(new Field("EventTimestamp12", 10, 13, 1, 0, "", false));
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
hrMesg.fields[fieldIndex].components.Add(new FieldComponent(9, true, 12, 1024, 0)); // event_timestamp
fieldIndex++;
mesgs.Add(hrMesg);
HrIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Hr, hrMesg);
mesgIndex++;
// MemoGlob
Mesg memoGlobMesg = new Mesg("MemoGlob", MesgNum.MemoGlob);
fieldIndex = 0;
memoGlobMesg.SetField(new Field("PartIndex", 250, 134, 1, 0, "", false));
fieldIndex++;
memoGlobMesg.SetField(new Field("Memo", 0, 13, 1, 0, "", false));
fieldIndex++;
memoGlobMesg.SetField(new Field("MessageNumber", 1, 132, 1, 0, "", false));
fieldIndex++;
memoGlobMesg.SetField(new Field("MessageIndex", 2, 132, 1, 0, "", false));
fieldIndex++;
mesgs.Add(memoGlobMesg);
MemoGlobIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.MemoGlob, memoGlobMesg);
mesgIndex++;
// AntChannelId
Mesg antChannelIdMesg = new Mesg("AntChannelId", MesgNum.AntChannelId);
fieldIndex = 0;
antChannelIdMesg.SetField(new Field("ChannelNumber", 0, 2, 1, 0, "", false));
fieldIndex++;
antChannelIdMesg.SetField(new Field("DeviceType", 1, 10, 1, 0, "", false));
fieldIndex++;
antChannelIdMesg.SetField(new Field("DeviceNumber", 2, 139, 1, 0, "", false));
fieldIndex++;
antChannelIdMesg.SetField(new Field("TransmissionType", 3, 10, 1, 0, "", false));
fieldIndex++;
antChannelIdMesg.SetField(new Field("DeviceIndex", 4, 2, 1, 0, "", false));
fieldIndex++;
mesgs.Add(antChannelIdMesg);
AntChannelIdIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.AntChannelId, antChannelIdMesg);
mesgIndex++;
// AntRx
Mesg antRxMesg = new Mesg("AntRx", MesgNum.AntRx);
fieldIndex = 0;
antRxMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
antRxMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false));
fieldIndex++;
antRxMesg.SetField(new Field("MesgId", 1, 13, 1, 0, "", false));
fieldIndex++;
antRxMesg.SetField(new Field("MesgData", 2, 13, 1, 0, "", false));
antRxMesg.fields[fieldIndex].components.Add(new FieldComponent(3, false, 8, 1, 0)); // channel_number
antRxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antRxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antRxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antRxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antRxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antRxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antRxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antRxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
fieldIndex++;
antRxMesg.SetField(new Field("ChannelNumber", 3, 2, 1, 0, "", false));
fieldIndex++;
antRxMesg.SetField(new Field("Data", 4, 13, 1, 0, "", false));
fieldIndex++;
mesgs.Add(antRxMesg);
AntRxIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.AntRx, antRxMesg);
mesgIndex++;
// AntTx
Mesg antTxMesg = new Mesg("AntTx", MesgNum.AntTx);
fieldIndex = 0;
antTxMesg.SetField(new Field("Timestamp", 253, 134, 1, 0, "s", false));
fieldIndex++;
antTxMesg.SetField(new Field("FractionalTimestamp", 0, 132, 32768, 0, "s", false));
fieldIndex++;
antTxMesg.SetField(new Field("MesgId", 1, 13, 1, 0, "", false));
fieldIndex++;
antTxMesg.SetField(new Field("MesgData", 2, 13, 1, 0, "", false));
antTxMesg.fields[fieldIndex].components.Add(new FieldComponent(3, false, 8, 1, 0)); // channel_number
antTxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antTxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antTxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antTxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antTxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antTxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antTxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
antTxMesg.fields[fieldIndex].components.Add(new FieldComponent(4, false, 8, 1, 0)); // data
fieldIndex++;
antTxMesg.SetField(new Field("ChannelNumber", 3, 2, 1, 0, "", false));
fieldIndex++;
antTxMesg.SetField(new Field("Data", 4, 13, 1, 0, "", false));
fieldIndex++;
mesgs.Add(antTxMesg);
AntTxIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.AntTx, antTxMesg);
mesgIndex++;
// Pad
Mesg padMesg = new Mesg("Pad", MesgNum.Pad);
fieldIndex = 0;
mesgs.Add(padMesg);
PadIndex = mesgIndex;
m_mesgLookup.Add(MesgNum.Pad, padMesg);
mesgIndex++;
#pragma warning restore 0618
//InvalidIndex; = FitTypeInvalid.uint16;
}
#endregion
#region Methods
public static Mesg GetMesg(ushort globalMesgNum)
{
if(m_mesgLookup.ContainsKey(globalMesgNum))
{
return m_mesgLookup[globalMesgNum];
}
return new Mesg("unknown", globalMesgNum);
}
public static Field GetField(ushort globalMesgNum, byte fieldNum)
{
if(m_mesgLookup.ContainsKey(globalMesgNum))
{
return m_mesgLookup[globalMesgNum].GetField(fieldNum);
}
return new Field("unknown", fieldNum, 0, 1, 0, "", false);
}
#endregion
} // class
} // namespace