using System.Security.Principal; using InABox.Avalonia.Platform; using InABox.Core; using InTheHand.Bluetooth; namespace InABox.Avalonia.Platform.Desktop; public class Desktop_Bluetooth : IBluetooth { public Logger? Logger { get; set; } public async Task IsAvailable() { return await Task.Run(() => false); } public async Task WriteAsync(string macaddress, Guid serviceid, Guid characteristicid, byte[] data) { var available = await InTheHand.Bluetooth.Bluetooth.GetAvailabilityAsync(); if (available) { var filter = new BluetoothLEScanFilter(); filter.Services.Add(serviceid); var options = new RequestDeviceOptions() { AcceptAllDevices = false }; options.Filters.Add(filter); var devices = await InTheHand.Bluetooth.Bluetooth.ScanForDevicesAsync(options); if (devices.Any()) { return true; } } return false; // IDevice? _device = null; // var adapter = CrossBluetoothLE.Current.Adapter; // adapter.DeviceDiscovered += (s, e) => _device = e.Device; // await adapter.StartScanningForDevicesAsync([serviceid], null); // if (_device != null) // { // await adapter.ConnectToDeviceAsync(_device); // var service = await _device.GetServiceAsync(serviceid); // var characteristic = await service.GetCharacteristicAsync(characteristicid); // characteristic.WriteAsync(data); // return true; // } // return false; } }