Beispiel #1
0
        /// <summary>
        /// Gets the last reading (can be filtered out by maxAgeOfLastReading) otherwise request the current reading
        /// </summary>
        /// <param name="gpsManager"></param>
        /// <param name="maxAgeOfLastReading"></param>
        /// <returns></returns>
        public static IObservable <IGpsReading> GetLastReadingOrCurrentPosition(this IGpsManager gpsManager, DateTime?maxAgeOfLastReading = null) => Observable.FromAsync <IGpsReading>(async ct =>
        {
            var reading = await gpsManager.GetLastReading().ToTask(ct);
            if (reading == null || (maxAgeOfLastReading != null && reading.Timestamp < maxAgeOfLastReading.Value))
            {
                reading = await gpsManager.GetCurrentPosition().ToTask(ct);
            }

            return(reading);
        });