/// <summary> /// Constructs Beacon instances from the trigger data and adds recognized beacons to the _beacons list. /// </summary> private List <Beacon> TriggerDetailsToBeacons(BluetoothLEAdvertisementWatcherTriggerDetails triggerDetails) { List <Beacon> beacons = new List <Beacon>(); if (triggerDetails != null) { foreach (var bleAdvertisementReceivedEventArgs in triggerDetails.Advertisements) { Beacon beacon = BeaconFactory.BeaconFromBluetoothLeAdvertisementReceivedEventArgs(bleAdvertisementReceivedEventArgs); beacons.Add(beacon); } } return(beacons); }
/// <summary> /// Triggered when the watcher receives an advertisement. /// If the advertisement came from a beacon, a Beacon instance is created based on the /// received data. A new beacon is added to the list and an existing one is only updated. /// </summary> private async void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args) { Logger.Debug("Scanner: Advertisement received " + args.Timestamp.ToString("HH:mm:ss.fff")); Beacon beacon = BeaconFactory.BeaconFromBluetoothLeAdvertisementReceivedEventArgs(args); if (beacon != null) { if (_enterDistanceThreshold != null && beacon.Distance > _enterDistanceThreshold.Value) { return; } if (!FilterBeaconByUuid(beacon)) { return; } NotifyBeaconEvent(beacon); } }