Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume II/6-4
6-4 Bluetooth 交換ライブラリのサポート
Bluetooth ライブラリには Bluetooth 交換ライブラリが伴います。これはアプリケーションが標準交換マネージャ API を使って Bluetooth をサポートできるようにするものです。Bluetooth 交換ライブラリは、オブジェクトプッシュとジェネリックオブジェクト交換プロファイルに適応します。
交換マネージャについて詳しくは、Palm OS Programmer's Companion の 「オブジェクト交換」 章を参照して下さい。
Bluetooth 交換ライブラリの検知
Bluetooth 交換ライブラリの存在をチェックするためには、FtrGet を使用します。
err = FtrGet(btexgFtrCreator, btexgFtrNumVersion, &btExgLibVersion);
もしBluetooth交換ライブラリが存在するなら、FtrGet は errNone を戻します。この場合、btExgLibVersion によって示される値は Bluetooth 交換ライブラリのバージョン番号を含んでいます。バージョン番号のフォーマットは 0xMMmfsbbb です。MM はメジャーバージョン、m はマイナーバージョン、f はバグフィックスレベル、s はステージ、bbb はビルド番号です。ステージ 3 はライブラリのリリースバージョンであることを示します。ステージ 2 はベータリリース、ステージ 1 はアルファリリース、ステージ 0 は開発リリース、となります。よって、例えば、0x01013000 という値は、Bluetooth 交換ライブラリのリリースバージョン 1.01 ということです。
Bluetooth で交換マネージャを使用する
Bluetoothで交換マネージャを使用することは、IRDA や SMS で交換マネージャを使用するのとほぼ同じです。違いは以下の通りです。
- Bluetooth特有の特殊フィールドを持つオブジェクトを送るとき、URL を使います。
- アプリケーションは通信中のデバイスの URL を知りたいかもしれません。交換マネージャはその情報を取得する方法を提供します。
- ExgGet 関数と ExgRequest 関数は、Bluetoothではサポートされません。
これらの違いについて、以下のセクションで更に説明します。
Bluetooth 交換 URL
もしBluetooth交換ライブラリおよびURLを使ってオブジェクトを送信するなら、URLの整形方法に依存して、オブジェクトを単一または複数のデバイスに一度に送ることができます。Bluetooth 交換ライブラリ URL は、以下のどれかの形式になります。
_btobex:filename
_btobex://filename
_btobex://?_multi/filename
デバイス問合せを行ない、ユーザが利用できるデバイスを示し、ユーザが一つ以上のデバイスを選択できるようにします。選択された全デバイスにオブジェクトを送信します。
_btobex://?_single/filename
デバイス問合せを行ない、ユーザが利用できるデバイスを示し、ユーザが一つだけデバイスを選択できるようにします。そのデバイスにオブジェクトを送信します。
_btobex://address1[,address2, ..]/filename
指定された Bluetooth デバイスアドレスでオブジェクトをデバイスに送信します。アドレスは 「xx:xx:xx:xx:xx:xx」 形式です。
これらの URL 形式を結合しないで下さい。予期しない結果になります。
リモートデバイスの URL を取得する
データを受け取るリモートデバイスを示す URL を知る必要のあるアプリケーションがあります。これは特にゲームで有用です。以下のコードが示すように、ExgControl 関数を使って ExgAccept をコールしたあとに URL を得ることができます。
ExgCtlGetURLType getUrl; UInt16 getUrlLen; // First get the size of the URL getUrl.socketP = exgSocketP; getUrl.URLP = NULL; getUrl.URLSize = 0; getUrlLen = sizeof(getUrl); ExgControl(exgSocketP, exgLibCtlGetURL, &getUrl, &getUrlLen); // Now get the URL getUrl.URLP = MemPtrNew(getUrl.URLSize); ExgControl(exgSocketP, exgLibCtlGetURL, &getUrl, &getUrlLen); // getUrl.URLP points to a null-terminated URL string // describing the remote device, for example, // "_btobex://01:23:45:67:89:ab/" ... // Free the URL after you're done with it MemPtrFree(getUrl.URLP);
ExgGet と ExgRequest
Bluetooth 交換ライブラリは、ExgGet や ExgRequest で提供されるプル関数をサポートしません。もしこれらの関数を実行したいなら、一般的な Bluetooth ライブラリ API を使用します。「Bluetooth 利用可能なアプリケーションの開発」を参照して下さい。