bthci/bthci2/corehci/interface/hcitypes.h
changeset 0 29b1cd4cb562
child 23 5b153be919d4
equal deleted inserted replaced
-1:000000000000 0:29b1cd4cb562
       
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @publishedPartner
       
    19  @released
       
    20 */
       
    21 
       
    22 #ifndef HCITYPES_H
       
    23 #define HCITYPES_H
       
    24 
       
    25 #include <bttypes.h>
       
    26 #include <bttypespartner.h>
       
    27 
       
    28 
       
    29 enum THWHCIVersion
       
    30 /**
       
    31 Controller version information
       
    32 */
       
    33 	{
       
    34 	EHWHCIv1_0 = 0, // HCIv1.0B
       
    35 	EHWHCIv1_1 = 1, // HCIv1.1
       
    36 	EHWHCIv1_2 = 2, // HCIv1.2
       
    37 	EHWHCIv2_0 = 3, // HCIv2.0
       
    38 	EHWHCIv2_1 = 4, // HCIv2.1
       
    39 	};
       
    40 
       
    41 enum TBTHardResetState 
       
    42 /**
       
    43 Controller 'reset' states
       
    44 */
       
    45 	{
       
    46 	//NB In chronologically reverse order
       
    47 	EBTResetComplete = 0x00, /*!< The reset process is complete. */
       
    48 	EBTResetStarted = 0x01 /*!< The reset process has started. */
       
    49 	};
       
    50 
       
    51 enum TBTPowerState 
       
    52 /**
       
    53 Controller 'power' states
       
    54 */
       
    55 	{
       
    56 	EBTOn = 0x00, /*!< Power on. */
       
    57 	EBTOff = 0x01 /*!< Power off. */
       
    58 	};
       
    59 
       
    60 enum THCISimplePairingMode
       
    61 /**
       
    62 Simple pairing mode
       
    63 */
       
    64 	{
       
    65 	ESimplePairingDisabled = 0x00,
       
    66 	ESimplePairingEnabled = 0x01
       
    67 	};
       
    68 	
       
    69 enum THCIIoCapability
       
    70 /**
       
    71 IO capability
       
    72 */
       
    73 	{
       
    74 	EIOCapsDisplayOnly = 0x00,
       
    75 	EIOCapsDisplayYesNo = 0x01,
       
    76 	EIOCapsKeyboardOnly = 0x02,
       
    77 	EIOCapsNoInputNoOutput = 0x03
       
    78 	};
       
    79 	
       
    80 enum THCIOobDataPresence
       
    81 /**
       
    82 OOB data presence
       
    83 */
       
    84 	{
       
    85 	EOOBDataNotPresent = 0x00,
       
    86 	EOOBDataPresent = 0x01
       
    87 	};
       
    88 	
       
    89 enum THCIAuthenticationRequirement
       
    90 /**
       
    91 Authentication requirement
       
    92 */
       
    93 	{
       
    94 	EMitmNotReqNoBonding = 0x00,
       
    95 	EMitmReqNoBonding = 0x01,
       
    96 	EMitmNotReqDedicatedBonding = 0x02,
       
    97 	EMitmReqDedicatedBonding = 0x03,
       
    98 	EMitmNotReqGeneralBonding = 0x04,
       
    99 	EMitmReqGeneralBonding = 0x05
       
   100 	};
       
   101 
       
   102 const TUint KAuthenticationMitmReqMask = 0x1;
       
   103 
       
   104 enum THCIPasskeyEntryNotificationType
       
   105 /**
       
   106 Passkey entry notification type
       
   107 */
       
   108 	{
       
   109 	EPasskeyEntryStarted = 0x00,
       
   110 	EPasskeyDigitEntered = 0x01,
       
   111 	EPasskeyDigitDeleted = 0x02,
       
   112 	EPasskeyCleared = 0x03,
       
   113 	EPasskeyEntryCompleted = 0x04
       
   114 	};
       
   115 	
       
   116 enum TLinkType
       
   117 /**
       
   118 Bluetooth link type (ACL / SCO)
       
   119 */
       
   120 	{
       
   121 	ESCOLink = 0x00, /*!< Synchronous Connection Oriented link */
       
   122 	EACLLink = 0x01, /*!< Asynchronous ConnectionLess link */
       
   123 	EeSCOLink = 0x02 /*!< eSCO link */
       
   124 	};
       
   125 
       
   126 enum TEncryptMode
       
   127 /**
       
   128 Bluetooth encryption mode
       
   129 */
       
   130 	{
       
   131 	EDisabled = 0x00, /*!< Encryption disabled */
       
   132 	EPointToPoint = 0x01, /*!< Point to point encryption enabled */
       
   133 	EAll = 0x02 /*!< Device wide encryption enabled */
       
   134 	};
       
   135 
       
   136 enum TAirMode
       
   137 /**
       
   138 Air mode of synchronous connection
       
   139 */
       
   140 	{
       
   141 	ECVSD = 0x00, /*!< CVSD */
       
   142 	EuLawLog = 0x01, /*!< u-law log */
       
   143 	EALawLog = 0x02, /*!< A-law log */
       
   144 	ETransparentData = 0x03	/*!< Transparent data */
       
   145 	};
       
   146 
       
   147 enum THCIDeleteAllKeysFlag
       
   148 /**
       
   149 HCI delete all keys flag
       
   150 */
       
   151 	{
       
   152 	EDeleteBdaddrLinkKey = 0x00, /*!< Delete Bluetooth device address link key */
       
   153 	EDeleteAllLinkKeys = 0x01 /*!< Delete all link keys */
       
   154 	};
       
   155  
       
   156 enum THCITimeoutType
       
   157 /**
       
   158 HCI timeout type
       
   159 */
       
   160 	{
       
   161 	EConnectionAcceptTimeout = 0x00, /*!< Connection accept timeout */
       
   162 	EPageTimeout = 0x01, /*!< Page timeout */
       
   163 	};
       
   164 
       
   165 enum THCIReadAllKeysFlag
       
   166 /**
       
   167 HCI read all keys flag
       
   168 */
       
   169 	{
       
   170 	EReadBdaddrLinkKey = 0x00, /*!< Read Bluetooth device address link key */
       
   171 	EReadAllLinkKeys = 0x01, /*!< Read all link keys */
       
   172 	};
       
   173 
       
   174 enum THCIEncryptModeFlag
       
   175 /**
       
   176 HCI encryption mode flag
       
   177 */
       
   178 	{
       
   179 	EEncryptionDisabled = 0x00, /*!< Encryption disabled */
       
   180 	EPointToPointEncryption = 0x01, /*!< Point to point encryption enabled */
       
   181 	EPointToPointAndBroadcastEncryption = 0x02, /*!< Point to point and broadcast encryption enabled */
       
   182 	};
       
   183 
       
   184 enum THCIScanEnable 
       
   185 /**
       
   186 HCI Scan enable mask
       
   187 */
       
   188 	{
       
   189 	ENoScansEnabled = 0x00, /*!< No HCI scans enabled */
       
   190 	EInquiryScanOnly = 0x01, /*!< HCI inquiry scan enabled */
       
   191 	EPageScanOnly = 0x02, /*!< HCI page scan enabled */
       
   192 	EInquiryAndPageScan = 0x03 /*!< HCI inquiry and page scan enabled */
       
   193 	};
       
   194 
       
   195 enum THCIInquiryMode 
       
   196 /**
       
   197 HCI Inquiry mode flag
       
   198 */
       
   199 	{
       
   200 	EStandardInquiryFormat = 0x00, /*!< Standard Inquiry Result event Format */
       
   201 	EInquiryWithRssi = 0x01, /*!< Inquiry result format with RSSI */
       
   202 	EInquiryWithRssiOrEir = 0x02 /*!< Inquiry result with RSSI format or Extended Inquiry Result format */
       
   203 	};
       
   204 
       
   205 /**
       
   206 HCI Link-key type
       
   207 */
       
   208 enum THCILinkKeyType
       
   209 	{
       
   210 	ECombinationKey = 0x00, /*!< Combination link-key generated by classic Bluetooth pairing */
       
   211 	ELocalUnitKey = 0x01, /*!< Unit link-key for local device */
       
   212 	ERemoteUnitKey = 0x02, /*!< Unit link-key for remote device */
       
   213 	EDebugCombinationKey = 0x03, /*!< Combination link-key generated when simple pairing debug mode is enabled */
       
   214 	EUnauthenticatedCombinationKey = 0x04, /*!< Combination link-key generated with simple pairing with no MITM protection */
       
   215 	EAuthenticatedCombinationKey = 0x05, /*!< Combination link-key generated with simple pairing with MITM protection */
       
   216 	EChangedCombinationKey = 0x06, /*!< An indication that the link-key is of the same type previously provided */
       
   217 	};
       
   218 
       
   219 enum THCITransmitPowerLevelType
       
   220 	{
       
   221 	ECurrentTransmitPowerLevel  = 0x00,
       
   222 	EMaximumTransmitPowerLevel  = 0x01,
       
   223 	};
       
   224 
       
   225 /**
       
   226 HCI event mask
       
   227 This can be used to specify the mask used to control which events the controller reports.
       
   228 */
       
   229 NONSHARABLE_CLASS(THCIEventMask)
       
   230 	{
       
   231 public:
       
   232 	enum TLoByteMask
       
   233 		{
       
   234 		EInquiryCompleteEvent						= 0x00000001,
       
   235 		EInquiryResultEvent							= 0x00000002,
       
   236 		EConnectionCompleteEvent					= 0x00000004,
       
   237 		EConnectionRequestEvent						= 0x00000008,
       
   238 		EDisconnectionCompleteEvent					= 0x00000010,
       
   239 		EAuthenticationCompleteEvent				= 0x00000020,
       
   240 		ERemoteNameRequestCompleteEvent				= 0x00000040,
       
   241 		EEncryptionChangeEvent						= 0x00000080,
       
   242 		EChangeConnectionLinkKeyCompleteEvent		= 0x00000100,
       
   243 		EMasterLinkKeyCompleteEvent					= 0x00000200,
       
   244 		EReadRemoteSupportedFeaturesCompleteEvent	= 0x00000400,
       
   245 		EReadRemoteVersionInformationCompleteEvent	= 0x00000800,
       
   246 		EQoSSetupCompleteEvent						= 0x00001000,
       
   247 		EHardwareErrorEvent							= 0x00008000,
       
   248 		EFlushOccurredEvent							= 0x00010000,
       
   249 		ERoleChangeEvent							= 0x00020000,
       
   250 		EModeChangeEvent							= 0x00080000,
       
   251 		EReturnLinkKeysEvent						= 0x00100000,
       
   252 		EPINCodeRequestEvent						= 0x00200000,
       
   253 		ELinkKeyRequestEvent						= 0x00400000,
       
   254 		ELinkKeyNotificationEvent					= 0x00800000,
       
   255 		ELoopbackCommandEvent						= 0x01000000,
       
   256 		EDataBufferOverflowEvent					= 0x02000000,
       
   257 		EMaxSlotsChangeEvent						= 0x04000000,
       
   258 		EReadClockOffsetCompleteEvent				= 0x08000000,
       
   259 		EConnectionPacketTypeChangedEvent			= 0x10000000,
       
   260 		EQoSViolationEvent							= 0x20000000,
       
   261 		EPageScanModeChangeEvent					= 0x40000000,
       
   262 		EPageScanRepetitionModeChangeEvent			= 0x80000000
       
   263 		};
       
   264 	
       
   265 	enum THiByteMask
       
   266 		{
       
   267 		EFlowSpecificationCompleteEvent					= 0x00000001,
       
   268 		EInquiryResultWithRSSIEvent						= 0x00000002,
       
   269 		EReadRemoteExtendedFeaturesCompleteEvent		= 0x00000004,
       
   270 		ESynchronousConnectionCompleteEvent				= 0x00000800,
       
   271 		ESynchronousConnectionChangedEvent				= 0x00001000,
       
   272 		ESniffSubratingEvent							= 0x00002000,
       
   273 		EExtendedInquiryResultEvent						= 0x00004000,
       
   274 		EEncryptionKeyRefreshCompleteEvent				= 0x00008000,
       
   275 		EIOCapabilityRequestEvent						= 0x00010000,
       
   276 		EIOCapabilityRequestReplyEvent					= 0x00020000,
       
   277 		EUserConfirmationRequestEvent					= 0x00040000,
       
   278 		EUserPasskeyRequestEvent						= 0x00080000,
       
   279 		ERemoteOOBDataRequestEvent						= 0x00100000,
       
   280 		ESimplePairingCompleteEvent						= 0x00200000,
       
   281 		ELinkSupervisionTimeoutChangedEvent				= 0x00800000,
       
   282 		EEnhancedFlushCompleteEvent						= 0x01000000,
       
   283 		EUserPasskeyNotificationEvent					= 0x04000000,
       
   284 		EKeypressNotificationEvent						= 0x08000000,
       
   285 		ERemoteHostSupportedFeaturesNotificationEvent	= 0x10000000,
       
   286 		};
       
   287 	
       
   288 	static const TUint32 KDefaultLoBytes = 0xffffffff;
       
   289 	static const TUint32 KDefaultHiBytes = 0x00001fff;
       
   290 	
       
   291 public:
       
   292 	TUint32 iLoBytes; /*!< Least significant bytes (bytes 0 - 3) */
       
   293 	TUint32 iHiBytes; /*!< Most significant bytes (bytes 4 - 7) */
       
   294 	};
       
   295 
       
   296 enum THCIEventFilterType
       
   297 /**
       
   298 HCI event filter type
       
   299 */ 
       
   300 	{
       
   301 	EClearAllFilters = 0x00, /*!< Clear all filters */
       
   302 	EInquiryResultFilter = 0x01, /*!< Inquiry result filter */
       
   303 	EConnectionSetupFilter = 0x02 /*!< Connection setup filter */
       
   304 	};
       
   305 
       
   306 NONSHARABLE_CLASS(THCIEventCondition)
       
   307 /**
       
   308 HCI event condition definition.
       
   309 */
       
   310 	{
       
   311 public:
       
   312 	THCIEventFilterType iEventFilterType; /*!< Event filter type */
       
   313 	TUint8 iConditionType; /*!< Condition type */
       
   314 	TUint iCoD; /*!< Class of device */
       
   315 	TUint iCoDMask; /*!< Class of device mask */
       
   316 	TBTDevAddr iDevAddr; /*!< Bluetooth device address */
       
   317 	TUint8 iAutoAcceptFlag; /*!< Auto accept flag */
       
   318 	};
       
   319 
       
   320 /**
       
   321 Provides a representation of a RSSI value returned over the
       
   322 Bluetooth HCI.
       
   323 Intended for use within an RArray type class.
       
   324 */
       
   325 NONSHARABLE_CLASS(THCIRssi)
       
   326 	{
       
   327 public:
       
   328 	IMPORT_C THCIRssi();
       
   329 	IMPORT_C THCIRssi(TUint8 aRssi);
       
   330 	IMPORT_C THCIRssi& operator=(TUint8 aRssi);
       
   331 
       
   332 	IMPORT_C TUint8 Rssi() const;
       
   333 	IMPORT_C operator TUint8() const;
       
   334 
       
   335 
       
   336 	IMPORT_C THCIRssi(TInt8 aRssi);
       
   337 	IMPORT_C THCIRssi& operator=(TInt8 aRssi);
       
   338 
       
   339 	IMPORT_C TInt8 RSSI() const;
       
   340 private:
       
   341 	TInt8 iRssi;
       
   342 	TUint8 iPad1; // To pad the class out making it 4 bytes in total (for use in RArray).
       
   343 	TUint16 iPad2;
       
   344 	};
       
   345 
       
   346 
       
   347 const static TUint8 KInqLogEntryStandard = 0; /*!< TInquiryLogEntry */
       
   348 const static TUint8 KInqLogEntryWithRssi = 1; /*!< TInquiryLogEntryWithRssi */
       
   349 const static TUint8 KInqLogEntryWithEir = 2; /*!< TInquiryLogEntryWithEir */
       
   350 
       
   351 NONSHARABLE_CLASS(TInquiryLogEntry)
       
   352 /**
       
   353 Inquiry log entry.  Used to pass information from a BT inquiry operation.
       
   354 */
       
   355 	{
       
   356 public:
       
   357 	TUint8 iPageScanRepetitionMode; /*!< Page scan repetition mode */
       
   358 	TUint8 iPageScanPeriodMode; /*!< Page scan period mode */
       
   359 	TUint8 iPageScanMode; /*!< Page scan mode */
       
   360 /**
       
   361 iSpare: Used to identify Inquiry log entry type
       
   362 This is for internal sub-system use only and should be not be used otherwise.
       
   363 @internalComponent
       
   364 */
       
   365 	TUint8 iSpare;
       
   366 
       
   367 	TUint16 iClockOffset; /*!< Clock offset */
       
   368 	TBTDevAddr iBdaddr; /*!< Bluetooth device address */
       
   369 	TUint iCoD; /*!< Class of device */
       
   370 	};
       
   371 
       
   372 NONSHARABLE_CLASS(TInquiryLogEntryWithRssi) : public TInquiryLogEntry
       
   373 /**
       
   374 Inquiry log entry.  Used to pass information from a BT inquiry operation.
       
   375 */
       
   376 	{
       
   377 public:
       
   378 	THCIRssi iRssi; /*!< RSSI (dBm) */
       
   379 	};
       
   380 
       
   381 static const TUint8 KHCIExtendedInquiryResponseMaxLength = 240; /*!< Extended Inquiry Response max length. */
       
   382 NONSHARABLE_CLASS(TInquiryLogEntryWithEir) : public TInquiryLogEntryWithRssi
       
   383 /**
       
   384 Inquiry log entry.  Used to pass information from a BT inquiry operation.
       
   385 */
       
   386 	{
       
   387 public:
       
   388     TBuf8<KHCIExtendedInquiryResponseMaxLength> iExtendedInquiryResponse; /*!< Extended Inquiry Response (240 bytes max) */
       
   389     };
       
   390 
       
   391 NONSHARABLE_CLASS(TBTConnect)
       
   392 /**
       
   393 Definition of the parameters required to make a HCI connection.
       
   394 */
       
   395 	{
       
   396 public:
       
   397 	THCIConnHandle iConnH; /*!< Handle to the HCI connection */
       
   398 	TBTDevAddr iBdaddr; /*!< Bluetooth device address */
       
   399 	TUint iCoD; /*!< Class of device */
       
   400 	TLinkType iLinkType; /*!< Link type (ACL / SCO) */
       
   401 /**
       
   402 Encryption mode 
       
   403 @see TEncryptMode
       
   404 */
       
   405 	TEncryptMode iEncryptMode;
       
   406 	};
       
   407 
       
   408 NONSHARABLE_CLASS(TBTSyncConnectOpts)
       
   409 /**
       
   410 Parameters returned by HCI after a successful Synchronous connection.
       
   411 */
       
   412 	{
       
   413 public:
       
   414 	inline TBTSyncConnectOpts(const TUint8 aTransmissionInterval, const TUint8 aRetransmissionWindow, 
       
   415 		const TUint16 aRxPacketLength, const TUint16 aTxPacketLength, const TAirMode aAirMode)
       
   416 		: iTransmissionInterval(aTransmissionInterval), iRetransmissionWindow(aRetransmissionWindow),
       
   417 		  iRxPacketLength(aRxPacketLength), iTxPacketLength(aTxPacketLength),
       
   418 		  iAirMode(aAirMode)
       
   419 		{}
       
   420 		
       
   421 public:
       
   422 	TUint8 iTransmissionInterval;
       
   423 	TUint8 iRetransmissionWindow;
       
   424 	TUint16 iRxPacketLength;
       
   425 	TUint16 iTxPacketLength;
       
   426 	TAirMode iAirMode;
       
   427 	};
       
   428 
       
   429 NONSHARABLE_CLASS(TBTDevHCIVersion)
       
   430 /**
       
   431 BT HCI version definition.
       
   432 */
       
   433 	{
       
   434 public:
       
   435 	TUint8 iHCIVersion; /*!< HCI version */
       
   436 	TUint16 iHCIRevision; /*!< HCI Revision */
       
   437 	};
       
   438 
       
   439 NONSHARABLE_CLASS(TBTDevLMPVersion)
       
   440 /**
       
   441 BT Link Manager Protocol (LMP) version definition.
       
   442 */
       
   443 	{
       
   444 public:
       
   445 	TUint8 iLMPVersion; /*!< LMP version */
       
   446 	TUint16	iManufacturerID; /*!< Manufacturer ID */
       
   447 	TUint16	iLMPSubVersion; /*!< LMP sub version */ 
       
   448 	};
       
   449 
       
   450 NONSHARABLE_CLASS(TBTQOS)
       
   451 /**
       
   452 BT quality of service definition.
       
   453 @see BT code specification.
       
   454 */
       
   455 	{
       
   456 public:
       
   457 	TUint8 iFlags; /*!< QoS flags */ 
       
   458 	TUint8 iServiceType; /*!< Service type */
       
   459 	TUint iTokenRate; /*!< Token rate */
       
   460 	TUint iPeakBandwidth; /*!< Peak bandwidth */
       
   461 	TUint iLatency; /*!< Latency */
       
   462 	TUint iDelayVariation; /*!< Delay variation */
       
   463 	};
       
   464 
       
   465 /**
       
   466 Connection handle class for use in the HCI API.
       
   467 
       
   468 Although THCIConnHandle is a valid type to use for representing 
       
   469 a connection handle, as there are commands that require an array
       
   470 of the type to be provided, RArray instances are used as the
       
   471 API. The type contents RArrays use must be at a minimum 4 bytes
       
   472 in size.  This class provides a 4 byte encapsulation of a 2 byte
       
   473 connection handle.
       
   474 
       
   475 @see THCIConnHandle.
       
   476 */
       
   477 NONSHARABLE_CLASS(THCIConnectionHandle)
       
   478 	{
       
   479 public:
       
   480 	IMPORT_C THCIConnectionHandle();
       
   481 	IMPORT_C THCIConnectionHandle(THCIConnHandle aConnHandle);
       
   482 	IMPORT_C THCIConnectionHandle& operator=(THCIConnHandle aConnHandle);
       
   483 
       
   484 	IMPORT_C THCIConnHandle ConnHandle() const;
       
   485 	IMPORT_C operator THCIConnHandle() const;
       
   486 
       
   487 private:
       
   488 	THCIConnHandle iConnHandle;
       
   489 	TUint16 iPad; // To pad the class out making it 4 bytes in total (for use in RArray).
       
   490 	};
       
   491 
       
   492 /**
       
   493 Class for reporting the number of completed packets by either the
       
   494 host or the controller over the HCI API.
       
   495 
       
   496 Although a simple TUint16 would be sufficient, as there are commands
       
   497 that require an array of the type to be provided as RArray instances
       
   498 are used as the API. The type contents RArrays use must be at a 
       
   499 minimum 4 bytes in size.  This class provides a 4 byte encapsulation
       
   500 of a 2 byte value representing the {Host,HC}NumOfCompletedPackets.
       
   501 */
       
   502 NONSHARABLE_CLASS(THCINumOfCompletedPackets)
       
   503 	{
       
   504 public:
       
   505 	IMPORT_C THCINumOfCompletedPackets();
       
   506 	IMPORT_C THCINumOfCompletedPackets(TUint16 aNumOfCompletedPackets);
       
   507 	IMPORT_C THCINumOfCompletedPackets& operator=(TUint16 aNumOfCompletedPackets);
       
   508 
       
   509 	IMPORT_C TUint16 NumOfCompletedPackets() const;
       
   510 	IMPORT_C operator TUint16() const;
       
   511 
       
   512 private:
       
   513 	TUint16 iNumOfCompletedPackets;
       
   514 	TUint16 iPad; // To pad the class out making it 4 bytes in total (for use in RArray).
       
   515 	};
       
   516 
       
   517 /**
       
   518 Provides a representation of a clock offset value returned over the
       
   519 Bluetooth HCI.
       
   520 Intended for use within an RArray type class.
       
   521 */
       
   522 NONSHARABLE_CLASS(THCIClockOffset)
       
   523 	{
       
   524 public:
       
   525 	IMPORT_C THCIClockOffset();
       
   526 	IMPORT_C THCIClockOffset(TUint16 aClockOffset);
       
   527 	IMPORT_C THCIClockOffset& operator=(TUint16 aClockOffset);
       
   528 
       
   529 	IMPORT_C TUint16 ClockOffset() const;
       
   530 	IMPORT_C operator TUint16() const;
       
   531 
       
   532 private:
       
   533 	TUint16 iClockOffset;
       
   534 	TUint16 iPad; // To pad the class out making it 4 bytes in total (for use in RArray).
       
   535 	};
       
   536 
       
   537 /**
       
   538 Provides a representation of the page scan repetition mode value returned 
       
   539 over the Bluetooth HCI.
       
   540 Intended for use within an RArray type class.
       
   541 */
       
   542 NONSHARABLE_CLASS(THCIPageScanRepetitionMode)
       
   543 	{
       
   544 public:
       
   545 	IMPORT_C THCIPageScanRepetitionMode();
       
   546 	IMPORT_C THCIPageScanRepetitionMode(TUint8 aPageScanRepetitionMode);
       
   547 	IMPORT_C THCIPageScanRepetitionMode& operator=(TUint8 aPageScanRepetitionMode);
       
   548 
       
   549 	IMPORT_C TUint8 PageScanRepetitionMode() const;
       
   550 	IMPORT_C operator TUint8() const;
       
   551 
       
   552 private:
       
   553 	TUint8 iPageScanRepetitionMode;
       
   554 	TUint8 iPad1; // To pad the class out making it 4 bytes in total (for use in RArray).
       
   555 	TUint16 iPad2;
       
   556 	};
       
   557 
       
   558 /**
       
   559 Acts as a suitable place holder for reserved octets that are returned over the
       
   560 Bluetooth HCI.
       
   561 Intended for use within an RArray type class.
       
   562 */
       
   563 NONSHARABLE_CLASS(THCIReservedOctet)
       
   564 	{
       
   565 public:
       
   566 	IMPORT_C THCIReservedOctet();
       
   567 	IMPORT_C THCIReservedOctet(TUint8 aReservedOctet);
       
   568 	IMPORT_C THCIReservedOctet& operator=(TUint8 aReservedOctet);
       
   569 
       
   570 	IMPORT_C TUint8 ReservedOctet() const;
       
   571 	IMPORT_C operator TUint8() const;
       
   572 
       
   573 private:
       
   574 	TUint8 iReservedOctet;
       
   575 	TUint8 iPad1; // To pad the class out making it 4 bytes in total (for use in RArray).
       
   576 	TUint16 iPad2;
       
   577 	};
       
   578 
       
   579 typedef TBTDevLMPVersion TBTDevRemoteHwVersion; /*!< Definition of the TBTDevRemoteHwVersion type */
       
   580 typedef TUint16 THCIOpcode; /*!< Definition of the THCIOpcode type */
       
   581 typedef TUint16 TBasebandTime; /*!< Definition of the TBasebandTime type */
       
   582 
       
   583 #endif // HCITYPES_H