TNB Library
TnbCeBluetoothWatcher.h
[詳解]
1#pragma once
11#ifndef _WIN32_WCE
12 #error TnbCeBluetoothWatcher.h is only supported on Windows CE platforms.
13#endif // _WIN32_WCE
14
15
16
18#include <bt_api.h>
19
20
21
22//TNB Library
23namespace TNB{
24
25
26
36{
37public:
38
47 struct IListener
48 {
50 virtual ~IListener(void) {}
51
102 virtual void OnBluetoothEvent(DWORD eventId, LPCVOID lpEventData) = 0;
103 };
104
105
106 //------------------------------------
107
108
110 CBluetoothWatcher(void) : m_handle(NULL)
111 {
112 }
113
116 {
117 Stop();
118 }
119
125 {
126 m_inner.m_pListener = P ;
127 }
128
134 bool IsStarted(void) const
135 {
136 return m_handle != NULL;
137 }
138
144 bool Start(void)
145 {
146 Stop();
147 m_queue.SetListener(&m_inner);
148 if ( m_queue.Start(10, true, _T("CBluetoothWatcher")) )
149 {
150 DWORD f = BTE_CLASS_CONNECTIONS | BTE_CLASS_PAIRING | BTE_CLASS_DEVICE | BTE_CLASS_STACK | BTE_CLASS_AVDTP;
151 m_handle = ::RequestBluetoothNotifications(f, m_queue.GetSafeHandle());
152 if ( m_handle != NULL )
153 {
154 return true;
155 }
156 }
157 Stop();
158 return false;
159 }
160
165 void Stop(void)
166 {
167 if ( m_handle != NULL )
168 {
169 ::StopBluetoothNotifications(m_handle);
170 m_handle = NULL;
171 }
172 m_queue.Stop();
173 }
174
175private:
177 class CInner : public CMsgQueueWatcherT<BTEVENT>::IListener
178 {
179 public:
180 CInner(void) : m_pListener(NULL)
181 {
182 }
183 virtual void OnMsgQueueWatcherEvent(const BTEVENT& ev, size_t length, bool isAlert)
184 {
185 if ( m_pListener != NULL )
186 {
187 m_pListener->OnBluetoothEvent(ev.dwEventId, ev.baEventData);
188 }
189 }
190 CBluetoothWatcher::IListener* m_pListener;
191 };
192 CInner m_inner;
194 HANDLE m_handle;
195};
196
197
198
199}; //TNB
200
201
CE 用メッセージキュー関係のヘッダ
Bluetooth(CE) 監視.
void SetListener(IListener *P)
[登録] リスナー登録.
bool IsStarted(void) const
[確認] スタート確認.
void Stop(void)
[設定] 監視ストップ.
CBluetoothWatcher(void)
コンストラクタ
bool Start(void)
[設定] 監視スタート.
~CBluetoothWatcher(void)
デストラクタ
メッセージキュー監視 (CE専用).
void SetListener(IListener *P)
[設定] リスナー設定.
HANDLE GetSafeHandle(void) const
[取得] ハンドル取得.
bool Start(size_t maxMessagesCount=0, bool isRead=true, LPCTSTR lpszThreadName=NULL)
[設定] 監視開始.
bool Stop(void)
[設定] 監視停止.
TNB Library
Definition: TnbDoxyTitle.txt:2
Bluetooth(CE) 監視のリスナー.
virtual ~IListener(void)
デストラクタ
virtual void OnBluetoothEvent(DWORD eventId, LPCVOID lpEventData)=0
[通知] イベント通知.