private async Task <Characteristic> ConvertCharacteristic(CBCharacteristic nativeCharacteristic) { var device = nativeCharacteristic.Service.Peripheral; device.DiscoveredDescriptor += device_DiscoveredDescriptor; device.DiscoverDescriptors(nativeCharacteristic); await Task.Run(() => _descriptorDiscovered.WaitOne(TimeSpan.FromSeconds(10))); device.DiscoveredDescriptor -= device_DiscoveredDescriptor; _descriptorDiscovered.Reset(); var characteristic = new Characteristic() { Id = BluetoothConverter.ConvertBluetoothLeUuid(nativeCharacteristic.UUID.Uuid), Descriptors = nativeCharacteristic.Descriptors.Select(ConvertDescriptor).ToList(), NativeCharacteristic = nativeCharacteristic }; foreach (var descriptor in characteristic.Descriptors) { descriptor.Characteristic = characteristic; } return(characteristic); }
private Descriptor ConvertDescriptor(CBDescriptor nativeDescriptor) { return(new Descriptor { Id = BluetoothConverter.ConvertBluetoothLeUuid(nativeDescriptor.UUID.Uuid), NativeDescriptor = nativeDescriptor }); }
private async Task SendMessage() { try { await _bluetoothLeService.WriteCharacteristicValue(_characteristic, BluetoothConverter.ConvertHexString(this.WriteText)); } catch (Exception ex) { } }
private async Task MapDevice(Device device, CBPeripheral nativeDevice) { nativeDevice.DiscoveredService += nativeDevice_DiscoveredService; nativeDevice.DiscoverServices(); await Task.Run(() => _servicesDiscovered.WaitOne(TimeSpan.FromSeconds(10))); nativeDevice.DiscoveredService -= nativeDevice_DiscoveredService; _servicesDiscovered.Reset(); foreach (var cbService in nativeDevice.Services) { nativeDevice.DiscoveredCharacteristic += nativeDevice_DiscoveredCharacteristic; nativeDevice.DiscoverCharacteristics(cbService); await Task.Run(() => _characteristicsDiscovered.WaitOne(TimeSpan.FromSeconds(10))); nativeDevice.DiscoveredCharacteristic -= nativeDevice_DiscoveredCharacteristic; _characteristicsDiscovered.Reset(); var service = new Service() { Id = BluetoothConverter.ConvertBluetoothLeUuid(cbService.UUID.Uuid), Device = device, Characteristics = new List <Characteristic>() }; foreach (var cbCharacteristic in cbService.Characteristics) { var characteristic = await ConvertCharacteristic(cbCharacteristic); characteristic.Service = service; service.Characteristics.Add(characteristic); } service.Device = device; device.Services.Add(service); } }
public async Task ReadCharacteristic() { _readValue = BluetoothConverter.ByteArrayToString(_bluetoothSmartService.ReadCharacteristic(_characteristic)); }