2016/09/06

[nrf5]SDK v12のble_app_hrsサンプルはけっこう違う

nRF5 SDK v12.0.0がリリースされたが、やはり、いろいろ変わっているようだ。

main.cのSDK v11.0.0との差分を見ると、こんな感じ(小さくてすまん)。

image

DFUが削られているのと、DeviceManagerからPeerManagerになったのが大きいか。
APIバージョンが3だったらATT MTUサイズを設定するところはあるので、それなりに楽しめるのかもしれないが、うちには新しいSoftDeviceが使えるチップが1つしかないし、Androidもそんなに新しくないので、Bluetooth v4.2のところは遊べない。。

 

ソース差分以外にも、いくつか違いがあった。
以前は、nrf_drv_config.hやpstorage_platform.hがそれぞれあったが、sdk_config.hとして1ファイルにまとめられ、ボードごとのフォルダに置くようになった。。。と見せかけつつ、そうでもない。

pstorageのことは載っていないが、pstorage_platform.hは無い。
nrf_drv_config.h相当の内容はありそうだ。
そしてまだよくわからないが、BLEサービスのENABLEDを設定するようになっている。
HRSサンプルだと、BLE_BAS_ENABLED、BLE_DIS_ENABLED、BLE_HRS_ENABLEDが1になっている。
service_init()はいつものようにあるのだが、たとえばBLE_HRS_ENABLEDだとble_hrs.cのところで使われていて、有効になっていないと中身がまるまるコンパイルされないようになっている。

使わないならコンパイルしないようにしておけばいいやん、と思ったが、これはビルド環境を毎回作るのが大変だから、ビルド対象としては全部追加しておいて、ヘッダだけで対象外にできるようにしたいという現れなのか。
Arduino Primoなんかあるから、楽な構築環境を作るのかもしれない。


とまあ、そんな感じで、前作ったものを移植するときはけっこう苦労することになりそうだ。
Bluetooth Developer Studioのテンプレートは提供されているし、その中のmain.cも新しくなっているから、これをベースに作っていった方が早いだろう。

 

その方針で、nRF51822用に作っていたサンプルを変更した。
https://github.com/hirokuma/nrf52832v12_bds_sample

今回からなのかどうかはわからないが、ログ出力のAPIも変わっていた。
nrf_log.hで、NRF_LOG_INFO()を使うようになっていた。

Makefileの変更が一番面倒だった。
私はファイル名を列挙するタイプよりも、+=でずらずら並べる方が、コメントアウトしやすくて好きなのだが、もうそれでやっているとバージョンが変わるたびに変更せんといかんので、負けた。。。

BDSで作ったソースファイルは特に変更していないのだが、ログは変更した。
そのくらいで動いてくれる。

0 件のコメント:

コメントを投稿

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