in BluetoothLEExplorer/BluetoothLEExplorer/Models/ObservableBluetoothLEDevice.cs [566:635]
public async Task<bool> Connect()
{
bool ret = false;
string debugMsg = String.Format("Connect: ");
Debug.WriteLine(debugMsg + "Entering");
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunTaskAsync(async () =>
{
Debug.WriteLine(debugMsg + "In UI thread");
try
{
Dispose();
Debug.WriteLine(debugMsg + "Calling BluetoothLEDevice.FromIdAsync");
BluetoothLEDevice = await BluetoothLEDevice.FromIdAsync(DeviceInfo.Id);
if (bluetoothLEDevice == null)
{
ret = false;
Debug.WriteLine(debugMsg + "BluetoothLEDevice is null");
MessageDialog dialog = new MessageDialog("No permission to access device", "Connection error");
await dialog.ShowAsync();
}
else
{
Debug.WriteLine(debugMsg + "BluetoothLEDevice is " + BluetoothLEDevice.Name);
// Setup our event handlers and view model properties
BluetoothLEDevice.ConnectionStatusChanged += BluetoothLEDevice_ConnectionStatusChanged;
BluetoothLEDevice.NameChanged += BluetoothLEDevice_NameChanged;
GattServicesChangedInstances = 0;
BluetoothLEDevice.GattServicesChanged += BluetoothLEDevice_GattServicesChanged;
IsPaired = DeviceInfo.Pairing.IsPaired;
CanPair = DeviceInfo.Pairing.CanPair;
IsConnected = BluetoothLEDevice.ConnectionStatus == BluetoothConnectionStatus.Connected;
Name = BluetoothLEDevice.Name;
UpdateSecureConnectionStatus();
BluetoothCacheMode cacheMode = BluetoothLEExplorer.Services.SettingsServices.SettingsService.Instance.UseCaching ? BluetoothCacheMode.Cached : BluetoothCacheMode.Uncached;
ret = await GetAllPrimaryServices(cacheMode);
}
}
catch (Exception ex)
{
Debug.WriteLine(debugMsg + "Exception - " + ex.Message);
string msg = String.Format("Message:\n{0}\n\nInnerException:\n{1}\n\nStack:\n{2}", ex.Message, ex.InnerException, ex.StackTrace);
var messageDialog = new MessageDialog(msg, "Exception");
await messageDialog.ShowAsync();
// Debugger break here so we can catch unknown exceptions
Debugger.Break();
}
});
if (ret)
{
Debug.WriteLine(debugMsg + "Exiting (0)");
}
else
{
Debug.WriteLine(debugMsg + "Exiting (-1)");
}
return ret;
}