Bluetooth Low Energy Stack (libbtle)

Gast #3402984
Lesenswert?

Hallo zusammen,

ich möchte hier mein kleines Projekt vorstellen: libbtle
https://github.com/ccier/libbtle

Es handelt sich hierbei um einen kompletten Bluetooth Low Energy Stack, 
den ich aus dem Linux Kernel (BlueZ) herausgeschält habe, daher auch 
GPL2.

Zielsetzung:
* alles möglichst einfach halten, daher keine Command/Response/Event 
Queues, immer nur eine Transaktion
* lauffähig unter Linux, Windows und Embedded Systems
* reines C mit GCC
* kein Multithreading notwendig

Aktuell vorhanden sind: HCI, L2CAP, ATT und SMP.
Es sind aber noch keine GATT-Prozeduren (z.B Find Services) vorhanden. 
Auch der Security Mananger (SMP) ist noch nicht eingebunden.
Es ist viel Code vorhanden, den ich noch an den richtigen Stellen 
verheiraten muss.

Stand der Dinge ist: Device-Discovery möglich, Device-Connect möglich

Ich verwende derzeit ein normales USB BT4.0 Dongle (Broadcom oder CSR 
Chip), um libbtle zu entwickeln.
Der USB-Transport kann auch ganz einfach gegen UART ausgetauscht werden, 
falls ein BT4.0 HCI-Modul eingesetzt werden soll.

Ich freue mich über ein Feedback.

Gruß
Christian
#3406173
Lesenswert?

Hallo BLE...

Was ist jetzt der Vorteil deines Stacks zum Bluez Stack? Mal abgesehen 
von der Größe?!

Bin fast zufrieden mit dem Linux Stack... leider gibt es noch keine 
Möglichkeit die BLE Connect Poll Zeiten zu vergößern... Laut dem Bluez 
IRC Channel, wurde in den letzten Tagen daran gearbeitet und ich warte 
so auf den Bluez 5.11 Stack...
Ohne diese Funktion kann man nicht von Low Energy sprechen, weil der 
Client aufgefordert wird, sich aller zB 70 ms zu melden...

Wie ist das bei dir gelöst?

Grüße

Basti
Gast #3410500
Lesenswert?

@name: Was meinst Du genau?

@codejug: Just fork on Github, add your code and send a pull-request.

@counterfeiter:
Nunja, ich habe das Ganze hauptsächlich als akademische Maßnahme 
gemacht, um genau zu verstehen, wie BLE funktioniert, nachdem ich mir 
das Buch BLE von Robin Heydon gekauft hatte.

libbtle ist ja nur ein kleiner Teil - der Bluetooth Low Energy Teil - 
von BlueZ. Es hat nicht den Anspruch, BlueZ ersetzen zu wollen.

BlueZ ist im Kernel- und User-Space zuhause. Libbtle ist nur im 
User-Space zuhause. Ein Vorteil wenn der Kernel alt ist und der 
BlueZ-Kernel-Teil damit auch alt ist und kein BLE unterstützt.

Man könnte libbtle auch auf einem normalen kleinen Mikrocontroller ohne 
OS laufen lassen. Zum Beispiel ein STM32 mit normalem HCI-Bluetooth 
Modul.
Entweder per USB oder UART.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren