private async void DeviceOnConnectionStatusChanged(BluetoothLEDevice device, object args)
{
if (device.ConnectionStatus == BluetoothConnectionStatus.Connected)
{
//Get stuff up and running
OnStatusChange?.Invoke("Connected");
if (
this.NotificationSourceCharacteristic.CharacteristicProperties.HasFlag(
GattCharacteristicProperties.Notify))
{
this.NotificationSourceCharacteristic.ValueChanged += NotificationSourceCharacteristicOnValueChanged;
// Set the notify enable flag
try
{
await
this.NotificationSourceCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync(
GattClientCharacteristicConfigurationDescriptorValue.Notify);
}
catch (Exception ex)
{
}
}
this.DataSourceCharacteristic.ValueChanged += DataSourceCharacteristicOnValueChanged;
await
this.DataSourceCharacteristic.WriteClientCharacteristicConfigurationDescriptorAsync(
GattClientCharacteristicConfigurationDescriptorValue.Notify);
}
if (device.ConnectionStatus == BluetoothConnectionStatus.Disconnected)
{
//Stop doing stuff
this.DataSourceCharacteristic.ValueChanged -= DataSourceCharacteristicOnValueChanged;
this.NotificationSourceCharacteristic.ValueChanged -= NotificationSourceCharacteristicOnValueChanged;
OnStatusChange?.Invoke("Disconnected");
}
}