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); }
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); }
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); }