public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField durationType = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationType);
            FITMessageField durationValue = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationValue);

            durationType.SetEnum((Byte)FITWorkoutStepDurationTypes.Calories);
            durationValue.SetUInt32((UInt32)CaloriesToSpend);
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField durationType = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationType);
            FITMessageField repeatCount = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);

            durationType.SetEnum((Byte)FITWorkoutStepDurationTypes.RepeatCount);
            repeatCount.SetUInt32((UInt32)RepetitionCount);
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField powerZone = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);
            FITMessageField minPower = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueLow);
            FITMessageField maxPower = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueHigh);

            powerZone.SetUInt32(0);

            if (IsPercentFTP)
            {
                minPower.SetUInt32((UInt32)MinPower);
                maxPower.SetUInt32((UInt32)MaxPower);
            }
            else
            {
                minPower.SetUInt32((UInt32)MinPower + 1000);
                maxPower.SetUInt32((UInt32)MaxPower + 1000);
            }
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField HRZone = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);
            FITMessageField minHR = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueLow);
            FITMessageField maxHR = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueHigh);
            bool exportAsPercentMax = Options.Instance.ExportSportTracksHeartRateAsPercentMax;
            float lastMaxHR = GarminProfileManager.Instance.UserProfile.GetProfileForActivity(Options.Instance.GetGarminCategory(BaseTarget.ParentStep.ParentWorkout.Category)).MaximumHeartRate;

            HRZone.SetUInt32(0);

            if (float.IsNaN(lastMaxHR))
            {
                exportAsPercentMax = false;
            }

            if (exportAsPercentMax)
            {
                float baseMultiplier = Constants.MaxHRInPercentMax / lastMaxHR;

                minHR.SetUInt32((UInt32)Math.Max(Constants.MinHRInPercentMax, Math.Round(Zone.Low * baseMultiplier, 0, MidpointRounding.AwayFromZero)));
                maxHR.SetUInt32((UInt32)Math.Min(Constants.MaxHRInPercentMax, Math.Round(Zone.High * baseMultiplier, 0, MidpointRounding.AwayFromZero)));
            }
            else
            {
                minHR.SetUInt32((UInt32)Utils.Clamp(Zone.Low, Constants.MinHRInBPM, Constants.MaxHRInBPM) + 100);
                maxHR.SetUInt32((UInt32)Utils.Clamp(Zone.High, Constants.MinHRInBPM, Constants.MaxHRInBPM) + 100);
            }
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField durationType = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationType);
            FITMessageField durationValue = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationValue);

            durationType.SetEnum((Byte)FITWorkoutStepDurationTypes.PowerLessThan);

            if (IsPercentFTP)
            {
                durationValue.SetUInt32((UInt32)MinPower);
            }
            else
            {
                durationValue.SetUInt32((UInt32)MinPower + 1000);
            }
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField speedZone = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);
            FITMessageField minSpeed = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueLow);
            FITMessageField maxSpeed = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueHigh);

            speedZone.SetUInt32(0);
            minSpeed.SetUInt32((UInt32)(MinMetersPerSecond * 1000));
            maxSpeed.SetUInt32((UInt32)(MaxMetersPerSecond * 1000));
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField speedZone = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);
            FITMessageField minSpeed = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueLow);
            FITMessageField maxSpeed = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueHigh);

            speedZone.SetUInt32(0);
            minSpeed.SetUInt32((UInt32)(Utils.Clamp(Zone.Low, Constants.MinSpeedMetersPerSecond, Constants.MaxSpeedMetersPerSecond) * 1000));
            maxSpeed.SetUInt32((UInt32)(Utils.Clamp(Zone.High, Constants.MinSpeedMetersPerSecond, Constants.MaxSpeedMetersPerSecond) * 1000));
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField durationType = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationType);
            FITMessageField durationValue = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationValue);

            durationType.SetEnum((Byte)FITWorkoutStepDurationTypes.Distance);
            durationValue.SetUInt32((UInt32)GetDistanceInUnits(Length.Units.Centimeter));
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField HRZone = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);

            HRZone.SetUInt32(Zone);
        }
Beispiel #10
0
        public override void FillFITStepMessage(FITMessage message)
        {
            base.FillFITStepMessage(message);

            FITMessageField stepName = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.StepName);
            FITMessageField intensity = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.Intensity);

            if (!String.IsNullOrEmpty(Name))
            {
                stepName.SetString(Name, (Byte)(Constants.MaxNameLength + 1));
            }

            Duration.FillFITStepMessage(message);
            Target.FillFITStepMessage(message);

            intensity.SetEnum((Byte)Intensity);
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField HRZone = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);
            FITMessageField minHR = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueLow);
            FITMessageField maxHR = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueHigh);

            HRZone.SetUInt32(0);

            if (IsPercentMaxHeartRate)
            {
                minHR.SetUInt32((UInt32)MinHeartRate);
                maxHR.SetUInt32((UInt32)MaxHeartRate);
            }
            else
            {
                minHR.SetUInt32((UInt32)MinHeartRate + 100);
                maxHR.SetUInt32((UInt32)MaxHeartRate + 100);
            }
        }
Beispiel #12
0
        public override void FillFITStepMessage(FITMessage message)
        {
            base.FillFITStepMessage(message);

            FITMessageField repeatFromStep = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationValue);
            FITMessageField targetType = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetType);

            repeatFromStep.SetUInt32((UInt32)(ParentWorkout.GetStepExportId(this) - StepCount));
            targetType.SetEnum((Byte)FITWorkoutStepTargetTypes.NoTarget);

            Duration.FillFITStepMessage(message);
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField cadenceZone = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);
            FITMessageField minCadence = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueLow);
            FITMessageField maxCadence = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueHigh);

            cadenceZone.SetUInt32(0);
            minCadence.SetUInt32((UInt32)MinCadence);
            maxCadence.SetUInt32((UInt32)MaxCadence);
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField targetType = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetType);

            targetType.SetEnum((Byte)FITWorkoutStepTargetTypes.Cadence);

            ConcreteTarget.FillFITStepMessage(message);
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField durationType = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationType);
            FITMessageField repeatTime = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);

            durationType.SetEnum((Byte)FITWorkoutStepDurationTypes.RepeatUntilTime);
            repeatTime.SetUInt32((UInt32)TimeInSeconds * 1000);
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField durationType = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationType);
            FITMessageField repeatPower = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);

            durationType.SetEnum((Byte)FITWorkoutStepDurationTypes.RepeatUntilHeartRateGreaterThan);

            if (IsPercentageMaxHeartRate)
            {
                repeatPower.SetUInt32((UInt32)MaxHeartRate);
            }
            else
            {
                repeatPower.SetUInt32((UInt32)MaxHeartRate + 100);
            }
        }
Beispiel #17
0
        public virtual void FillFITStepMessage(FITMessage message)
        {
            FITMessageField stepId = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.MessageIndex);

            stepId.SetUInt16((UInt16)(ParentWorkout.GetStepExportId(this) - 1));
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField powerZone = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetValue);
            FITMessageField minPower = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueLow);
            FITMessageField maxPower = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.TargetCustomValueHigh);
            bool exportAsPercentFTP = Options.Instance.ExportSportTracksPowerAsPercentFTP;
            GarminCategories category = Options.Instance.GetGarminCategory(BaseTarget.ParentStep.ParentWorkout.Category);
            float lastFTP = 0;

            if (category == GarminCategories.Biking)
            {
                GarminBikingActivityProfile profile = (GarminBikingActivityProfile)GarminProfileManager.Instance.UserProfile.GetProfileForActivity(category);

                lastFTP = profile.FTP;
            }
            else
            {
                exportAsPercentFTP = false;
            }

            powerZone.SetUInt32(0);

            if (exportAsPercentFTP)
            {
                float baseMultiplier = 100.0f / lastFTP;

                minPower.SetUInt32((UInt32)Utils.Clamp(Math.Round(Zone.Low * baseMultiplier, 0, MidpointRounding.AwayFromZero), Constants.MinPowerInPercentFTP, Constants.MaxPowerInPercentFTP));
                maxPower.SetUInt32((UInt32)Utils.Clamp(Math.Round(Zone.High * baseMultiplier, 0, MidpointRounding.AwayFromZero), Constants.MinPowerInPercentFTP, Constants.MaxPowerInPercentFTP));
            }
            else
            {
                minPower.SetUInt32((UInt32)Utils.Clamp(Zone.Low, Constants.MinPowerInWatts, Constants.MaxPowerWorkoutInWatts) + 1000);
                maxPower.SetUInt32((UInt32)Utils.Clamp(Zone.High, Constants.MinPowerInWatts, Constants.MaxPowerWorkoutInWatts) + 1000);
            }
        }
        public override void FillFITStepMessage(FITMessage message)
        {
            FITMessageField durationType = message.GetExistingOrAddField((Byte)FITWorkoutStepFieldIds.DurationType);

            durationType.SetEnum((Byte)FITWorkoutStepDurationTypes.Open);
        }