日別アーカイブ: 2007年12月24日

Windows Bluetooth API (2)

取りあえずパスキー無しの Bluetooth デバイスをプログラムで
ペアリング&追加/接続する方法がわかりました。

WiiリモコンやバランスWiiボードは電源を入れるたびに毎回 sync
しなければなりませんが、これでいちいち
「Bluetooth デバイスの追加ウィザード」を使わなくてよくなります。

(1) 新規デバイスの列挙
 BluetoothFindFirstDevice()
 BluetoothFindNextDevice()
 BluetoothFindDeviceClose()

(2) 対応デバイスかどうか名前で判別
 BLUETOOTH_DEVICE_INFO の szName を参照。

 例えば Wiiコントローラなら
  ”Nintendo RVL-CNT-01″ (Wiiリモコン)
  ”Nintendo RVL-WBC-01″ (バランスWiiボード)

(3) 接続済みかどうか判定
 BLUETOOTH_DEVICE_INFO の fConnected が 0 以外ならすでに
 接続中なので無視。

(4) サービスの追加

#include  // GUID の定義
BluetoothSetServiceState( hradio, &devinfo,
	&HumanInterfaceDeviceServiceClass_UUID,
	BLUETOOTH_SERVICE_ENABLE );

ただし既に一度追加したことがあり、サービスが Enable のままの
デバイスは (4) に失敗します。
BluetoothRemoveDevice() を使って (4) の直前に登録情報を削除して
おくと確実に接続できるようです。

Wiiリモコン・バランスWiiボード 側は、(1) の新規デバイスの検索中
に赤い sync ボタンを押しておきます。

関連リンク
Windows Bluetooth API
バランスWiiボード をPCで使う wiibalancepc v0.07