Exemplo n.º 1
0
        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!!!!!!");
            }
        }
Exemplo n.º 2
0
 private void AddManufacturerDataInvalidData(IBluetoothAdvertisementPackage package)
 {
     package.Advertisement.ManufacturerData.Add(new BluetoothLEManufacturerData
     {
         Data      = (new byte[] { 0x10, 0x05, 0x03, 0x1C, 0xFD, 0xD5, 0xA0 }).AsBuffer(),
         CompanyId = 0x99
     });
 }
Exemplo n.º 3
0
 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
     });
 }
Exemplo n.º 4
0
        public static IBluetoothBeacon CreateBeaconDeviceFromBleAdvertisement(IBluetoothAdvertisementPackage eventArgs)
        {
            var beaconDevice = CreateBeacon(eventArgs);

            AddPackagesFromManufacturerSection(eventArgs, beaconDevice);

            AddPackagesFromDataSection(eventArgs, beaconDevice);

            return(beaconDevice);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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)
                {
                }
            }
        }
Exemplo n.º 7
0
        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)
                {
                }
            }
        }
Exemplo n.º 8
0
        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);
        }