--- a/bluetoothappprofiles/avrcp/avc/avcframe.h Wed Oct 13 13:15:31 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,540 +0,0 @@
-// Copyright (c) 2004-2010 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:
-//
-
-#ifndef AVCFRAME_H
-#define AVCFRAME_H
-
-/**
-@file
-@released
-@publishedPartner
-*/
-
-#include <avcpanel.h>
-#include <e32base.h>
-
-static const TInt KAVCFrameMaxLength = 0x200;
-static const TInt KAVCFrameHeaderLength = 0x3;
-static const TInt KAVCPassthroughFrameLength = 0x5;
-static const TUint8 KAVCCommandTypeMask = 0x0f;
-static const TUint8 KAVCResponseTypeMask = 0x0f;
-static const TUint8 KAVCSubunitTypeMask = 0xf8;
-static const TUint8 KAVCSubunitIDMask = 0x07;
-static const TUint8 KAVCCommandMaxRangeLength = 0x7;
-
-static const TUint KAVCVendorUniquePassthroughHeader = 7;
-static const TUint KAVCVendorIdBaseOffset = 5;
-static const TUint KAVCVendorIdLength = 3;
-
-static const TInt KAVCMaxVendorDependentPayload = KAVCFrameMaxLength-KAVCFrameHeaderLength-KAVCVendorIdLength;
-
-namespace AVC
- {
- enum TFrameType
- {
- ECommand,
- EResponse
- };
- /**
- As per section 7.3.1, AV/C Digital Interface Command Set General Specification v4.0
- As per section 7.3.2, AV/C Digital Interface Command Set General Specification v4.0
- */
- enum TCType
- {
- EControl = 0x0,
- EStatus = 0x1,
- ESpecificEnquiry = 0x2,
- ENotify = 0x3,
- EGeneralEnquiry = 0x4,
- EReserved1 = 0x5,
- EReserved2 = 0x6,
- EReserved3 = 0x7,
- ENotImplemented = 0x8,
- EAccepted = 0x9,
- ERejected = 0xa,
- EInTransition = 0xb,
- EImplemented = 0xc,
- EStable = 0xc, // NB: EImplemented and EStable are the same!
- EChanged = 0xd,
- EReserved4 = 0xe,
- EInterim = 0xf
- };
- /**
- As per sections 7.3.4.1 and 7.3.4.3, AV/C Digital Interface Command Set General Specification v4.0
-
- Extended subunit types should be coded as 0xXYY in this enumeration where
- X is the nth extension and YY is the type number. e.g. 0x101 would correspond
- to example 3 in table 7.9 and 0x201 would correspond to example 4.
- */
- enum TSubunitType
- {
- EMonitor = 0x00,
- EAudio = 0x01,
- EPrinter = 0x02,
- EDisc = 0x03,
- ETape = 0x04,
- ETuner = 0x05,
- ECA = 0x06,
- ECamera = 0x07,
- EPanel = 0x09,
- EBulletinBoard = 0x0a,
- ECameraStorage = 0x0b,
- EVendorUnique = 0x1c,
- ETypeExtended1 = 0x1e,
- EUnit = 0x1f,
- ETypeExtended2 = 0xff
- };
- /**
- As per sections 7.3.4.1 and 7.3.4.3, AV/C Digital Interface Command Set General Specification v4.0
-
- Extended subunit IDs should be coded as 0xXYY in this enumeration where
- X is the nth extension and YY is the ID number. e.g. 0x102 would correspond
- to example 2 in table 7.10 and 0x201 would correspond to example 3.
- */
- enum TSubunitID
- {
- EID0 = 0x00,
- EID1 = 0x01,
- EID2 = 0x02,
- EID3 = 0x04,
- EIDExtended1 = 0x05,
- EIgnore = 0x07,
- EIDExtended2 = 0xff
- };
- /**
- As per section 10.1.2, AV/C Digital Interface Command Set General Specification v4.0
-
- AV/C unit source plug addresses
- */
- enum TUnitInputPlug
- {
- ESerialIsochronousInput0 = 0x00,
- ESerialIsochronousInput1 = 0x01,
- ESerialIsochronousInput2 = 0x02,
- ESerialIsochronousInput3 = 0x03,
- ESerialIsochronousInput4 = 0x04,
- ESerialIsochronousInput5 = 0x05,
- ESerialIsochronousInput6 = 0x06,
- ESerialIsochronousInput7 = 0x07,
- ESerialIsochronousInput8 = 0x08,
- ESerialIsochronousInput9 = 0x09,
- ESerialIsochronousInput10 = 0x0a,
- ESerialIsochronousInput11 = 0x0b,
- ESerialIsochronousInput12 = 0x0c,
- ESerialIsochronousInput13 = 0x0d,
- ESerialIsochronousInput14 = 0x0e,
- ESerialIsochronousInput15 = 0x0f,
- ESerialIsochronousInput16 = 0x10,
- ESerialIsochronousInput17 = 0x11,
- ESerialIsochronousInput18 = 0x12,
- ESerialIsochronousInput19 = 0x13,
- ESerialIsochronousInput20 = 0x14,
- ESerialIsochronousInput21 = 0x15,
- ESerialIsochronousInput22 = 0x16,
- ESerialIsochronousInput23 = 0x17,
- ESerialIsochronousInput24 = 0x18,
- ESerialIsochronousInput25 = 0x19,
- ESerialIsochronousInput26 = 0x1a,
- ESerialIsochronousInput27 = 0x1b,
- ESerialIsochronousInput28 = 0x1c,
- ESerialIsochronousInput29 = 0x1d,
- ESerialIsochronousInput30 = 0x1e,
- EAnySerialIsochronousInput = 0x7f,
- EExternalInput0 = 0x80,
- EExternalInput1 = 0x81,
- EExternalInput2 = 0x82,
- EExternalInput3 = 0x83,
- EExternalInput4 = 0x84,
- EExternalInput5 = 0x85,
- EExternalInput6 = 0x86,
- EExternalInput7 = 0x87,
- EExternalInput8 = 0x88,
- EExternalInput9 = 0x89,
- EExternalInput10 = 0x8a,
- EExternalInput11 = 0x8b,
- EExternalInput12 = 0x8c,
- EExternalInput13 = 0x8d,
- EExternalInput14 = 0x8e,
- EExternalInput15 = 0x8f,
- EExternalInput16 = 0x90,
- EExternalInput17 = 0x91,
- EExternalInput18 = 0x92,
- EExternalInput19 = 0x93,
- EExternalInput20 = 0x94,
- EExternalInput21 = 0x95,
- EExternalInput22 = 0x96,
- EExternalInput23 = 0x97,
- EExternalInput24 = 0x98,
- EExternalInput25 = 0x99,
- EExternalInput26 = 0x9a,
- EExternalInput27 = 0x9b,
- EExternalInput28 = 0x9c,
- EExternalInput29 = 0x9d,
- EExternalInput30 = 0x9e,
- ESerialAsynchronousInput0 = 0xa0,
- ESerialAsynchronousInput1 = 0xa1,
- ESerialAsynchronousInput2 = 0xa2,
- ESerialAsynchronousInput3 = 0xa3,
- ESerialAsynchronousInput4 = 0xa4,
- ESerialAsynchronousInput5 = 0xa5,
- ESerialAsynchronousInput6 = 0xa6,
- ESerialAsynchronousInput7 = 0xa7,
- ESerialAsynchronousInput8 = 0xa8,
- ESerialAsynchronousInput9 = 0xa9,
- ESerialAsynchronousInput10 = 0xaa,
- ESerialAsynchronousInput11 = 0xab,
- ESerialAsynchronousInput12 = 0xac,
- ESerialAsynchronousInput13 = 0xad,
- ESerialAsynchronousInput14 = 0xae,
- ESerialAsynchronousInput15 = 0xaf,
- ESerialAsynchronousInput16 = 0xb0,
- ESerialAsynchronousInput17 = 0xb1,
- ESerialAsynchronousInput18 = 0xb2,
- ESerialAsynchronousInput19 = 0xb3,
- ESerialAsynchronousInput20 = 0xb4,
- ESerialAsynchronousInput21 = 0xb5,
- ESerialAsynchronousInput22 = 0xb6,
- ESerialAsynchronousInput23 = 0xb7,
- ESerialAsynchronousInput24 = 0xb8,
- ESerialAsynchronousInput25 = 0xb9,
- ESerialAsynchronousInput26 = 0xba,
- ESerialAsynchronousInput27 = 0xbb,
- ESerialAsynchronousInput28 = 0xbc,
- ESerialAsynchronousInput29 = 0xbd,
- ESerialAsynchronousInput30 = 0xbe,
- EAnySerialAsynchronousInput = 0xbf,
- EInvalidInput = 0xfe,
- EAnyExternalInput = 0xff
- };
- /**
- As per section 10.1.2, AV/C Digital Interface Command Set General Specification v4.0
-
- AV/C unit destination plug addresses
- */
- enum TUnitOutputPlug
- {
- ESerialIsochronousOutput0 = 0x00,
- ESerialIsochronousOutput1 = 0x01,
- ESerialIsochronousOutput2 = 0x02,
- ESerialIsochronousOutput3 = 0x03,
- ESerialIsochronousOutput4 = 0x04,
- ESerialIsochronousOutput5 = 0x05,
- ESerialIsochronousOutput6 = 0x06,
- ESerialIsochronousOutput7 = 0x07,
- ESerialIsochronousOutput8 = 0x08,
- ESerialIsochronousOutput9 = 0x09,
- ESerialIsochronousOutput10 = 0x0a,
- ESerialIsochronousOutput11 = 0x0b,
- ESerialIsochronousOutput12 = 0x0c,
- ESerialIsochronousOutput13 = 0x0d,
- ESerialIsochronousOutput14 = 0x0e,
- ESerialIsochronousOutput15 = 0x0f,
- ESerialIsochronousOutput16 = 0x10,
- ESerialIsochronousOutput17 = 0x11,
- ESerialIsochronousOutput18 = 0x12,
- ESerialIsochronousOutput19 = 0x13,
- ESerialIsochronousOutput20 = 0x14,
- ESerialIsochronousOutput21 = 0x15,
- ESerialIsochronousOutput22 = 0x16,
- ESerialIsochronousOutput23 = 0x17,
- ESerialIsochronousOutput24 = 0x18,
- ESerialIsochronousOutput25 = 0x19,
- ESerialIsochronousOutput26 = 0x1a,
- ESerialIsochronousOutput27 = 0x1b,
- ESerialIsochronousOutput28 = 0x1c,
- ESerialIsochronousOutput29 = 0x1d,
- ESerialIsochronousOutput30 = 0x1e,
- EAnySerialIsochronousOutput = 0x7f,
- EExternalOutput0 = 0x80,
- EExternalOutput1 = 0x81,
- EExternalOutput2 = 0x82,
- EExternalOutput3 = 0x83,
- EExternalOutput4 = 0x84,
- EExternalOutput5 = 0x85,
- EExternalOutput6 = 0x86,
- EExternalOutput7 = 0x87,
- EExternalOutput8 = 0x88,
- EExternalOutput9 = 0x89,
- EExternalOutput10 = 0x8a,
- EExternalOutput11 = 0x8b,
- EExternalOutput12 = 0x8c,
- EExternalOutput13 = 0x8d,
- EExternalOutput14 = 0x8e,
- EExternalOutput15 = 0x8f,
- EExternalOutput16 = 0x90,
- EExternalOutput17 = 0x91,
- EExternalOutput18 = 0x92,
- EExternalOutput19 = 0x93,
- EExternalOutput20 = 0x94,
- EExternalOutput21 = 0x95,
- EExternalOutput22 = 0x96,
- EExternalOutput23 = 0x97,
- EExternalOutput24 = 0x98,
- EExternalOutput25 = 0x99,
- EExternalOutput26 = 0x9a,
- EExternalOutput27 = 0x9b,
- EExternalOutput28 = 0x9c,
- EExternalOutput29 = 0x9d,
- EExternalOutput30 = 0x9e,
- ESerialAsynchronousOutput0 = 0xa0,
- ESerialAsynchronousOutput1 = 0xa1,
- ESerialAsynchronousOutput2 = 0xa2,
- ESerialAsynchronousOutput3 = 0xa3,
- ESerialAsynchronousOutput4 = 0xa4,
- ESerialAsynchronousOutput5 = 0xa5,
- ESerialAsynchronousOutput6 = 0xa6,
- ESerialAsynchronousOutput7 = 0xa7,
- ESerialAsynchronousOutput8 = 0xa8,
- ESerialAsynchronousOutput9 = 0xa9,
- ESerialAsynchronousOutput10 = 0xaa,
- ESerialAsynchronousOutput11 = 0xab,
- ESerialAsynchronousOutput12 = 0xac,
- ESerialAsynchronousOutput13 = 0xad,
- ESerialAsynchronousOutput14 = 0xae,
- ESerialAsynchronousOutput15 = 0xaf,
- ESerialAsynchronousOutput16 = 0xb0,
- ESerialAsynchronousOutput17 = 0xb1,
- ESerialAsynchronousOutput18 = 0xb2,
- ESerialAsynchronousOutput19 = 0xb3,
- ESerialAsynchronousOutput20 = 0xb4,
- ESerialAsynchronousOutput21 = 0xb5,
- ESerialAsynchronousOutput22 = 0xb6,
- ESerialAsynchronousOutput23 = 0xb7,
- ESerialAsynchronousOutput24 = 0xb8,
- ESerialAsynchronousOutput25 = 0xb9,
- ESerialAsynchronousOutput26 = 0xba,
- ESerialAsynchronousOutput27 = 0xbb,
- ESerialAsynchronousOutput28 = 0xbc,
- ESerialAsynchronousOutput29 = 0xbd,
- ESerialAsynchronousOutput30 = 0xbe,
- EAnySerialAsynchronousOutput= 0xbf,
- EMultipleOutputs = 0xfd,
- EInvalidOutput = 0xfe,
- EAnyExternalOutput = 0xff
- };
- /**
- As per section 10.2.3, AV/C Digital Interface Command Set General Specification v4.0
-
- AV/C subunit source plug addresses
- subunit does not have to implement any subunit plug if it does not send or receive any signals
- */
- enum TSubunitSourcePlug
- {
- ESource0 = 0x00,
- ESource1 = 0x01,
- ESource2 = 0x02,
- ESource3 = 0x03,
- ESource4 = 0x04,
- ESource5 = 0x05,
- ESource6 = 0x06,
- ESource7 = 0x07,
- ESource8 = 0x08,
- ESource9 = 0x09,
- ESource10 = 0x0a,
- ESource11 = 0x0b,
- ESource12 = 0x0c,
- ESource13 = 0x0d,
- ESource14 = 0x0e,
- ESource15 = 0x0f,
- ESource16 = 0x10,
- ESource17 = 0x11,
- ESource18 = 0x12,
- ESource19 = 0x13,
- ESource20 = 0x14,
- ESource21 = 0x15,
- ESource22 = 0x16,
- ESource23 = 0x17,
- ESource24 = 0x18,
- ESource25 = 0x19,
- ESource26 = 0x1a,
- ESource27 = 0x1b,
- ESource28 = 0x1c,
- ESource29 = 0x1d,
- ESource30 = 0x1e,
- EInvalidSource = 0xfe,
- EAnySource = 0xff
- };
- /**
- As per section 10.2.3, AV/C Digital Interface Command Set General Specification v4.0
-
- AV/C subunit destination plug
- subunit does not have to implement any subunit plug if it does not send or receive any signals
- */
- enum TSubunitDestinationPlug
- {
- EDestination0 = 0x00,
- EDestination1 = 0x01,
- EDestination2 = 0x02,
- EDestination3 = 0x03,
- EDestination4 = 0x04,
- EDestination5 = 0x05,
- EDestination6 = 0x06,
- EDestination7 = 0x07,
- EDestination8 = 0x08,
- EDestination9 = 0x09,
- EDestination10 = 0x0a,
- EDestination11 = 0x0b,
- EDestination12 = 0x0c,
- EDestination13 = 0x0d,
- EDestination14 = 0x0e,
- EDestination15 = 0x0f,
- EDestination16 = 0x10,
- EDestination17 = 0x11,
- EDestination18 = 0x12,
- EDestination19 = 0x13,
- EDestination20 = 0x14,
- EDestination21 = 0x15,
- EDestination22 = 0x16,
- EDestination23 = 0x17,
- EDestination24 = 0x18,
- EDestination25 = 0x19,
- EDestination26 = 0x1a,
- EDestination27 = 0x1b,
- EDestination28 = 0x1c,
- EDestination29 = 0x1d,
- EDestination30 = 0x1e,
- EMultipleDestinations = 0xfe,
- EInvalidDestination = 0xfe,
- EAnyDestination = 0xff
- };
- /**
- As per sections 11 and 12, AV/C Digital Interface Command Set General Specification v4.0
- Other commands are defined by the various subunit specifications
- */
- enum TOpcode
- {
- EPower = 0xb2,
- EUnitInfo = 0x30,
- ESubunitInfo = 0x31,
- EReserve = 0x01,
- EVersion = 0xb0,
- EVendorDependent = 0x00,
- EPlugInfo = 0x02,
- EChannelUsage = 0x12,
- EConnect = 0x24,
- EConnectAV = 0x20,
- EConnections = 0x22,
- EDigitalInput = 0x11,
- EDigitalOutput = 0x10,
- EDisconnect = 0x25,
- EDisconnectAV = 0x21,
- EInputPlugSignalFormat = 0x19,
- EOutputPlugSignalFormat = 0x18,
- EPassThrough = 0x7c
- };
-
- enum TPacketType
- {
- EASingle = 0x00,
- EStart = 0x01,
- EContinue = 0x10,
- EEnd = 0x11,
- };
-
- typedef TUint TAVCVendorId;
- }
-
-/**
-AVC frame creation and utilities.
-@released
-@publishedPartner
-*/
-NONSHARABLE_CLASS(CAVCFrame) : public CBase
- {
-public:
-
- // Construction / destruction
- // TBH this acts as a factory now and could (eventually!) return a derived class
- // the caller could check by calling Opcode
- // at the moment we are going to use the derived classes just for outbound responses
- IMPORT_C static CAVCFrame* NewL(AVC::TFrameType aFrameType,
- AVC::TCType aType,
- AVC::TSubunitType aSubunitType,
- AVC::TSubunitID aSubunitID);
-
- IMPORT_C static CAVCFrame* NewL(const TDesC8& aBuffer, AVC::TFrameType aType);
-
- IMPORT_C virtual ~CAVCFrame();
-
- // Utility
- IMPORT_C AVC::TFrameType FrameType() const;
- IMPORT_C static AVC::TFrameType FrameType(const TDesC8& aFrame);
- IMPORT_C void SetFrameType(AVC::TFrameType aFrameType);
-
- IMPORT_C AVC::TCType Type() const;
- IMPORT_C void SetType(AVC::TCType aType);
-
- IMPORT_C AVC::TSubunitType SubunitType() const;
- IMPORT_C AVC::TSubunitID SubunitID() const;
- IMPORT_C TUint8 Opcode() const;
- IMPORT_C TInt OperationId(TUint8& aOpId) const;
- IMPORT_C TInt ButtonAct(AVCPanel::TButtonAction& aButtonAction) const;
-
- IMPORT_C const TUint8& operator[](TInt aIndex) const;
- IMPORT_C const TDesC8& Data() const;
-
- IMPORT_C void Append(const TDesC8& aDes);
- IMPORT_C void Append(TChar aChar);
- IMPORT_C TInt DataLength() const;
-
- IMPORT_C static AVC::TOpcode OpcodeL(const TDesC8& aBuffer);
-
-private:
- CAVCFrame(AVC::TFrameType aFrameType);
-
- void ConstructL(AVC::TCType aType,
- AVC::TSubunitType aSubunitType,
- AVC::TSubunitID aSubunitID);
- void ConstructL(const TDesC8& aBuffer);
- static void FindExtensionL(const TDesC8& aBuffer, TInt& aSubunitTypeExtensionBytes, TInt& aSubunitIDExtensionBytes);
-
-private:
- RBuf8 iBuffer;
-
- AVC::TFrameType iFrameType;
- TInt iSubunitTypeExtensionBytes;
- TInt iSubunitIDExtensionBytes;
- };
-
-
-// Factory pattern stuff - these are useful to do donkey work,
-// but have existing clients treat them as the base class
-
-class CAVCVendorDependentResponse // codescanner::missingcclass
- {
-public:
- IMPORT_C static CAVCFrame* NewL(TUint aVendorId);
- };
-
-class CAVCPassthroughCommand // codescanner::missingcclass
- {
-public:
- };
-
-// likely not have newl because dont allocate on parse pattern
-class CAVCVendorDependentCommand // codescanner::missingcclass
- {
-public:
- IMPORT_C static TPtrC8 GetPayloadAndVID(const CAVCFrame& aFrame, TUint& aVID);
- };
-
-// likely not have newl because dont allocate on parse pattern
-class CAVCVendorUniquePassthroughCommand // codescanner::missingcclass
- {
-public:
- IMPORT_C static TPtrC8 GetPayloadAndVID(const CAVCFrame& aFrame, TUint& aVID);
- };
-
-#endif // AVCFRAME_H