obniz BLE/Wi-Fiゲートウェイ Peripheralとの強制切断方法について
obniz js:3.18.0-alpha.0
BLE/Wi-Fiゲートウェイ OS:3.5.0
obniz BLE/Wi-FiゲートウェイをCentralとして利用しています。
スキャンして見つかったPeripheralで、connectWait({autoDiscovery: false, mtuRequest: null})をしたのちに、
接続できないことがあるため、20秒以内に接続できない場合は、disconnectWait()を呼び出しています。
disconnectWait()を呼び出しても切断されない状況が時々ありますが、
強制切断する方法はないでしょうか。
-
connectWaitには現在キャンセルに対応してないため途中のdisconnectWaitには対応できていない状態だと思われます。
状況を詳しく知りたいと思いますが、切断されない状態になるときはconnectWaitの関数は処理を完了しているんでしょうか。時系列に関して詳しく知りたいと思います。
0 -
1.connectWaitを呼び出し
2.20秒立ってもconnectWaitから応答がないため、
Promiseで強制的に処理を戻すようにしてから
disconnectWait()を呼び出し
1のconnectWait関数完了は確認できていません。
0 -
connectWait中にdisconnectWait実行できますがキャンセルされているわけではございません。
そのため、connectWaitの途中にdisconnectWaitが失敗することは仕様です。
最大20秒でのご切断をご希望とのことで、申し訳ございませんが、ご要望として承ります。0 -
ご回答ありがとうございます。
結局のところ、20秒経過してもconnectWaitから応答がない場合、
現状ではどのような処置をしたら、connectのやり直しができますでしょうか?0 -
キャンセル機能は現在ございません。
接続が正常に完了するか、タイムアウト(90秒)まで待つ必要がございます。0 -
ご回答ありがとうございます。
タイムアウト90秒を任意に変更できないのでしょうか。
上記出来ない場合ですが、強制的に切断する方法として、
obniz.close();でBLE/Wi-fiゲートウェイと切断してから、
obniz.onconnect
obniz.ble.initWait();
でも実現可能でしょうか。0 -
>タイムアウト90秒を任意に変更できないのでしょうか。
できかねます。こちらご要望として承ります。>上記出来ない場合ですが、強制的に切断する方法として、
>obniz.close();でBLE/Wi-fiゲートウェイと切断してから、
>obniz.onconnect
>obniz.ble.initWait();
>でも実現可能でしょうか。
実現可能です。0 -
上記回答通り実装いたしましたが、
obnizjsとobnizクラウドとの再接続処理がされていないことが分かりましたので共有します。close呼出し後、autoConnect=falseに設定されていましたので、処理としては、
obniz.close()
obniz.autoConnect=true
obniz.onconnect
obniz.ble.initWait();
としました。0
サインインしてコメントを残してください。
コメント
8件のコメント