2013/11/24

[ble]master/slave, initiator/responder, server/client

用語が、用語が・・・。

似たような感じの言葉がよく出てくるのだが、使い分けがわかっていない。
特に、「master/slave」「initiator/responder」「server/client」は、どれも同じような感じがしつつ、やっぱり違うんだろうけど、曖昧なままごまかしてきた。

そろそろ、はっきりさせたい。


Central/Peripheral

まずは、これか。
いわゆる「デバイス側」がPeripheralで、その持ち主が「Central」というイメージだ。

Core_V4.0のp.200に「BLEのGAPは4つのroleを定義する:Broadcaster, Observer, Peripheral, Central」とある。
つまり、GAP(Generic Access Profile)の機能ということだろう。

 

Master/Slave

Core_V4.0のp.1639-1640にGAPの4roleが対応する機能一覧がある。
そのLink Layer functionalityのConnection Stateに「Slave Role/Master Role」がある。
CentralはMaster Role、PeripheralはSlave Role。
つまり、LL(Link Layer)の機能ということだろう。

AdvertisingするのがSlaveで、それを受け入れるのがMaster、と思っている。
なので、PeripheralがAdvertisingし、Centralが受け入れる、ということになる。

 

Initiator/Responder

これはまだ私の調べごとには出てこないのだが、Interface誌にでていた。
「マスタ(イニシエータ)」「スレーブ(レスポンダ)」と書いてある。

p.2130に出てきている。
これは「Conditions」の説明なので、状態というか、そういうものなのか?
Physical Link Createコマンドを受けとるとInitiatorになり、Physical Link Acceptコマンドを受けとるとResponderになるのかな。
説明が「physical link initiator/responder」だから、PHYの機能ということだろう。

PHYが一番下の階層だ。
LL(Master/Slave)はその上。
GAP(Central/Peripheral)はもっと上。

検索したけど、あんまりそれっぽいことが書かれていない。
忘れてしまうか。。。

 

Server/Client

自分で書いておいて何だが、これは「Attribute Server/Client」のことかな?
ATT serverとATT clientみたいだ。
p.141には、ATT clientがコマンド、要求、確認をATT serverに対して送信する、と書いてある。
ATT serverはそれに対して、応答、通知、指示をATT clientに送信する。

Attribute Protocolの説明なので、これはGAPと同じ階層のようだ。
また、p.141にGATT(Generic ATTribute profile)の説明もあり、ATT serverの機能を実現しているのがGATTだ、とある(optionallyでATT clientも)。
p.1637にプロファイルスタックの図があったのだけど、GAPがベースのようになっていて、そこにGATTがいるのか。

image

で、この辺でPushとかPullとかの話が出てくると思ったのだが、Core_V4.0を「Push」で検索しても引っかからない。
なんだ?
それに、CharacteristicとAttributeの区別もついていない。
「Characteristic」という属性がついたAttributeがCharacteristicってことかいな?
Characteristicのアクセスは、ReadとかWriteとかNotifyとか、そんなのだよなぁ。。。
うぅぅ。。。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。