サンプルソースのBLEイベントハンドラの調べ物。
最後の1つだ。
BLE_GATTS_EVT_SYS_ATTR_MISSING
前回まではGAPのイベントだったが、これはGATT Serverのイベントだ。
Disconnectされたとき、SoftDeviceにsystem attributeデータを取得して保持しておき、次に接続するときに再設定するしくみのようだ。
BLE_GATTS_EVT_SYS_ATTR_MISSINGの説明としては、sd_ble_gatts_sys_attr_set()待ち、らしい。
確かにイベントハンドラでも、sd_ble_gatts_sys_attr_set()を呼び出している。
"persistent system attribute"というのは、BLEスタックが返す値のようで、アプリはそのコピーを持っておき、この関数で渡すようなしくみらしい。
コピーじゃなくてNULLを渡すと、前回の値はないよ、ということで初期化されるようだ。
storageという単語が出てくるから、保持しておきたいデータ、みたいな使い方なのか。
サンプルではNULLを渡すだけになっている。
似たような感じで、Notify投げようとしてエラーで帰ってくる場合もあるようだ。
sd_ble_gatts_hvx()を呼んで、エラーが発生した場合のようだ。
まずsd_ble_gatts_hvx()はNotifyを投げるときに使っている。
サンプルでは、このエラーが発生すると、単にエラーという扱いにしている。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。