internal static async Task <IBleResult> ExecuteWithBleAvailabilityCheckAsync(this IBleAvailability bleAvailability, Func <Task <IBleResult> > executionProvider) { IBleResult result; try { switch (bleAvailability.BleState) { case BluetoothState.On: result = await executionProvider.Invoke().ConfigureAwait(false); break; case BluetoothState.Unavailable: result = BleResult.Failure(BleFailure.BleNotAvailable); break; case BluetoothState.Unauthorized: result = BleResult.Failure(BleFailure.NoBluetoothPermissions); break; default: result = BleResult.Failure(BleFailure.BluetoothNotEnabled); break; } } catch (Exception e) { result = BleResult.Failure(e); } return(result); }
internal static IBleResult <T> ExecuteWithBleAvailabilityCheck <T>(this IBleAvailability bleAvailability, Func <IBleResult <T> > executionProvider) { IBleResult <T> result; try { switch (bleAvailability.BleState) { case BluetoothState.On: result = executionProvider.Invoke(); break; case BluetoothState.Unavailable: result = BleResult.Failure <T>(BleFailure.BleNotAvailable); break; case BluetoothState.Unauthorized: result = BleResult.Failure <T>(BleFailure.NoBluetoothPermissions); break; default: result = BleResult.Failure <T>(BleFailure.BluetoothNotEnabled); break; } } catch (Exception e) { result = BleResult.Failure <T>(e); } return(result); }
public BleConnectionManager(IAdapter bleAdapter, IBleAvailability bleAvailabilityManager, IBleLogger logger) { _bleAdapter = bleAdapter; _bleAvailability = bleAvailabilityManager; _logger = logger; _bleAdapter.DeviceConnected += OnDeviceConnected; _bleAdapter.DeviceDisconnected += OnDeviceDisconnected; _bleAdapter.DeviceConnectionLost += OnDeviceConnectionLost; }
public BleSearchManager(IAdapter bleAdapter, IBleAvailability bleAvailabilityManager, IExecutor executor, IBleLogger logger) { _bleAdapter = bleAdapter; _bleAvailabilityManager = bleAvailabilityManager; _executor = executor; _logger = logger; _bleAdapter.ScanMode = ScanMode.Balanced; _bleAdapter.ScanTimeout = int.MaxValue; }