williamr@2
|
1 |
// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
|
williamr@2
|
2 |
// All rights reserved.
|
williamr@2
|
3 |
// This component and the accompanying materials are made available
|
williamr@2
|
4 |
// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
|
williamr@2
|
5 |
// which accompanies this distribution, and is available
|
williamr@2
|
6 |
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
|
williamr@2
|
7 |
//
|
williamr@2
|
8 |
// Initial Contributors:
|
williamr@2
|
9 |
// Nokia Corporation - initial contribution.
|
williamr@2
|
10 |
//
|
williamr@2
|
11 |
// Contributors:
|
williamr@2
|
12 |
//
|
williamr@2
|
13 |
// Description:
|
williamr@2
|
14 |
//
|
williamr@2
|
15 |
|
williamr@2
|
16 |
#ifndef BTDEVICE_H
|
williamr@2
|
17 |
#define BTDEVICE_H
|
williamr@2
|
18 |
|
williamr@2
|
19 |
#include <e32std.h>
|
williamr@2
|
20 |
#include <e32base.h>
|
williamr@2
|
21 |
#include <s32mem.h>
|
williamr@2
|
22 |
|
williamr@2
|
23 |
#include <bluetooth/hci/hciopcodes.h>
|
williamr@2
|
24 |
#include <bluetooth/hci/hciconsts.h>
|
williamr@2
|
25 |
|
williamr@2
|
26 |
/** The maximum length of a bluetooth device name, as stored in CBTDevice.
|
williamr@2
|
27 |
@publishedAll
|
williamr@2
|
28 |
@released
|
williamr@2
|
29 |
**/
|
williamr@2
|
30 |
static const TInt KMaxBluetoothNameLen = KHCILocalDeviceNameMaxLength;
|
williamr@2
|
31 |
|
williamr@2
|
32 |
/** The maximum length of the user-assinged friendly name for a bluetooth device, as stored in CBTDevice.
|
williamr@2
|
33 |
@publishedAll
|
williamr@2
|
34 |
@released
|
williamr@2
|
35 |
**/
|
williamr@2
|
36 |
static const TInt KMaxFriendlyNameLen = 100;
|
williamr@2
|
37 |
|
williamr@2
|
38 |
/** Length of a bluetooth device name. Retained for binary compatibility.
|
williamr@2
|
39 |
@internalComponent
|
williamr@2
|
40 |
@deprecated
|
williamr@2
|
41 |
**/
|
williamr@2
|
42 |
static const TInt KMaxBCBluetoothNameLen = 256;
|
williamr@2
|
43 |
|
williamr@2
|
44 |
//forward declarations
|
williamr@2
|
45 |
class TBTDeviceClass;
|
williamr@2
|
46 |
class CBTDevice;
|
williamr@2
|
47 |
class TBTServiceSecurityPerDevice;
|
williamr@2
|
48 |
|
williamr@2
|
49 |
/** A typedef'ed array of CBTDevice objects.
|
williamr@2
|
50 |
@publishedAll
|
williamr@2
|
51 |
@released
|
williamr@2
|
52 |
**/
|
williamr@2
|
53 |
typedef CArrayPtrFlat<CBTDevice> CBTDeviceArray;
|
williamr@2
|
54 |
|
williamr@2
|
55 |
/** A typedef'ed array of TBTServiceSecurityPerDevice objects.
|
williamr@2
|
56 |
@publishedAll
|
williamr@2
|
57 |
@released
|
williamr@2
|
58 |
**/
|
williamr@2
|
59 |
typedef RArray<TBTServiceSecurityPerDevice> RBTSecurityArray;
|
williamr@2
|
60 |
|
williamr@2
|
61 |
/** Wide descriptor of correct length to hold a bluetooth device name.
|
williamr@2
|
62 |
@publishedAll
|
williamr@2
|
63 |
@released
|
williamr@2
|
64 |
**/
|
williamr@2
|
65 |
typedef TBuf<KMaxBCBluetoothNameLen> TBTDeviceName;
|
williamr@2
|
66 |
|
williamr@2
|
67 |
/** Narrow descriptor of correct length to hold a bluetooth device name.
|
williamr@2
|
68 |
|
williamr@2
|
69 |
@publishedAll
|
williamr@2
|
70 |
@released
|
williamr@2
|
71 |
**/
|
williamr@2
|
72 |
typedef TBuf8<KMaxBluetoothNameLen> TBTDeviceName8;
|
williamr@2
|
73 |
|
williamr@2
|
74 |
/** Utility class to convert between a wide TBTDeviceName and a narrow TBTDeviceName8.
|
williamr@2
|
75 |
@publishedAll
|
williamr@2
|
76 |
@released
|
williamr@2
|
77 |
**/
|
williamr@2
|
78 |
class BTDeviceNameConverter
|
williamr@2
|
79 |
{
|
williamr@2
|
80 |
public:
|
williamr@2
|
81 |
IMPORT_C static TBTDeviceName ToUnicodeL(const TBTDeviceName8& aName);
|
williamr@2
|
82 |
IMPORT_C static TBTDeviceName8 ToUTF8L(const TBTDeviceName& aName);
|
williamr@2
|
83 |
};
|
williamr@2
|
84 |
|
williamr@2
|
85 |
/** Defines the granularity of the arrays used in CBTDevice.
|
williamr@2
|
86 |
@internalComponent
|
williamr@2
|
87 |
@released
|
williamr@2
|
88 |
**/
|
williamr@2
|
89 |
const TInt KSecurityGranularity=1;
|
williamr@2
|
90 |
|
williamr@2
|
91 |
/** Cleanup utility for CBTDeviceArrays.
|
williamr@2
|
92 |
|
williamr@2
|
93 |
Creates a TCleanupItem that calls ResetAndDestroy and then deletes the array.
|
williamr@2
|
94 |
|
williamr@2
|
95 |
@publishedAll
|
williamr@2
|
96 |
@released
|
williamr@2
|
97 |
*/
|
williamr@2
|
98 |
class BTDeviceArrayCleanupStack
|
williamr@2
|
99 |
|
williamr@2
|
100 |
{
|
williamr@2
|
101 |
public:
|
williamr@2
|
102 |
IMPORT_C static void PushL(CBTDeviceArray* aBTDeviceArray);
|
williamr@2
|
103 |
private:
|
williamr@2
|
104 |
static void ResetAndDestroy(TAny* aBTDeviceArray);
|
williamr@2
|
105 |
};
|
williamr@2
|
106 |
|
williamr@2
|
107 |
/** Enum used to describe the Bluetooth major service classes.
|
williamr@2
|
108 |
|
williamr@2
|
109 |
See the bluetooth specification for more details.
|
williamr@2
|
110 |
|
williamr@2
|
111 |
@publishedAll
|
williamr@2
|
112 |
@released
|
williamr@2
|
113 |
**/
|
williamr@2
|
114 |
enum TBTMajorServiceClass
|
williamr@2
|
115 |
{ //23 13 <- bit number
|
williamr@2
|
116 |
/** Limited discoverable mode **/
|
williamr@2
|
117 |
EMajorServiceLimitedDiscoverableMode = 0x01, //00000000001
|
williamr@2
|
118 |
/** Positioning **/
|
williamr@2
|
119 |
EMajorServicePositioning = 0x08, //00000001000
|
williamr@2
|
120 |
/** Networking **/
|
williamr@2
|
121 |
EMajorServiceNetworking = 0x10, //00000010000
|
williamr@2
|
122 |
/** Rendering **/
|
williamr@2
|
123 |
EMajorServiceRendering = 0x20, //00000100000
|
williamr@2
|
124 |
/** Capturing **/
|
williamr@2
|
125 |
EMajorServiceCapturing = 0x40, //00001000000
|
williamr@2
|
126 |
/** Object transfer **/
|
williamr@2
|
127 |
EMajorServiceObjectTransfer = 0x80, //00010000000
|
williamr@2
|
128 |
/** Audio **/
|
williamr@2
|
129 |
EMajorServiceAudio = 0x100, //00100000000
|
williamr@2
|
130 |
/** Telephony **/
|
williamr@2
|
131 |
EMajorServiceTelephony = 0x200, //01000000000
|
williamr@2
|
132 |
/** Information **/
|
williamr@2
|
133 |
EMajorServiceInformation = 0x400, //10000000000
|
williamr@2
|
134 |
/**
|
williamr@2
|
135 |
* Old name kept for SC.
|
williamr@2
|
136 |
* @deprecated
|
williamr@2
|
137 |
* @see EMajorServiceAudio
|
williamr@2
|
138 |
*/
|
williamr@2
|
139 |
EMajorServiceAudioService = 0x100 //00100000000
|
williamr@2
|
140 |
};
|
williamr@2
|
141 |
|
williamr@2
|
142 |
/** Enum used to describe the Bluetooth major device classes.
|
williamr@2
|
143 |
|
williamr@2
|
144 |
See the bluetooth specification for more details.
|
williamr@2
|
145 |
|
williamr@2
|
146 |
@publishedAll
|
williamr@2
|
147 |
@released
|
williamr@2
|
148 |
**/
|
williamr@2
|
149 |
enum TBTMajorDeviceClass
|
williamr@2
|
150 |
{ //12 8 <- bit number
|
williamr@2
|
151 |
/** Miscellaneous device **/
|
williamr@2
|
152 |
EMajorDeviceMisc = 0x0, //00000
|
williamr@2
|
153 |
/** Computer device **/
|
williamr@2
|
154 |
EMajorDeviceComputer = 0x1, //00001
|
williamr@2
|
155 |
/** Phone device **/
|
williamr@2
|
156 |
EMajorDevicePhone = 0x2, //00010
|
williamr@2
|
157 |
/** LAN access point device **/
|
williamr@2
|
158 |
EMajorDeviceLanAccessPoint = 0x3, //00011
|
williamr@2
|
159 |
/** Audio-video device **/
|
williamr@2
|
160 |
EMajorDeviceAV = 0x4, //00100
|
williamr@2
|
161 |
/** Peripheral device **/
|
williamr@2
|
162 |
EMajorDevicePeripheral = 0x5, //00101
|
williamr@2
|
163 |
/** Imaging device **/
|
williamr@2
|
164 |
EMajorDeviceImaging = 0x6, //00110
|
williamr@2
|
165 |
/** Wearable device **/
|
williamr@2
|
166 |
EMajorDeviceWearable = 0x7, //00111
|
williamr@2
|
167 |
/** Toy device **/
|
williamr@2
|
168 |
EMajorDeviceToy = 0x8, //01000
|
williamr@2
|
169 |
/** Unclassified device **/
|
williamr@2
|
170 |
EMajorDeviceUnclassified = 0x1F, //11111
|
williamr@2
|
171 |
/**
|
williamr@2
|
172 |
* Old name kept for SC.
|
williamr@2
|
173 |
* @deprecated
|
williamr@2
|
174 |
* @see EMajorDeviceAV
|
williamr@2
|
175 |
*/
|
williamr@2
|
176 |
EMajorDeviceAudioDevice = 0x4, //00100
|
williamr@2
|
177 |
/**
|
williamr@2
|
178 |
* Old name kept for SC.
|
williamr@2
|
179 |
* @deprecated
|
williamr@2
|
180 |
* @see EMajorDeviceUnclassified
|
williamr@2
|
181 |
*/
|
williamr@2
|
182 |
EMajorDeviceDeviceUnclassified = 0x1F //11111
|
williamr@2
|
183 |
};
|
williamr@2
|
184 |
|
williamr@2
|
185 |
/** Enum used to describe the Bluetooth minor device classes relating to the "Computer" major device class.
|
williamr@2
|
186 |
|
williamr@2
|
187 |
See the bluetooth specification for more details.
|
williamr@2
|
188 |
|
williamr@2
|
189 |
@publishedAll
|
williamr@2
|
190 |
@released
|
williamr@2
|
191 |
**/
|
williamr@2
|
192 |
enum TBTMinorDeviceClassComputer
|
williamr@2
|
193 |
{ //7 2 <- bit number
|
williamr@2
|
194 |
/** Unclassified computer device **/
|
williamr@2
|
195 |
EMinorDeviceComputerUnclassified = 0x0, //000000
|
williamr@2
|
196 |
/** Desktop computer device **/
|
williamr@2
|
197 |
EMinorDeviceComputerDesktop = 0x1, //000001
|
williamr@2
|
198 |
/** Server computer device **/
|
williamr@2
|
199 |
EMinorDeviceComputerServer = 0x2, //000010
|
williamr@2
|
200 |
/** Laptop computer device **/
|
williamr@2
|
201 |
EMinorDeviceComputerLaptop = 0x3, //000011
|
williamr@2
|
202 |
/** Handheld computer device **/
|
williamr@2
|
203 |
EMinorDeviceComputerHandheld = 0x4, //000100
|
williamr@2
|
204 |
/** Palm computer device **/
|
williamr@2
|
205 |
EMinorDeviceComputerPalmSize = 0x5, //000101
|
williamr@2
|
206 |
/** Wearable computer device **/
|
williamr@2
|
207 |
EMinorDeviceComputerWearable = 0x6 //000110
|
williamr@2
|
208 |
};
|
williamr@2
|
209 |
|
williamr@2
|
210 |
/** Enum used to describe the Bluetooth minor device classes relating to the "phone" major device class.
|
williamr@2
|
211 |
|
williamr@2
|
212 |
See the bluetooth specification for more details.
|
williamr@2
|
213 |
|
williamr@2
|
214 |
@publishedAll
|
williamr@2
|
215 |
@released
|
williamr@2
|
216 |
**/
|
williamr@2
|
217 |
enum TBTMinorDeviceClassPhone
|
williamr@2
|
218 |
{ //7 2 <- bit number
|
williamr@2
|
219 |
/** Unclassified phone device **/
|
williamr@2
|
220 |
EMinorDevicePhoneUnclassified = 0x0, //000000
|
williamr@2
|
221 |
/** Cellular phone device **/
|
williamr@2
|
222 |
EMinorDevicePhoneCellular = 0x1, //000001
|
williamr@2
|
223 |
/** Cordless phone device **/
|
williamr@2
|
224 |
EMinorDevicePhoneCordless = 0x2, //000010
|
williamr@2
|
225 |
/** Smart phone device **/
|
williamr@2
|
226 |
EMinorDevicePhoneSmartPhone = 0x3, //000011
|
williamr@2
|
227 |
/** Wired modem phone device **/
|
williamr@2
|
228 |
EMinorDevicePhoneWiredModem = 0x4, //000100
|
williamr@2
|
229 |
/** ISDN phone device **/
|
williamr@2
|
230 |
EMinorDevicePhoneCommonISDNAccess = 0x5 //000101
|
williamr@2
|
231 |
};
|
williamr@2
|
232 |
|
williamr@2
|
233 |
/** Enum used to describe the Bluetooth minor device classes relating to the "LAN" major device class.
|
williamr@2
|
234 |
|
williamr@2
|
235 |
See the bluetooth specification for more details.
|
williamr@2
|
236 |
@publishedAll
|
williamr@2
|
237 |
@released
|
williamr@2
|
238 |
**/
|
williamr@2
|
239 |
enum TBTMinorDeviceClassLAN
|
williamr@2
|
240 |
{ //7 2 <- bit number
|
williamr@2
|
241 |
/** LAN is currently 0% utilitized **/
|
williamr@2
|
242 |
EMinorDeviceLANFullyAvailable = 0x0, //000000
|
williamr@2
|
243 |
/** LAN is currently 1-17% utilitized **/
|
williamr@2
|
244 |
EMinorDeviceLANServiceOne = 0x8, //001000
|
williamr@2
|
245 |
/** LAN is currently 17-33% utilitized **/
|
williamr@2
|
246 |
EMinorDeviceLANServiceTwo = 0x10, //010000
|
williamr@2
|
247 |
/** LAN is currently 33-50% utilitized **/
|
williamr@2
|
248 |
EMinorDeviceLANServiceThree = 0x18, //011000
|
williamr@2
|
249 |
/** LAN is currently 50-67% utilitized **/
|
williamr@2
|
250 |
EMinorDeviceLANServiceFour = 0x20, //100000
|
williamr@2
|
251 |
/** LAN is currently 67-83% utilitized **/
|
williamr@2
|
252 |
EMinorDeviceLANServiceFive = 0x28, //101000
|
williamr@2
|
253 |
/** LAN is currently 83-99% utilitized **/
|
williamr@2
|
254 |
EMinorDeviceLANServiceSix = 0x30, //110000
|
williamr@2
|
255 |
/** LAN is currently 100% utilitized **/
|
williamr@2
|
256 |
EMinorDeviceLANNoService = 0x38 //111000
|
williamr@2
|
257 |
};
|
williamr@2
|
258 |
|
williamr@2
|
259 |
/** Enum used to describe the Bluetooth minor device classes relating to the "AV" major device class.
|
williamr@2
|
260 |
|
williamr@2
|
261 |
See the bluetooth specification for more details.
|
williamr@2
|
262 |
|
williamr@2
|
263 |
@publishedAll
|
williamr@2
|
264 |
@released
|
williamr@2
|
265 |
**/
|
williamr@2
|
266 |
enum TBTMinorDeviceClassAV
|
williamr@2
|
267 |
{ //7 2
|
williamr@2
|
268 |
/** Unclassified AV Device **/
|
williamr@2
|
269 |
EMinorDeviceAVUnclassified = 0x0, //000000
|
williamr@2
|
270 |
/** Headset AV Device **/
|
williamr@2
|
271 |
EMinorDeviceAVHeadset = 0x1, //000001
|
williamr@2
|
272 |
/** Handsfree AV Device **/
|
williamr@2
|
273 |
EMinorDeviceAVHandsfree = 0x2, //000010
|
williamr@2
|
274 |
/** Microphone AV Device **/
|
williamr@2
|
275 |
EMinorDeviceAVMicrophone = 0x4, //000100
|
williamr@2
|
276 |
/** Loudspeaker AV Device **/
|
williamr@2
|
277 |
EMinorDeviceAVLoudspeaker = 0x5, //000101
|
williamr@2
|
278 |
/** Headphone AV Device **/
|
williamr@2
|
279 |
EMinorDeviceAVHeadphones = 0x6, //000110
|
williamr@2
|
280 |
/** Portable audio AV Device **/
|
williamr@2
|
281 |
EMinorDeviceAVPortableAudio = 0x7, //000111
|
williamr@2
|
282 |
/** Car audio AV Device **/
|
williamr@2
|
283 |
EMinorDeviceAVCarAudio = 0x8, //001000
|
williamr@2
|
284 |
/** Set top box AV Device **/
|
williamr@2
|
285 |
EMinorDeviceAVSetTopBox = 0x9, //001001
|
williamr@2
|
286 |
/** Hifi audio AV Device **/
|
williamr@2
|
287 |
EMinorDeviceAVHiFiAudio = 0xA, //001010
|
williamr@2
|
288 |
/** VCR AV Device **/
|
williamr@2
|
289 |
EMinorDeviceAVVCR = 0xB, //001011
|
williamr@2
|
290 |
/** Video camera AV Device **/
|
williamr@2
|
291 |
EMinorDeviceAVVideoCamera = 0xC, //001100
|
williamr@2
|
292 |
/** Camcorder AV Device **/
|
williamr@2
|
293 |
EMinorDeviceAVCamcorder = 0xD, //001101
|
williamr@2
|
294 |
/** Video monitor AV Device **/
|
williamr@2
|
295 |
EMinorDeviceAVVideoMonitor = 0xE, //001110
|
williamr@2
|
296 |
/** Video display and loudspeaker AV Device **/
|
williamr@2
|
297 |
EMinorDeviceAVVideoDisplayAndLoudspeaker = 0xF, //001111
|
williamr@2
|
298 |
/** Video conferencing AV Device **/
|
williamr@2
|
299 |
EMinorDeviceAVVideoConferencing = 0x10, //010000
|
williamr@2
|
300 |
/** Gaming toy AV Device **/
|
williamr@2
|
301 |
EMinorDeviceAVGamingToy = 0x12 //010010
|
williamr@2
|
302 |
};
|
williamr@2
|
303 |
|
williamr@2
|
304 |
/** Enum used to describe the Bluetooth minor device classes relating to the "Peripheral" major device class.
|
williamr@2
|
305 |
|
williamr@2
|
306 |
See the bluetooth specification for more details.
|
williamr@2
|
307 |
@publishedAll
|
williamr@2
|
308 |
@released
|
williamr@2
|
309 |
**/
|
williamr@2
|
310 |
enum TBTMinorDeviceClassPeripheral
|
williamr@2
|
311 |
{ //7 2
|
williamr@2
|
312 |
/** Keyboard peripheral device.
|
williamr@2
|
313 |
|
williamr@2
|
314 |
Note that the keyboard bit can be independently
|
williamr@2
|
315 |
or'd with all other bits.
|
williamr@2
|
316 |
**/
|
williamr@2
|
317 |
EMinorDevicePeripheralKeyboard = 0x10, //010000
|
williamr@2
|
318 |
/** Pointer peripheral device.
|
williamr@2
|
319 |
|
williamr@2
|
320 |
Note that the pointer bit can be independently
|
williamr@2
|
321 |
or'd with all other bits.
|
williamr@2
|
322 |
**/
|
williamr@2
|
323 |
EMinorDevicePeripheralPointer = 0x20, //100000
|
williamr@2
|
324 |
//
|
williamr@2
|
325 |
// All other bits are mutually exclusive
|
williamr@2
|
326 |
//
|
williamr@2
|
327 |
/** Uncategorized peripheral device **/
|
williamr@2
|
328 |
EMinorDevicePeripheralUncategorized = 0x00, //000000
|
williamr@2
|
329 |
/** Joystick peripheral device **/
|
williamr@2
|
330 |
EMinorDevicePeripheralJoystick = 0x01, //000001
|
williamr@2
|
331 |
/** Gamepad peripheral device **/
|
williamr@2
|
332 |
EMinorDevicePeripheralGamepad = 0x02, //000010
|
williamr@2
|
333 |
/** Remote control peripheral device **/
|
williamr@2
|
334 |
EMinorDevicePeripheralRemoteControl = 0x03, //000011
|
williamr@2
|
335 |
/** Sensing peripheral device **/
|
williamr@2
|
336 |
EMinorDevicePeripheralSensingDevice = 0x04, //000100
|
williamr@2
|
337 |
/** Digitizer tablet peripheral device **/
|
williamr@2
|
338 |
EMinorDevicePeripheralDigitizerTablet = 0x05, //000101
|
williamr@2
|
339 |
/** Card reader peripheral device **/
|
williamr@2
|
340 |
EMinorDevicePeripheralCardReader = 0x06 //000110
|
williamr@2
|
341 |
};
|
williamr@2
|
342 |
|
williamr@2
|
343 |
/** Enum used to describe the Bluetooth minor device classes relating to the "Imaging" major device class.
|
williamr@2
|
344 |
|
williamr@2
|
345 |
See the bluetooth specification for more details.
|
williamr@2
|
346 |
@publishedAll
|
williamr@2
|
347 |
@released
|
williamr@2
|
348 |
|
williamr@2
|
349 |
**/
|
williamr@2
|
350 |
enum TBTMinorDeviceClassImaging
|
williamr@2
|
351 |
{ //7 2
|
williamr@2
|
352 |
/** Display imaging device **/
|
williamr@2
|
353 |
EMinorDeviceImagingDisplay = 0x04, //000100
|
williamr@2
|
354 |
/** Camera imaging device **/
|
williamr@2
|
355 |
EMinorDeviceImagingCamera = 0x08, //001000
|
williamr@2
|
356 |
/** Scanner imaging device **/
|
williamr@2
|
357 |
EMinorDeviceImagingScanner = 0x10, //010000
|
williamr@2
|
358 |
/** Printer imaging device **/
|
williamr@2
|
359 |
EMinorDeviceImagingPrinter = 0x20, //100000
|
williamr@2
|
360 |
};
|
williamr@2
|
361 |
|
williamr@2
|
362 |
/** Enum used to describe the Bluetooth minor device classes relating to the "Wearable" major device class.
|
williamr@2
|
363 |
|
williamr@2
|
364 |
See the bluetooth specification for more details.
|
williamr@2
|
365 |
@publishedAll
|
williamr@2
|
366 |
@released
|
williamr@2
|
367 |
|
williamr@2
|
368 |
**/
|
williamr@2
|
369 |
enum TBTMinorDeviceClassWearable
|
williamr@2
|
370 |
{ //7 2
|
williamr@2
|
371 |
/** Wrist watch wearable device **/
|
williamr@2
|
372 |
EMinorDeviceWearableWatch = 0x01, //000001
|
williamr@2
|
373 |
/** Pager wearable device **/
|
williamr@2
|
374 |
EMinorDeviceWearablePager = 0x02, //000010
|
williamr@2
|
375 |
/** Jacket wearable device **/
|
williamr@2
|
376 |
EMinorDeviceWearableJacket = 0x03, //000011
|
williamr@2
|
377 |
/** Helmet wearable device **/
|
williamr@2
|
378 |
EMinorDeviceWearableHelmet = 0x04, //000100
|
williamr@2
|
379 |
/** Glasses wearable device **/
|
williamr@2
|
380 |
EMinorDeviceWearableGlasses = 0x05, //000101
|
williamr@2
|
381 |
};
|
williamr@2
|
382 |
|
williamr@2
|
383 |
/** Enum used to describe the Bluetooth minor device classes relating to the "Toy" major device class.
|
williamr@2
|
384 |
|
williamr@2
|
385 |
See the bluetooth specification for more details.
|
williamr@2
|
386 |
@publishedAll
|
williamr@2
|
387 |
@released
|
williamr@2
|
388 |
|
williamr@2
|
389 |
**/
|
williamr@2
|
390 |
enum TBTMinorDeviceClassToy
|
williamr@2
|
391 |
{ //7 2
|
williamr@2
|
392 |
/** Robot toy device **/
|
williamr@2
|
393 |
EMinorDeviceToyRobot = 0x01, //000001
|
williamr@2
|
394 |
/** Vehicle toy device **/
|
williamr@2
|
395 |
EMinorDeviceToyVehicle = 0x02, //000010
|
williamr@2
|
396 |
/** Doll toy device **/
|
williamr@2
|
397 |
EMinorDeviceToyDoll = 0x03, //000011
|
williamr@2
|
398 |
/** Controller toy device **/
|
williamr@2
|
399 |
EMinorDeviceToyController = 0x04, //000100
|
williamr@2
|
400 |
/** Game toy device **/
|
williamr@2
|
401 |
EMinorDeviceToyGame = 0x05, //000101
|
williamr@2
|
402 |
};
|
williamr@2
|
403 |
|
williamr@2
|
404 |
|
williamr@2
|
405 |
/** Minor Device class headset.
|
williamr@2
|
406 |
@deprecated
|
williamr@2
|
407 |
@internalComponent
|
williamr@2
|
408 |
@see TBTMinorDeviceClassAV
|
williamr@2
|
409 |
**/
|
williamr@2
|
410 |
enum TBTMinorDeviceClassHeadset
|
williamr@2
|
411 |
{ //7 2
|
williamr@2
|
412 |
EHeadsetUnclassified = 0x0, //000000
|
williamr@2
|
413 |
EHeadsetProfile = 0x1, //000001
|
williamr@2
|
414 |
};
|
williamr@2
|
415 |
|
williamr@2
|
416 |
/** Encapsulation of device class definitions.
|
williamr@2
|
417 |
|
williamr@2
|
418 |
Contains a single TInt as member data and methods to extract the major, minor and service
|
williamr@2
|
419 |
class information from that TInt.
|
williamr@2
|
420 |
@publishedAll
|
williamr@2
|
421 |
@released
|
williamr@2
|
422 |
**/
|
williamr@2
|
423 |
NONSHARABLE_CLASS(TBTDeviceClass)
|
williamr@2
|
424 |
{
|
williamr@2
|
425 |
public:
|
williamr@2
|
426 |
IMPORT_C TBTDeviceClass();
|
williamr@2
|
427 |
IMPORT_C TBTDeviceClass(TUint32 aDeviceClass);
|
williamr@2
|
428 |
IMPORT_C TBTDeviceClass(TUint16 aMajorServiceClass, TUint8 aMajorDeviceClass,
|
williamr@2
|
429 |
TUint8 aMinorDeviceClass);
|
williamr@2
|
430 |
|
williamr@2
|
431 |
IMPORT_C TUint16 MajorServiceClass() const;
|
williamr@2
|
432 |
IMPORT_C TUint8 MajorDeviceClass() const;
|
williamr@2
|
433 |
IMPORT_C TUint8 MinorDeviceClass() const;
|
williamr@2
|
434 |
IMPORT_C TUint32 DeviceClass() const;
|
williamr@2
|
435 |
|
williamr@2
|
436 |
IMPORT_C TBool operator==(const TBTDeviceClass& aDeviceClass) const;
|
williamr@2
|
437 |
IMPORT_C TBTDeviceClass& operator=(const TBTDeviceClass& aDeviceClass);
|
williamr@2
|
438 |
|
williamr@2
|
439 |
IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
|
williamr@2
|
440 |
IMPORT_C void InternalizeL(RReadStream& aStream);
|
williamr@2
|
441 |
private:
|
williamr@2
|
442 |
static const TUint32 KStreamVersion = 0x00000001;
|
williamr@2
|
443 |
private:
|
williamr@2
|
444 |
TUint32 iDeviceClass;
|
williamr@2
|
445 |
|
williamr@2
|
446 |
// This data padding has been added to help prevent future binary compatibility breaks
|
williamr@2
|
447 |
// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
|
williamr@2
|
448 |
TUint32 iPadding1;
|
williamr@2
|
449 |
TUint32 iPadding2;
|
williamr@2
|
450 |
};
|
williamr@2
|
451 |
|
williamr@2
|
452 |
/** Class to store the security override parameters for a particular remote device.
|
williamr@2
|
453 |
|
williamr@2
|
454 |
@publishedAll
|
williamr@2
|
455 |
@released
|
williamr@2
|
456 |
*/
|
williamr@2
|
457 |
NONSHARABLE_CLASS(TBTDeviceSecurity)
|
williamr@2
|
458 |
{
|
williamr@2
|
459 |
public:
|
williamr@2
|
460 |
/** Enumeration to provide select MITM protection required. */
|
williamr@2
|
461 |
enum TMitmRequired
|
williamr@2
|
462 |
{
|
williamr@2
|
463 |
EMitmUnspecified, /*!< No specific MITM protection requirements */
|
williamr@2
|
464 |
EMitmRequired /*!< Require the link is MITM protected */
|
williamr@2
|
465 |
};
|
williamr@2
|
466 |
|
williamr@2
|
467 |
public:
|
williamr@2
|
468 |
IMPORT_C TBTDeviceSecurity();
|
williamr@2
|
469 |
IMPORT_C TBTDeviceSecurity(TUint8 aSecurity);
|
williamr@2
|
470 |
IMPORT_C TBTDeviceSecurity(TUint8 aSecurity, TUint aPasskeyMinLength);
|
williamr@2
|
471 |
IMPORT_C TBTDeviceSecurity(TBool aNoAuthenticate, TBool aNoAuthorise, TBool aEncrypt, TBool aBanned);
|
williamr@2
|
472 |
IMPORT_C TBTDeviceSecurity(TMitmRequired aMitmRequirements, TBool aNoAuthorise, TBool aEncrypt, TBool aBanned);
|
williamr@2
|
473 |
|
williamr@2
|
474 |
IMPORT_C void SetNoAuthenticate(TBool aDecision);
|
williamr@2
|
475 |
IMPORT_C void SetMitmRequirements(TMitmRequired aDecision);
|
williamr@2
|
476 |
IMPORT_C void SetNoAuthorise(TBool aDecision);
|
williamr@2
|
477 |
IMPORT_C void SetEncrypt(TBool aDecision);
|
williamr@2
|
478 |
IMPORT_C void SetBanned(TBool aDecision);
|
williamr@2
|
479 |
|
williamr@2
|
480 |
IMPORT_C TBool NoAuthenticate() const;
|
williamr@2
|
481 |
IMPORT_C TMitmRequired MitmRequirements() const;
|
williamr@2
|
482 |
IMPORT_C TBool NoAuthorise() const;
|
williamr@2
|
483 |
IMPORT_C TBool Encrypt() const;
|
williamr@2
|
484 |
IMPORT_C TBool Banned() const;
|
williamr@2
|
485 |
IMPORT_C TUint PasskeyMinLength() const;
|
williamr@2
|
486 |
|
williamr@2
|
487 |
|
williamr@2
|
488 |
IMPORT_C TUint8 SecurityValue() const;
|
williamr@2
|
489 |
IMPORT_C void SetSecurityValue(TUint8 aDeviceSecurity);
|
williamr@2
|
490 |
IMPORT_C TInt SetPasskeyMinLength(TUint aPasskeyMinLength);
|
williamr@2
|
491 |
|
williamr@2
|
492 |
|
williamr@2
|
493 |
IMPORT_C TBool operator==(const TBTDeviceSecurity& aDeviceSecurity) const;
|
williamr@2
|
494 |
IMPORT_C TBool operator!=(const TBTDeviceSecurity& aDeviceSecurity) const;
|
williamr@2
|
495 |
|
williamr@2
|
496 |
IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
|
williamr@2
|
497 |
IMPORT_C void InternalizeL(RReadStream& aStream);
|
williamr@2
|
498 |
|
williamr@2
|
499 |
public:
|
williamr@2
|
500 |
/** Enumeration to assist in parsing of security settings. */
|
williamr@2
|
501 |
enum TBTDeviceSecuritySettings
|
williamr@2
|
502 |
{
|
williamr@2
|
503 |
ENoAuthenticate = 0x01, /*!< Don't authenticate the link */
|
williamr@2
|
504 |
ENoAuthorise = 0x02, /*!< Don't authorise the connection */
|
williamr@2
|
505 |
EEncrypt = 0x04, /*!< Encrypt the link */
|
williamr@2
|
506 |
EBanned = 0x08, /*!< Don't connect to the device */
|
williamr@2
|
507 |
EMitmProtectionRequired = 0x10, /*!< Require the link is MITM protected */
|
williamr@2
|
508 |
};
|
williamr@2
|
509 |
|
williamr@2
|
510 |
private:
|
williamr@2
|
511 |
static const TUint32 KStreamVersion = 0x00000001;
|
williamr@2
|
512 |
|
williamr@2
|
513 |
private:
|
williamr@2
|
514 |
TUint8 iSecurity;
|
williamr@2
|
515 |
TUint iPasskeyMinLength;
|
williamr@2
|
516 |
|
williamr@2
|
517 |
// This data padding has been added to help prevent future binary compatibility breaks
|
williamr@2
|
518 |
// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
|
williamr@2
|
519 |
TUint32 iPadding1;
|
williamr@2
|
520 |
TUint32 iPadding2;
|
williamr@2
|
521 |
};
|
williamr@2
|
522 |
|
williamr@2
|
523 |
/** Class to tie a service uid with a device security setting.
|
williamr@2
|
524 |
|
williamr@2
|
525 |
This allows us to have service-specific security settings for a device.
|
williamr@2
|
526 |
|
williamr@2
|
527 |
@publishedAll
|
williamr@2
|
528 |
@released
|
williamr@2
|
529 |
*/
|
williamr@2
|
530 |
NONSHARABLE_CLASS(TBTServiceSecurityPerDevice)
|
williamr@2
|
531 |
{
|
williamr@2
|
532 |
public:
|
williamr@2
|
533 |
IMPORT_C TBTServiceSecurityPerDevice();
|
williamr@2
|
534 |
IMPORT_C TBTServiceSecurityPerDevice(const TBTDevAddr& aDevice, const TBTDeviceSecurity& aSecuritySettings);
|
williamr@2
|
535 |
IMPORT_C TBTServiceSecurityPerDevice(const TBTServiceSecurityPerDevice&);
|
williamr@2
|
536 |
|
williamr@2
|
537 |
IMPORT_C void SetDeviceSecurity(const TBTDeviceSecurity& aSecuritySettings);
|
williamr@2
|
538 |
IMPORT_C void SetAddress(const TBTDevAddr& aAddress);
|
williamr@2
|
539 |
|
williamr@2
|
540 |
IMPORT_C const TBTDeviceSecurity& DeviceSecurity() const;
|
williamr@2
|
541 |
IMPORT_C const TBTDevAddr& DeviceAddress() const;
|
williamr@2
|
542 |
|
williamr@2
|
543 |
IMPORT_C void operator=(const TBTServiceSecurityPerDevice& aServiceSecurityPerDevice);
|
williamr@2
|
544 |
IMPORT_C TBool operator==(const TBTServiceSecurityPerDevice& aServiceSecurityPerDevice) const;
|
williamr@2
|
545 |
IMPORT_C TBool operator!=(const TBTServiceSecurityPerDevice& aServiceSecurityPerDevice) const;
|
williamr@2
|
546 |
|
williamr@2
|
547 |
IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
|
williamr@2
|
548 |
IMPORT_C void InternalizeL(RReadStream& aStream);
|
williamr@2
|
549 |
private:
|
williamr@2
|
550 |
static const TUint32 KStreamVersion = 0x00000001;
|
williamr@2
|
551 |
private:
|
williamr@2
|
552 |
TBTDevAddr iDeviceAddress; /*!< the address of the device for the overriding security **/
|
williamr@2
|
553 |
TBTDeviceSecurity iDeviceSecurity; /*!< the overriding security */
|
williamr@2
|
554 |
|
williamr@2
|
555 |
// This data padding has been added to help prevent future binary compatibility breaks
|
williamr@2
|
556 |
// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
|
williamr@2
|
557 |
TUint32 iPadding1;
|
williamr@2
|
558 |
TUint32 iPadding2;
|
williamr@2
|
559 |
};
|
williamr@2
|
560 |
|
williamr@2
|
561 |
/** For Symbian use only
|
williamr@2
|
562 |
@internalAll
|
williamr@2
|
563 |
*/
|
williamr@2
|
564 |
NONSHARABLE_CLASS(TBTBasebandParameters)
|
williamr@2
|
565 |
{
|
williamr@2
|
566 |
public:
|
williamr@2
|
567 |
IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
|
williamr@2
|
568 |
IMPORT_C void InternalizeL(RReadStream& aStream);
|
williamr@2
|
569 |
|
williamr@2
|
570 |
TUint8 iPageScanRepetitionMode; /*!< Page Scan repetition mode of remote device ( valid if > 0 ) */
|
williamr@2
|
571 |
TUint8 iPageScanPeriodMode; /*!< Page scan period mode of remote device */
|
williamr@2
|
572 |
TUint8 iPageScanMode; /*!< Page scan mode of remote device ( valid if > 0 ) */
|
williamr@2
|
573 |
TUint16 iClockOffset; /*!< clock off set of remote device ( valid if > 0 ) */
|
williamr@2
|
574 |
|
williamr@2
|
575 |
private:
|
williamr@2
|
576 |
static const TUint32 KStreamVersion = 0x00000001;
|
williamr@2
|
577 |
};
|
williamr@2
|
578 |
|
williamr@2
|
579 |
|
williamr@2
|
580 |
|
williamr@2
|
581 |
/** Stores parameters for a nameless device.
|
williamr@2
|
582 |
|
williamr@2
|
583 |
A class which stores useful parameters concerning a remote device
|
williamr@2
|
584 |
But *not* including names
|
williamr@2
|
585 |
@see CBTDevice
|
williamr@2
|
586 |
@publishedAll
|
williamr@2
|
587 |
@released
|
williamr@2
|
588 |
*/
|
williamr@2
|
589 |
NONSHARABLE_CLASS(TBTNamelessDevice)
|
williamr@2
|
590 |
{
|
williamr@2
|
591 |
friend class CBTDevice;
|
williamr@2
|
592 |
public:
|
williamr@2
|
593 |
|
williamr@2
|
594 |
IMPORT_C TBTNamelessDevice();
|
williamr@2
|
595 |
IMPORT_C const TBTDevAddr& Address() const;
|
williamr@2
|
596 |
IMPORT_C const TBTDeviceClass& DeviceClass() const;
|
williamr@2
|
597 |
IMPORT_C const TBTLinkKey& LinkKey() const;
|
williamr@2
|
598 |
IMPORT_C TBTLinkKeyType LinkKeyType() const;
|
williamr@2
|
599 |
IMPORT_C TUint8 PageScanRepMode() const;
|
williamr@2
|
600 |
IMPORT_C TUint8 PageScanMode() const;
|
williamr@2
|
601 |
IMPORT_C TUint8 PageScanPeriodMode() const;
|
williamr@2
|
602 |
IMPORT_C TUint16 ClockOffset() const;
|
williamr@2
|
603 |
IMPORT_C const TTime& Seen() const;
|
williamr@2
|
604 |
IMPORT_C const TTime& Used() const;
|
williamr@2
|
605 |
IMPORT_C const TBTDeviceSecurity& GlobalSecurity() const;
|
williamr@2
|
606 |
IMPORT_C void SetAddress(const TBTDevAddr& aBDAddr);
|
williamr@2
|
607 |
IMPORT_C void SetDeviceClass(TBTDeviceClass aDeviceClass);
|
williamr@2
|
608 |
IMPORT_C void SetLinkKey(const TBTLinkKey& aLinkKey);
|
williamr@2
|
609 |
IMPORT_C void SetLinkKey(const TBTLinkKey& aLinkKey, TBTLinkKeyType aLinkKeyType);
|
williamr@2
|
610 |
IMPORT_C void SetPageScanRepMode(TUint8 aPageScanRepMode);
|
williamr@2
|
611 |
IMPORT_C void SetPageScanPeriodMode(TUint8 aPageScanPeriodMode);
|
williamr@2
|
612 |
IMPORT_C void SetPageScanMode(TUint8 aPageScanMode);
|
williamr@2
|
613 |
IMPORT_C void SetClockOffset(TUint16 aClockOffSet);
|
williamr@2
|
614 |
IMPORT_C void SetGlobalSecurity(const TBTDeviceSecurity& aSetting);
|
williamr@2
|
615 |
IMPORT_C void SetUsed(const TTime& aDateTime);
|
williamr@2
|
616 |
IMPORT_C void SetSeen(const TTime& aDateTime);
|
williamr@2
|
617 |
IMPORT_C TBool IsValidAddress() const;
|
williamr@2
|
618 |
IMPORT_C TBool IsValidDeviceClass() const;
|
williamr@2
|
619 |
IMPORT_C TBool IsValidLinkKey() const;
|
williamr@2
|
620 |
IMPORT_C TBool IsValidGlobalSecurity() const;
|
williamr@2
|
621 |
IMPORT_C TBool IsValidPageScanRepMode() const;
|
williamr@2
|
622 |
IMPORT_C TBool IsValidPageScanMode() const;
|
williamr@2
|
623 |
IMPORT_C TBool IsValidPageScanPeriodMode() const;
|
williamr@2
|
624 |
IMPORT_C TBool IsValidClockOffset() const;
|
williamr@2
|
625 |
IMPORT_C TBool IsValidUsed() const;
|
williamr@2
|
626 |
IMPORT_C TBool IsValidSeen() const;
|
williamr@2
|
627 |
IMPORT_C void DeleteLinkKey();
|
williamr@2
|
628 |
IMPORT_C void Update(const TBTNamelessDevice& aDevice);
|
williamr@2
|
629 |
IMPORT_C TBTNamelessDevice& operator=(const TBTNamelessDevice& aDevice);
|
williamr@2
|
630 |
IMPORT_C TBool operator==(const TBTNamelessDevice& aDevice) const;
|
williamr@2
|
631 |
IMPORT_C TBool operator!=(const TBTNamelessDevice& aDevice) const;
|
williamr@2
|
632 |
IMPORT_C TUint CompareTo(const TBTNamelessDevice& aDevice) const;
|
williamr@2
|
633 |
IMPORT_C TBool IsPaired() const;
|
williamr@2
|
634 |
IMPORT_C void SetPaired(TBool aPaired);
|
williamr@2
|
635 |
IMPORT_C void SetPaired(TBTLinkKeyType aLinkKeyType);
|
williamr@2
|
636 |
IMPORT_C TBool IsValidPaired() const;
|
williamr@2
|
637 |
IMPORT_C const TBTPinCode& PassKey() const;
|
williamr@2
|
638 |
IMPORT_C void SetPassKey(const TBTPinCode& aPassKey);
|
williamr@2
|
639 |
IMPORT_C TBool IsValidPassKey() const;
|
williamr@2
|
640 |
IMPORT_C TUint PassKeyLength() const;
|
williamr@2
|
641 |
IMPORT_C TBool IsValidUiCookie() const;
|
williamr@2
|
642 |
IMPORT_C void SetUiCookie(TUint32 aUiCookie);
|
williamr@2
|
643 |
IMPORT_C TUint32 UiCookie() const;
|
williamr@2
|
644 |
|
williamr@2
|
645 |
/** Bitfield of TBTNamelessDevice attributes
|
williamr@2
|
646 |
@publishedPartner
|
williamr@2
|
647 |
@released
|
williamr@2
|
648 |
*/
|
williamr@2
|
649 |
enum TBTDeviceSet
|
williamr@2
|
650 |
{
|
williamr@2
|
651 |
EAddress = 0x000001, /*!< Device address */
|
williamr@2
|
652 |
EDeviceClass = 0x000002, /*!< Device class */
|
williamr@2
|
653 |
ELinkKey = 0x000004, /*!< Link key */
|
williamr@2
|
654 |
EGlobalSecurity = 0x000008, /*!< Global security settings */
|
williamr@2
|
655 |
EPageScanRepMode = 0x000010, /*!< Page scan repition mode */
|
williamr@2
|
656 |
EPageScanMode = 0x000020, /*!< Page scan mode */
|
williamr@2
|
657 |
EPageScanPeriodMode = 0x000040, /*!< Page scan period */
|
williamr@2
|
658 |
EClockOffset = 0x000080, /*!< Clock offset */
|
williamr@2
|
659 |
EUsed = 0x000100, /*!< Last used */
|
williamr@2
|
660 |
ESeen = 0x000200, /*!< Last seen */
|
williamr@2
|
661 |
EIsPaired = 0x000400, /*!< Is paired */
|
williamr@2
|
662 |
EPassKey = 0x000800, /*!< PassKey */
|
williamr@2
|
663 |
EUiCookie = 0x001000, /*!< User interface specific cookie */
|
williamr@2
|
664 |
|
williamr@2
|
665 |
EAllNamelessProperties = 0x00ffffff, /*!< All nameless properties set */
|
williamr@2
|
666 |
// Two highest nibbles used by CBTDevice
|
williamr@2
|
667 |
};
|
williamr@2
|
668 |
|
williamr@2
|
669 |
private:
|
williamr@2
|
670 |
TUint32 iSetMask; /*!< Bit mask indicating the data members that have been set */
|
williamr@2
|
671 |
TBTDevAddr iBDAddr; /*!< The BT address of the remote device */
|
williamr@2
|
672 |
TBTDeviceClass iDeviceClass; /*!< The class(es) of the remote device */
|
williamr@2
|
673 |
TBTLinkKey iLinkKey; /*!< The link key */
|
williamr@2
|
674 |
TBTDeviceSecurity iGlobalSecurity;/*!< The overall security criteria for all services which this device may wish to use */
|
williamr@2
|
675 |
TBTBasebandParameters iBasebandParams;/*!< The baseband parameters */
|
williamr@2
|
676 |
TTime iUsed; /*!< when last connect from/to */
|
williamr@2
|
677 |
TTime iSeen; /*!< when last seen in inquiry */
|
williamr@2
|
678 |
TBool iPaired; /*!< Whether this device is paired */
|
williamr@2
|
679 |
TBTPinCode iPassKey; /*!< PassKey */
|
williamr@2
|
680 |
TBTLinkKeyType iLinkKeyType; /*!< Link Key Type */
|
williamr@2
|
681 |
TUint32 iUiCookie; /*!< The cookie attached to this device by the UI */
|
williamr@2
|
682 |
|
williamr@2
|
683 |
// This data padding has been added to help prevent future binary compatibility breaks
|
williamr@2
|
684 |
// iPadding1 has been used for iLinkKeyType
|
williamr@2
|
685 |
// iPadding2 has been used for iUiCookie
|
williamr@2
|
686 |
TUint32 iPadding3;
|
williamr@2
|
687 |
TUint32 iPadding4;
|
williamr@2
|
688 |
};
|
williamr@2
|
689 |
|
williamr@2
|
690 |
|
williamr@2
|
691 |
/** Encapsulates all information that must be known about a device.
|
williamr@2
|
692 |
|
williamr@2
|
693 |
Stores useful information concerning a remote device, including names
|
williamr@2
|
694 |
|
williamr@2
|
695 |
@publishedAll
|
williamr@2
|
696 |
@released
|
williamr@2
|
697 |
*/
|
williamr@2
|
698 |
NONSHARABLE_CLASS(CBTDevice) : public CBase
|
williamr@2
|
699 |
{
|
williamr@2
|
700 |
friend class TBTNamelessDevice;
|
williamr@2
|
701 |
public:
|
williamr@2
|
702 |
|
williamr@2
|
703 |
IMPORT_C static CBTDevice* NewL(const TBTDevAddr& aBDAddr);
|
williamr@2
|
704 |
IMPORT_C static CBTDevice* NewLC(const TBTDevAddr& aBDAddr);
|
williamr@2
|
705 |
IMPORT_C static CBTDevice* NewL(const TBTNamelessDevice& aNamelessDevice);
|
williamr@2
|
706 |
IMPORT_C static CBTDevice* NewLC(const TBTNamelessDevice& aNamelessDevice);
|
williamr@2
|
707 |
IMPORT_C static CBTDevice* NewL();
|
williamr@2
|
708 |
IMPORT_C static CBTDevice* NewLC();
|
williamr@2
|
709 |
IMPORT_C ~CBTDevice();
|
williamr@2
|
710 |
IMPORT_C CBTDevice* CopyL() const;
|
williamr@2
|
711 |
IMPORT_C void UpdateL(const CBTDevice& aDevice);
|
williamr@2
|
712 |
IMPORT_C void AssignL(CBTDevice& aDevice);
|
williamr@2
|
713 |
IMPORT_C const TDesC8& DeviceName() const;
|
williamr@2
|
714 |
IMPORT_C const TDesC& FriendlyName() const;
|
williamr@2
|
715 |
IMPORT_C void SetDeviceNameL(const TDesC8& aName);
|
williamr@2
|
716 |
IMPORT_C void SetFriendlyNameL(const TDesC& aName);
|
williamr@2
|
717 |
IMPORT_C TBool IsValidDeviceName() const;
|
williamr@2
|
718 |
IMPORT_C TBool IsValidFriendlyName() const;
|
williamr@2
|
719 |
IMPORT_C TBool operator==(const CBTDevice& aDevice) const;
|
williamr@2
|
720 |
IMPORT_C TBool operator!=(const CBTDevice& aDevice) const;
|
williamr@2
|
721 |
IMPORT_C TUint CompareTo(const CBTDevice& aDevice) const;
|
williamr@2
|
722 |
IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
|
williamr@2
|
723 |
IMPORT_C void InternalizeL(RReadStream& aStream);
|
williamr@2
|
724 |
IMPORT_C const TBTDevAddr& BDAddr() const;
|
williamr@2
|
725 |
IMPORT_C const TBTLinkKey& LinkKey() const;
|
williamr@2
|
726 |
IMPORT_C TBTLinkKeyType LinkKeyType() const;
|
williamr@2
|
727 |
IMPORT_C TBTDeviceClass DeviceClass() const;
|
williamr@2
|
728 |
IMPORT_C const TBTDeviceSecurity GlobalSecurity() const;
|
williamr@2
|
729 |
IMPORT_C void SetDeviceAddress(const TBTDevAddr& aBDAddr);
|
williamr@2
|
730 |
IMPORT_C void SetDeviceClass(TBTDeviceClass aDeviceClass);
|
williamr@2
|
731 |
IMPORT_C void SetLinkKey(const TBTLinkKey& aLinkKey);
|
williamr@2
|
732 |
IMPORT_C void SetLinkKey(const TBTLinkKey& aLinkKey, TBTLinkKeyType aLinkKeyType);
|
williamr@2
|
733 |
IMPORT_C void SetGlobalSecurity(const TBTDeviceSecurity& aSetting);
|
williamr@2
|
734 |
IMPORT_C void DeleteLinkKey();
|
williamr@2
|
735 |
IMPORT_C TBool IsValidBDAddr() const;
|
williamr@2
|
736 |
IMPORT_C TBool IsValidDeviceClass() const;
|
williamr@2
|
737 |
IMPORT_C TBool IsValidLinkKey() const;
|
williamr@2
|
738 |
IMPORT_C TBool IsValidGlobalSecurity() const;
|
williamr@2
|
739 |
IMPORT_C const TTime& Seen() const;
|
williamr@2
|
740 |
IMPORT_C const TTime& Used() const;
|
williamr@2
|
741 |
IMPORT_C void SetUsed(const TTime& aDateTime);
|
williamr@2
|
742 |
IMPORT_C void SetSeen(const TTime& aDateTime);
|
williamr@2
|
743 |
IMPORT_C TBool IsValidUsed() const;
|
williamr@2
|
744 |
IMPORT_C TBool IsValidSeen() const;
|
williamr@2
|
745 |
IMPORT_C TBTNamelessDevice& AsNamelessDevice();
|
williamr@2
|
746 |
IMPORT_C const TBTNamelessDevice& AsNamelessDevice() const;
|
williamr@2
|
747 |
IMPORT_C TBool IsPaired() const;
|
williamr@2
|
748 |
IMPORT_C void SetPaired(TBool aPaired);
|
williamr@2
|
749 |
IMPORT_C void SetPaired(TBTLinkKeyType aLinkKeyType);
|
williamr@2
|
750 |
IMPORT_C TBool IsValidPaired() const;
|
williamr@2
|
751 |
IMPORT_C const TBTPinCode& PassKey() const;
|
williamr@2
|
752 |
IMPORT_C void SetPassKey(const TBTPinCode& aPassKey);
|
williamr@2
|
753 |
IMPORT_C TBool IsValidPassKey() const;
|
williamr@2
|
754 |
IMPORT_C TUint PassKeyLength() const;
|
williamr@2
|
755 |
IMPORT_C TBool IsValidUiCookie() const;
|
williamr@2
|
756 |
IMPORT_C void SetUiCookie(TUint32 aUiCookie);
|
williamr@2
|
757 |
IMPORT_C TUint32 UiCookie() const;
|
williamr@2
|
758 |
|
williamr@2
|
759 |
private:
|
williamr@2
|
760 |
CBTDevice();
|
williamr@2
|
761 |
void ConstructL();
|
williamr@2
|
762 |
void ConstructL(const TBTDevAddr& aAddr);
|
williamr@2
|
763 |
void ConstructL(const TBTNamelessDevice& aNamelessDevice);
|
williamr@2
|
764 |
void CommonConstructL();
|
williamr@2
|
765 |
|
williamr@2
|
766 |
public:
|
williamr@2
|
767 |
/** Describes the similarities between two devices. */
|
williamr@2
|
768 |
enum TBTDeviceNameSelector // not very encapsulated - we extend the enum of TBTNamelessDevice
|
williamr@2
|
769 |
{
|
williamr@2
|
770 |
/** Device name. */
|
williamr@2
|
771 |
EDeviceName = 0x40000000,
|
williamr@2
|
772 |
/** Friendly name. */
|
williamr@2
|
773 |
EFriendlyName = 0x80000000,
|
williamr@2
|
774 |
/**
|
williamr@2
|
775 |
All name properties
|
williamr@2
|
776 |
*/
|
williamr@2
|
777 |
EAllNameProperties = 0xff000000,
|
williamr@2
|
778 |
/** Last enum. This is NOT a name property */
|
williamr@2
|
779 |
ELast = KMaxTUint,
|
williamr@2
|
780 |
// All but two highest nibbles used by TBTNamelessDevice
|
williamr@2
|
781 |
};
|
williamr@2
|
782 |
private:
|
williamr@2
|
783 |
static const TUint32 KStreamVersion = 0x00000001;
|
williamr@2
|
784 |
private:
|
williamr@2
|
785 |
HBufC8* iDeviceName;
|
williamr@2
|
786 |
HBufC* iFriendlyName;
|
williamr@2
|
787 |
TBTNamelessDevice iDevice;
|
williamr@2
|
788 |
};
|
williamr@2
|
789 |
|
williamr@2
|
790 |
|
williamr@2
|
791 |
/**Number of bytes in an AFH Host Channel Classification.
|
williamr@2
|
792 |
|
williamr@2
|
793 |
Size and Length of the TBTAFHHostChannelClassification Descriptor
|
williamr@2
|
794 |
|
williamr@2
|
795 |
@see TBTAFHHostChannelClassification
|
williamr@2
|
796 |
@publishedAll
|
williamr@2
|
797 |
@released
|
williamr@2
|
798 |
*/
|
williamr@2
|
799 |
const TUint8 KHCIAFHHostChannelClassificationSize=10;
|
williamr@2
|
800 |
|
williamr@2
|
801 |
|
williamr@2
|
802 |
/**Required number of unknown channels in an AFH Host Channel Classification.
|
williamr@2
|
803 |
|
williamr@2
|
804 |
That is least number of channels in the 79 channel set that must be left
|
williamr@2
|
805 |
NOT set to bad. In AFH host channel classification a channel may labelled
|
williamr@2
|
806 |
'bad' (implies do not use) or 'unknown' (implies that it is up to the
|
williamr@2
|
807 |
controller to decide if should be used). An attempt to create a
|
williamr@2
|
808 |
TBTAFHHostChannelClassification with more than KAFHMinUnknownChannels
|
williamr@2
|
809 |
set to 'bad' will result in a KErrUnderflow error being returned.
|
williamr@2
|
810 |
|
williamr@2
|
811 |
@see TBTAFHHostChannelClassification
|
williamr@2
|
812 |
@publishedAll
|
williamr@2
|
813 |
@released
|
williamr@2
|
814 |
*/
|
williamr@2
|
815 |
const TUint8 KAFHMinUnknownChannels=20;
|
williamr@2
|
816 |
|
williamr@2
|
817 |
|
williamr@2
|
818 |
/**Number of channels in the Bluetooth channel set that is used with AFH
|
williamr@2
|
819 |
|
williamr@2
|
820 |
The Bluetooth channel set is the set of frequencies used in the Bluetooth
|
williamr@2
|
821 |
hopping sequence. AFH allows a connection to opt not to use some of the
|
williamr@2
|
822 |
frequencies in this set.
|
williamr@2
|
823 |
|
williamr@2
|
824 |
@see TBTAFHHostChannelClassification
|
williamr@2
|
825 |
@publishedAll
|
williamr@2
|
826 |
@released
|
williamr@2
|
827 |
*/
|
williamr@2
|
828 |
const TUint8 KAFHNumChannels=79;
|
williamr@2
|
829 |
|
williamr@2
|
830 |
|
williamr@2
|
831 |
/**Descriptor class that should be used to help set up an
|
williamr@2
|
832 |
AFH host channel classification for the controller.
|
williamr@2
|
833 |
|
williamr@2
|
834 |
The bits in each byte of this descriptor are used
|
williamr@2
|
835 |
to tell the controller which channels the host
|
williamr@2
|
836 |
anticipates will become busy and so advisable for
|
williamr@2
|
837 |
Bluetooth to avoid. Such channels are referred to
|
williamr@2
|
838 |
as 'bad', and are represented by bits set to 0.
|
williamr@2
|
839 |
Channels that are not 'bad' are referred to as 'unknown' implying
|
williamr@2
|
840 |
simply that the host has no knowledge that they are, or
|
williamr@2
|
841 |
are about to become 'bad'. These are represented by bits set to 1.
|
williamr@2
|
842 |
Note: The Bluetooth specification demands that at least 20 channels
|
williamr@2
|
843 |
must be set to 'unknown'. Any attempt by the user of this class
|
williamr@2
|
844 |
to set too many 'bad' channels will result in the return of a
|
williamr@2
|
845 |
KErrNotSupported error, and the attempt having no effect.
|
williamr@2
|
846 |
|
williamr@2
|
847 |
|
williamr@2
|
848 |
@publishedAll
|
williamr@2
|
849 |
@released
|
williamr@2
|
850 |
*/
|
williamr@2
|
851 |
NONSHARABLE_CLASS(TBTAFHHostChannelClassification) : public TBuf8<KHCIAFHHostChannelClassificationSize>
|
williamr@2
|
852 |
{
|
williamr@2
|
853 |
public:
|
williamr@2
|
854 |
IMPORT_C TBTAFHHostChannelClassification();
|
williamr@2
|
855 |
IMPORT_C void Reset();
|
williamr@2
|
856 |
IMPORT_C TInt Validate() const;
|
williamr@2
|
857 |
IMPORT_C TInt SetChannelBad(const TUint8 aChannel);
|
williamr@2
|
858 |
IMPORT_C TInt SetChannelRangeBad(const TUint8 aChannelRangeLowest, const TUint8 aChannelRangeHighest);
|
williamr@2
|
859 |
|
williamr@2
|
860 |
private:
|
williamr@2
|
861 |
TInt DoSetChannelBad(const TUint8 aChannel);
|
williamr@2
|
862 |
TInt BitByteIndices(TUint8& aByteIndex, TUint8& aBitIndex, const TUint8 aChannel) const;
|
williamr@2
|
863 |
TUint8 NumUnknownsWithinRange(const TUint8 aChannelRangeLowest, const TUint8 aChannelRangeHighest) const;
|
williamr@2
|
864 |
|
williamr@2
|
865 |
// This data padding has been added to help prevent future binary compatibility breaks
|
williamr@2
|
866 |
// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
|
williamr@2
|
867 |
TUint32 iPadding1;
|
williamr@2
|
868 |
TUint32 iPadding2;
|
williamr@2
|
869 |
};
|
williamr@2
|
870 |
|
williamr@2
|
871 |
|
williamr@2
|
872 |
/** Class used to exchange the local settings with the Registry server.
|
williamr@2
|
873 |
|
williamr@2
|
874 |
Not a complete set of details of the local device
|
williamr@2
|
875 |
|
williamr@2
|
876 |
@publishedPartner
|
williamr@2
|
877 |
@released
|
williamr@2
|
878 |
|
williamr@2
|
879 |
*/
|
williamr@2
|
880 |
NONSHARABLE_CLASS(TBTLocalDevice)
|
williamr@2
|
881 |
{
|
williamr@2
|
882 |
public:
|
williamr@2
|
883 |
IMPORT_C TBTLocalDevice();
|
williamr@2
|
884 |
IMPORT_C const TBTDevAddr& Address() const;
|
williamr@2
|
885 |
IMPORT_C TUint32 DeviceClass() const;
|
williamr@2
|
886 |
IMPORT_C const TDesC8& DeviceName() const;
|
williamr@2
|
887 |
IMPORT_C THCIScanEnable ScanEnable() const;
|
williamr@2
|
888 |
IMPORT_C TBool LimitedDiscoverable() const;
|
williamr@2
|
889 |
IMPORT_C TUint8 PowerSetting() const;
|
williamr@2
|
890 |
IMPORT_C TBool AFHChannelAssessmentMode() const;
|
williamr@2
|
891 |
IMPORT_C TBool AcceptPairedOnlyMode() const;
|
williamr@2
|
892 |
IMPORT_C void SetAddress(const TBTDevAddr& aAddr);
|
williamr@2
|
893 |
IMPORT_C void SetDeviceClass(TUint32 aCod);
|
williamr@2
|
894 |
IMPORT_C void SetDeviceName(const TDesC8& aName);
|
williamr@2
|
895 |
IMPORT_C void SetScanEnable(THCIScanEnable aEnable);
|
williamr@2
|
896 |
IMPORT_C void SetLimitedDiscoverable(TBool aOn);
|
williamr@2
|
897 |
IMPORT_C void SetPowerSetting(TUint8 aPowerSetting);
|
williamr@2
|
898 |
IMPORT_C void SetAFHChannelAssessmentMode(TBool aOn);
|
williamr@2
|
899 |
IMPORT_C void SetAcceptPairedOnlyMode(TBool aOn);
|
williamr@2
|
900 |
IMPORT_C TBool IsValidAddress() const;
|
williamr@2
|
901 |
IMPORT_C TBool IsValidDeviceClass() const;
|
williamr@2
|
902 |
IMPORT_C TBool IsValidDeviceName() const;
|
williamr@2
|
903 |
IMPORT_C TBool IsValidScanEnable() const;
|
williamr@2
|
904 |
IMPORT_C TBool IsValidLimitedDiscoverable() const;
|
williamr@2
|
905 |
IMPORT_C TBool IsValidPowerSetting() const;
|
williamr@2
|
906 |
IMPORT_C TBool IsValidAFHChannelAssessmentMode() const;
|
williamr@2
|
907 |
IMPORT_C TBool IsValidAcceptPairedOnlyMode() const;
|
williamr@2
|
908 |
|
williamr@2
|
909 |
protected:
|
williamr@2
|
910 |
enum
|
williamr@2
|
911 |
{
|
williamr@2
|
912 |
EAddress = 0x0001,
|
williamr@2
|
913 |
ECoD = 0x0002,
|
williamr@2
|
914 |
EDeviceName = 0x0004,
|
williamr@2
|
915 |
EPowerSetting = 0x0008,
|
williamr@2
|
916 |
EScanEnable = 0x0010,
|
williamr@2
|
917 |
ELimitedDiscoverable = 0x0020,
|
williamr@2
|
918 |
EAFHChannelAssessmentMode = 0x0040,
|
williamr@2
|
919 |
EAcceptPairedOnlyMode = 0x0080,
|
williamr@2
|
920 |
}; ///< Used for indicating if a setting has been set (i.e. not a default/random value) @see iBitMask
|
williamr@2
|
921 |
|
williamr@2
|
922 |
private:
|
williamr@2
|
923 |
enum
|
williamr@2
|
924 |
{
|
williamr@2
|
925 |
EAFHChannelAssessmentModeValue = 0x0001,
|
williamr@2
|
926 |
EAcceptPairedOnlyModeValue = 0x0002,
|
williamr@2
|
927 |
}; ///< Used for settings requiring little space: allows new settings ot be introduced without increasing the size of this class @see iSimpleSettings
|
williamr@2
|
928 |
|
williamr@2
|
929 |
|
williamr@2
|
930 |
|
williamr@2
|
931 |
TUint iSetMask; ///< Bit mask indicating the data members that have been set
|
williamr@2
|
932 |
TBTDevAddr iAddress;
|
williamr@2
|
933 |
TUint32 iCod;
|
williamr@2
|
934 |
TBTDeviceName8 iLocalName;
|
williamr@2
|
935 |
TUint8 iPowerSetting;
|
williamr@2
|
936 |
THCIScanEnable iScanEnable;
|
williamr@2
|
937 |
TBool iLimitedDiscoverable;
|
williamr@2
|
938 |
TUint32 iSimpleSettings; ///< Only first two bits currently used - for AFH Channel Assessment Mode, and Accept Paired Only Mode
|
williamr@2
|
939 |
};
|
williamr@2
|
940 |
|
williamr@2
|
941 |
|
williamr@2
|
942 |
#endif
|