EUC BLE Library

BLE library for Electric Unicycles — real-device tested protocols

FR | EN

EUC BLE Library

Bibliothèque Bluetooth Low Energy pour monocycles électriques (EUC) – pensée pour des applications Android modernes, avec une couche protocole testée sur de vraies roues et un backend BLE modulaire.

GroupId: io.github.tritbool
ArtifactId: euc-ble-library
Module: euc-ble-core


Pourquoi cette librairie ?

La plupart des libs BLE EUC se contentent de quelques trames “faites à la main” et d’un moteur BLE monolithique. Ici, l’objectif est différent :


Features clés


Architecture en un coup d’œil

flowchart LR
    App[Android App / UI] -->|scan, connect, commands| EucBleClient

    subgraph Core BLE
        EucBleClient --> BLEManager
        BLEManager --> BleBackend
        BleBackend --> FrameworkBleBackend
        BleBackend --> LegacyBleBackend
    end

    subgraph Protocols
        BLEManager --> KingsongProtocol
        BLEManager --> GotwayProtocol
        BLEManager --> InMotionProtocol
        BLEManager --> NinebotProtocol
        BLEManager --> NinebotZProtocol
        BLEManager --> LeaperkimProtocol
        BLEManager --> NosfetProtocol
    end

    Protocols -->|decoded frames| EUCData[(EUCData)]
    EUCData --> App

Asynchronicité & Flux de données

Exemple d’utilisation côté app :

val client = EucBleClient(context)

client.setConnectionCallback(object : ConnectionCallback() {
    override fun onDeviceDiscovered(device: EUCDevice) {
        client.connect(device)
    }
})

client.setDataCallback(object : DataCallback {
    override fun onDataReceived(data: EUCData) {
        // traiter la télémétrie sur un dispatcher adapté
    }
})

client.setErrorCallback(object : ErrorCallback {
    override fun onError(error: BLEException) {
        // gestion fine des erreurs
    }
})

client.initialize()
client.startScan()

Couverture de tests & qualité

Couverture de code

Les rapports HTML de couverture sont publiés sous :

(Voir plus bas la section “Test coverage reports”.)

Méthode de test

Les protocoles sont testés avec de vraies captures BLE :

En plus :


Test coverage reports


Intégration dans une app

Dépendance Maven Central

dependencies {
    implementation("io.github.tritbool:euc-ble-library:0.0.1")
}

Permissions & BLE Android

Le BLE Android impose :

La lib expose des erreurs structurées via BLEException et ErrorCallback pour couvrir ces cas.


Documentation API

La référence Dokka est regénérée automatiquement à chaque push sur main et publiée sous /api/ via GitHub Actions.


Roadmap


Contribuer

Toute issue, PR ou capture WheelLog supplémentaire (nouvelle roue, nouveau firmware, edge case) est la bienvenue.
Voir le dépôt : https://github.com/Tritbool/euc_ble_library.