private async void PackageReceived(IBluetoothAdvertisementPackage args) { try { await RunWithDispatcher(() => { _data.Received++; }); if (_isBusy) { await RunWithDispatcher(() => { _data.Dropped++; }); Debug.WriteLine($"A Package was Dropped {_data.Dropped} from {_data.Received} ({_data.Dropped * 100.0 / (1.0 * _data.Received) }%)"); return; } var beacon = BeaconBuilder.CreateBeaconDeviceFromBleAdvertisement(args); if (beacon.NumberOfPackages() == 0) { return; } if (beacon.RssiOutOfRange()) { return; } InsertOrReplaceBeaconInCollection(beacon); } catch (Exception e) { Debug.WriteLine("Unknown ERROR!!!!!!"); } }
private void AddManufacturerDataInvalidData(IBluetoothAdvertisementPackage package) { package.Advertisement.ManufacturerData.Add(new BluetoothLEManufacturerData { Data = (new byte[] { 0x10, 0x05, 0x03, 0x1C, 0xFD, 0xD5, 0xA0 }).AsBuffer(), CompanyId = 0x99 }); }
private void AddManufacturerDataValidData(IBluetoothAdvertisementPackage package) { package.Advertisement.ManufacturerData.Add(new BluetoothLEManufacturerData { Data = (new byte[] { 0x02, 0x15, 0xF7, 0x82, 0x6D, 0xA6, 0x4F, 0xA2, 0x4E, 0x98, 0x80, 0x24, 0xBC, 0x5B, 0x71, 0xE0, 0x89, 0x3E, 0x27, 0x70, 0x98, 0x4B, 0xB3 }).AsBuffer(), CompanyId = 0x99 }); }
public static IBluetoothBeacon CreateBeaconDeviceFromBleAdvertisement(IBluetoothAdvertisementPackage eventArgs) { var beaconDevice = CreateBeacon(eventArgs); AddPackagesFromManufacturerSection(eventArgs, beaconDevice); AddPackagesFromDataSection(eventArgs, beaconDevice); return(beaconDevice); }
public static IBluetoothBeacon CreateBeacon(IBluetoothAdvertisementPackage eventArgs) { var rssi = eventArgs.RawSignalStrengthInDBm; var address = eventArgs.BluetoothAddress; var timestamp = eventArgs.Timestamp; var beaconDevice = new BeaconDevice(address, rssi, timestamp); return(beaconDevice); }
public static void AddPackagesFromManufacturerSection(IBluetoothAdvertisementPackage eventArgs, IBluetoothBeacon beaconDevice) { var manufacturerSections = eventArgs.Advertisement.ManufacturerData; foreach (var manufacture in manufacturerSections) { var array = manufacture.Data.ToArray(); try { var package = PackageFactory.CreatePackageFromManufacturerPayload(array); beaconDevice.AddPackage(package); } catch (PackageException e) { } } }
public static void AddPackagesFromDataSection(IBluetoothAdvertisementPackage eventArgs, IBluetoothBeacon beaconDevice) { var dataSections = eventArgs.Advertisement.DataSections; foreach (var data in dataSections) { var array = data.Data.ToArray(); try { var package = PackageFactory.CreatePackageFromDataPayload(array); beaconDevice.AddPackage(package); } catch (PackageException e) { } } }
public IBluetoothAdvertisementPackage ConvertFromBluetoothLeAdvertisementPackage(BluetoothLEAdvertisementReceivedEventArgs e) { _advertisementPackage = new BluetoothAdvertisementPackage { BluetoothAddress = e.BluetoothAddress, Timestamp = e.Timestamp, RawSignalStrengthInDBm = e.RawSignalStrengthInDBm, AdvertisementType = e.AdvertisementType, Advertisement = new BluetoothAdvertisement { ManufacturerData = new List <BluetoothLEManufacturerData>(), DataSections = new List <BluetoothLEAdvertisementDataSection>() } }; var adv = e.Advertisement; CopyManufacturerData(adv); CopyDataSection(adv); return(_advertisementPackage); }