bluetoothappprofiles/avrcp/common/playerinformation.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 May 2010 13:01:44 +0300
changeset 33 837dcc42fd6a
parent 0 f63038272f30
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// playerinformation.h This file contains structures shared by the AVRCP API with the AVRCP bearer.
// 
//

/**
 @file
 @internalTechnology
 @released
*/

#ifndef REMCONPLAYERINFORMATION_H
#define REMCONPLAYERINFORMATION_H

#include "playerinformationtarget.h"
#include "avrcpipc.h"
#include <avcframe.h>

/**
 * The UID identifying the RemCon PlayerInformation interface.
 */
const TInt KRemConPlayerInformationUid = 0x10285B21;

// The Bluetooth SIG registered VendorId, see table 4.7
const AVC::TAVCVendorId KBluetoothSIGVendorId = 0x001958;

// This is the maximum length of a request that can be received
// GetElementAttributes (PDU 0x20) has the largest possible request
// which is identifier (8 bytes) + numAttr (1 byte) + attributes
// (255 * 4 bytes) the total of which is 1029 bytes.
const TInt KMaxLengthPlayerInformationMsg = 1029;


// Used by PDU 0x11 and PDU 0x12
class RRemConPlayerListOfAttributes : public RAvrcpIPC
{
public:
	TInt			iNumberAttributes;
	RArray<TInt>	iAttributes;

public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8& aOutData);
	IMPORT_C void Close();
};

// Used by PDU 0x13 (response) and PDU 0x14 (request)
class RRemConPlayerAttributeIdsAndValues : public RAvrcpIPC
{
public:
	TInt			iNumberAttributes;
	RArray<TInt>	iAttributeId;
	RArray<TInt>	iAttributeValue;

public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8& aOutData);
	IMPORT_C void Close();
};

class RSettingWithCharset
	{
public:
	IMPORT_C void Close();
	
public:
	TInt	iAttributeId;
	TUint16	iCharset;
	TInt	iStringLen;
	HBufC8*	iString;
};

// Used by PDU 0x15 and PDU 0x16
class RRemConGetPlayerApplicationTextResponse  : public RAvrcpIPC
{
public:
	TInt						iNumberAttributes;
	RArray<RSettingWithCharset>	iAttributes;

public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8& aOutData);
	IMPORT_C void Close();
	IMPORT_C TInt Size();
};

// Used by PDU 0x10
class RRemConGetCapabilitiesResponse : public RAvrcpIPC
{
public:
	TUint16			iCapabilityId;
	TUint16			iCapabilityCount;
	RArray<TUint32>	iCapabilities;

public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8& aOutData);
	IMPORT_C void Close();
};

// Used by PDU 0x30
class RRemConPlayerInformationGetPlayStatusResponse : public RAvrcpIPC
	{
public:
	TUint			iPlayPos;
	TUint			iTrackLength;
	MPlayerEventsObserver::TPlaybackStatus	iStatus;

public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8&);
	};

// Used by PDU 0xff
class RRemConPlayerInformationGetPlayStatusUpdateRequest : public RAvrcpIPC
	{
public:
	MPlayerEventsObserver::TPlaybackStatus	iStatus;

public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8&);
	};

// Used by PDU 0xff
class RRemConPlayerInformationGetPlayStatusUpdateResponse : public RAvrcpIPC
	{
public:
	MPlayerEventsObserver::TPlaybackStatus	iStatus;

public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8&);
	};

class RRemConPlayerInformation8BitResponse : public RAvrcpIPC
	{
public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8&);
	TUint8			iValue;
	};

class RRemConPlayerInformation32BitResponse : public RAvrcpIPC
	{
public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8&);
	TInt			iValue;
	};

class RRemConPlayerInformation64BitResponse : public RAvrcpIPC
	{
public:
	IMPORT_C void ReadL(const TDesC8& aData);
	IMPORT_C void WriteL(TDes8&);
	TUint64			iValue;
	};

#endif // REMCONPLAYERINFORMATION_H