2019/08/24

[zephyr][ble]serviceを作る (3)

LEDサービスを作った。

https://github.com/hirokuma/zephyr_ble_led/tree/135c5c0c40e53450e402f4b42bccc39a6ef8d63c

characteristicは1つで、0以外を書き込むとLEDオン、0だったらLEDオフ。
これだけだ。

 

main.cはsamplesのperipheral_hrなどとほとんど同じだろう。
接続したときにLEDサービスのinitを呼び出している。あと、notifyがなくなった。

 

LEDサービスのinitでGPIOの初期化をしている。
これは今ひとつだな。接続し直すたびに呼び出されてしまう。

write_ct()でWRITE時の処理をさせている。
関数名はそのまま使ったのだけど、この_ctはたぶんCurrent Timeの略だな。。。
readがないので値は保存しなくても良いのだけど、一応やっておいた。

 

サービスの登録だが、特に関数を呼び出している様子が無い。
これはたぶん、BT_GATT_SERVICE_DEFINEマクロがうまいことやっているのだろう。
staticが付けられないのが残念だが、それによって簡略化できているのだろう。

 

実装はこんな感じで、難しいところがない。
SRAMもそんなに消費していない。

Memory region         Used Size  Region Size  %age Used
           FLASH:       84851 B       256 KB     32.37%
            SRAM:       15120 B        16 KB     92.29%
        IDT_LIST:         136 B         2 KB      6.64%

 

どっちかといえば、UUIDってどういう決め方だったかとか、そういう調査の方に時間がかかった。
nRFgo Studioで作ったときの習慣で、場所でいえば0000xxxx-0000-1000-8000-00805F9B34FBのxxxxだけをServiceとCharacteristicで変更しているのだけど、それぞれ新規でUUIDを生成した方がいいんだろうか?

まあ、要調査だな。

0 件のコメント:

コメントを投稿

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

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