in BluetoothLEExplorer/BluetoothLEExplorer/Models/ObservableBluetoothLEDevice.cs [637:690]
private async Task<bool> GetAllPrimaryServices(BluetoothCacheMode cacheMode)
{
var succeeded = false;
string debugMsg = String.Format("GetAllPrimaryServices: ");
Debug.WriteLine(debugMsg + "Entering");
// Get all the services for this device
var result = await BluetoothLEDevice.GetGattServicesAsync(cacheMode);
if (result.Status == GattCommunicationStatus.Success)
{
System.Diagnostics.Debug.WriteLine(debugMsg + "GetGattServiceAsync SUCCESS");
lock (Services)
{
foreach (var serv in result.Services)
{
if (!GattServiceUuidHelper.IsReserved(serv.Uuid))
{
var temp = new ObservableGattDeviceService(serv);
// This isn't awaited so that the user can disconnect while the services are still being enumerated
temp.Initialize();
Services.Add(temp);
}
else
{
serv.Dispose();
}
}
ServiceCount = Services.Count();
}
succeeded = true;
}
else if (result.Status == GattCommunicationStatus.ProtocolError)
{
ErrorText = debugMsg + "GetGattServiceAsync Error: Protocol Error - " + result.ProtocolError.Value;
System.Diagnostics.Debug.WriteLine(ErrorText);
string msg = "Connection protocol error: " + result.ProtocolError.Value.ToString();
var messageDialog = new MessageDialog(msg, "Connection failures");
await messageDialog.ShowAsync();
}
else if (result.Status == GattCommunicationStatus.Unreachable)
{
ErrorText = debugMsg + "GetGattServiceAsync Error: Unreachable";
System.Diagnostics.Debug.WriteLine(ErrorText);
string msg = "Device unreachable";
var messageDialog = new MessageDialog(msg, "Connection failures");
await messageDialog.ShowAsync();
}
return succeeded;
}