Bluetooth Developer Studioは、BLEのデバイス開発者としてはプラグインとセットで使うものと思っていてよいと思う。
ドングルをつないでテストするようなこともできるみたいなのだけど、そこはわからなかった(ドングル持ってないし)。
nRF51の場合、ここにプラグインがある。
Nordic nRF5x Bluetooth Development Studio plugin
いま(2015/12/09)の最新版はv1.2.0で、nRF51 SDK v10.0.0用にできている。
このプラグインを、BDS内の所定のフォルダにコピーすると、コード生成できるターゲットの一覧にnRF51が出てくる、という流れだ。
私もあまり使い込んでいるとは言えないが、Peripheralで使う分には困っていない。
困っていないというか、困ったらソースを書き換えれば良いだけのことだ。
BDS+プラグインを使う利点は、サービスやCharacteristicのコメントを記入したり、追加したり、そういうのがGUI上でできることだろう。
私は、こんな順番で使っている。
- ExcelなどでATTテーブルを作る(UUIDの生成は、BDSに任せる)
- BDSにATTテーブルの情報を書き込んでいく
- ソース自動生成
- できたソースをテンプレートアプリに入れて、思ったものができているか確認
- 自分のアプリ向けにソースを変更
今は、サービスが1つと、その中にCharacteristicが数個ある程度のものを作っている。
その範囲でではあるが、BDS+プラグインでこういうことができていそうだ。
- サービスの追加
- Characteristicの追加
- 書込みなどのハンドラテンプレート作成
- Characteristic設定やNotificationの関数作成
自動生成されたソースを入れ込めば、とにかくビルドは通るので、動かしながら考えるというのもよさそうだ。
これはできなさそうだな、というのもいくつかある。
- GAP関係(Advertisingとか)
- AuthorizedなWRITE/READのCharacteristic
- Characteristicの128bit UUID指定
GAP関係は、そもそも自動生成でGAPに関するソースを生成しないのだ。
BDSで入力はできるので、Advertisingの初期値を作ってくれるとうれしいかも。
まあ、そんなに大した作業ではないから、自分でやっても面倒ではないと思うが、できれば1箇所でまとめてやってくれるとうれしいではないか。
ちょうどAuthorizedなWRITEをやりたかったのだけど、そもそもAuthorizedとかはBLEの話じゃなくてnRF51の作りになるから、BDSでは設定できないのだ。
これは、characteristic_add()する前に設定を自動で作っているところに「xxx.is_defered_write=1」みたいな感じで追加してやれば良いだけだ。
最後の128bit UUIDが、まだ新しいプラグインになってから試していないので、今は動くのかも。
何かというと、サービスについては128bit UUIDで指定してくれるのだけど、Characteristicの方は16bit UUIDしか指定してなくて、Bluetoothのデフォルトだか標準だかの128bit UUIDに16bitのUUIDだけ指定された値になっていたのだ。
自動生成したソースでは、サービスの追加時にsd_ble_uuid_vs_add()でuuid_typeを取得しているので、characteristic_add()の前に「xxx.uuid_type = uuid_type」みたいな感じで追加してやれば良いだけだ。
自動生成するといっても、BDS用のライブラリを使うわけでは無いので、うまく動かないところや変更したいところは書き換えれば良いだけだ。
まあ、自動生成する分、多少無駄なコードは発生してしまうが、そこは受け入れるかどうかだろう。
今作っているソフトは、コードは少ないけどRAMは比較的多く使いたいので、自動生成したものはそのままなるべく使いつつ、Characteristicの初期値を静的に確保しているところは削るなどしている。
プラグイン自体、ソースのテンプレートとJavaScriptでできているようなので、うまいこと変更すれば好みの自動生成をさせることができるのだろうが、私にはちょっと敷居が高い。
ただ、ソースのテンプレートを見ると、自動生成してくれそうなところが見えてくるので、ここだけ作るかー、という切り分けはしやすいかも。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。