public async Task <Bluetooth.LE.Gatt.Client.GattDescriptorsResult> DiscoverAllCharacteristicDescriptorsAsync() { var win10Result = await Win10Characteristic.GetDescriptorsAsync(); Bluetooth.LE.Gatt.Client.GattDescriptorsResult rxResult = new Bluetooth.LE.Gatt.Client.GattDescriptorsResult(); rxResult.CommunicationStatus = win10Result.Status.ToRXCommunicationStatus(); if (rxResult.CommunicationStatus == RemoteX.Bluetooth.LE.Gatt.GattCommunicationStatus.Success) { rxResult.ProtocolError = GattErrorCode.Success; List <RXGattClientDescriptor> rxDescriptorList = new List <RXGattClientDescriptor>(); foreach (var win10Descriptor in win10Result.Descriptors) { rxDescriptorList.Add(RXGattClient.GetRXDescriptorFromWin10Descriptor(win10Descriptor)); } rxResult.Descriptors = rxDescriptorList.ToArray(); } else if (rxResult.CommunicationStatus == RemoteX.Bluetooth.LE.Gatt.GattCommunicationStatus.ProtocolError) { rxResult.ProtocolError = (Bluetooth.LE.Gatt.GattErrorCode)(win10Result.ProtocolError); } else if (rxResult.CommunicationStatus == GattCommunicationStatus.Unreachable) { throw new NotImplementedException("UNREACHABLE"); } else if (rxResult.CommunicationStatus == GattCommunicationStatus.AccessDenied) { throw new NotImplementedException("ACCESSDENIED"); } return(rxResult); }
public async Task <GattCommunicationStatus> WriteWithoutResponseAsync(byte[] value) { var writer = new DataWriter(); writer.WriteBytes(value); IBuffer buffer = writer.DetachBuffer(); GattCommunicationStatus status = (await Win10Characteristic.WriteValueAsync(buffer)).ToRXCommunicationStatus(); return(status); }
public async Task <GattWriteResult> WriteAsync(byte[] value) { var writer = new DataWriter(); writer.WriteBytes(value); IBuffer buffer = writer.DetachBuffer(); var result = (await Win10Characteristic.WriteValueWithResultAsync(buffer)).ToRXGattWriteResult(); return(result); }
public async Task <ReadCharacteristicValueResult> ReadCharacteristicValueAsync() { Windows.Devices.Bluetooth.GenericAttributeProfile.GattReadResult win10Result = await Win10Characteristic.ReadValueAsync(); System.Diagnostics.Debug.WriteLine(win10Result.Status); ReadCharacteristicValueResult rxResult = new ReadCharacteristicValueResult(); rxResult.CommunicationStatus = win10Result.Status.ToRXCommunicationStatus(); if (rxResult.CommunicationStatus == GattCommunicationStatus.Success) { var reader = DataReader.FromBuffer(win10Result.Value); byte[] valueBytes = new byte[reader.UnconsumedBufferLength]; reader.ReadBytes(valueBytes); rxResult.ProtocolError = GattErrorCode.Success; rxResult.Value = valueBytes; } else if (rxResult.CommunicationStatus == GattCommunicationStatus.ProtocolError) { rxResult.ProtocolError = (GattErrorCode)win10Result.ProtocolError; } else if (rxResult.CommunicationStatus == GattCommunicationStatus.Unreachable) { throw new NotImplementedException("UNREACHABLE"); } else if (rxResult.CommunicationStatus == GattCommunicationStatus.AccessDenied) { throw new NotImplementedException("ACCESSDENIED"); } return(rxResult); }