public Task Fade( IPushDataController deviceObserver, double start, double end, int durationMs, ITransformer transformer = null, params Tuple <DataElements, object>[] additionalData) { var taskSource = new TaskCompletionSource <bool>(); double brightnessRange = end - start; if (brightnessRange == 0) { taskSource.SetResult(true); return(taskSource.Task); } if (additionalData.Any()) { deviceObserver.SetDataFromIData(additionalData.GenerateIData()); } var observer = Observer.Create <double>( onNext: pos => { if (transformer != null) { pos = transformer.Transform(pos); } double brightness = start + (pos * brightnessRange); deviceObserver.Data[DataElements.Brightness] = brightness; deviceObserver.PushData(); }, onCompleted: () => { taskSource.SetResult(true); }); var cancelSource = this.timerJobRunner.AddTimerJobPos(observer, durationMs); Executor.Current.SetManagedTask(taskSource.Task, cancelSource); return(taskSource.Task); }
public Task Fade( IPushDataController deviceObserver, double start, double end, int durationMs, ITransformer transformer = null, params Tuple<DataElements, object>[] additionalData) { var taskSource = new TaskCompletionSource<bool>(); double brightnessRange = end - start; if (brightnessRange == 0) { taskSource.SetResult(true); return taskSource.Task; } if (additionalData.Any()) deviceObserver.SetDataFromIData(additionalData.GenerateIData()); var observer = Observer.Create<double>( onNext: pos => { if (transformer != null) pos = transformer.Transform(pos); double brightness = start + (pos * brightnessRange); deviceObserver.Data[DataElements.Brightness] = brightness; deviceObserver.PushData(); }, onCompleted: () => { taskSource.SetResult(true); }); var cancelSource = this.timerJobRunner.AddTimerJobPos(observer, durationMs); Executor.Current.SetManagedTask(taskSource.Task, cancelSource); return taskSource.Task; }