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(); } }); }
private static void BlueteraDevice_AdvertismentReceived(IBlueteraManager sender, BlueteraAdvertisement args) { Console.WriteLine($"Bluetera found: {BlueteraUtilities.UlongAddressAsString(args.Address)}"); lastAddress = args.Address; }