2015/11/10

[nrf51][bds]128bitのUUIDを設定していない

以前、こんな記事を書いた。
hiro99ma blog: [nrf51]Bluetooth Developer Studio 1.0

このとき、最後の方でサービスのUUID設定がうまく行かないとぼやいていた。
SDK v10に変更したが、当然ここが変わっているわけでもなく、Pluginが更新されたわけでもないので、このままだ。
前回は16bitにしてから生成し直すとうまくいったが、今回はなんかうまくいかん。
うーむ。

あれ、16bitのUUIDしか生成していないんだったら、128bitの残りの部分はどうなってるんだ??


このときビルドしたものが焼かれたまま残っていたので、動かしてキャプチャした。

0000e9eb-0000-1000-8000-00805f9b34fb

うわー、16bitのところ以外は、Bluetooth Base UUID「00000000-0000-1000-8000-00805F9B34FB」ではないか。
Core v4.2のp.1919「Vol 3, Part B 2.5.1 UUID」参照だ。
ぬかったわ・・・。

 

これは、Bluetoothの標準サービスを使っているときはよいのだろうけど、自分でUUIDを割り振るときには修正しないといかんな。
ここもうまいこと自動生成してくれるとよいのだが、Plugin v1.1.7では早いのかもしれんな。


sd_ble_gatts_service_add()を使うと、サービスの方には128bit UUIDを設定してくれるが、Characteristicの方もちょっとやってやらないと、16bitのUUIDしか設定してくれない。

変更は簡単で、ble_add_char_params_tのuuid_typeに、sd_ble_uuid_vs_add()で戻ってきたUUID typeを設定するだけ。
これをそれぞれのCharacteristicに行ってからcharacteristic_add()すると、設定してくれた。

0 件のコメント:

コメントを投稿

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