私は、BLE SoC (QN9021)
をUARTインターフェイス経由でLinuxシステム(ビーグル・ボーン・ランopenwrt
)に接続しています。私はlinuxがシステムに接続されたBLEを認識して、gatttool, hcitool
のようなコマンドを自分のBLEで動作させる必要があります。Linuxは私のBLEを識別しますか?
また、私はBluez
を使用しています。BlueZライブラリを見つけて直接私のBLE
と通信したいと思っています。
ソースファイルのように見えるbluez
socket()
を使用して、Bluetoothアダプタと通信します。前述したように、私はUART経由BLEのSoCを接続してい
/* 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;
}
:私は、ソケット呼び出しが含まhcitool.c
ソースファイルのセクションを掲載しています。私のBLEをbluetoothとして認識させるにはどうすればいいですか?socket()のような関数呼び出しは、私のBLEの記述子を開くべきですか?
広範な検索はしていませんが、['hciattach'](http://manpages.ubuntu.com/manpages/trusty/man8/hciattach.8.html)を使用する必要があると思います。 – Hasturkun
できますかそれはプログラムによって? – abhiarora
あなたは、しかし、HCIがどこにも行かないと仮定すると、initスクリプトかあなたのコードのいずれかに 'hciattach'を実行させることができます(特定のHCIの初期化コードがあるので)。詳細については、[hciattach source](http://git.kernel.org/cgit/bluetooth/bluez.git/tree/tools/hciattach.c)を参照してください。 – Hasturkun