2017-01-05 6 views
0

Ich habe ein BLE SoC (QN9021) mit einem Linux-System (Beagle-Knochen läuft openwrt) über UART-Schnittstelle verbunden. Ich möchte, dass Linux BLE erkennt, das mit dem System verbunden ist, und Befehle wie gatttool, hcitool sollten mit meinem BLE funktionieren.Linux identifiziert meine BLE?

Auch ich benutze Bluez und ich möchte BlueZ Bibliotheken finden und kommuniziert direkt mit meinem BLE.

Es sieht aus wie Quelldateien in bluez verwendet socket() Funktionsaufruf, um mit dem Bluetooth-Adapter zu kommunizieren. Ich habe Abschnitt hcitool.c Quelldatei geschrieben, die Socket-Aufruf enthält:

/* Open HCI device. 
* Returns device descriptor (dd). */ 
int hci_open_dev(int dev_id) 
{ 
struct sockaddr_hci a; 
int dd, err; 

/* Check for valid device id */ 
if (dev_id < 0) { 
    errno = ENODEV; 
    return -1; 
} 

/* Create HCI socket */ 
dd = socket(AF_BLUETOOTH, SOCK_RAW | SOCK_CLOEXEC, BTPROTO_HCI); 
if (dd < 0) 
    return dd; 

/* Bind socket to the HCI device */ 
memset(&a, 0, sizeof(a)); 
a.hci_family = AF_BLUETOOTH; 
a.hci_dev = dev_id; 
if (bind(dd, (struct sockaddr *) &a, sizeof(a)) < 0) 
    goto failed; 

return dd; 

failed: 
err = errno; 
close(dd); 
errno = err; 

return -1; 
} 

Wie bereits erwähnt, ich bin Anschluss BLE SoC über UART. Wie kann ich meine BLE als Bluetooth und Funktionsaufruf wie Socket() sollte Deskriptor von meinem BLE öffnen?

+1

Ich habe nicht umfassend gesucht, aber ich denke, Sie müssen ['hciattach'] (http://manpages.ubuntu.com/manpages/trusty/man8/hciattach.8.html) – Hasturkun

+0

kann ich tun es programmatisch? – abhiarora

+1

Sie können, aber unter der Annahme, dass das HCI nirgendwohin geht, ist es die Art von Sache, dass Sie entweder ein Init-Skript oder Ihren Code hciattach ausführen (da es einen Initialisierungscode für bestimmte HCIs hat). Siehe [hciattach source] (http://git.kernel.org/cgit/bluetooth/bluez.git/tree/tools/hciattach.c), wenn Sie an den Details interessiert sind. – Hasturkun

Antwort

1

Wird beim Ausführen etwas angezeigt?

dmesg | grep blue 

oder

lsmod | grep blue 

Sie müssen sicherstellen, dass Sie einen Linux-Treiber für dieses Modul haben, dass es in Ihrem Kernel verfügbar ist (NXP und TI nicht unbedingt gerne zusammen spielen) und wahrscheinlich dass es in Ihrem Gerätebaum eingebaut ist.

Sie hätten wahrscheinlich mehr Glück, wenn Sie ein TI BLE-Modul mit Treiberunterstützung verwenden.

+0

Ich kann Linux-Modul für die Unterstützung der QN machen. Bitte führe mich dafür. – abhiarora

+0

Bitte werfen Sie einen Blick auf meine neueste Frage! [Meine neue Frage] (http://stackoverflow.com/questions/41944822/bluetooth-over-uart-using-hciattach) – abhiarora