TNB Library
クラス | 公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
CBluetoothDevice クラス

Bluetooth(CE) デバイス管理. [詳解]

#include <TnbCeBluetooth.h>

+ CBluetoothDevice の継承関係図

クラス

struct  TVersion
 Bluetooth(CE) デバイスのバージョン管理 [詳解]
 

公開型

enum  EMode { ACTIVE , HOLD , SNIFF , PARK }
 ACL モード [詳解]
 

公開メンバ関数

bool Authenticate (void) const
 [処理] 認証. [詳解]
 
 CBluetoothDevice (BT_HANDLE btHandle)
 コンストラクタ. [詳解]
 
 CBluetoothDevice (const BT_ADDR &btAddr=0)
 コンストラクタ. [詳解]
 
 CBluetoothDevice (const CBluetoothDevice &other)
 コピーコンストラクタ. [詳解]
 
BT_HANDLE CreateAclConnection (void)
 [処理] データ通信用パケットオープン. [詳解]
 
BT_HANDLE CreateScoConnection (void)
 [処理] 音声用パケットオープン. [詳解]
 
bool EnterHoldMode (WORD &_interval, WORD hold_mode_max, WORD hold_mode_min)
 [設定] ホールドモード開始. [詳解]
 
bool EnterParkMode (WORD &_interval, WORD beacon_max, WORD beacon_min)
 [設定] パークモード開始. [詳解]
 
bool EnterSniffMode (WORD &_interval, WORD sniff_mode_max, WORD sniff_mode_min, WORD sniff_attempt, WORD sniff_timeout)
 [設定] スニフモード開始. [詳解]
 
bool ExitParkMode (void)
 [設定] パークモード終了 [詳解]
 
bool ExitSniffMode (void)
 [設定] スニフモード終了 [詳解]
 
const BT_ADDRGetAddress (void) const
 [取得] アドレス取得. [詳解]
 
CStr GetAddressString (void) const
 [取得] アドレス文字列取得. [詳解]
 
bool GetClass (CBluetoothClass &_class) const
 [取得] デバイスクラス取得. [詳解]
 
bool GetClassEx (CBluetoothClass &_class)
 [取得] デバイスクラス取得. [詳解]
 
bool GetCurrentMode (EMode &_mode) const
 [取得] .ACLモード取得. [詳解]
 
bool GetLinkKey (CBluetoothLinkKey &_key) const
 [取得] LINKキー取得. [詳解]
 
CStr GetName (void) const
 [取得] デバイス名取得. [詳解]
 
bool GetServicesList (CWorkMemT< WORD > &_list, size_t baseListLength, const WORD *pBaseList) const
 [取得] サービス一覧取得. [詳解]
 
bool GetVersion (TVersion &_version)
 [取得] バージョン取得. [詳解]
 
bool HasService (CBluetoothServiceAttribute &_attr, WORD uuid16) const
 [確認] サービス確認. [詳解]
 
bool HasService (CWorkMem &_raw, WORD uuid16) const
 [確認] サービス確認. [詳解]
 
bool HasService (WORD uuid16) const
 [確認] サービス確認. [詳解]
 
bool IsExist (void) const
 [確認] 存在確認. [詳解]
 
bool IsValid (void) const
 [確認] 有効確認. [詳解]
 
 operator const BT_ADDR & (void) const
 [取得] アドレス取得. [詳解]
 
CBluetoothDeviceoperator= (const CBluetoothDevice &other)
 コピーオペレータ. [詳解]
 
bool PairRequest (LPCTSTR lpszPin)
 [処理] ペアリクエスト. [詳解]
 
bool RefusePinRequest (void)
 [処理] PIN リクエスト辞退. [詳解]
 
bool RevokeLinkKey (void)
 [破棄] LINKキー破棄. [詳解]
 
bool RevokePin (void)
 [破棄] PINコード破棄. [詳解]
 
bool SetAddressString (LPCTSTR lpszAddress)
 [設定] アドレス文字列設定. [詳解]
 
bool SetEncryption (bool isEnable)
 [設定] 暗号設定. [詳解]
 
bool SetLinkKey (const CBluetoothLinkKey &key)
 [設定] LINKキー設定. [詳解]
 
bool SetPin (LPCTSTR lpszPin)
 [設定] PIN コード設定. [詳解]
 

静的公開メンバ関数

static bool CloseConnection (BT_HANDLE handle)
 [処理] コネクションクローズ. [詳解]
 
static bool GetBasebandConnections (CWorkMemT< BASEBAND_CONNECTION > &_connections)
 [取得] ベースバンド接続一覧取得. [詳解]
 
static CStr ServiceToString (WORD serviceUuid16)
 [取得] サービス名取得. [詳解]
 

限定公開変数類

BT_ADDR m_btAddr
 アドレス [詳解]
 

詳解

Bluetooth(CE) デバイス管理.

一つのアドレスを管理.
そのアドレスのデバイスのサービスなど取得可能。
覚え書き
一部のメソッドは CreateScoConnection() などで、 ベースバンド接続していないと、失敗します( エラーで ERROR_NOT_FOUND が返る)。
必要ファイル
TnbCeBluetooth.h
日付
09/10/01 新規作成
10/01/07 PINコードの解釈を改善。

TnbCeBluetooth.h1534 行目に定義があります。

列挙型メンバ詳解

◆ EMode

enum EMode

ACL モード

列挙値
ACTIVE 

アクティブモード.

HOLD 

ホールドモード.

覚え書き
リンクを中断させる。ピコネット内の同期は維持される。
SNIFF 

スニフモード.

覚え書き
スレーブ特有。スニフ同期(定義した一定間隔)でパケットの送受信が可能。
PARK 

パークモード.

覚え書き
スレーブ特有の省電力モード。マスタからのパケットは受信可能。送信不可能。

TnbCeBluetooth.h1722 行目に定義があります。

構築子と解体子

◆ CBluetoothDevice() [1/3]

CBluetoothDevice ( const BT_ADDR btAddr = 0)

コンストラクタ.

引数
btAddrBluetoothアドレス.

TnbCeBluetooth.h1543 行目に定義があります。

◆ CBluetoothDevice() [2/3]

CBluetoothDevice ( BT_HANDLE  btHandle)

コンストラクタ.

引数
btHandleBluetoothハンドル.

TnbCeBluetooth.h1551 行目に定義があります。

◆ CBluetoothDevice() [3/3]

CBluetoothDevice ( const CBluetoothDevice other)

コピーコンストラクタ.

引数
otherコピー元.

TnbCeBluetooth.h1563 行目に定義があります。

関数詳解

◆ Authenticate()

bool Authenticate ( void  ) const

[処理] 認証.

戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1673 行目に定義があります。

◆ CloseConnection()

static bool CloseConnection ( BT_HANDLE  handle)
static

[処理] コネクションクローズ.

引数
handleハンドル。
戻り値
true成功.
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h2063 行目に定義があります。

◆ CreateAclConnection()

BT_HANDLE CreateAclConnection ( void  )

[処理] データ通信用パケットオープン.

ACL(Asynchronous Connectionless) 接続します。

覚え書き
ACL の特徴
  • マスタと複数のスレーブの 1vs多 の通信
  • 速度を保障しない
  • パケットの再送をサポート
  • データ通信に利用
戻り値
NULL以外成功。 使用後、 CloseConnection() で切断じてください。
NULL失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1711 行目に定義があります。

◆ CreateScoConnection()

BT_HANDLE CreateScoConnection ( void  )

[処理] 音声用パケットオープン.

SCO(Synchronous Connection Oriented) 接続します。

覚え書き
SCO の特徴
  • マスタと一つのスレーブの 1vs1 の通信
  • 通信速度を保障。
  • パケットの再送はサポートしない
  • リアルタイム性あり
戻り値
NULL以外成功。 使用後、 CloseConnection() で切断してください。
NULL失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1690 行目に定義があります。

◆ EnterHoldMode()

bool EnterHoldMode ( WORD &  _interval,
WORD  hold_mode_max,
WORD  hold_mode_min 
)

[設定] ホールドモード開始.

覚え書き
ACL 接続していないとエラーになります。
引数
[out]_intervalBaseband slots.
[in]hold_mode_maxThe maximum acceptable number of Baseband slots to be in Hold Mode.
[in]hold_mode_minMinimum acceptable number of Baseband slots to be in Hold Mode.
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1755 行目に定義があります。

◆ EnterParkMode()

bool EnterParkMode ( WORD &  _interval,
WORD  beacon_max,
WORD  beacon_min 
)

[設定] パークモード開始.

覚え書き
ACL 接続していないとエラーになります。
引数
[out]_intervalBaseband slots.
[in]beacon_maxThe maximum acceptable number of Baseband slots between consecutive beacons.
[in]beacon_minThe minimum acceptable number of Baseband slots between consecutive beacons.
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1769 行目に定義があります。

◆ EnterSniffMode()

bool EnterSniffMode ( WORD &  _interval,
WORD  sniff_mode_max,
WORD  sniff_mode_min,
WORD  sniff_attempt,
WORD  sniff_timeout 
)

[設定] スニフモード開始.

覚え書き
ACL 接続していないとエラーになります。
引数
[out]_intervalBaseband slots.
[in]sniff_mode_maxThe maximum acceptable number of Baseband slots between each sniff period. The time length is equal to N * 0.625 msec, or 1 Baseband slot. The valid range for N is 0x0001 to 0xFFFF. The valid time range is 0.625 msec to 40.9 seconds.
[in]sniff_mode_minThe minimum acceptable number of Baseband slots between each sniff period. The time length is equal to N * 0.625 msec, or 1 Baseband slot. The valid range for N is 0x0001 to 0xFFFF. The valid time range is 0.625 msec to 40.9 seconds.
[in]sniff_attemptThe number of Baseband receive slots for sniff attempt. The length is equal to (2 * N ?1) * 0.625 msec. The valid range for N is 0x0001 to 0x7FFF. The valid time range is 0.625 msec to 40.9 seconds.
[in]sniff_timeoutnumber of Baseband receive slots for sniff timeout. If N is greater than 0, the length is equal to (2 * N ?1) * 0.625 msec. If N is equal to 0, then the length is equal to 0 msec. The valid range for N is 0x0000 to 0x7FFF. The valid time range is 0 msec to 40.9 seconds.
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1785 行目に定義があります。

◆ ExitParkMode()

bool ExitParkMode ( void  )

[設定] パークモード終了

戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1795 行目に定義があります。

◆ ExitSniffMode()

bool ExitSniffMode ( void  )

[設定] スニフモード終了

戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1805 行目に定義があります。

◆ GetAddress()

const BT_ADDR & GetAddress ( void  ) const
inherited

[取得] アドレス取得.

戻り値
アドレス.

TnbCeBluetooth.h1079 行目に定義があります。

◆ GetAddressString()

CStr GetAddressString ( void  ) const
inherited

[取得] アドレス文字列取得.

保持しているアドレスを xx:xx:xx:xx:xx:xx と言う文字列にします。

戻り値
アドレス文字列.

TnbCeBluetooth.h1089 行目に定義があります。

◆ GetBasebandConnections()

static bool GetBasebandConnections ( CWorkMemT< BASEBAND_CONNECTION > &  _connections)
static

[取得] ベースバンド接続一覧取得.

引数
[out]_connectionsベースバンド接続一覧が格納されます。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます

TnbCeBluetooth.h2077 行目に定義があります。

◆ GetClass()

bool GetClass ( CBluetoothClass _class) const

[取得] デバイスクラス取得.

覚え書き
baseband 接続されていない場合、失敗します。
引数
[out]_class
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1624 行目に定義があります。

◆ GetClassEx()

bool GetClassEx ( CBluetoothClass _class)

[取得] デバイスクラス取得.

覚え書き
baseband 接続されていない場合、一度接続します。
引数
[out]_class
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1640 行目に定義があります。

◆ GetCurrentMode()

bool GetCurrentMode ( EMode _mode) const

[取得] .ACLモード取得.

覚え書き
ACL 接続していないとエラーになります。
引数
[out]_mode取得したモードが格納されます。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1737 行目に定義があります。

◆ GetLinkKey()

bool GetLinkKey ( CBluetoothLinkKey _key) const

[取得] LINKキー取得.

覚え書き
This function retrieves the link key for the Bluetooth device.
引数
[out]_key取得した LINKキー が格納されます。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1817 行目に定義があります。

◆ GetName()

CStr GetName ( void  ) const

[取得] デバイス名取得.

戻り値
Empty文字列失敗。詳細は、 ::GetLastError() で得られます。
上記以外成功。文字列はデバイス名。

TnbCeBluetooth.h1657 行目に定義があります。

◆ GetServicesList()

bool GetServicesList ( CWorkMemT< WORD > &  _list,
size_t  baseListLength,
const WORD *  pBaseList 
) const

[取得] サービス一覧取得.

ベースとなるサービスリスト(ベースリスト)に含まれるサービス中で、 デバイスが持っているサービスを一覧します。

覚え書き
一つのサービス検索に最悪ページタイムアウト時間かかります。 (ページタイムアウト時間が5秒になっていると、5つ検索するのに、最悪 25秒かかる可能性があります。) 必要に応じてページタイムアウト時間の設定を行ってください。
CBluetoothLocal local;
;
local.SetPageTimeoutMs(1000); // 1秒にする
const static WORD awUuidList[] = {
PublicBrowseGroupServiceClassID_UUID16, // (0x1002)
;
};
}
CWorkMemT<WORD> ww;
bool r = dev.GetServicesList(ww, countof(awUuidList), awUuidList);
local.SetPageTimeoutMs(5000); // 5秒にする
CBluetoothDevice(const BT_ADDR &btAddr=0)
コンストラクタ.
引数
[out]_listサービス UUID16 一覧が格納されます。
[in]baseListLengthベースリストの要素数。
[in]pBaseListベースリスト。
戻り値
true取得成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h2036 行目に定義があります。

◆ GetVersion()

bool GetVersion ( TVersion _version)

[取得] バージョン取得.

引数
[out]_versionバージョン情報が格納されます。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1594 行目に定義があります。

◆ HasService() [1/3]

bool HasService ( CBluetoothServiceAttribute _attr,
WORD  uuid16 
) const

[確認] サービス確認.

デバイスが、指定のサービスを持っているか確認できます。

覚え書き
最悪ページタイムアウト時間かかります。 必要に応じてページタイムアウト時間の設定を行ってください。
引数
[out]_attrプロファイルサービスの属性情報が格納されます。
[in]uuid16確認するサービスの UUID16 。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます (サービスがない場合、 WSASERVICE_NOT_FOUND が返ります)。

TnbCeBluetooth.h1951 行目に定義があります。

◆ HasService() [2/3]

bool HasService ( CWorkMem _raw,
WORD  uuid16 
) const

[確認] サービス確認.

デバイスが、指定のサービスを持っているか確認できます。

覚え書き
最悪ページタイムアウト時間かかります。 必要に応じてページタイムアウト時間の設定を行ってください。
引数
[out]_rawプロファイルサービスの生データが格納されます。
[in]uuid16確認するサービスの UUID16 。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます (サービスがない場合、 WSASERVICE_NOT_FOUND が返ります)。

TnbCeBluetooth.h1930 行目に定義があります。

◆ HasService() [3/3]

bool HasService ( WORD  uuid16) const

[確認] サービス確認.

デバイスが、指定のサービスを持っているか確認できます。

引数
[in]uuid16確認するサービスの UUID16 。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます (サービスがない場合、 WSASERVICE_NOT_FOUND が返ります)。

TnbCeBluetooth.h1970 行目に定義があります。

◆ IsExist()

bool IsExist ( void  ) const

[確認] 存在確認.

覚え書き
GetName() を使って確認しています。
戻り値
true存在。
falseいない。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1612 行目に定義があります。

◆ IsValid()

bool IsValid ( void  ) const
inherited

[確認] 有効確認.

覚え書き
保持しているアドレスが 0 なら、無効とします。
戻り値
true有効.
false無効.

TnbCeBluetooth.h1061 行目に定義があります。

◆ operator const BT_ADDR &()

operator const BT_ADDR & ( void  ) const
inherited

[取得] アドレス取得.

戻り値
アドレス.

TnbCeBluetooth.h1070 行目に定義があります。

◆ operator=()

CBluetoothDevice & operator= ( const CBluetoothDevice other)

コピーオペレータ.

引数
otherコピー元.
戻り値
自分の参照.

TnbCeBluetooth.h1573 行目に定義があります。

◆ PairRequest()

bool PairRequest ( LPCTSTR  lpszPin)

[処理] ペアリクエスト.

覚え書き
This function requests the personal identification number (PIN) for a Bluetooth device.
引数
lpszPinPINコード. NULL の場合、 ¥0 1byte をコードとします。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1841 行目に定義があります。

◆ RefusePinRequest()

bool RefusePinRequest ( void  )

[処理] PIN リクエスト辞退.

戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1828 行目に定義があります。

◆ RevokeLinkKey()

bool RevokeLinkKey ( void  )

[破棄] LINKキー破棄.

覚え書き
This function removes the link key for a Bluetooth device.
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1859 行目に定義があります。

◆ RevokePin()

bool RevokePin ( void  )

[破棄] PINコード破棄.

覚え書き
This function revokes the personal identification number (PIN) for the Bluetooth device.
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1870 行目に定義があります。

◆ ServiceToString()

static CStr ServiceToString ( WORD  serviceUuid16)
static

[取得] サービス名取得.

引数
serviceUuid16サービス UUID16 。 SerialPortServiceClassID_UUID16 など、 〜ServiceClassID_UUID16 のシンボルを指定。
戻り値
サービス名.

TnbCeBluetooth.h2098 行目に定義があります。

◆ SetAddressString()

bool SetAddressString ( LPCTSTR  lpszAddress)
inherited

[設定] アドレス文字列設定.

アドレスを xx:xx:xx:xx:xx:xx と言う文字列で指定します。

引数
lpszAddressアドレス
戻り値
true成功。
false失敗。

TnbCeBluetooth.h1110 行目に定義があります。

◆ SetEncryption()

bool SetEncryption ( bool  isEnable)

[設定] 暗号設定.

覚え書き
This function requests that the encryption mode on an existing connection is switched with the peer device.
引数
isEnabletrue 暗号モードで通信します。 false なら暗号化しません。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1882 行目に定義があります。

◆ SetLinkKey()

bool SetLinkKey ( const CBluetoothLinkKey key)

[設定] LINKキー設定.

覚え書き
This function stores the link key for the Bluetooth device.
引数
keyLINKキー.
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1894 行目に定義があります。

◆ SetPin()

bool SetPin ( LPCTSTR  lpszPin)

[設定] PIN コード設定.

覚え書き
This function stores the personal identification number (PIN) for the Bluetooth device.
引数
lpszPinPINコード. NULL の場合、 ¥0 1byte をコードとします。
戻り値
true成功。
false失敗。詳細は、 ::GetLastError() で得られます。

TnbCeBluetooth.h1907 行目に定義があります。

メンバ詳解

◆ m_btAddr

BT_ADDR m_btAddr
protectedinherited

アドレス

TnbCeBluetooth.h1138 行目に定義があります。