2015/05/10

[ble]Device Addressのpublicとrandom

BLEのAdvertisingを見ていると、当然ながらPeripheralのアドレスが拾える。
そういえば、アドレスには種類があったよなあ、と思って調べた。


Device Address

Core_v4.2.pdfのVol.6 Part B "1.3 Device Address"

  • Public Device Address
  • Random Device Address
    • Static Device Address
    • Private Device Address
      • non-resolvable private address
      • resolvable private address

種類としては、publicが1つ、randomが3つになる。
randomのアドレスは、下位の2bitがどういう値かで見分けられる。

が、publicとrandomを見分ける方法が書かれていない。
そもそも、randomだったら偶然publicと同じアドレスになることもありうるだろうし・・・。

と思ったら、違うところで見分けるようになっていた。


Advertising PDUs

Core_v4.2.pdfのVol.6 Part B "2.3.1 Advertising PDUs"

Advertisingで投げるアドレスのAdvAだけ見てもpublicかrandomかはわからず、ヘッダにあるTxAddで表しているということが書かれている。

 

  • publicアドレス
    • TxAddかRxAddが0(AdvAだとTxAdd、InitAだとRxAddだったが、他にもあるかも)
  • randomアドレス
    • TxAddかRxAddが1(AdvAだとTxAdd、InitAだとRxAddだったが、他にもあるかも)
      • staticアドレス
        1. 下位2bitが1
        2. 残りのビットが全部0じゃないこと(0x000000000003はダメ)
        3. 残りのビットが全部1じゃないこと(0xFFFFFFFFFFFFはダメ)
      • privateアドレス(non-resolvable)
        1. 下位2bitが0
        2. 残りのビットが全部0じゃないこと(0x000000000000はダメ)
        3. 残りのビットが全部1じゃないこと(0xFFFFFFFFFFFCはダメ
      • privateアドレス(resolvable)
        1. 下位2bitがb10
        2. 残りのビットが全部0じゃないこと(0x000000000002はダメ)
        3. 残りのビットが全部1じゃないこと(0xFFFFFFFFFFFEはダメ)

0 件のコメント:

コメントを投稿

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