2015/10/16

[nrf51]相手がNotifyを受け付ける準備をしていないとNRF_ERROR_INVALID_STATEが返る

タイトル通りだ。

ADC変換完了割込みの優先度を下げて、完了時にsd_ble_gatts_hvx()でNotifyを投げられるようになった。
最初は10秒間隔にしていたのだけど、もう少し早い間隔にしたいと2秒くらいに縮めたところ、sd_ble_gatts_hvx()がNRF_ERROR_INVALID_STATEを返すようになった。

理由をあれこれ考えたのだが、時間を短くしたので、スマホ側をNotify可にする操作が間に合わないままになっているためだろう。
こちらにも、Notify/Indicateできないときに呼ぶとINVALID_STATEになる、と書かれている。
How to know if the Notification/Indication of a Characteristic is enabled? - Nordic Developer Zone

いま作っているようなアプリは、Client側がNotifyを受けることを前提に作っている。
だから、上記リンクの2番目にあるように、CCCDへの書き込みを受けとるようにしてからADCを開始するようにした方がよいかもしれない。

今回は、めんどうなので、INVALID_STATEはスルーするようにした。

0 件のコメント:

コメントを投稿

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