public static async partial Task <CentralManager> NewAsync() { var instance = new CentralManager(); var state = await [email protected]( x => x != CBManagerState.Unknown && x != CBManagerState.Resetting ); return(state switch { CBManagerState.Unsupported => throw new Exception("bluetooth unsupported"), CBManagerState.Unauthorized => throw new Exception("bluetooth unauthorized"), CBManagerState.PoweredOff => throw new Exception("bluetooth powered off"), CBManagerState.PoweredOn => instance, _ => throw new Exception("unknown state"), });
private sealed record Stopper(IDisposable Subscription, CentralManager Central) : IAsyncDisposable