Example #1
0
        private async Task ReadCharacteristic(UUID uuid)
        {
            if (!BcoreCharacteristics.ContainsKey(uuid.ToString().ToLower()))
            {
                return;
            }

            var characteristic = BcoreCharacteristics[uuid.ToString().ToLower()];

            if (!characteristic.Properties.HasFlag(GattProperty.Read))
            {
                return;
            }

            await ReadSemaphore.WaitAsync();

            DeviceGatt.ReadCharacteristic(characteristic);
        }
Example #2
0
        private async Task WriteCharacteristic(UUID uuid, byte[] value)
        {
            if (!BcoreCharacteristics.ContainsKey(uuid.ToString().ToLower()))
            {
                return;
            }

            var characteristic = BcoreCharacteristics[uuid.ToString().ToLower()];

            if (!characteristic.Properties.HasFlag(GattProperty.WriteNoResponse))
            {
                return;
            }

            await WriteSemaphore.WaitAsync();

            characteristic.SetValue(value);

            DeviceGatt.WriteCharacteristic(characteristic);
        }
Example #3
0
        public override void OnServicesDiscovered(BluetoothGatt gatt, GattStatus status)
        {
            base.OnServicesDiscovered(gatt, status);

            var service = gatt.Services.FirstOrDefault(s => s.Uuid.ToString().ToLower() == BcoreUuid.BcoreService.ToString().ToLower());

            if (service == null)
            {
                return;
            }

            BcoreService = service;

            BcoreCharacteristics.Clear();

            foreach (var characteristic in BcoreService.Characteristics)
            {
                BcoreCharacteristics.Add(characteristic.Uuid.ToString().ToLower(), characteristic);
            }

            IsInitialized = true;
            BcoreServiceDiscovered?.Invoke(this, EventArgs.Empty);
        }