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 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。