private void MovingAverageCalculatedEventHandler(object sender, MovingAverage.MovingAverageCalculatedEventArgs e) { if (!m_started) { return; } double?intensityFactor = null; int? totalSufferScore = null; ulong movingAvgPow4 = (ulong)Math.Pow(e.AveragePower, 4); m_sumMovingAvgPow4 += movingAvgPow4; m_countMovingAvgPow4 += 1; double avgMovingAvgPow4 = m_sumMovingAvgPow4 / (double)m_countMovingAvgPow4; int normalizedPower = (int)Math.Round(Math.Pow(avgMovingAvgPow4, 0.25), 0); if (CurrentUser.PowerThreshold > 0) { // Calculate Intensity Factor intensityFactor = Math.Round(normalizedPower / (double)CurrentUser.PowerThreshold, 2); // Calculate TSS TimeSpan runningTime = DateTime.Now - m_collectionStartTime; totalSufferScore = (int)Math.Round((runningTime.TotalSeconds * normalizedPower * (double)intensityFactor) / (CurrentUser.PowerThreshold * 3600) * 100, 0); } // when NP changes, send it and the current overall average power through if (normalizedPower != m_curNormalizedPower || intensityFactor != m_curIntensityFactor || totalSufferScore != m_curTotalSufferScore) { m_curNormalizedPower = normalizedPower; m_curTotalSufferScore = totalSufferScore; m_curIntensityFactor = intensityFactor; OnNormalizedPowerChangedEvent(new NormalizedPowerChangedEventArgs(normalizedPower, intensityFactor, totalSufferScore)); } }
private void MovingAverageCalculatedEventHandler(object sender, MovingAverage.MovingAverageCalculatedEventArgs e) { if (!m_started) { return; } ulong movingAvgPow4 = (ulong)Math.Pow(e.AveragePower, 4); m_sumMovingAvgPow4 += movingAvgPow4; m_countMovingAvgPow4 += 1; double avgMovingAvgPow4 = m_sumMovingAvgPow4 / (double)m_countMovingAvgPow4; int normalizedPower = (int)Math.Round(Math.Pow(avgMovingAvgPow4, 0.25), 0); // when NP changes, send it and the current overall average power through if (normalizedPower != m_curNormalizedPower) { m_curNormalizedPower = normalizedPower; OnNormalizedPowerChangedEvent(new NormalizedPowerChangedEventArgs(normalizedPower)); } }