2015/02/08

[ble]Attribute Tableを作ろう

nRF51822にサービスを何か載せる練習をしている。
前回、Input/Outputサービスを作ったときは、ドキュメントをまねしただけだった。
あれから私も勉強したので、もうちょっとちゃんと作ろうと思う。

これが、今回作ろうとしているものだ。

image

FeliCa Plugから読込み要求(Read w/o Enc.)が来たら、Notifyで通知する。
NFC R/W側に対しては、GATT Serverが持っているデータを渡すだけにしておく。
それと同じデータを、GATT Clientが読むこともできる。

あれこれいきなりやると時間がかかりそうだから、少しずつ動くものを作っていこう。


内部の方はまだ置いておくとして、GATT ServerとClient間のインターフェースを決めなくてはならん。
TIのSensorTagを見ると、attribute table[pdf]というものを用意していた。
うちにあるBLEのサンプルが少ないんだけど、この表を作るのがよいだろうと思う。
(GeckoTagは、技術サイトにログインできない件が解決できないので、何を公開しているかわからない。。。
 中の人、メール見てくれー)

Tableは、以下で構成されている。

  • Handle
  • Type
  • Value
  • Permission

TypeはDeclarationsにあった。
最初に「ここからService定義が始まる」というGATT Primary Service Declaration(0x2800)があり、そこから次のGATT Primary Serviceが現れるまではGATT Characteristic Declaration(0x2803)が続くという構造のようだ。
図にするとこんな感じか(Descriptorなどは省略)。

image

その辺を考え、nRF51822はこんなAttribute Tableがよいんじゃないか、と検討中。

image

Handleに相当する列がないのは、これはAPIによって決定するしくみになっていると思われるからだ。
UUIDさえ決めてしまえば、Handleは特に意識する必要は内容に思っている。
ひとまずこれで作ってみて、足りなかったら追加していこう。

0 件のコメント:

コメントを投稿

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