Example #1
0
        public byte[] ReadUserDescription(string uuid)
        {
            if (!uuid.Equals("ffe1") && !uuid.Equals("ffe2"))
            {
                return(null);
            }
            wclGattDescriptor descriptor = uuid.Equals("ffe1") ? WriteChUserDesc : ReadChUserDesc;

            Client.ReadDescriptorValue(descriptor, wclGattOperationFlag.goReadFromDevice, out wclGattDescriptorValue value);
            return((byte[])value.Data.Clone());
        }
Example #2
0
        public bool GetFeatures()
        {
            stage = 4;
            int Res = Client.ReadCharacteristics(UEIservice, wclGattOperationFlag.goReadFromDevice, out Characteristics);

            if (Res != wclErrors.WCL_E_SUCCESS || Characteristics == null)
            {
                return(false);
            }

            stage = 5;
            int flags = 0;

            foreach (wclGattCharacteristic Character in Characteristics)
            {
                String s;
                if (Character.Uuid.IsShortUuid)
                {
                    s = Character.Uuid.ShortUuid.ToString("X4");
                }
                else
                {
                    s = Character.Uuid.LongUuid.ToString();
                }
                if (s.Equals("FFE1"))
                {
                    WriteCh = Character;
                    flags  |= 1;
                }
                else if (s.Equals("FFE2"))
                {
                    ReadCh = Character;
                    flags |= 2;
                }
            }
            if (flags != 3)
            {
                return(false);
            }

            stage = 6;
            Res   = Client.ReadDescriptors(ReadCh, wclGattOperationFlag.goReadFromDevice, out Descriptors);
            if (Res != wclErrors.WCL_E_SUCCESS || Descriptors == null)
            {
                return(false);
            }

            stage = 7;
            foreach (wclGattDescriptor Descriptor in Descriptors)
            {
                String s;
                if (Descriptor.Uuid.IsShortUuid)
                {
                    s = Descriptor.Uuid.ShortUuid.ToString("X4");
                }
                else
                {
                    s = Descriptor.Uuid.LongUuid.ToString();
                }
                if (s.Equals("2902"))
                {
                    hasCCCD        = true;
                    CCCDdescriptor = Descriptor;
                }
                else if (s.Equals("2901"))
                {
                    ReadChUserDesc = Descriptor;
                }
            }

            stage = 8;
            Res   = Client.ReadDescriptors(WriteCh, wclGattOperationFlag.goReadFromDevice, out Descriptors);
            if (Res != wclErrors.WCL_E_SUCCESS || Descriptors == null)
            {
                return(false);
            }
            foreach (wclGattDescriptor Descriptor in Descriptors)
            {
                String s;
                if (Descriptor.Uuid.IsShortUuid)
                {
                    s = Descriptor.Uuid.ShortUuid.ToString("X4");
                }
                else
                {
                    s = Descriptor.Uuid.LongUuid.ToString();
                }
                if (s.Equals("2901"))
                {
                    WriteChUserDesc = Descriptor;
                }
            }

            stage = 9;
            Subscribe(true);
            Client.OnCharacteristicChanged += Client_OnCharacteristicChanged;
            return(true);
        }