Bluetooth

Bluetooth Low Energy support for both the Client (scanning / connecting) and Server (advertising / GATT) roles, with a shared attribute (de)serialization framework and Eddystone beacon tracking.

This is a feature group of Kaluga, containing the following modules:

Module Usage Artifact Android iOS JVM JS WasmJS macOS tvOS watchOS
core Shared Bluetooth attributes and the BluetoothFormat (de)serialization framework com.splendo.kaluga.bluetooth:core  
client Scanning for and connecting to BLE devices as a Client com.splendo.kaluga.bluetooth:client  
server Advertising and exposing GATT attributes as a Server com.splendo.kaluga.bluetooth:server          
beacons Tracking the availability of Beacons using the Eddystone protocol com.splendo.kaluga.bluetooth:beacons      
test-utils/core Test helpers for the Bluetooth core module com.splendo.kaluga.bluetooth:test-core  
test-utils/client Test helpers for the Bluetooth client module com.splendo.kaluga.bluetooth:test-client  
test-utils/server Test helpers for the Bluetooth server module com.splendo.kaluga.bluetooth:test-server          
annotations The @Bluetooth annotations that describe a device for code generation com.splendo.kaluga.bluetooth:annotations
ksp KSP processor that generates clients and servers from @Bluetooth definitions (build-time) com.splendo.kaluga.bluetooth:ksp              
plugin Gradle plugin wiring up the Bluetooth code generation (build-time) com.splendo.kaluga.bluetooth.plugin              

Code generation

The annotations, ksp and plugin modules together generate typed Bluetooth clients and servers from an annotated description of a device, so you don’t hand-write GATT plumbing or attribute (de)serialization. See the code generation plugin README for the full guide.