Bluetooth-communicatie

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.

ParameterWaarde
BLE-rolCentraal
ApparaatnaamOSSM-REMOTE
Zendvermogen9 dBm
StackNimBLE

Scanparameters

ParameterWaarde
Scaninterval100ms
Scanvenster100ms
ScantypeActief
Scanduur5000ms (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:

ParameterWaardeBeschrijving
Min. interval12Minimaal verbindingsinterval van 15ms
Maximaal interval12Maximaal verbindingsinterval van 15ms
Latentie0Geen slave-latentie (onmiddellijke reacties)
Time-out voor toezicht150Time-out van 1500ms voor verloren verbindingen
Time-out voor verbinding5000msMaximale 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

ApparaatService-UUID
OSSM522B443A-4F53-534D-0001-420BADBABE69
LKBXIn afwachting van implementatie
DTTIn afwachting van implementatie

Lovense-apparaten

ApparaatService-UUID
Domi 257300001-0023-4BD4-BBD5-A6920E4C5653
AnderVia 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 Characteristic

Commandoformaat

Commando's worden als byte-arrays naar het juiste kenmerk verzonden:

ParameterGegevenstypeBereik
Speeduint8_t0-100
Depthuint8_t0-100
Sensationuint8_t0-100
Strokeuint8_t0-100
Patternuint8_tpatroonindex

Patroonselectie

Patronen worden geselecteerd op index:

IndexPatroonnaam
0Simple Stroke
1Teasing Pounding
2Robo Stroke
3Half'n'Half
4Deeper
5Stop'n'Go
6Insist

Lovense-protocol

Voor Lovense-apparaten met directe integratie (Domi) gebruikt RADR het Lovense-BLE-protocol:

Trillingsregeling

Command: Vibrate:{level};
Level: 0-16

Batterijstatus 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:

  1. Detectie — Verbindingsverlies gedetecteerd binnen supervisietime-out (1500ms)
  2. Opnieuw verbinden — Automatische poging tot opnieuw verbinden binnen 2-5 seconden
  3. Veiligheid — Voor OSSM: geleidelijke afbouw tijdens ontkoppeling
  4. 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:

  1. Gebruik een BLE-sniffer (nRF Connect, Wireshark met BLE-adapter)
  2. Schakel seriële logging in de firmware in (LOG_LEVEL_DEBUG)
  3. Bewaak verbindingsgebeurtenissen en schrijfbewerkingen van kenmerken

Verder lezen

Op deze pagina