Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume II/6-1
6-1 Palm OS Bluetooth システム
Palm OS Bluetooth システムにより、Palm Powered ハンドヘルドは以下のことが可能になります。
- LAN アクセスポイントや携帯電話を通してインターネットにアクセスする
- Bluetooth で名刺や予定などのオブジェクトをやりとりする
- Bluetooth で HotSync を行なう
- ゲームや様々な協力的なアプリケーションのようなマルチユーザアプリケーションのために、他のハンドヘルドと通信する
- SMS メッセージを送信し、電話内部の電話帳を管理する
Palm OS の Bluetooth システムデザイナは、Palm OS の技術的な内部操作性は単に充分ではないことを把握しているユーザに、その努力を集中しました。ユーザは経験全体を注意します。ユーザの「 Bluetooth 学習曲線」は短いはずです。そして、常に、単純であることが鍵です。
Bluetooth システムコンポーネント
Palm OS Bluetooth システムは、以下のコンポーネントを含みます。
- Bluetooth ライブラリ
- Bluetooth 仮想シリアルドライバ
- Bluetooth Exchange ライブラリ
- Bluetooth スタック
- Bluetooth 転送
- Bluetooth 拡張
図 6.1 はこれらのコンポーネントとその関連性を示しています。
図 6.1 Palm OS Bluetooth アーキテクチャ全体
Bluetooth ライブラリ
Bluetooth ライブラリは共有ライブラリで、Bluetooth アプリケーションを開発するための API を提供します。API は以下の領域の関数を提供します。
- リモートデバイス、piconets、ACL リンクの管理
- L2CAP および RFCOMM プロトコルによる通信
- SDP を利用した、広告サービスおよびリモートサービスのための問いあわせ
- 信頼されたデバイスリストのメンテナンス
Bluetooth 仮想シリアルドライバ
Bluetooth 仮想シリアルドライバによって、アプリケーションがPalm OS 新シリアルマネージャを使う際にBluetooth のRFCOMM プロトコルをシリアルリンクとして扱うことが可能になります。図 6.1 に示すように、Bluetooth シリアルドライバは Bluetooth ライブラリを通して残りの Bluetooth システムと通信します。Bluetooth 仮想シリアルドライバは、PPP・HotSync・電話通信で利用されます。
Bluetooth Exchange ライブラリ
Bluetooth Exchange ライブラリにより、アプリケーションは Bluetooth をリンクとして Palm OS Exchange マネージャを使用できるようになります。図 6.1 に示すように、Bluetooth Exchange ライブラリは Bluetooth ライブラリを通して残りの Bluetooth システムと通信します。RFCOMM は Exchange マネージャにとって唯一の転送メカニズムです。
Bluetooth スタック
Bluetooth スタックは、Bluetooth 仕様の様々なプロトコルを実装する共有ライブラリです。Palm OS 開発者は Bluetooth スタックに直接アクセスする必要はありません。
Bluetooth 転送
Bluetooth 転送は、異なる無線のためのデバイスドライバとして働く共有ライブラリです。Palm OS 開発者は Bluetooth 転送にアクセスすることはできません。
Bluetooth 拡張
Bluetooth 拡張は、Bluetooth システムの複数のライブラリを監督し同調します。Palm OS 開発者は Bluetooth 拡張にアクセスすることはできません。
実装の概要
Bluetooth システムは RAM や ROM の中にある PRC の集合です。最低 4MB のRAM が必要です(256k ヒープ)。実際のデバイスへの組込みはハンドヘルド製造者によります。
Bluetooth システムは UI スレッドで実行されます。ただし仮想シリアルドライバで利用されるときを除きます。
プロファイル
表 6.1 は Palm OS Bluetooth システムによってサポートされるプロファイルの一覧です。
表 6.1 サポートされる Bluetooth プロファイル
プロファイル | 詳細 |
---|---|
ジェネリックアクセス | Bluetooth プロトコルスタックの下層レイヤ( LC および LMP )、セキュリティ関連の代替、高いレイヤ( L2CAP 、RFCOMM 、OBEX )の使用を説明します。 |
サービス探索アプリケーション | シリアル探索プロトコル( SDP )を利用した他の Bluetooth 利用可能デバイス内のサービスの場所を特定するために、デバイス上のサービス探索アプリケーションで使用されるプロトコルとプロシージャを定義します。 |
シリアルポート | Bluetooth を RS-232 等のシリアルケーブルエミュレーションに使用する際のプロトコルとプロシージャを定義します。シナリオは、仮想シリアルポート抽象(システム依存の操作)を通して Bluetooth をケーブルの代替として利用するレガシーなアプリケーションを扱うプロファイルをカバーします。 |
ダイヤルアップネットワーク | 「インターネットブリッジ」利用モデルを実装するデバイスによって使用されるプロトコルとプロシージャを定義します。このプロファイルは、データコールを受けダイヤルアップインターネットアクセスサーバや他のダイヤルアップサービスに接続するために携帯電話やモデムを利用することをカバーします。 |
LAN アクセスポイント | RFCOMM を通した PPP を使った LAN アクセスを定義します。 |
ジェネリックオブジェクトのやりとり | オブジェクト交換能力を必要とする利用モデルを提供するアプリケーションに使用されるプロトコルとプロシージャを定義します。 |
オブジェクトプッシュ | オブジェクトプッシュ利用モデルを提供するアプリケーションで使用されるプロトコルやプロシージャの要求を定義します。このプロファイルは、ジェネリックオブジェクト交換プロファイルの利用が、アプリケーションに必要とされるプロトコルの要求する相互運用性を定義できるようにします。 |
- コードレス Telephony
- Intercom
- ヘッドセット
- ファックス
- ファイル転送
- 同期
Bluetooth システムは Bluetooth 同期プロファイルをサポートしませんが、シリアルポートプロファイルを使った Bluetooth による HotSync は実装されている、ということに注意して下さい。また、ネットワーク HotSync 操作は PPP を利用することにも注意して下さい。
Bluetooth システムは、あたかもシリアルケーブルで接続されているかのように、Bluetooth 利用可能な電話をダイヤルして音声コールをコントロールすることができます。それは AT モデムコマンドの利用であり、コードレス電話プロファイルの利用ではありません。
利用のシナリオ
Bluetooth が使える Palm ハンドヘルドは、様々なリモートBluetoothデバイスと通信することができます。Bluetooth システムは、以下の利用シナリオをサポートするために Bluetooth 仕様で定義されたプロファイルを使用します。
表 6.2 様々な利用シナリオで要求されるプロファイル
要求されるプロファイル | ||||||||
---|---|---|---|---|---|---|---|---|
フィーチャー | ハンドヘルドの接続対象 | ジェネリックアクセス | サービス探索 | シリアルポート | ダイヤルアップネットワーク | LAN アクセス | ジェネリックオブジェクトのやりとり | オブジェクトプッシュ |
EmailとWebクリッピング | 携帯電話 | × | × | × | × | |||
アクセス ポイント |
× | × | × | × | ||||
デスクトップ コンピュータ |
× | × | × | × | ||||
HotSync | 携帯電話 | × | × | × | × | |||
アクセス ポイント |
× | × | × | × | ||||
デスクトップ コンピュータ |
× | × | × | |||||
SMSとモバイル ハンドセット 管理 |
携帯電話 | × | × | × | ||||
ビーム | 多くの デバイス |
× | × | × | × | × |
認証と暗号化
Bluetooth システムは、OS レベルでの認証および暗号化キーの生成・利用・保管を扱います。
Bluetooth システムは権限をサポートしません。標準的なネットワーク環境と同様に、認証を通ったアクセスは個々のアプリケーションに任されます。
Bluetooth システムはセキュリティモード1と2をサポートします。つまり、「非セキュア」と「サービスレベル強制セキュリティ」です。セキュリティモード3—「リンクレベル強制セキュリティ」—は Bluetooth システムではサポートされません。
デバイス探索
Bluetoothデバイスのシステムにおいて、アドホックなネットワークがデバイス間で確立されます。「問い合わせ」プロシージャは、範囲内にある Bluetooth デバイスを探索するのに使用されます。仕様により2つの問い合わせモード「通常」と「限定」が定義されています。通常モードは、Bluetooth システムによってサポートされていますが、連続的にまたは特定の条件に関係なく探索可能になっているデバイスを探索する必要があるデバイスで使用されます。一方、限定モードは、限定された期間・一時的な条件・特定のイベントのもとで検索可能なデバイスを探索する必要があるデバイスで使用されます。Bluetooth システムは限定問い合わせモードをサポートしません。
Piconet サポート
Piconet を生成可能な場合は 2 つの主要なシナリオがあります。また、Bluetoothシステムは両方ともサポートします。
- マスタが問い合わせを実行し、デバイスの数を確認して、各デバイスとのコンタクトを行ないます。別の形は、マスタが後で追加のスレーブを探すための問い合わせを行ないます。ゲームに参加しようとする各 Palm デバイスとの接続をマスタが確立する場合に、これはゲームサーバにとっては有用です。
- マスタがページスキャンモードでデバイスがそれに接続しているとき、マスタ/スレーブ切り替えが行なわれます。LAN アクセスプロファイルは、マルチポイント LAN アクセスデバイスのためにこのアプローチを利用します。Bluetooth システムはマスタ/スレーブのネゴシエーションを自動的に行ないます。
Bluetooth システムは、新しいリンクが確立されたときに存在する接続をホールドモードにします。上記の最初のシナリオでは、各接続のホールド時間は、piconet に参加することをユーザが選択したデバイスの一覧に基づいて決定されます。Bluetooth システムは、一覧の各デバイスに対して以下の手順を行ないます。
- デバイスへの ACL 接続を確立する
- piconet に参加するデバイスの総数の関数の時間だけ、デバイスをホールドモードにする
- スレーブがホールドモードに入るのを許可するために、セットされた時間を延ばす
全ての接続が確立したあと、各スレーブのホールドタイマは期限切れになり、piconet が操作できるようになります。
無線電源管理
Palm ハンドヘルドの拡張バッテリの保ちは、多くのPalm ハンドヘルド製造者によって重要な競争力のある利点だとみなされています。Bluetooth システムは、Bluetooth の電源効率モード(ホールド/パーク/スニフ)とBluetooth無線チップセットに実装された内部電源管理機能によって、電池の保ちを節約することができます。
アプリケーションは無線をスニフ/パーク/スタンバイモードにはしません。かわりに、電源管理は Bluetooth システムの制御下にあります。piconet に参加しているとき、Bluetooth システムは定義済みの電源節約モードに入るために他の piconet メンバからの要求をhonorします。
Bluetooth スリープおよび起動のスケジュール管理をサポートする Palm OS デバイスもあります。これにより、デバイスが一定期間だけ外からの接続試行によって起動するように設定することができます。
sysFtrBtSupportsScheduledWakeupフィーチャを確認することで、デバイスがスリープおよび起動のスケジュール管理をサポートするかどうか判断することができます。以下の FtrGet() コールを使用します。
err = FtrGet(sysFtrCreator, sysFtrBtSupportsScheduledWakeup, &value);
もし Bluetooth のスリープおよび起動のスケジュール管理が利用できるなら、value パラメータはゼロ以外であり、戻されるエラーはゼロ(エラー無し)になります。