private async void GetAllServicesButton_Clicked(object sender, EventArgs e) { GetAllServicesButton.IsEnabled = false; await BluetoothDevice.GattClient.ConnectToServerAsync(); GattServiceResult serviceResult = new GattServiceResult(); bool failed = true; while (failed) { try { serviceResult = await BluetoothDevice.GattClient.DiscoverAllPrimaryServiceAsync(); failed = false; System.Diagnostics.Debug.WriteLine("FAILED"); } catch (Exception) { } } if (serviceResult.ProtocolError == RemoteX.Bluetooth.LE.Gatt.GattErrorCode.Success) { System.Diagnostics.Debug.WriteLine("SUCCESS"); foreach (var service in serviceResult.Services) { Services.Add(service); } } GetAllServicesButton.IsEnabled = true; }
public async Task <GattServiceResult> DiscoverAllPrimaryServiceAsync() { var win10ServiceResult = await Win10LEDevice.GetGattServicesAsync(); GattServiceResult rxServiceResult = new GattServiceResult(); if (win10ServiceResult.Status == GattCommunicationStatus.Success) { rxServiceResult.ProtocolError = Bluetooth.LE.Gatt.GattErrorCode.Success; List <RXGattClientService> rxGattClientServices = new List <RXGattClientService>(); System.Diagnostics.Debug.WriteLine("FOUND " + win10ServiceResult.Services.Count + " Services"); foreach (var win10Service in win10ServiceResult.Services) { rxGattClientServices.Add(GetRXServiceFromWin10GattService(win10Service)); } rxServiceResult.Services = rxGattClientServices.ToArray(); } else if (win10ServiceResult.Status == GattCommunicationStatus.ProtocolError) { rxServiceResult.ProtocolError = (Bluetooth.LE.Gatt.GattErrorCode)(win10ServiceResult.ProtocolError); } else if (win10ServiceResult.Status == GattCommunicationStatus.Unreachable) { throw new NotImplementedException("UNREACHABLE"); } else if (win10ServiceResult.Status == GattCommunicationStatus.AccessDenied) { throw new NotImplementedException("ACCESS_DENIED"); } return(rxServiceResult); }