Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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));
            }
        }