Exemplo n.º 1
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);
        }