internal async Task <bool> ObtainBtDevice()
        {
            if (BtDevice != null)
            {
                return(true);
            }

            try
            {
                BtDevice = await BluetoothDevice.FromIdAsync(BtID);
            }
            catch (Exception)
            {
                if (BtDevice != null)
                {
                    BtDevice.Dispose();
                }

                BtDevice = null;
            }

            if (BtDevice == null)
            {
                return(false);
            }

            BtDevice.ConnectionStatusChanged += ConnectionStatusChanged;
            BtDevice.NameChanged             += NameChanged;
            BtDevice.SdpRecordsChanged       += ServiceChanged;

            if (BtDevice.ConnectionStatus == BluetoothConnectionStatus.Connected)
            {
                BtConnectionStateChangedObservers?.Invoke(this, BtDevice, BtDevice.ConnectionStatus);
            }

            return(true);
        }
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 // Bluetooth Event Handlers
 private void ConnectionStatusChanged(BluetoothDevice sender, object args)
 {
     Log($"BtConnectionStatusChanged({sender.Name}, {sender.ConnectionStatus})");
     BtConnectionStateChangedObservers?.Invoke(this, sender, sender.ConnectionStatus);
 }