2014/10/15

[nrf51]softdevice_sys_evt_handler_set()は、何だ? - (1)

 人「最近、家でなにを開発してるんですか?」(私が家でごにょごにょやってることを知ってる人)
 私「び、Bluetooth関係とか」

といってしまったので、もうちょっとちゃんと開発しよう。


ちまちまと進めているのは、以前作ったInputとOutputのサービスを持つアプリについての読解。
サービスの実装についてはなんとなくわかったんだけど、アプリについてはほとんどサンプルを使い回しているだけなので、何をやっているか把握できていないのだ。
BLEとは直接関係ないのだけど、BLEでなにかPeripheralを作ろうと考えたとき、BLE自身は多くても3~4割くらいで、残りはアプリの制御になると思っている(もちろん、BLEのプロトコルスタックはできあがっている上でだ)。

サンプルでは、BLEを使うときにble_stack_init()という関数を作り、そこに初期化をまとめているようだ。
以前はまった内蔵クロックの初期化とか、BLEスタックを死傷するためにsd_ble_enable()というAPIを呼び出したりしている。
BLEイベントのディスパッチをするsoftdevice_ble_evt_handler_set()を呼び出したりもする。

そういうのはわかるのだが、softdevice_sys_evt_handler_set()もここで呼び出している。
このAPIはBLEイベントのディスパッチャー登録と同じように、システムイベントのディスパッチャー登録をするAPIのようだ。
疑問は2つ。

  • システムイベントって、なに?
  • なんでBLEスタック初期化の中で呼び出しているの?

プレフィクスにsoftdevice_とついているので、これはSoftDeviceを使う機能全般のものじゃなかろうか。
じゃあ、BLEスタックとは切り離されてもいいんじゃないの?
なんでここで呼ぶの??

では、softdevice_sys_evt_handler_set()についてしらべようじゃないか。


と、書いているところにNordicのMLが来た。

SoftDevice S110-SD-v7が、7.1.0にバージョンアップ!
しかも、これ以前の7.x.x系はdeprecatedになるんだと。
LDCD(てきとう)もサポートすると書いてあるし。。。

そっちを先にやりましょうかね。

0 件のコメント:

コメントを投稿

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