Beispiel #1
0
        private void _advWatcher_Received(BluetoothLEAdvertisementWatcher sender, BluetoothLEAdvertisementReceivedEventArgs args)
        {
            // Ignore non-Bluetera devices
            if (!BlueteraConstants.ValidDeviceNames.Contains(args.Advertisement.LocalName))
            {
                return;
            }

            // Ignore duplicate calls
            if (_devicesFound.Contains(args.BluetoothAddress))
            {
                return;
            }

            // add to found devices
            _devicesFound.Add(args.BluetoothAddress);

            // notify
            BlueteraAdvertisement adv = new BlueteraAdvertisement()
            {
                Address = args.BluetoothAddress,
                Rssi    = (double)args.RawSignalStrengthInDBm
            };

            AdvertismentReceived?.Invoke(this, adv);
        }
        private static void OnDeviceDiscoveredInternal(ulong addr)
        {
            BlueteraAdvertisement adv = new BlueteraAdvertisement()
            {
                Address = addr,
                Rssi    = Double.NaN // TODO: Native SDK to return RSSI
            };

            Instance.AdvertismentReceived?.Invoke(Instance, adv);
        }
        private void _btManager_AdvertismentReceived(IBlueteraManager sender, BlueteraAdvertisement args)
        {
            Dispatcher.InvokeAsync(async() =>
            {
                try
                {
                    // avoid race
                    if (ApplicationState != ApplicationStateType.Scanning)
                    {
                        return;
                    }

                    _btManager.StopScan();

                    _dataRateMeter.Reset();
                    ApplicationState = ApplicationStateType.Connecting;
                    UpdateControls();

                    // Try connecting to Bluetera
                    _bluetera = await _btManager.Connect(args.Address);  // This method will either connect or throw
                    _bluetera.ConnectionStatusChanged += _bluetera_ConnectionStatusChanged;
                    _bluetera.DownlinkMessageReceived += _bluetera_DownlinkMessageReceived;

                    // Start IMU. Methods will throw on failure
                    await StartImu();

                    // update UI
                    ApplicationState = ApplicationStateType.Connected;
                    UpdateControls();
                }
                catch (BlueteraException ex)
                {
                    _bluetera?.Disconnect();
                    _bluetera = null;

                    ApplicationState = ApplicationStateType.Error;
                    UpdateControls();
                }
            });
        }
Beispiel #4
0
 private static void BlueteraDevice_AdvertismentReceived(IBlueteraManager sender, BlueteraAdvertisement args)
 {
     Console.WriteLine($"Bluetera found: {BlueteraUtilities.UlongAddressAsString(args.Address)}");
     lastAddress = args.Address;
 }