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;
:ここ
はここでサンプルをスキャンして、接続を確立するために使用するいくつかのオブジェクトのリストがある私は、この pagepublic 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:おめでとうございました!
こんにちはエミールあなたの答えです! ええ、私はそのクラスを見た、私は、メソッドを使用することができるようにバンドルdependencieとしてパッケージorg.kura.linux.bluetoothをインポートしようとしました hcitoolCmd(String name、String [] cmd、BluetoothProcessListener listener); 、基本的にstartSession()メソッドを「オーバーロード」します。 しかし、bluetooth。*パッケージのクラスが解決されていないと言って、バンドルをエクスポートするときにエラーが発生しました。 私はこれが正しい方法だと感じています。 – ChrisCarneiro