epoc32/include/bluetooth/eirdatacodec.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 2008-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@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.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 EIRDATACODEC_H
williamr@2
    17
#define EIRDATACODEC_H
williamr@2
    18
williamr@2
    19
#include <e32std.h>
williamr@2
    20
#include <es_sock.h>
williamr@2
    21
williamr@2
    22
/**
williamr@2
    23
@file
williamr@2
    24
@internalTechnology
williamr@2
    25
*/
williamr@2
    26
/**
williamr@2
    27
The state of the EIR data, either partial or complete
williamr@2
    28
*/
williamr@2
    29
enum TEIRDataCompleteness
williamr@2
    30
	{
williamr@2
    31
	EDataPartial = 0x1,
williamr@2
    32
	EDataComplete = 0x2,
williamr@2
    33
	};
williamr@2
    34
williamr@2
    35
const TUint16 KNameRecord8BitMaxLength=248;
williamr@2
    36
williamr@2
    37
/**
williamr@2
    38
Extended Inquiry Response Data Types
williamr@2
    39
*/
williamr@2
    40
enum TExtendedInquiryResponseDataType
williamr@2
    41
	{
williamr@2
    42
// Invalid Data Type
williamr@2
    43
	EEirInvalid 					= 0x00,
williamr@2
    44
// Standard Data Types
williamr@2
    45
	EEirFlags 						= 0x01,
williamr@2
    46
	EEirUUID16Partial 				= 0x02,
williamr@2
    47
	EEirUUID16Complete 				= 0x03,
williamr@2
    48
	EEirUUID32Partial 				= 0x04,
williamr@2
    49
	EEirUUID32Complete 				= 0x05,
williamr@2
    50
	EEirUUID128Partial 				= 0x06,
williamr@2
    51
	EEirUUID128Complete 			= 0x07,
williamr@2
    52
	EEirLocalNamePartial 			= 0x08,
williamr@2
    53
	EEirLocalNameComplete 			= 0x09,
williamr@2
    54
	EEirTxPowerLevel 				= 0x0A,
williamr@2
    55
// OOB Tags: Not used in EIR itself
williamr@2
    56
	EEirOobClassOfDevice			= 0x0D,
williamr@2
    57
	EEirOobSimplePairingHash		= 0x0E,
williamr@2
    58
	EEirOobSimplePairingRandomizerR	= 0x0F,
williamr@2
    59
// Vendor specific
williamr@2
    60
	EEirVendorSpecific 				= 0xFF,
williamr@2
    61
	};
williamr@2
    62
williamr@2
    63
williamr@2
    64
class TNameRecord;
williamr@2
    65
/**
williamr@2
    66
@internalTechnology
williamr@2
    67
Extended Inquiry Response Parser Class
williamr@2
    68
This class takes a reference from inquiry result, which could hold both local name and Extended Inquiry Response. It provides API to parse and return the local name and data for any Extended Inquiry Response tag.
williamr@2
    69
*/
williamr@2
    70
NONSHARABLE_CLASS(TExtendedInquiryResponseDataCodec)
williamr@2
    71
	{
williamr@2
    72
public:
williamr@2
    73
	IMPORT_C TExtendedInquiryResponseDataCodec();
williamr@2
    74
	IMPORT_C explicit TExtendedInquiryResponseDataCodec(const TNameRecord& aNameRecord);
williamr@2
    75
	IMPORT_C explicit TExtendedInquiryResponseDataCodec(TNameRecord& aNameRecord);
williamr@2
    76
	IMPORT_C explicit TExtendedInquiryResponseDataCodec(const TDesC8& aDes);
williamr@2
    77
	IMPORT_C explicit TExtendedInquiryResponseDataCodec(TDes8& aDes);
williamr@2
    78
	IMPORT_C TInt GetData(TExtendedInquiryResponseDataType aDataType, TPtrC8& aDes) const;
williamr@2
    79
	IMPORT_C TExtendedInquiryResponseDataType GetNextData(TPtrC8& aDes);
williamr@2
    80
	IMPORT_C TBool IsDataTypePresent(TExtendedInquiryResponseDataType aDataType) const;
williamr@2
    81
	IMPORT_C TInt GetDeviceName(TPtrC8& aName) const;
williamr@2
    82
	IMPORT_C TInt SetDeviceName(const TPtrC8& aName, TBool iIsComplete);
williamr@2
    83
	IMPORT_C void Set(const TNameRecord& aNameRecord);
williamr@2
    84
	IMPORT_C void Set(TNameRecord& aNameRecord);
williamr@2
    85
	IMPORT_C void Set(const TDesC8& aDes);
williamr@2
    86
	IMPORT_C void Set(TDes8& aDes);
williamr@2
    87
	IMPORT_C void Copy(TDesC8& aDes);
williamr@2
    88
	IMPORT_C TInt DoSanityCheck(TDes8& aDes);
williamr@2
    89
williamr@2
    90
private:
williamr@2
    91
	TUint16 ComputeSignificantLength(const TDesC8& aDes);
williamr@2
    92
	TInt NextDataType(TInt aOffs) const;
williamr@2
    93
	TBool IsValideDataType(TInt aDataType);
williamr@2
    94
williamr@2
    95
private:
williamr@2
    96
	TPtr8			iEir;
williamr@2
    97
	TInt			iOffset;
williamr@2
    98
	TNameRecord*	iNameRecord;
williamr@2
    99
	TUint32			iPadding1;
williamr@2
   100
	TUint32			iPadding2;
williamr@2
   101
	};
williamr@2
   102
williamr@2
   103
enum TEirCodecPanics
williamr@2
   104
	{
williamr@2
   105
	EEirBadDescriptor = 0,
williamr@2
   106
	EEirBadState = 1,
williamr@2
   107
	EEirCodecDataTooLarge = 2,
williamr@2
   108
	};
williamr@2
   109
_LIT(KEirCodecPanicName, "ExtendedInquiryResponseCodec");
williamr@2
   110
williamr@2
   111
#endif /*EIRDATACODEC_H*/