Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }