2017-09-21 6 views
1

eurotechゲートウェイにインストールするOSGiバンドルを作成しようとしています。 このバンドルは基本的にゲートウェイをBLEデバイスに接続します。 kuraフレームワークを使用すると、BLEデバイスに接続するときにアドレスタイプを「ランダムスタティック」に指定する方法

は私が 蔵V1.2.0フレームワークの上に余分な層を加算 Everyware™ソフトウェアフレームワーク(ESF)と呼ばれるユーロテックが提供するフレームワークを使用し、これを行うには。

catchは、BLEデバイスはランダムスタティックアドレスタイプのみを受け入れます。

私は、コンソールで次のコマンドを使用してBLEデバイスに手動でゲートウェイを接続するための管理:

hcitool -i hci0 lecc --random <BD_ADDR>

その後、

gatttool -i hci0 -b <BD_ADDR> --interactive 

これが正常に動作します。難しい部分は、ESF/kuraフレームワークを使用して同じことをコードで実行しようとするときです。

org.eclipse.kura.bluetooth.BluetoothAdapter; 
org.eclipse.kura.bluetooth.BluetoothDevice; 
org.eclipse.kura.bluetooth.BluetoothGattSecurityLevel; 
org.eclipse.kura.bluetooth.BluetoothGattService; 
org.eclipse.kura.bluetooth.BluetoothLeScanListener; 
org.eclipse.kura.bluetooth.BluetoothService; 
org.eclipse.kura.bluetooth.BluetoothDevice; 
org.eclipse.kura.bluetooth.BluetoothGatt; 
org.eclipse.kura.bluetooth.BluetoothGattCharacteristic; 
org.eclipse.kura.bluetooth.BluetoothLeNotificationListener; 

:ここ

はここでサンプルをスキャンして、接続を確立するために使用するいくつかのオブジェクトのリストがある私は、この page

public boolean connect(String adapterName) { 
    this.bluetoothGatt = this.device.getBluetoothGatt(); 
    boolean connected = false; 
    try { 
      connected = this.bluetoothGatt.connect(adapterName); 
    } catch (KuraException e) { 
      logger.error(e.toString()); 
    } 
    if (connected) { 
     this.bluetoothGatt.setBluetoothLeNotificationListener(this); 
     this.isConnected = true; 
     return true; 
    } else { 
     // If connect command is not executed, close gatttool 
     this.bluetoothGatt.disconnect(); 
     this.isConnected = false; 
     return false; 
    } 
} 

で見つかったことを使用したサンプルからの抜粋ですだから私はapi docを検索しましたが、何も見つかりませんでした。

しかし興味深いことに、SO postには、デバイスに送信するコマンドコードが記載されています。

私はkuraフレームワークで役立つかもしれない方法を見つけました。 は、ここに署名です:

void ExecuteCmd(java.lang.String ogf, java.lang.String ocf, java.lang.String parameter) 

が、私は任意のドキュメントにオペコードコマンドフィールド(OCF)に関連するオペコードグループフィールド(OGF)を見つけ出すことができませんでした(私は、Bluetooth 4.0コアの〜2300ページを脱脂しましたスペック)。誰でも検索する場所を知っていれば... :)

最終的に問題は:アドレスの種類をkuraフレームワークでランダム(hcitoolコマンドのように)に設定する方法はありますか? または私は完全に誤解されていますか? :/

とにかく、私は本当にクーラと生態系を初めて知っています。申し訳ありませんが、明らかなように見えますが、私はインスピレーションがなくなり、完全に手を使うことができます。

PS:おめでとうございました!

答えて

0

私が将来自分の立場にいる人には、Eurotechのサポートチームから回答が届きました。

親愛なるカルネイロ、

[...]

ランダムBD_ADDRに関しては、これは、BLEデバイスの構成です。 したがって、BLEデバイスはパブリックではなくランダムなタイプのアドレスを宣伝しています。既に行ったように、接続文字列にアドレスタイプを指定する必要があります。 残念ながら、現在のKura Bluetooth APIでは、接続文字列にアドレスの種類を指定する方法はありません。次のKura/ESFリリースでのプレビューで利用できるBLE用APIの新しいセットを開発していますが、Reliagate 10-05ではこれをまだサポートしていません。

1

ハハーレKuraはちょうどgatttoolプロセスを開始し、テキストでコマンドを送信し、そのインターフェイスとして出力を解析しているようです...

ここでは、パラメータとしてアドレスを使用しています:https://github.com/eclipse/kura/blob/0339ac787f90debdfc270c1dee0c16de16ea6f7e/kura/org.eclipse.kura.linux.bluetooth/src/main/java/org/eclipse/kura/linux/bluetooth/util/BluetoothUtil.java#L319。残念なことに、Kuraの開発者は、BLE標準にはランダムアドレスというものがあるのを見逃してしまったようで、現在のAPIを使ってどうやって解決できるのか分かりません。

+0

こんにちはエミールあなたの答えです! ええ、私はそのクラスを見た、私は、メソッドを使用することができるようにバンドルdependencieとしてパッケージorg.kura.linux.bluetoothをインポートしようとしました hcitoolCmd(String name、String [] cmd、BluetoothProcessListener listener); 、基本的にstartSession()メソッドを「オーバーロード」します。 しかし、bluetooth。*パッケージのクラスが解決されていないと言って、バンドルをエクスポートするときにエラーが発生しました。 私はこれが正しい方法だと感じています。 – ChrisCarneiro

関連する問題