Пример #1
0
        ///// <summary>
        ///// Starts continuously sampling the sensor.
        /////
        ///// This method also starts raising `Changed` events and IObservable
        ///// subscribers getting notified.
        ///// </summary>
        public void StartUpdating(int standbyDuration = 1000)
        {
            // thread safety
            lock (_lock) {
                if (IsSampling)
                {
                    return;
                }

                // state muh-cheen
                IsSampling = true;

                //SamplingTokenSource = new CancellationTokenSource();
                //CancellationToken ct = SamplingTokenSource.Token;

                AccelerationConditions            oldConditions;
                AccelerationConditionChangeResult result;
                var task1 = new Thread(new ThreadStart(() => {
                    while (true)
                    {
                        if (!IsSampling)
                        {
                            // do task clean up here
                            //_observers.ForEach(x => x.OnCompleted());
                            break;
                        }
                        // capture history
                        oldConditions = AccelerationConditions.From(Conditions);

                        // read
                        Update();

                        // build a new result with the old and new conditions
                        result = new AccelerationConditionChangeResult(oldConditions, Conditions);

                        // let everyone know
                        RaiseChangedAndNotify(result);

                        // sleep for the appropriate interval
                        Thread.Sleep(standbyDuration);
                    }
                }));
                task1.Start();
            }
        }
Пример #2
0
 public static AccelerationConditions From(
     AccelerationConditions conditions) => new AccelerationConditions(conditions.XAcceleration, conditions.YAcceleration, conditions.ZAcceleration, conditions.XGyroscopicAcceleration, conditions.YGyroscopicAcceleration, conditions.ZGyroscopicAcceleration);