public async Task PlaySession(EventCaptureSession captureSession) { _monitoringEvents = true; var discoveryEvents = new List <DeviceDiscoveryEvent>(); foreach (var capturedEvents in captureSession.CapturedEvents) { discoveryEvents.AddRange(capturedEvents.Value); } discoveryEvents = discoveryEvents.OrderBy(x => x.TimeStamp).ToList(); var timeDiffs = new TimeSpan[discoveryEvents.Count]; for (int i = 0; i < discoveryEvents.Count - 1; i++) { timeDiffs[i] = discoveryEvents[i + 1].TimeStamp - discoveryEvents[i].TimeStamp; } for (int i = 0; i < discoveryEvents.Count - 1; i++) { if (i > 0) { await Task.Delay(timeDiffs[i - 1]); } var discoveryEvent = discoveryEvents[i]; discoveryEvent.TimeStamp = DateTime.Now; OnDeviceDiscovery(discoveryEvent); } _monitoringEvents = false; }
private BleLocatorModel() { BleUdpListeners = new List <BLEUdpListener>(); _capturedEventsSession = new EventCaptureSession(); _discoveredEventHandler = new ActionBlock <DeviceDiscoveryEvent>((ce) => HandleDiscoveryEvent(ce), new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 5 }); LoadConfiguration(); }