Esempio n. 1
0
        private void DeviceWatcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
        {
            var tempMac    = args.BluetoothAddress.ToString("X");
            var regex      = "(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})";
            var replace    = "$1:$2:$3:$4:$5:$6";
            var macAddress = Regex.Replace(tempMac, regex, replace);

            // TODO: Add log advertising data functionality

            /*var list = args.Advertisement.DataSections;
             * foreach (BluetoothLEAdvertisementDataSection data in args.Advertisement.DataSections)
             * {
             *  var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(data.Data);
             *  byte[] raw = new byte[data.Data.Length];
             *  dataReader.ReadBytes(raw);
             *  string hex = BitConverter.ToString(raw);
             *
             *  if (data.Data.Length >= 21 && raw[data.Data.Length - 1] == 0x84)
             *  {
             *      Console.WriteLine("Data:");
             *      Console.WriteLine("DT: " + data.DataType);
             *
             *      Console.WriteLine(hex);
             *  }
             * }*/

            if (macAddress.Equals(macFilter))
            {
                if (watch.ElapsedMilliseconds > 1000) // Fire event not more than once per second
                {
                    DeviceFoundEvent?.Invoke();

                    watch.Restart();
                }

                //Console.WriteLine("Fond" + args.AdvertisementType.ToString());

                /*var list = args.Advertisement.DataSections;
                 * foreach (BluetoothLEAdvertisementDataSection data in list)
                 * {
                 *  Console.WriteLine("Data");
                 * }
                 * Console.WriteLine("MAC: " + macAddress);
                 * foreach (Guid uuid in args.Advertisement.ServiceUuids)
                 * {
                 *  Console.WriteLine("UUID: " + uuid);
                 * }*/
            }
        }
 protected virtual void RaiseDeviceFoundEvent(Cube cube)
 {
     // Raise the event in a thread-safe manner using the ?. operator.
     DeviceFoundEvent?.Invoke(cube);
 }
Esempio n. 3
0
 public void RaiseDeviceFoundEvent(IChannel channel)
 {
     Services.DispatcherServices.Invoke(() => DeviceFoundEvent?.Invoke(this, channel));
 }