Kotlin Multiplatform BLE library for iOS, Android, macos, windows and javascript
This example demonstrates how to create custom plugins for Blue Falcon 3.0.
A complete, working custom plugin that adds connection timeout functionality to Blue Falcon.
Features:
BlueFalconPlugin interfaceonBeforeConnect, onAfterConnect)This example plugin demonstrates:
import dev.bluefalcon.example.plugin.*
val blueFalcon = BlueFalcon {
engine = AndroidEngine(context)
// Install the timeout plugin
connectionTimeout {
timeoutMillis = 5000 // 5 seconds
onTimeout = { peripheral ->
println("Connection timeout: ${peripheral.name}")
}
}
}
All plugins must implement BlueFalconPlugin:
interface BlueFalconPlugin {
val name: String
fun install(blueFalcon: BlueFalcon)
// Optional interceptor methods
suspend fun onBeforeConnect(...)
suspend fun onAfterConnect(...)
// ... and more
}
Plugins can intercept BLE operations:
override suspend fun onBeforeConnect(
peripheral: BluetoothPeripheral,
autoConnect: Boolean,
next: suspend (BluetoothPeripheral, Boolean) -> Unit
) {
// Your logic before connection
println("About to connect...")
// Call next to continue the chain
next(peripheral, autoConnect)
// Logic after connection (in this method)
}
Make plugins configurable:
data class Config(
val option1: String = "default",
val option2: Int = 42,
val callback: (() -> Unit)? = null
)
class MyPlugin(private val config: Config) : BlueFalconPlugin {
// Use config.option1, config.option2, etc.
}
Provide a DSL function for easy installation:
fun BlueFalconConfig.myPlugin(
configure: MyPlugin.Config.() -> Unit = {}
) {
val config = MyPlugin.Config().apply(configure)
install(MyPlugin(config))
}
See the Plugin Development Guide for complete instructions on creating your own plugins!