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