Infrastructure Options

There is no BluetoothInfrastructureOptions type in this codebase — a previous version of this document described one at length, but it was never implemented (or was removed before it shipped) and this page went undetected out of sync for a long time. There is currently no app-wide options class for things like operation timeouts, connection concurrency limits, or verbose-logging toggles. If you need that kind of behavior today, implement it at the call site (e.g. wrap calls with your own CancellationTokenSource for timeouts) rather than looking for a config knob that doesn't exist.

The one piece of genuine infrastructure-level configuration in the library is TickerOptions.

TickerOptions

namespace Bluetooth.Core.Infrastructure.Scheduling;

public sealed class TickerOptions
{
    public TimeSpan Resolution { get; init; } = TimeSpan.FromMilliseconds(250);
}

Namespace: Bluetooth.Core.Infrastructure.Scheduling

Resolution controls the internal scheduling tick used by the shared ITicker service (polling-based property refresh, timeouts, etc.) — smaller values mean more accurate timing at the cost of more wakeups. It's registered via AddTicker(), which AddBluetoothCoreServices() calls internally:

// Bluetooth.Core/Infrastructure/Scheduling/ServiceCollectionExtensions.cs
public static IServiceCollection AddTicker(this IServiceCollection services)
{
    services.AddOptions<TickerOptions>();
    services.AddSingleton<ITicker, Ticker>();
    return services;
}

There is currently no public overload that lets you customize TickerOptions.Resolution from MauiProgram.cs — it registers with its default (250ms) via services.AddOptions<TickerOptions>() with no configure delegate. If you need a different resolution, register your own IConfigureOptions<TickerOptions> after calling AddBluetoothServices().