====== Differences ====== This shows you the differences between two versions of the page.
tutorials:advanced:bgapi [2015/09/01 18:00] Guvalif created |
tutorials:advanced:bgapi [2021/04/01 13:52] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | < | ||
- | BGAPI - チュートリアル | ||
- | ====================== | ||
- | ## はじめに | ||
- | |||
- | BGAPIは**command**,**response**,**event**という3種類の処理によって動作する、 | ||
- | イベントドリブンな軽量APIです。実体は適切なフォーマットの16進数を送受信しているだけであり、 | ||
- | さまざまなプログラミング言語に簡単に移植することが可能です。 | ||
- | (参考:[Python, | ||
- | |||
- | 本文章では、BlueGiga社の提供するBLESDKに同梱されている**bglib**の使用方法について、 | ||
- | 簡単に解説していきたいと思います。 | ||
- | |||
- | |||
- | ## 基本概念 | ||
- | |||
- | BLE機器との接続,キャラクタリスティックの読み書き等の基本的な処理はもちろん、 | ||
- | 複雑なシステムコマンドまで、全てが関数として実装されています。 | ||
- | ユーザはそれらを呼び出すだけで、BGAPIの全ての機能にアクセスすることが可能です。 | ||
- | (実装ファイル:anytypes.h, | ||
- | |||
- | PCから使用する場合、BlueGiga社のBLEドングル,BLED112に仮想COMドライバからアクセスし、 | ||
- | BGAPIの**command**を送信します。**command**は受理された場合、必ず**response**を返してきます。 | ||
- | これを仮想COMから読み込み解析することで、ユーザは**command**の実行結果等の詳細な情報を得ることができます。 | ||
- | |||
- | また、いくつかの処理は結果を**event**として、不定期に返却してきます。 | ||
- | なので、そうした処理に対しては実行後、複数回の仮想COMからの読み出しが必要となります。 | ||
- | |||
- | こうした**response**と**event**は、イベントハンドラで処理することを想定しています。 | ||
- | なので、ユーザはその実装を適宜書き換えることで任意の動作を実現します。 | ||
- | (実装ファイル:commands.c) | ||
- | |||
- | |||
- | ## 下準備 | ||
- | |||
- | ### 1. ドライバのインストール | ||
- | [BLED112の製品ページ](https:// | ||
- | ドライバをダウンロードします。(ダウンロードには会員登録が必要です。) | ||
- | |||
- | ### 2. シリアル通信処理の実装 | ||
- | BGAPIを使用するにあたって、コマンド送信処理とメッセージループを独自に実装する必要があります。 | ||
- | **scan_example**内の**output関数**,**read_message関数**がそれぞれ参考になるかと思います。 | ||
- | |||
- | 注意点として、おそらく仮想COMのドライバは全二重通信に対応していません。 | ||
- | そのため、仮想COMの読み書きは排他制御される必要があります。 | ||
- | |||
- | |||
- | ## BGAPIを用いたBLE接続手順 | ||
- | |||
- | 簡単のため、一部の**command**の引数の解説や、**response**の発生タイミングについては記述しません。 | ||
- | |||
- | 1. **ble_cmd_gap_end_procedure()** | ||
- | | ||
- | |||
- | 2. **ble_cmd_connection_disconnect(uint8 handle)** | ||
- | | ||
- | |||
- | 3. **ble_cmd_gap_discover(args...)** | ||
- | | ||
- | | ||
- | | ||
- | |||
- | 4. **ble_cmd_gap_connect_direct(bd_addr address, args...)** | ||
- | | ||
- | </ |