remotecontrol/avrcp/statusconverter/remconavrcpstatusconverter.h
author jontanne
Thu, 14 Oct 2010 11:16:56 +0100
changeset 52 321a10f609ef
parent 51 20ac952a623c
permissions -rw-r--r--
Add USB HCTL to bt package
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
20ac952a623c 201040_02
hgs
parents:
diff changeset
     1
// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
20ac952a623c 201040_02
hgs
parents:
diff changeset
     2
// All rights reserved.
20ac952a623c 201040_02
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
20ac952a623c 201040_02
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
20ac952a623c 201040_02
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
20ac952a623c 201040_02
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
20ac952a623c 201040_02
hgs
parents:
diff changeset
     7
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
     8
// Initial Contributors:
20ac952a623c 201040_02
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
20ac952a623c 201040_02
hgs
parents:
diff changeset
    10
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    11
// Contributors:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    12
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    13
// Description:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    14
//
20ac952a623c 201040_02
hgs
parents:
diff changeset
    15
20ac952a623c 201040_02
hgs
parents:
diff changeset
    16
/**
20ac952a623c 201040_02
hgs
parents:
diff changeset
    17
 @file
20ac952a623c 201040_02
hgs
parents:
diff changeset
    18
 @internalComponent
20ac952a623c 201040_02
hgs
parents:
diff changeset
    19
*/
20ac952a623c 201040_02
hgs
parents:
diff changeset
    20
20ac952a623c 201040_02
hgs
parents:
diff changeset
    21
#ifndef REMCONAVRCPSTATUSCONVERTER_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    22
#define REMCONAVRCPSTATUSCONVERTER_H
20ac952a623c 201040_02
hgs
parents:
diff changeset
    23
20ac952a623c 201040_02
hgs
parents:
diff changeset
    24
#include <e32base.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    25
#include <remcon/remconconverterinterface.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    26
#include <remcon/remconconverterplugin.h>
20ac952a623c 201040_02
hgs
parents:
diff changeset
    27
20ac952a623c 201040_02
hgs
parents:
diff changeset
    28
// These values are in bytes
20ac952a623c 201040_02
hgs
parents:
diff changeset
    29
const TUint KUnitIdOffset = 4;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    30
const TUint KUnitIdLength = 1;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    31
const TUint KUnitTypeOffset = 4;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    32
const TUint KUnitTypeLength =1;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    33
const TUint KUnitTypeExtendOffset = 5;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    34
const TUint KUnitTypeExtendExtendOffset = 6;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    35
const TUint KVendorIdBaseOffset = 5;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    36
const TUint KVendorIdLength = 3;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    37
const TUint KUnitInfoResponseLength = 8;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    38
const TUint KRemConStatusApiDefaultPageDataLength = 4;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    39
20ac952a623c 201040_02
hgs
parents:
diff changeset
    40
const TUint KSubunitPageOffset = 3;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    41
const TUint KSubunitPageLength = 1;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    42
const TUint KSubunitExtensionOffset = 3;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    43
const TUint KSubunitExtensionLength = 1;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    44
const TUint KSubunitPageDataOffset = 4;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    45
20ac952a623c 201040_02
hgs
parents:
diff changeset
    46
// These values are in bits
20ac952a623c 201040_02
hgs
parents:
diff changeset
    47
const TUint KUnitTypeShift = 3;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    48
20ac952a623c 201040_02
hgs
parents:
diff changeset
    49
// Defined values for comparison
20ac952a623c 201040_02
hgs
parents:
diff changeset
    50
const TUint KUnitTypeExtend = 0x1e;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    51
const TUint KUnitTypeExtendExtend = 0xff;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    52
const TUint KSubunitPageMask = 0xf8;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    53
const TUint KSubunitExtensionMask = 0x7;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    54
20ac952a623c 201040_02
hgs
parents:
diff changeset
    55
const TUint KRemConStatusApiDefaultVendorId = 0xffffff;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    56
const TUint KRemConStatusApiDefaultPageData = 0xffffff48;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    57
20ac952a623c 201040_02
hgs
parents:
diff changeset
    58
_LIT(KStatusConverterPanicName, "Stat Conv Panic");
20ac952a623c 201040_02
hgs
parents:
diff changeset
    59
20ac952a623c 201040_02
hgs
parents:
diff changeset
    60
enum TStatusConverterPanic
20ac952a623c 201040_02
hgs
parents:
diff changeset
    61
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
    62
	EStatusConverterWrongInterface = 0,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    63
	EStatusConverterDataTooShort = 1,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    64
	EAvrcpPassedTooSmallABuffer = 2,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    65
	};
20ac952a623c 201040_02
hgs
parents:
diff changeset
    66
20ac952a623c 201040_02
hgs
parents:
diff changeset
    67
class CAVCFrame;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    68
NONSHARABLE_CLASS(CRemConAvrcpStatusConverter) : public CRemConConverterPlugin, public MRemConConverterInterface
20ac952a623c 201040_02
hgs
parents:
diff changeset
    69
	{
20ac952a623c 201040_02
hgs
parents:
diff changeset
    70
public:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    71
	static CRemConAvrcpStatusConverter* NewL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    72
	~CRemConAvrcpStatusConverter();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    73
20ac952a623c 201040_02
hgs
parents:
diff changeset
    74
private: // from CRemConConverterPlugin
20ac952a623c 201040_02
hgs
parents:
diff changeset
    75
	TAny* GetInterface(TUid aUid);
20ac952a623c 201040_02
hgs
parents:
diff changeset
    76
20ac952a623c 201040_02
hgs
parents:
diff changeset
    77
	// from MRemConConverterInterface
20ac952a623c 201040_02
hgs
parents:
diff changeset
    78
	TInt InterfaceToBearer(TUid aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    79
		TUint aOperationId,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    80
		const TDesC8& aData,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    81
		TRemConMessageType aMsgType, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    82
		TDes8& aBearerData) const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    83
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
    84
	TInt BearerToInterface(const TDesC8& aBearerData,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    85
		TUid& aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    86
		TUint& aOperationId,
20ac952a623c 201040_02
hgs
parents:
diff changeset
    87
		TRemConMessageType& aMsgType, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    88
		TDes8& aData) const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    89
20ac952a623c 201040_02
hgs
parents:
diff changeset
    90
	TBool SupportedUids(const TUid& aInterfaceUid, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    91
		const TUid& aBearerUid) const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    92
	TBool SupportedInterface(const TDesC8& aInterfaceData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
    93
		const TUid& aBearerUid) const;
20ac952a623c 201040_02
hgs
parents:
diff changeset
    94
20ac952a623c 201040_02
hgs
parents:
diff changeset
    95
private:
20ac952a623c 201040_02
hgs
parents:
diff changeset
    96
	CRemConAvrcpStatusConverter();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    97
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
    98
	static CAVCFrame* UnitInfoL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
    99
	static CAVCFrame* SubunitInfoL();
20ac952a623c 201040_02
hgs
parents:
diff changeset
   100
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   101
	static void SetUnitInfoResponseDataL(const TDesC8& aBearerData,
20ac952a623c 201040_02
hgs
parents:
diff changeset
   102
		TDes8& aRemConData);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   103
	static void SetSubunitInfoResponseDataL(const TDesC8& aBearerData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   104
		TDes8& aRemConData);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   105
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   106
	static void ReadCommandDataToInt(const TDesC8& aCommandData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   107
		TInt aOffset, TInt aLength, TInt& aValue);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   108
	static void SetCommandDataFromInt(TDes8& aCommandData, 
20ac952a623c 201040_02
hgs
parents:
diff changeset
   109
		TInt aOffset, TInt aLength, TInt aValue);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   110
	
20ac952a623c 201040_02
hgs
parents:
diff changeset
   111
	static void Panic(TStatusConverterPanic aPanic);
20ac952a623c 201040_02
hgs
parents:
diff changeset
   112
	};
20ac952a623c 201040_02
hgs
parents:
diff changeset
   113
20ac952a623c 201040_02
hgs
parents:
diff changeset
   114
#endif // REMCONAVRCPSTATUSCONVERTER_H