2013/11/24

[ble]RC-S390は定期的にAdvertisingしているようだ

試していて気付いたのだが、RC-S390をAdvertisingにしなくても、ペアリングをしていなくても、スキャンはできているような気がする。
いや、そもそもRC-S390は自分で作ってるわけでもないので、どこでAdvertisingになっているかなんてわかるはずもない。

と思ったのだけど・・・やっぱり、AdvertisingじゃないとCentralはスキャンできないんじゃないかと思う。
だって、他に方法がなさそうだから。
iPad miniにインストールしているPaSoRiアプリも、RC-S390のボタンを長押ししなくてもペアリングしにいこうとする。
じゃあ、そのときNexus7の設定アプリから見えてるかというと、見えない。
RC-S390の青LEDが点滅するモードになると、設定アプリから見える。
うーむ・・・。

 

まず、RC-S390の使い方を把握しておこう。
ボタンを2秒長押しすると、電源のON/OFFができる。
見分け方は、

  • 電源がONになった・・・通信状態ランプ(青LED)が3回点滅
  • 電源がOFFになった・・・通信状態ランプ(青LED)とバッテリー残量ランプ(橙LED)が1秒点灯

だ。
では、2秒長押ししてみよう。
うん、両LEDが点灯したから、電源OFFだ。
では再度2秒長押ししたら・・・あれ、また両LEDが点灯したぞ・・・。
さらに長く押したら、青LEDが点滅し始め、LightBlueが検出した。

つまり、一度ペアリングさせないと電源がONにできないという仕様なんだな。
まあ、製品としてはそうか。

LightBlueが反応したので情報を見てみると、ペアリングを要求された。
要求はされたのだが、サービス一覧は取得できたみたいだ。
このとき、Nexus7の昨日作ったスキャンアプリは検出できなくなっている(PaSoRiは青LED点滅中)。
ペアリング要求をキャンセルしても、Nexus7からは検出できない。
BlueLightで「PaSoRi」をタップしてDisconnectすると、Nexus7からも見えるようになった。
Nexus7からペアリングすると、青LED点滅は消えた。
この状態でボタンを2秒長押しすると、両LEDが点灯。つまり電源OFF。
もう一度2秒長押しすると、青LEDが3回点滅。つまり電源ON。
BlueLightでスキャンすると、PaSoRiが見えている。

 

わかったことをまとめよう

  • PaSoRiが誰ともペアリングしていない場合、電源のONだけをすることはできない
  • ペアリングしていなくて青LED点滅しているとき、誰もConnectしていなければAdvertisingしている
  • 誰かがConnectすると、Advertisingしない(当たり前)
  • Connectionするとペアリングの要求を行う。ペアリングしなくてもサービスとキャラクタリスティックの一覧は取得できるみたいだ(まだBLE仕様をわかってない)
  • ペアリングすると、ボタンで電源のON/OFFができるようになる
  • 電源OFFのときは、スキャンしても検出できない(当たり前)
  • 電源ONにすると、スキャンして検出できる。

ってことは、ペアリングして電源ONなら、ConnectionしていないときはAdvertisingしてるってことか。
それはUndirectedでやっているので、ペアリングしていない人でもスキャンできてしまうのかな。
ペアリングしている人にだけAdvertisingする方がよさそうではあるが、別の端末で使いたいときに面倒になるのかな?
いや、それなら5秒長押ししたときにだけUndirectedなAdvertisingにすればよさそうなものだが。
まあ、ここはまだ私が仕様をよくわかっていないせいかもしれんので、わかってから考えよう。

 

いつだかの推測で、相手がいなくてもConnection状態を維持しているのでは?と書いていたが、そうではなく、Connectionしてない間はAdvertisingしているので、それをアプリが捉まえている、という動作なのだろう。

image

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。