BleBackendFactory.kt

package io.github.tritbool.euc.ble.integration

/**
 * Factory for creating [SwitchableBleBackend] instances.
 *
 * Provides a convenient way to create a switchable backend based on a configuration flag.
 */
internal object BleBackendFactory {
    /**
     * Creates a new [SwitchableBleBackend] that can switch between framework and legacy implementations.
     *
     * @param useLegacy If true, starts with the legacy backend; otherwise starts with framework backend
     * @param frameworkBackend The framework-based BLE backend
     * @param legacyBackend The legacy BLE backend
     * @return A new switchable backend instance
     */
    fun fromFlag(
        useLegacy: Boolean,
        frameworkBackend: BleBackend,
        legacyBackend: BleBackend
    ): SwitchableBleBackend {
        return SwitchableBleBackend(
            frameworkBackend = frameworkBackend,
            legacyBackend = legacyBackend,
            initialType = if (useLegacy) BleBackendType.LEGACY else BleBackendType.FRAMEWORK
        )
    }
}