BLE-protocoldetails en apparaatcommunicatie voor RADR
Dit document behandelt de Bluetooth Low Energy (BLE)-communicatieprotocollen die RADR gebruikt om met ondersteunde apparaten te communiceren.
BLE-overzicht
RADR gebruikt Bluetooth Low Energy (BLE) voor alle apparaatcommunicatie. Als centraal BLE-apparaat scant RADR naar randapparaten zoals OSSM en Lovense-speelgoed en maakt er verbinding mee.
| Parameter | Waarde |
|---|---|
| BLE-rol | Centraal |
| Apparaatnaam | OSSM-REMOTE |
| Zendvermogen | 9 dBm |
| Stack | NimBLE |
Scanparameters
| Parameter | Waarde |
|---|---|
| Scaninterval | 100ms |
| Scanvenster | 100ms |
| Scantype | Actief |
| Scanduur | 5000ms (5 seconden) |
Tijdens actief scannen verzendt RADR scanverzoekpakketten naar apparaten om hun volledige advertentiegegevens, inclusief apparaatnamen, op te halen.
Verbindingsparameters
RADR gebruikt geoptimaliseerde verbindingsparameters voor responsieve bediening:
| Parameter | Waarde | Beschrijving |
|---|---|---|
| Min. interval | 12 | Minimaal verbindingsinterval van 15ms |
| Maximaal interval | 12 | Maximaal verbindingsinterval van 15ms |
| Latentie | 0 | Geen slave-latentie (onmiddellijke reacties) |
| Time-out voor toezicht | 150 | Time-out van 1500ms voor verloren verbindingen |
| Time-out voor verbinding | 5000ms | Maximale tijd om verbinding tot stand te brengen |
Het verbindingsinterval van 15ms zorgt voor een responsieve bediening met minimale latentie tussen encoderbewegingen en de reactie van het apparaat.
Apparaatdetectie
RADR identificeert ondersteunde apparaten aan de hand van hun geadverteerde service-UUID's:
Research And Desire-apparaten
| Apparaat | Service-UUID |
|---|---|
| OSSM | 522B443A-4F53-534D-0001-420BADBABE69 |
| LKBX | In afwachting van implementatie |
| DTT | In afwachting van implementatie |
Lovense-apparaten
| Apparaat | Service-UUID |
|---|---|
| Domi 2 | 57300001-0023-4BD4-BBD5-A6920E4C5653 |
| Ander | Via het Buttplug.io-register |
Buttplug.io-apparaten
Apparaten die worden ondersteund via het Buttplug.io-protocol worden
geïdentificeerd met behulp van UUID's uit het dynamische register
(registry.json). Dit register kan worden bijgewerkt via firmware-updates zonder
codewijzigingen.
OSSM-protocol
RADR communiceert met OSSM via een aangepast BLE-protocol:
Dienststructuur
Service: 522B443A-4F53-534D-0001-420BADBABE69
├── Position Characteristic
├── Speed Characteristic
├── Depth Characteristic
├── Sensation Characteristic
├── Stroke Characteristic
└── Pattern CharacteristicCommandoformaat
Commando's worden als byte-arrays naar het juiste kenmerk verzonden:
| Parameter | Gegevenstype | Bereik |
|---|---|---|
| Speed | uint8_t | 0-100 |
| Depth | uint8_t | 0-100 |
| Sensation | uint8_t | 0-100 |
| Stroke | uint8_t | 0-100 |
| Pattern | uint8_t | patroonindex |
Patroonselectie
Patronen worden geselecteerd op index:
| Index | Patroonnaam |
|---|---|
| 0 | Simple Stroke |
| 1 | Teasing Pounding |
| 2 | Robo Stroke |
| 3 | Half'n'Half |
| 4 | Deeper |
| 5 | Stop'n'Go |
| 6 | Insist |
Lovense-protocol
Voor Lovense-apparaten met directe integratie (Domi) gebruikt RADR het Lovense-BLE-protocol:
Trillingsregeling
Command: Vibrate:{level};
Level: 0-16Batterijstatus opvragen
Command: Battery;
Response: {percentage}Voedingsregeling
Command: PowerOff;Buttplug.io-apparaten
Voor apparaten die via Buttplug.io worden ondersteund, implementeert RADR een subset van het Buttplug-protocol:
- Vibrate — Trillingsniveau instellen (0-1 float, toegewezen aan het apparaatbereik)
- Linear — Voor apparaten met stuwbeweging
- Rotate — Voor roterende apparaten
Niet alle apparaten ondersteunen alle opdrachten. RADR vraagt tijdens de verbinding de apparaatmogelijkheden op.
Verbindingsherstel
Als RADR de verbinding met een apparaat verliest:
- Detectie — Verbindingsverlies gedetecteerd binnen supervisietime-out (1500ms)
- Opnieuw verbinden — Automatische poging tot opnieuw verbinden binnen 2-5 seconden
- Veiligheid — Voor OSSM: geleidelijke afbouw tijdens ontkoppeling
- Fout — Na een mislukte herverbinding keert RADR terug naar het hoofdmenu
Beveiliging
RADR maakt gebruik van open BLE-verbindingen zonder koppeling of bonding:
- Geen pincode vereist
- Geen versleuteling (opdrachten zijn platte tekst)
- Eén verbinding tegelijk
BLE-communicatie is niet versleuteld. Gebruik RADR in privéomgevingen waar radio-onderschepping geen probleem is.
Foutopsporing
Voor BLE-foutopsporing tijdens de ontwikkeling:
- Gebruik een BLE-sniffer (nRF Connect, Wireshark met BLE-adapter)
- Schakel seriële logging in de firmware in (
LOG_LEVEL_DEBUG) - Bewaak verbindingsgebeurtenissen en schrijfbewerkingen van kenmerken