Kotlin Multiplatform BLE library for iOS, Android, macos, windows and javascript
Status: Accepted
Date: 2026-04-18
Deciders: Blue Falcon maintainers
Technical Story: Issue: “Expose subscribed characteristic notifications to consumers (Flow / plugin hook / delegate)”
Blue Falcon 3.0 engines received native notification callbacks from BLE stacks, but payloads were not propagated through the 3.0 API surface. This prevented applications and plugins from reliably consuming notification streams for protocols built on indications/notifications.
The legacy wrapper also lacked wiring from engine callback events to BlueFalconDelegate.didCharacteristcValueChanged, so only explicit reads triggered that callback.
We will expose characteristic notification payloads through two coordinated mechanisms:
notifications: SharedFlow<ByteArray> to BluetoothCharacteristic.CharacteristicNotification) and dispatch them from core BlueFalcon to plugins via BlueFalconPlugin.onNotificationReceived(peripheral, characteristic, value).Engine native callback paths now emit both:
didCharacteristcValueChanged can now be driven by actual subscribed notifications.characteristic.valuePros:
Cons:
Why not chosen: Does not provide reliable notification-stream consumption.
Pros:
Cons:
Why not chosen: We need both app-level reactive consumption and plugin extensibility.
didCharacteristcValueChanged.