コード例 #1
0
        internal void Add(long timestamp, bool accelerating)
        {
            Purge(timestamp - maxWindowSize);
            var added = pool.Acquire();

            added.Timestamp      = timestamp;
            added.IsAccelerating = accelerating;
            added.Next           = null;

            if (newest != null)
            {
                newest.Next = added;
            }

            newest = added;

            if (oldest == null)
            {
                oldest = added;
            }

            sampleCount++;

            if (accelerating)
            {
                acceleratingCount++;
            }
        }
コード例 #2
0
 internal void Clear()
 {
     while (oldest != null)
     {
         var removed = oldest;
         oldest = removed.Next;
         pool.Release(removed);
     }
     newest            = null;
     sampleCount       = 0;
     acceleratingCount = 0;
 }
コード例 #3
0
            internal AccelerometerSample Acquire()
            {
                var aquired = head;

                if (aquired == null)
                {
                    aquired = new AccelerometerSample();
                }
                else
                {
                    head = aquired.Next;
                }

                return(aquired);
            }
コード例 #4
0
        void Purge(long cutoff)
        {
            while (sampleCount >= minQueueSize &&
                   oldest != null &&
                   cutoff - oldest.Timestamp > 0)
            {
                var removed = oldest;
                if (removed.IsAccelerating)
                {
                    acceleratingCount--;
                }

                sampleCount--;
                oldest = removed.Next;

                if (oldest == null)
                {
                    newest = null;
                }

                pool.Release(removed);
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: coolkev/Netduino
 public static void Main()
 {
     AccelerometerSample.Run();
     //ServoTest();
 }
コード例 #6
0
 internal void Release(AccelerometerSample sample)
 {
     sample.Next = head;
     head        = sample;
 }