Esempio n. 1
0
        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);
        }