accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/AccessoryTestControlPlugin/src/TfAccessoryTestControl.cpp
changeset 76 cb32bcc88bad
parent 41 c87e5f80c17d
--- a/accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/AccessoryTestControlPlugin/src/TfAccessoryTestControl.cpp	Wed Sep 29 15:13:21 2010 +0300
+++ b/accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/AccessoryTestControlPlugin/src/TfAccessoryTestControl.cpp	Fri Oct 08 14:33:25 2010 +0300
@@ -1,4698 +1,4699 @@
-/*
- * Copyright (c) 2005 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:
- *
- */
-
-// INCLUDE FILES
-
-#include <ctffactory.h>
-#include <tftypes.h>
-#include <AccPolSubblockNameArray.h>
-#include "siftrace.h"
-#include "CtfAccessoryTestcontrol.h"
-#include "CtfAccessoryTestCaseControl.h"
-#include <AccPolProprietaryNameValuePairs.h>
-#include <AccConGenericID.h>
-#include <AccPolPropGenericid.h>
-#include <AccessoryConnectionBase.h>
-#include <s32mem.h>
-
-#include <accpolobjectcon.h>
-#include <accpolaudiostreamformat.h>
-#include <accpolterminalbase.h>
-#include <accpoloutputterminal.h>
-#include <accpolinputterminal.h>
-#include <accpolmixerunit.h>
-#include <accpolfeatureunit.h>
-#include <accpolvolumecontrol.h>
-#include <accpolmutecontrol.h>
-#include <accpolselectorunit.h>
-
-#include <StartupDomainPSKeys.h>
-
-#include <E32Math.h>
-#include "AccClientServerMessages.h"
-#include <e32property.h>
-
-#include <accpolhdmiobjectcon.h>
-#include <tvoutconfigdef.h>
-
-//
-// ----------------------------------------------------------------------------------
-// MTFAccessoryTestControl* GetAccessoryTestControl
-// ----------------------------------------------------------------------------------	  
-MTFAccessoryTestControl* GetAccessoryTestControl( void )
-    {
-    CTFStub* stub = CTFFactory::Stub( KTFStubTypeAccessoryControl );
-    return STATIC_CAST( CTFAccessoryTestControl*, stub );
-    }
-//
-// ----------------------------------------------------------------------------------
-// MTFAccessoryTestControl::MTFAccessoryTestControl
-// ----------------------------------------------------------------------------------	  
-MTFAccessoryTestControl::MTFAccessoryTestControl( void )
-    {
-    }
-//
-// ----------------------------------------------------------------------------------
-// MTFAccessoryTestControl::~MTFAccessoryTestControl
-// ----------------------------------------------------------------------------------	  
-MTFAccessoryTestControl::~MTFAccessoryTestControl( void )
-    {
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CTFAccessoryTestControl
-// ----------------------------------------------------------------------------------	
-CTFAccessoryTestControl::CTFAccessoryTestControl( void ) :
-    CTFRemoteStub( KTFStubTypeAccessoryControl ),
-        iStack( CTFTestControlObserver::iOffset ), iStackIter( iStack )
-    {
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CTFAccessoryTestControl()" ) ) );
-
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CTFAccessoryTestControl() - return" ) ) );
-    }
-
-//lint -e1740 Pointer not directly deleted by destructor
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::~CTFAccessoryTestControl
-// ----------------------------------------------------------------------------------	
-CTFAccessoryTestControl::~CTFAccessoryTestControl( void )
-    {
-
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::~CTFAccessoryTestControl()" ) ) );
-    RProperty::Delete( KTFAccessoryTestProperty, KTFAccessoryMethod );
-
-    ResetAccessoryServices();
-
-    iAccessoryServer.Disconnect();
-
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::~CTFAccessoryTestControl() - Accessory Server connection closed" ) ) );
-
-    }
-//lint +e1740    
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::InitializeL
-// ----------------------------------------------------------------------------------	   
-void CTFAccessoryTestControl::InitializeL( void )
-    {
-
-    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::InitializeL( void ) - enter" ) ) );
-    TInt retval( KErrNone );
-
-    iAccessoryConnection = NULL;
-    iAccessorySingleConnection = NULL;
-    iAccessoryControl = NULL;
-    iAccessorySettings = NULL;
-    iAccessoryMode = NULL;
-    iAccessoryAudioControl = NULL;
-    iAccessoryBTControl = NULL;
-
-    iStreamContainer = NULL;
-    iTopologyContainer = NULL;
-    iSpeakerRightVolume = NULL;
-    iSpeakerLeftVolume = NULL;
-    iSpeakerMute = NULL;
-    iMicRightVolume = NULL;
-    iMicLeftVolume = NULL;
-
-    TAccPolGenericID emptyInstance;
-    for( TInt i( 0 ); i < 10; i++ )
-        {
-        iGenericId[i] = emptyInstance;
-        }
-
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::InitializeL()" ) ) );
-
-    User::LeaveIfError( iAccessoryServer.Connect() );
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::InitializeL() - Connected to accessory server" ) ) );
-
-    retval = RProperty::Define( KTFAccessoryTestProperty,
-        KTFAccessoryMethod,
-        RProperty::EByteArray );
-    if( retval != KErrAlreadyExists )
-        User::LeaveIfError( retval );
-    //attach to property
-
-
-    RProperty systemState;
-    User::LeaveIfError( systemState.Attach( KPSUidStartup, KPSGlobalSystemState ) );
-    TInt value( KErrNone );
-    //check value
-    TInt err = systemState.Get( value );
-
-    if( err != KErrNone )
-        {
-        err = systemState.Define( KPSUidStartup,
-            KPSGlobalSystemState,
-            RProperty::EInt );
-        TInt err = systemState.Get( value );
-        }
-
-    if( value != ESwStateNormalRfOn || value != ESwStateNormalRfOff || value
-        != ESwStateNormalBTSap )
-        {
-        TInt err = systemState.Set( KPSUidStartup,
-            KPSGlobalSystemState,
-            ESwStateNormalRfOn );
-        }
-
-    iInitialized = ETrue;
-
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::InitializeL - return" ) ) );
-    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::InitializeL( void ) - return" ) ) );
-    }
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::ResetAccessoryServices
-// ----------------------------------------------------------------------------------	
-void CTFAccessoryTestControl::ResetAccessoryServices( void )
-    {
-    ResetAccessoryServer();
-
-    iInitialized = EFalse;
-
-    iAccessoryServer.Close();
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::ResetAccessoryServer
-// ----------------------------------------------------------------------------------	
-void CTFAccessoryTestControl::ResetAccessoryServer( void )
-    {
-
-    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::ResetAccessoryServer()" ) ) );
-
-    CTFTestControlObserver* observerItem;
-    if( !iStack.IsEmpty() )
-        {
-        iStackIter.SetToFirst();
-
-        while( ( observerItem = iStackIter++ ) != NULL )
-            {
-            observerItem->Cancel();
-            User::After( 2000000 );
-            iStack.Remove( *observerItem );
-            COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Remove Observer" ) ) );
-            delete observerItem;
-            COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Delete Observer" ) ) );
-            };
-        }
-
-    iStack.Reset();
-
-    TAccPolGenericID emptyInstance;
-
-    for( TInt i( 0 ); i < 10; i++ )
-        {
-        COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Clear instances" ) ) );
-        if( KErrNotFound != iGenericId[i].UniqueID() )
-            {
-            if( iGenericId[i].PhysicalConnectionCaps( KPCBluetooth ) )
-                {
-                COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- BT Found" ) ) );
-                TBTDevAddr BTDevAddr( iGenericId[i].DeviceAddress() );
-                if( iAccessoryBTControl != NULL )
-                    {
-                    TRequestStatus status;
-                    status = KRequestPending;
-                    iAccessoryBTControl->DisconnectAccessory( status, BTDevAddr );
-                    User::WaitForRequest( status );
-                    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- BT Disconnected" ) ) );
-                    }
-                }
-            else
-                {
-                COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Wired Found" ) ) );
-                TPckgBuf<TTFAccessoryPublishAndSubscribe> buf;
-                buf().iMethod = ETFAsyDisc;
-                User::LeaveIfError( iSubscribe.Set( KTFAccessoryTestProperty,
-                    KTFAccessoryMethod,
-                    buf ) );
-                COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Wired Disconnected" ) ) );
-                }
-            }
-        iGenericId[i] = emptyInstance;
-        }
-
-    if( iAccessoryConnection != NULL )
-        {
-        iAccessoryConnection->CloseSubSession();
-        delete iAccessoryConnection;
-        iAccessoryConnection = NULL;
-        }
-
-    if( iAccessorySingleConnection != NULL )
-        {
-        iAccessorySingleConnection->CloseSubSession();
-        delete iAccessorySingleConnection;
-        iAccessorySingleConnection = NULL;
-        }
-    if( iAccessoryControl != NULL )
-        {
-        iAccessoryControl->CloseSubSession();
-        delete iAccessoryControl;
-        iAccessoryControl = NULL;
-        }
-    if( iAccessorySettings != NULL )
-        {
-        iAccessorySettings->CloseSubSession();
-        delete iAccessorySettings;
-        iAccessorySettings = NULL;
-        }
-    if( iAccessoryMode != NULL )
-        {
-        iAccessoryMode->CloseSubSession();
-        delete iAccessoryMode;
-        iAccessoryMode = NULL;
-        }
-
-    if( iAccessoryAudioControl != NULL )
-        {
-        iAccessoryAudioControl->CloseSubSession();
-        delete iAccessoryAudioControl;
-        iAccessoryAudioControl = NULL;
-        }
-
-    if( iAccessoryBTControl != NULL )
-        {
-        iAccessoryBTControl->CloseSubSession();
-        delete iAccessoryBTControl;
-        iAccessoryBTControl = NULL;
-        }
-
-    if( iSpeakerRightVolume != NULL )
-        {
-        delete iSpeakerRightVolume;
-        iSpeakerRightVolume = NULL;
-        }
-
-    if( iSpeakerLeftVolume != NULL )
-        {
-        delete iSpeakerLeftVolume;
-        iSpeakerLeftVolume = NULL;
-        }
-
-    if( iSpeakerMute != NULL )
-        {
-        delete iSpeakerMute;
-        iSpeakerMute = NULL;
-        }
-
-    if( iMicRightVolume != NULL )
-        {
-        delete iMicRightVolume;
-        iMicRightVolume = NULL;
-        }
-
-    if( iMicLeftVolume != NULL )
-        {
-        delete iMicLeftVolume;
-        iMicLeftVolume = NULL;
-        }
-
-    if( iStreamContainer != NULL )
-        {
-        delete iStreamContainer;
-        iStreamContainer = NULL;
-        }
-
-    if( iTopologyContainer != NULL )
-        {
-        delete iTopologyContainer;
-        iTopologyContainer = NULL;
-        }
-
-    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::ResetAccessoryServer() - Success" ) ) );
-    }
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CancelOutStandingRequest
-// ----------------------------------------------------------------------------------	    
-void CTFAccessoryTestControl::CancelOutStandingRequest()
-    {
-    iObserverItem->Cancel();
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::FillObjectL
-// ----------------------------------------------------------------------------------
-void CTFAccessoryTestControl::FillObjectL( CAccPolAudioStreamFormatCon* aContainer,
-    TStreamConObjectType aobjectType,
-    TInt64 aNumberOfObjects )
-    {
-
-    for( TInt i = 0; i < aNumberOfObjects; i++ )
-        {
-        switch( aobjectType )
-            {
-            case EAccPolAudioInputStreamObject:
-                {
-                CAccPolAudioStreamFormat* stream =
-                    CAccPolAudioStreamFormat::NewLC( aobjectType,
-                        i,
-                        KUidFormatPCM16,
-                        CAccPolAudioStreamFormat::EStereo,
-                        CAccPolAudioStreamFormat::EBitsPerSample16,
-                        i + 200 );
-                aContainer->AddL( *stream );
-                CleanupStack::PopAndDestroy( stream );
-                }
-                break;
-
-            case EAccPolAudioOutputStreamObject:
-                {
-
-                CAccPolAudioStreamFormat
-                    * stream =
-                        CAccPolAudioStreamFormat::NewLC( EAccPolAudioOutputStreamObject );
-
-                stream->SetUnitId( i );
-                stream->SetAudioFormat( KUidFormatPCM16 );
-                stream->SetStreamType( CAccPolAudioStreamFormat::EMono );
-                stream->SetBitResolution( CAccPolAudioStreamFormat::EBitsPerSample32 );
-                stream->SetSamFreq( i + 200 );
-
-                aContainer->AddL( *stream );
-                CleanupStack::PopAndDestroy( stream );
-                }
-                break;
-
-            default:
-                {
-                TRACE_ASSERT_ALWAYS;
-                }
-                break;
-            }
-        }
-
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CreateObjectPubSub
-// ----------------------------------------------------------------------------------
-void CTFAccessoryTestControl::CreateObjectPubSubL( TStreamConObjectType aobjectType,
-    TInt64 aNumberOfObjects,
-    TStreamConObjectType aobjectType2,
-    TInt64 aNumberOfObjects2 )
-    {
-    RProperty prop;
-    prop.Define( KTFAccessoryTestProperty,
-        KTFAccessoryObjectMethod,
-        RProperty::EByteArray );
-
-    CAccPolAudioStreamFormatCon* container =
-        CAccPolAudioStreamFormatCon::NewLC();
-
-    FillObjectL( container, aobjectType, aNumberOfObjects );
-    FillObjectL( container, aobjectType2, aNumberOfObjects2 );
-
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-
-    //Externalize container to buf
-    RBufWriteStream wStrm;
-    ( void )wStrm.Open( *buf );
-    wStrm.PushL();
-    container->ExternalizeL( wStrm );
-    wStrm.CommitL();
-    wStrm.Close();
-    wStrm.Pop();
-
-    TPtr8 ptr( buf->Ptr( 0 ) );
-
-    TInt retval = prop.Set( KTFAccessoryTestProperty,
-        KTFAccessoryObjectMethod,
-        ptr );
-
-    CleanupStack::PopAndDestroy( buf );
-    CleanupStack::PopAndDestroy( container );
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CreateObjectPubSub
-// ----------------------------------------------------------------------------------
-void CTFAccessoryTestControl::CreateTopologyObjectsToPubSubL(
-    TTFAccessoryTestCaseStateControl& aParameter )
-    {
-    RProperty prop;
-    prop.Define( KTFAccessoryTestProperty,
-        KTFAccessoryObjectMethod,
-        RProperty::EByteArray );
-
-    CAccPolAudioTopologyObjectCon* aObject =
-        CAccPolAudioTopologyObjectCon::NewLC();
-
-    //Speaker
-    //OT-3
-    CAccPolOutputTerminal* OT3 = CAccPolOutputTerminal::NewLC( 3,
-        CAccPolOutputTerminal::EAPTHeadphone,
-        2 );
-    //Connected to FU-2                                                                  
-    aObject->AddL( *OT3 );
-
-    //FU2
-    CAccPolFeatureUnit* FU2 = CAccPolFeatureUnit::NewLC( 2, 8 );
-    // Volume control object.
-    CAccPolVolumeControl* speakerRightVolume =
-        CAccPolVolumeControl::NewLC( KAccRightFrontChannel, 7, 5, 20, 5 );
-    CAccPolVolumeControl* speakerLeftVolume =
-        CAccPolVolumeControl::NewLC( KAccLeftFrontChannel, 7, 5, 20, 5 );
-
-    CAccPolMuteControl* speakermute =
-        CAccPolMuteControl::NewLC( KAccMasterChannel, ETrue );
-
-    FU2->AddControlL( *speakerRightVolume );
-    FU2->AddControlL( *speakerLeftVolume );
-    FU2->AddControlL( *speakermute );
-
-    //Connected to MU-8
-    aObject->AddL( *FU2 );
-
-    CAccPolMixerUnit* MU8 = CAccPolMixerUnit::NewLC( 8 );
-    MU8->AddSourceIdL( 1 );
-    MU8->AddSourceIdL( 7 );
-
-    //Connected to IT1 and FU7
-    aObject->AddL( *MU8 );
-
-    //Choice one
-    //IT-1
-    TUint8 aChannelCount = 2;
-    TUint16 aChannelConfig = 0;
-    aChannelConfig = aChannelConfig | KAccRightFrontChannel;
-    aChannelConfig = aChannelConfig | KAccLeftFrontChannel;
-
-    CAccPolInputTerminal* IT1 = CAccPolInputTerminal::NewLC( 1,
-        CAccPolInputTerminal::EAPTStream,
-        aChannelCount,
-        aChannelConfig );
-    aObject->AddL( *IT1 );
-
-    //choice two
-    //FU7
-    CAccPolFeatureUnit* FU7 = CAccPolFeatureUnit::NewLC( 7, 5 ); //Connected to FU5
-    // Volume control object.
-    CAccPolVolumeControl* sidetoneRightVolume =
-        CAccPolVolumeControl::NewLC( KAccMasterChannel, 7, 5, 20, 5 );
-    CAccPolVolumeControl* sidetoneLeftVolume =
-        CAccPolVolumeControl::NewLC( KAccMasterChannel, 7, 5, 20, 5 );
-
-    FU7->AddControlL( *sidetoneRightVolume );
-    FU7->AddControlL( *sidetoneLeftVolume );
-
-    aObject->AddL( *FU7 );
-
-    //Microphone
-    //IT-4
-
-    //OT-6
-    CAccPolOutputTerminal* OT6 = CAccPolOutputTerminal::NewLC( 6,
-        CAccPolOutputTerminal::EAPTStream,
-        10 );
-    //Connected to SU-10                                                           
-    aObject->AddL( *OT6 );
-
-    //SU-10
-    CAccPolSelectorUnit* SU10 = CAccPolSelectorUnit::NewLC( 10, 1 );
-
-    // Connected to FU 5                                                       
-    SU10->AddSourceIdL( 5 );
-    aObject->AddL( *SU10 );
-
-    //FU5
-    CAccPolFeatureUnit* FU5 = CAccPolFeatureUnit::NewLC( 5, 9 );
-
-    // Volume control object.
-    CAccPolVolumeControl* micRightVolume =
-        CAccPolVolumeControl::NewLC( KAccRightFrontChannel, 7, 5, 20, 5 );
-    CAccPolVolumeControl* micLeftVolume =
-        CAccPolVolumeControl::NewLC( KAccLeftFrontChannel, 7, 5, 20, 5 );
-    CAccPolMuteControl* micmute = CAccPolMuteControl::NewLC( KAccMasterChannel,
-        ETrue );
-
-    FU5->AddControlL( *micRightVolume );
-    FU5->AddControlL( *micLeftVolume );
-    FU5->AddControlL( *micmute );
-
-    //Connected to FU-9                                                               
-    aObject->AddL( *FU5 );
-
-    ///FU9
-    CAccPolFeatureUnit* FU9 = CAccPolFeatureUnit::NewLC( 9, 4 );
-    //Connected IT-4                                                               
-    aObject->AddL( *FU9 );
-
-    CAccPolInputTerminal* IT4 = CAccPolInputTerminal::NewLC( 4,
-        CAccPolInputTerminal::EAPTMicrophone,
-        aChannelCount,
-        aChannelConfig );
-    aObject->AddL( *IT4 );
-
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-
-    //Externalize container to buf
-    RBufWriteStream wStrm;
-    ( void )wStrm.Open( *buf );
-    wStrm.PushL();
-    aObject->ExternalizeL( wStrm );
-    wStrm.CommitL();
-    wStrm.Close();
-    wStrm.Pop();
-    TPtr8 ptr( buf->Ptr( 0 ) );
-    TInt retval = prop.Set( KTFAccessoryTestProperty,
-        KTFAccessoryObjectMethod,
-        ptr );
-    
-    // Notify ASY stub
-    if( aParameter.iArg2 )
-        {
-        PublishAndSubscribeL( aParameter );
-        }
-
-    CleanupStack::PopAndDestroy( buf );
-    CleanupStack::PopAndDestroy( IT4 );
-    CleanupStack::PopAndDestroy( FU9 );
-    CleanupStack::PopAndDestroy( micmute );
-    CleanupStack::PopAndDestroy( micLeftVolume );
-    CleanupStack::PopAndDestroy( micRightVolume );
-    CleanupStack::PopAndDestroy( FU5 );
-    CleanupStack::PopAndDestroy( SU10 );
-    CleanupStack::PopAndDestroy( OT6 );
-    CleanupStack::PopAndDestroy( sidetoneLeftVolume );
-    CleanupStack::PopAndDestroy( sidetoneRightVolume );
-    CleanupStack::PopAndDestroy( FU7 );
-    CleanupStack::PopAndDestroy( IT1 );
-    CleanupStack::PopAndDestroy( MU8 );
-    CleanupStack::PopAndDestroy( speakermute );
-    CleanupStack::PopAndDestroy( speakerLeftVolume );
-    CleanupStack::PopAndDestroy( speakerRightVolume );
-    CleanupStack::PopAndDestroy( FU2 );
-    CleanupStack::PopAndDestroy( OT3 );
-    CleanupStack::PopAndDestroy( aObject );
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CallAccessoryFunctionL
-// ----------------------------------------------------------------------------------	
-void CTFAccessoryTestControl::CallAccessoryFunctionL( TTFAccessoryTestCaseStateControl& aParameter )
-    {
-
-    //    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CallAccessoryFunctionL(%d, %d, %d)" ), aParameter.iAccessoryFunction, aParameter.iArg1, aParameter.iArg2 ) );
-    if( !iInitialized )
-        {
-        InitializeL();
-        }
-
-    TInt retval = KTFErrAccessoryServiceMissing;
-
-    switch( aParameter.iAccessoryFunction )
-        {
-        case ETFAccessorySet_ObjectPubSub:
-            {
-            CreateObjectPubSubL( ( TStreamConObjectType )aParameter.iArg1,
-                aParameter.iArg2,
-                ( TStreamConObjectType )aParameter.iArg3,
-                aParameter.iArg4 );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessorySet_TopologyObjectsPubSub:
-            {
-            CreateTopologyObjectsToPubSubL( aParameter );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessorySet_PubSub:
-            {
-            RProperty prop;
-            prop.Define( KTFAccessoryTestProperty,
-                KTFAccessoryNotifierMethod,
-                RProperty::EInt );
-            retval = prop.Set( KTFAccessoryTestProperty,
-                KTFAccessoryNotifierMethod,
-                aParameter.iArg1 );
-            }
-            break;
-
-        case ETFConnectWiredAccessory:
-            {
-            PublishAndSubscribeL( aParameter );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFClearStack:
-            {
-            CTFTestControlObserver* observerItem;
-            TInt count = 0;
-            if( !iStack.IsEmpty() )
-                {
-                iStackIter.SetToFirst();
-
-                while( ( observerItem = iStackIter++ ) != NULL )
-                    {
-                    observerItem->Cancel();
-                    iStack.Remove( *observerItem );
-                    delete observerItem;
-                    count++;
-                    };
-                }
-
-            TEST_CASE_TRACE( ( _L( "CTFAccessoryTestCaseControl::ETF_Pappa - count=%d " ), count ) );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFDisconnectWiredAccessory:
-            {
-            retval = KErrNone;
-            PublishAndSubscribeL( aParameter );
-            TAccPolGenericID emptyInstance;
-            iGenericId[aParameter.iGid] = emptyInstance;
-            }
-            break;
-
-        case ETFCheckCapabilityGroup:
-            {
-            if( aParameter.iArg2
-                == iGenericId[aParameter.iGid].SubblockCaps( aParameter.iArg3 ) )
-                {
-                retval = KErrNone;
-                }
-            else
-                {
-                retval = KErrNotFound;
-                }
-            }
-            break;
-
-        case ETFCheckCapability:
-            {
-            RAccessoryConnection accessoryConnectionn;
-            accessoryConnectionn.CreateSubSession( iAccessoryServer );
-
-            CAccPolSubblockNameArray* nameArrayy =
-                CAccPolSubblockNameArray::NewL();
-            CleanupStack::PushL( nameArrayy );
-            accessoryConnectionn.GetSubblockNameArrayL( iGenericId[aParameter.iGid],
-                *nameArrayy );
-
-            if( aParameter.iArg2 == nameArrayy->HasName( aParameter.iArg3 ) )
-                {
-                retval = KErrNone;
-                }
-            else
-                {
-                retval = KErrNotFound;
-                }
-
-            CleanupStack::PopAndDestroy( nameArrayy );
-            accessoryConnectionn.CloseSubSession();
-            }
-            break;
-
-        case ETFFindAndCheckRequest:
-
-            {
-            FindAndCheckRequestL(&retval, aParameter);
-		}
-            break;
-
-        case ETFFindAndCheckObjectRequest:
-            {
-            CTFAccessoryTestCaseControl* testCase = STATIC_CAST( CTFAccessoryTestCaseControl*, CurrentTestCase());
-            TRACE_ASSERT( testCase != NULL );
-            if( testCase != NULL )
-                {
-                if( !iStack.IsEmpty() )
-                    {
-                    iStackIter.SetToFirst();
-
-                    while( ( iObserverItem = iStackIter++ ) != NULL )
-                        {
-                        if( iObserverItem->FindRequest( aParameter.iRequestType ) )
-                            {
-                            testCase->CheckObjectRequest( iObserverItem->iStatus,
-                                iObserverItem->iObjectValue,
-                                iObserverItem->iCapabilityName );
-
-                            if( !iStack.IsEmpty() ) // Check if observes are already deleted by CheckRequest()
-                                {
-                                if( KTFDontDeleteObserver != aParameter.iArg1 )
-                                    {
-                                    iStack.Remove( *iObserverItem );
-                                    delete iObserverItem;
-                                    return;
-                                    }
-                                else
-                                    {
-                                    User::Leave( KTFDontDeleteObserver );
-                                    }
-                                }
-                            else
-                                {
-                                retval = KErrGeneral;
-                                }
-                            }
-                        }
-                    }
-                else
-                    {
-                    retval = KErrGeneral;
-                    }
-                }
-
-            retval = KErrNone;
-            }
-            break;
-
-            //
-            // Accessory Connection
-            //                 
-        case ETFAccessoryConnection_Open:
-            {
-                AccessoryConnectionOpenClose(ETFAccessoryConnection_Open, &retval);            
-            }
-            break;
-
-        case ETFAccessoryConnection_Close:
-
-            {
-                AccessoryConnectionOpenClose(ETFAccessoryConnection_Close, &retval);
-        	}        	
-            break;
-
-            //
-            // Accessory Settings
-            //                                           		
-        case ETFAccessorySettings_Open:
-            {
-                AccessorySettingsOpenClose(ETFAccessorySettings_Open, &retval);        	
-        	}
-            break;
-
-        case ETFAccessorySettings_Close:
-            {
-        	AccessorySettingsOpenClose(ETFAccessorySettings_Close, &retval);
-        	}
-            break;
-
-        case ETFSetHWDeviceSettings:
-            {
-            retval
-                = iAccessorySettings->SetHWDeviceSettingsL( aParameter.iArg1,
-                    ( TBool )aParameter.iArg2 );
-            }
-            break;
-
-        case ETFGetHWDeviceSettings:
-            {
-            TUint32 aSettingsValue( 0 );
-            retval = iAccessorySettings->GetHWDeviceSettings( aSettingsValue );
-
-            if( aSettingsValue != aParameter.iArg1 )
-                {
-                retval = KErrArgument;
-                }
-            }
-            break;
-
-        case ETFGetSupportedHWDeviceSettings:
-            {
-            TUint32 aSettingsSupportedValue( 0 );
-
-            retval
-                = iAccessorySettings->GetSupportedHWDeviceSettings( aSettingsSupportedValue );
-
-            if( aSettingsSupportedValue != ( aParameter.iArg1
-                | aParameter.iArg2 ) )
-                {
-                retval = KErrArgument;
-                }
-            }
-            break;
-
-        case ETFSetIntAccessoryModeSetting:
-            {
-            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
-            TAccModeSetting aSetting;
-
-            //Set Lights
-            aSetting.SetId( aParameter.iArg2 );
-            aSetting.SetTInt( aParameter.iArg4 );
-
-            retval = iAccessorySettings->SetAccessoryModeSettingL( aAccMode,
-                aSetting );
-            }
-            break;
-
-        case ETFSetBoolAccessoryModeSetting:
-            {
-            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
-            TAccModeSetting aSetting;
-
-            //Set Lights 
-            aSetting.SetId( aParameter.iArg2 );
-            aSetting.SetTBool( aParameter.iArg4 );
-
-            retval = iAccessorySettings->SetAccessoryModeSettingL( aAccMode,
-                aSetting );
-            }
-            break;
-
-        case ETFSetDesAccessoryModeSetting:
-            {
-            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
-            TAccModeSetting aSetting;
-
-            TBuf<KMaxAccModeSetting> buf;
-            buf.Num( aParameter.iArg3 );
-            //	buf.Copy( *aParameter.iArg3 );
-
-            aSetting.SetId( aParameter.iArg2 );
-            aSetting.SetTDes( buf );
-            retval = iAccessorySettings->SetAccessoryModeSettingL( aAccMode,
-                aSetting );
-            }
-            break;
-
-        case ETFGetIntAccessoryModeSetting:
-            {
-            TInt aSettingsValueInt;
-
-            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
-            TAccModeSetting aSetting;
-            aSetting.SetId( aParameter.iArg2 );
-
-            retval = iAccessorySettings->GetAccessoryModeSetting( aAccMode,
-                aSetting );
-
-            if( aSetting.Type() == EAccModeSettingInt )
-                {
-                retval = aSetting.GetTInt( aSettingsValueInt );
-
-                if( retval != KErrNotFound )
-                    {
-                    if( aSettingsValueInt == aParameter.iArg4 )
-                        {
-                        retval = KErrNone;
-                        }
-                    else
-                        {
-                        retval = KErrArgument;
-                        }
-                    }
-                }
-            else
-                {
-                retval = KErrNotFound;
-                }
-            }
-            break;
-
-        case ETFGetBoolAccessoryModeSetting:
-            {
-            TBool aSettingsValueBool;
-
-            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
-            TAccModeSetting aSetting;
-            aSetting.SetId( aParameter.iArg2 );
-
-            retval = iAccessorySettings->GetAccessoryModeSetting( aAccMode,
-                aSetting );
-
-            if( aSetting.Type() == EAccModeSettingBool )
-                {
-                retval = aSetting.GetTBool( aSettingsValueBool );
-
-                if( retval != KErrNotFound )
-                    {
-                    if( aSettingsValueBool == ( TBool )aParameter.iArg4 )
-                        {
-                        retval = KErrNone;
-                        }
-                    else
-                        {
-                        retval = KErrArgument;
-                        }
-                    }
-                }
-            else
-                {
-                retval = KErrNotFound;
-                }
-            }
-            break;
-
-        case ETFGetDesAccessoryModeSetting:
-            {
-            TBuf<KMaxAccModeSetting> aSettingsValueDes;
-
-            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
-            TAccModeSetting aSetting;
-            aSetting.SetId( aParameter.iArg2 );
-
-            retval = iAccessorySettings->GetAccessoryModeSetting( aAccMode,
-                aSetting );
-
-            if( aSetting.Type() == EAccModeSettingDes )
-                {
-                retval = aSetting.GetTDes( aSettingsValueDes );
-
-                if( retval != KErrNotFound )
-                    {
-                    TBuf<KMaxAccModeSetting> buffer;
-                    buffer.Num( aParameter.iArg3 );
-                    if( KErrNone == aSettingsValueDes.Compare( buffer ) )
-                        {
-                        retval = KErrNone;
-                        }
-                    else
-                        {
-                        retval = KErrArgument;
-                        }
-                    }
-                }
-            else
-                {
-                retval = KErrNotFound;
-                }
-            }
-            break;
-
-        case ETFSetSeveralAccessoryModeSetting:
-            {
-
-            TAccModeSetting accModeSettingIn;
-            TAccMode tAccMode = EAccModeWirelessHeadset;
-            TBuf<KMaxAccModeSetting> aDesIn;
-            // Set
-            // setting 1
-            accModeSettingIn.SetId( 11 ); // unknown TInt
-            accModeSettingIn.SetTInt( 1 );
-            TAccModeSettingArray arrayIn;
-            arrayIn.AddSetting( accModeSettingIn );
-
-            // setting 2
-            accModeSettingIn.SetId( 12 ); // unknown Des
-            _LIT( KAccSetting2, "012345678901234567890" );
-            aDesIn.Copy( KAccSetting2 );
-            accModeSettingIn.SetTDes( aDesIn );
-            arrayIn.AddSetting( accModeSettingIn );
-
-            // setting 3
-            accModeSettingIn.SetId( 13 ); // unknown TBool
-            accModeSettingIn.SetTBool( ETrue );
-            arrayIn.AddSetting( accModeSettingIn );
-
-            retval = iAccessorySettings->SetAccessoryModeSettingsL( tAccMode,
-                arrayIn );
-
-            }
-            break;
-
-        case ETFGetSeveralAccessoryModeSetting:
-            {
-
-            TAccModeSetting accModeSettingOut;
-            TAccMode tAccMode = EAccModeWirelessHeadset;
-            TBuf<KMaxAccModeSetting> aDesOut;
-            TAccModeSettingArray arrayOut;
-            TInt intOut( 0 );
-            // set input parameters for GetAccessoryModeSettings()
-            // setting 11
-            accModeSettingOut.SetId( 11 );
-            arrayOut.AddSetting( accModeSettingOut );
-
-            // setting 12
-            accModeSettingOut.SetId( 12 );
-            arrayOut.AddSetting( accModeSettingOut );
-
-            // setting 13
-            accModeSettingOut.SetId( 13 );
-            arrayOut.AddSetting( accModeSettingOut );
-
-            retval = iAccessorySettings->GetAccessoryModeSettings( tAccMode,
-                arrayOut );
-
-            // Check that got settings are right
-
-            TInt count = arrayOut.GetArraySize();
-            TInt foundCount( 0 );
-
-            for( TInt index = 0; index < count; index++ )
-                {
-                arrayOut.GetSetting( index, accModeSettingOut );
-
-                if( 11 == accModeSettingOut.Id() )
-                    {
-
-                    accModeSettingOut.GetTInt( intOut );
-
-                    if( 1 == intOut )
-                        {
-                        foundCount++;
-                        }
-                    }
-
-                if( 12 == accModeSettingOut.Id() )
-                    {
-                    accModeSettingOut.GetTDes( aDesOut );
-
-                    if( KErrNone == aDesOut.Compare( _L("012345678901234567890") ) )
-                        {
-                        foundCount++;
-                        }
-
-                    }
-
-                if( 13 == accModeSettingOut.Id() )
-                    {
-
-                    accModeSettingOut.GetTBool( intOut );
-
-                    if( intOut )
-                        {
-                        foundCount++;
-                        }
-                    }
-                }
-
-            if( foundCount != 3 )
-                {
-                retval = KErrNotFound;
-                }
-
-            //
-            // Reset Settings
-            //
-            TAccModeSetting accModeSettingIn;
-            TBuf<KMaxAccModeSetting> aDesIn;
-            // Set
-            // setting 1
-            accModeSettingIn.SetId( 11 ); // unknown TInt
-            accModeSettingIn.SetTInt( 0 );
-            TAccModeSettingArray arrayIn;
-            arrayIn.AddSetting( accModeSettingIn );
-
-            // setting 2
-            accModeSettingIn.SetId( 12 ); // unknown Des
-            _LIT( KAccSetting2, "" );
-            aDesIn.Copy( KAccSetting2 );
-            accModeSettingIn.SetTDes( aDesIn );
-            arrayIn.AddSetting( accModeSettingIn );
-
-            // setting 3
-            accModeSettingIn.SetId( 13 ); // unknown TBool
-            accModeSettingIn.SetTBool( EFalse );
-            arrayIn.AddSetting( accModeSettingIn );
-
-            iAccessorySettings->SetAccessoryModeSettingsL( tAccMode, arrayIn );
-            }
-            break;
-
-            //
-            // Accessory Single Connection
-            //                    		
-        case ETFAccessorySingleConnection_Open:
-            {
-            if( iAccessorySingleConnection == NULL )
-                {
-                iAccessorySingleConnection
-                    = new ( ELeave ) RAccessorySingleConnection;
-                retval
-                    = iAccessorySingleConnection->CreateSubSession( iAccessoryServer );
-                }
-            else
-                {
-                retval = KErrNone;
-                }
-            }
-            break;
-
-        case ETFAccessorySingleConnection_Close:
-            {
-            TRACE_ASSERT( iAccessorySingleConnection != NULL );
-
-            if( iAccessorySingleConnection != NULL )
-                {
-                iAccessorySingleConnection->CloseSubSession();
-                delete iAccessorySingleConnection;
-                iAccessorySingleConnection = NULL;
-                }
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryNotifyNewAccessoryConnected:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyNewAccessoryConnected( iGenericId[aParameter.iGid] );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryNotifyAccessoryDisconnected:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyAccessoryDisconnected( iGenericId[aParameter.iGid] );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFNotifyIntAccessoryValueChanged:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyIntegerAccessoryValueChanged( iGenericId[aParameter.iGid],
-                aParameter.iArg3 );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFNotifyBoolAccessoryValueChanged:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyBooleanAccessoryValueChanged( iGenericId[aParameter.iGid],
-                aParameter.iArg3 );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFNotifyObjectAccessoryValueChanged:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyObjectAccessoryValueChanged( iGenericId[aParameter.iGid],
-                aParameter.iArg3 );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryIntGetValue:
-            {
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TAccValueTypeTInt aIntValue;
-
-            iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid],
-                aNameRecord,
-                aIntValue );
-
-            if( aIntValue.iValue == aParameter.iArg2 )
-                {
-                retval = KErrNone;
-                }
-            else
-                {
-                retval = KErrArgument;
-                }
-            }
-            break;
-
-        case ETFAccessoryBoolGetValue:
-            {
-            RAccessoryConnection accessoryConnection;
-            accessoryConnection.CreateSubSession( iAccessoryServer );
-
-            TAccPolNameRecord nameRecord;
-            nameRecord.SetNameL( aParameter.iArg3 );
-            TAccValueTypeTBool boolValue;
-            retval
-                = accessoryConnection.GetValueL( iGenericId[aParameter.iGid],
-                    nameRecord,
-                    boolValue );
-
-            if( boolValue.iValue != aParameter.iArg1 )
-                {
-                retval = KErrArgument;
-                }
-
-            accessoryConnection.CloseSubSession();
-            }
-            break;
-
-        case ETFAccessoryDes8GetValue:
-            {
-            TBuf8<80>
-                worm( _L8("Malicious Worm Attach with extra long data with extra long content" ));
-            TBuf8<85> valueBuf;
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg1 );
-            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, valueBuf ) );
-
-            if( err == aParameter.iExpectedResult )
-                {
-
-                if( aParameter.iExpectedResult == KErrArgument )
-                    {
-                    retval = KErrNone;
-                    }
-                else
-                    {
-                    if( KErrNone == valueBuf.Compare( worm ) )
-                        {
-                        RDebug::RawPrint( valueBuf );
-                        retval = KErrNone;
-                        }
-                    else
-                        {
-                        retval = KErrArgument;
-                        }
-                    }
-                }
-            else
-                {
-                retval = KErrArgument;
-                }
-            }
-            break;
-
-        case ETFAccessoryObjectParseTopology:
-            {
-
-            TInt rspeaker( KErrGeneral );
-            TInt lspeaker( KErrGeneral );
-            TInt rmic( KErrGeneral );
-            TInt lmic( KErrGeneral );
-            TInt mute( KErrGeneral );
-            TInt sidetone( KErrGeneral );
-            //
-            // Find speaker volume object in USB headset case.
-            //                                      
-            CAccPolAudioUnitBase* audioUnit = NULL;
-            CAccPolAudioControlBase* audioControl = NULL;
-            //CAccPolOutputTerminal* ouputTerminal = NULL;	          	          
-
-            if( iTopologyContainer->OutputTerminalL( CAccPolOutputTerminal::EAPTHeadphone,
-                audioUnit ) )
-                {
-                if( audioUnit->GetNextAudioUnitL( audioUnit ) )
-                    {
-                    if( audioUnit->ObjectType()
-                        == EAccPolAudioFeatureUnitObject )
-                        {
-                        if( audioUnit->GetAudioControlL( EAccPolAudioVolumeControlObject,
-                            KAccRightFrontChannel,
-                            audioControl ) )
-                            {
-                            iSpeakerRightVolume = CAccPolVolumeControl::NewL();
-                            *iSpeakerRightVolume
-                                = *reinterpret_cast<CAccPolVolumeControl*> ( audioControl );
-                            rspeaker = KErrNone;
-                            }
-                        if( audioUnit->GetAudioControlL( EAccPolAudioVolumeControlObject,
-                            KAccLeftFrontChannel,
-                            audioControl ) )
-                            {
-                            iSpeakerLeftVolume = CAccPolVolumeControl::NewL();
-                            *iSpeakerLeftVolume
-                                = *reinterpret_cast<CAccPolVolumeControl*> ( audioControl );
-                            lspeaker = KErrNone;
-                            }
-                        if( audioUnit->GetAudioControlL( EAccPolAudioMuteControlObject,
-                            KAccMasterChannel,
-                            audioControl ) )
-                            {
-                            iSpeakerMute = CAccPolMuteControl::NewL();
-                            *iSpeakerMute
-                                = *reinterpret_cast<CAccPolMuteControl*> ( audioControl );
-                            mute = KErrNone;
-                            }
-
-                        }
-                    }
-                }
-
-            //
-            // Find mic volume object in USB headset case.
-            //                                                                                           
-            if( iTopologyContainer->OutputTerminalL( CAccPolOutputTerminal::EAPTStream,
-                audioUnit ) )
-                {
-                do
-                    {
-                    }
-                while( audioUnit->GetNextAudioUnitL( audioUnit )
-                    && audioUnit->ObjectType() != EAccPolAudioFeatureUnitObject );
-
-                RPointerArray<CAccPolAudioControlBase> aAudioControls;
-                audioUnit->GetAudioControlsL( KAccRightFrontChannel,
-                    aAudioControls );
-
-                if( aAudioControls.Count() > 0 )
-                    {
-                    iMicRightVolume = CAccPolVolumeControl::NewL();
-                    *iMicRightVolume
-                        = *reinterpret_cast<CAccPolVolumeControl*> ( aAudioControls.operator[]( 0 ) );
-                    rmic = KErrNone;
-                    }
-                aAudioControls.Reset();
-
-                audioUnit->GetAudioControlsL( KAccLeftFrontChannel,
-                    aAudioControls );
-
-                if( aAudioControls.Count() > 0 )
-                    {
-                    iMicLeftVolume = CAccPolVolumeControl::NewL();
-                    *iMicLeftVolume
-                        = *reinterpret_cast<CAccPolVolumeControl*> ( aAudioControls.operator[]( 0 ) );
-                    lmic = KErrNone;
-                    }
-
-                //
-                // Find sidetone volume object in USB headset case.
-                //                                                               
-                iTopologyContainer->OutputTerminalL( CAccPolOutputTerminal::EAPTHeadphone,
-                    audioUnit );
-
-                do
-                    {
-                    audioUnit->GetNextAudioUnitL( audioUnit );
-                    }
-                while( audioUnit->ObjectType() != EAccPolAudioMixerUnitObject );
-
-                if( audioUnit->SourceIdCount() > 1 )
-                    {
-                    RPointerArray<CAccPolAudioUnitBase> aAudioUnits;
-                    audioUnit->GetAudioUnitListL( aAudioUnits );
-
-                    for( TInt i = 0; i < aAudioUnits.Count(); i++ )
-                        {
-                        if( aAudioUnits.operator[]( i )->ObjectType()
-                            == EAccPolAudioFeatureUnitObject )
-                            {
-                            audioUnit = aAudioUnits.operator[]( i );
-                            break;
-                            }
-                        }
-                    }
-
-                aAudioControls.Reset();
-                audioUnit->GetAudioControlsL( aAudioControls );
-                if( aAudioControls.Count() == 2 )
-                    {
-                    sidetone = KErrNone;
-                    }
-                }
-
-            retval = ( rspeaker | lspeaker | rmic | lmic | mute | sidetone );
-
-            }
-            break;
-
-        case ETFAccessoryGetStreamObjects:
-            {
-            if( iStreamContainer != NULL )
-                {
-                delete iStreamContainer;
-                iStreamContainer = NULL;
-                }
-            iStreamContainer = CAccPolAudioStreamFormatCon::NewL();
-
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iStreamContainer ) );
-
-            if( err == aParameter.iExpectedResult )
-                {
-                //externalize container to bufFromASY        
-                CBufFlat* bufFromASY =
-                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-                CleanupStack::PushL( bufFromASY );
-                bufFromASY->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-                RBufWriteStream wStrm;
-                ( void )wStrm.Open( *bufFromASY );
-                wStrm.PushL();
-                iStreamContainer->ExternalizeL( wStrm );
-                wStrm.CommitL();
-                wStrm.Close();
-                wStrm.Pop();
-                TPtr8 ptrbufFromASY( bufFromASY->Ptr( 0 ) );
-
-                //Read container from PubSub
-                RProperty prop;
-                RBufReadStream rStrm;
-                CBufFlat* bufFromPubSub =
-                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-                CleanupStack::PushL( bufFromPubSub );
-                bufFromPubSub->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-                TPtr8 ptrBufFromPubSub( bufFromPubSub->Ptr( 0 ) );
-                TInt ret = prop.Get( KTFAccessoryTestProperty,
-                    KTFAccessoryObjectMethod,
-                    ptrBufFromPubSub );
-
-                TInt k = sizeof( bufFromASY );
-                TInt kk = sizeof( bufFromPubSub );
-
-                bufFromASY->Compress();
-                bufFromPubSub->Compress();
-
-                k = sizeof( bufFromASY );
-                kk = sizeof( bufFromPubSub );
-
-                retval
-                    = ( 0
-                        == memcompare( reinterpret_cast<TUint8*> ( &ptrbufFromASY ),
-                            sizeof( bufFromASY ),
-                            reinterpret_cast<TUint8*> ( &ptrBufFromPubSub ),
-                            sizeof( bufFromASY ) ) ) ? KErrNone : KErrGeneral;
-
-                CleanupStack::PopAndDestroy( bufFromPubSub );
-                CleanupStack::PopAndDestroy( bufFromASY );
-                }
-            }
-            break;
-
-        case ETFAccessoryGetStreamObjectsFromPolicy:
-            {
-            if( iStreamContainer != NULL )
-                {
-                delete iStreamContainer;
-                iStreamContainer = NULL;
-                }
-            iStreamContainer = CAccPolAudioStreamFormatCon::NewL();
-
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iStreamContainer ) );
-
-            RPointerArray<CAccPolAudioStreamFormat> inputStreamObjects;
-            RPointerArray<CAccPolAudioStreamFormat> outputStreamObjects;
-
-            iStreamContainer->GetInputStreamFormatsL( inputStreamObjects );
-            iStreamContainer->GetOutputStreamFormatsL( outputStreamObjects );
-
-            CAccPolAudioStreamFormat* inputStream =
-                inputStreamObjects.operator[]( 0 );
-            CAccPolAudioStreamFormat* ouputStream =
-                outputStreamObjects.operator[]( 0 );
-
-            retval = err;
-            }
-            break;
-
-        case ETFAccessorySetStreamObjects:
-            {
-            CAccPolAudioStreamFormatCon* setContainer = CAccPolAudioStreamFormatCon::NewLC();
-
-            RPointerArray<CAccPolAudioStreamFormat> inputStreamObjects;
-            RPointerArray<CAccPolAudioStreamFormat> outputStreamObjects;
-
-            iStreamContainer->GetInputStreamFormatsL( inputStreamObjects );
-            CAccPolAudioStreamFormat* inputStream = NULL;
-            for(TInt i=0; i<inputStreamObjects.Count(); i++)
-                {
-                inputStream = inputStreamObjects.operator[]( i );
-                if( inputStream->AudioFormat() == KUidFormatPCM16 &&
-                    inputStream->UnitId() == 0 &&
-                    inputStream->StreamType() == CAccPolAudioStreamFormat::EStereo &&
-                    inputStream->BitResolution() == CAccPolAudioStreamFormat::EBitsPerSample16 &&
-                    inputStream->SamFreq() == 200 )
-                    {
-                    setContainer->AddL( *inputStream );
-                    break;
-                    }
-                }
-
-            iStreamContainer->GetOutputStreamFormatsL( outputStreamObjects );
-            CAccPolAudioStreamFormat* outputStream = NULL;
-            for(TInt i=0; i<outputStreamObjects.Count(); i++)
-                {
-                outputStream = outputStreamObjects.operator[]( i );
-                if( outputStream->AudioFormat() == KUidFormatPCM16 &&
-                    outputStream->UnitId() == 0 &&
-                    outputStream->StreamType() == CAccPolAudioStreamFormat::EMono &&
-                    outputStream->BitResolution() == CAccPolAudioStreamFormat::EBitsPerSample32 &&
-                    outputStream->SamFreq() == 200 )
-                    {
-                    setContainer->AddL( *outputStream );
-                    break;
-                    }
-                }
-
-            RBufWriteStream wStrm;
-            CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-            CleanupStack::PushL( buf );
-            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-            (void)wStrm.Open( *buf );
-            wStrm.PushL();
-            setContainer->ExternalizeL( wStrm );
-            wStrm.Close();
-            wStrm.Pop();
-            TPtr8 ptr( buf->Ptr( 0 ) );
-
-            retval = RProperty::Set( KTFAccessoryTestProperty, KTFAccessoryObjectMethod, ptr );
-
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-
-            TRAPD( setErr, iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, *setContainer ) );
-
-            retval = setErr;
-
-            CleanupStack::PopAndDestroy( buf );
-            CleanupStack::PopAndDestroy( setContainer );
-            inputStreamObjects.Close();
-            outputStreamObjects.Close();
-            }
-        break;
-
-        case ETFAccessoryGetTopologyObjects:
-            {
-            if( iTopologyContainer != NULL )
-                {
-                delete iTopologyContainer;
-                iTopologyContainer = NULL;
-                }
-
-            iTopologyContainer = CAccPolAudioTopologyObjectCon::NewL();
-
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iTopologyContainer ) );
-
-            if( err == aParameter.iExpectedResult )
-                {
-                //externalize container to bufFromASY        
-                CBufFlat* bufFromASY =
-                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-                CleanupStack::PushL( bufFromASY );
-                bufFromASY->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-                RBufWriteStream wStrm;
-                ( void )wStrm.Open( *bufFromASY );
-                wStrm.PushL();
-                iTopologyContainer->ExternalizeL( wStrm );
-                wStrm.CommitL();
-                wStrm.Close();
-                wStrm.Pop();
-                TPtr8 ptrbufFromASY( bufFromASY->Ptr( 0 ) );
-
-                //Read container from PubSub
-                RProperty prop;
-                RBufReadStream rStrm;
-                CBufFlat* bufFromPubSub =
-                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-                CleanupStack::PushL( bufFromPubSub );
-                bufFromPubSub->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-                TPtr8 ptrBufFromPubSub( bufFromPubSub->Ptr( 0 ) );
-                TInt ret = prop.Get( KTFAccessoryTestProperty,
-                    KTFAccessoryObjectMethod,
-                    ptrBufFromPubSub );
-
-                TInt k = sizeof( bufFromASY );
-                TInt kk = sizeof( bufFromPubSub );
-
-                bufFromASY->Compress();
-                bufFromPubSub->Compress();
-
-                k = sizeof( bufFromASY );
-                kk = sizeof( bufFromPubSub );
-
-                retval
-                    = ( 0
-                        == memcompare( reinterpret_cast<TUint8*> ( &ptrbufFromASY ),
-                            sizeof( bufFromASY ),
-                            reinterpret_cast<TUint8*> ( &ptrBufFromPubSub ),
-                            sizeof( bufFromASY ) ) ) ? KErrNone : KErrGeneral;
-
-                CleanupStack::PopAndDestroy( bufFromPubSub );
-                CleanupStack::PopAndDestroy( bufFromASY );
-                }
-            }
-            break;
-
-        case ETFAccessoryGetVolumeControlObjects:
-            {
-
-            if( iTopologyContainer != NULL )
-                {
-                delete iTopologyContainer;
-                iTopologyContainer = NULL;
-                }
-
-            iTopologyContainer = CAccPolAudioTopologyObjectCon::NewL();
-
-            iTopologyContainer->AddL( *iSpeakerRightVolume );
-            iTopologyContainer->AddL( *iSpeakerLeftVolume );
-
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iTopologyContainer ) );
-
-            CAccPolVolumeControl* rightVolume;
-            rightVolume = ( CAccPolVolumeControl* )iTopologyContainer->AtL( 0 );
-
-            CAccPolVolumeControl* leftVolume;
-            leftVolume = ( CAccPolVolumeControl* )iTopologyContainer->AtL( 1 );
-
-            if( err == aParameter.iExpectedResult )
-                {
-                retval = KErrNone;
-                }
-            }
-            break;
-
-        case ETFAccessorySetVolumeControlObjects:
-            {
-            RBufWriteStream wStrm;
-            CAccPolAudioTopologyObjectCon* setContainer =
-                CAccPolAudioTopologyObjectCon::NewLC();
-
-            iSpeakerRightVolume->SetVolumeDb( aParameter.iArg1 );
-            iSpeakerRightVolume->SetMinVolumeDb( aParameter.iArg2 );
-            iSpeakerRightVolume->SetMaxVolumeDb( aParameter.iArg4 );
-            iSpeakerRightVolume->SetVolumeResDb( 0x05 );
-            setContainer->AddL( *iSpeakerRightVolume );
-            iSpeakerLeftVolume->SetVolumeDb( aParameter.iArg1 );
-            iSpeakerLeftVolume->SetMinVolumeDb( aParameter.iArg2 );
-            iSpeakerLeftVolume->SetMaxVolumeDb( aParameter.iArg4 );
-            iSpeakerLeftVolume->SetVolumeResDb( 0x05 );
-            setContainer->AddL( *iSpeakerLeftVolume );
-
-            CBufFlat* buf =
-                CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-            CleanupStack::PushL( buf );
-            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-            ( void )wStrm.Open( *buf );
-            wStrm.PushL();
-            setContainer->ExternalizeL( wStrm );
-            wStrm.Close();
-            wStrm.Pop();
-            TPtr8 ptr( buf->Ptr( 0 ) );
-
-            retval = RProperty::Set( KTFAccessoryTestProperty,
-                KTFAccessoryObjectMethod,
-                ptr );
-
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TRAPD( setErr, iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, *setContainer ) );
-
-            retval = setErr;
-
-            CleanupStack::PopAndDestroy( buf );
-            CleanupStack::PopAndDestroy( setContainer );
-            }
-            break;
-
-        case ETFAccessoryGetMuteControlObjects:
-            {
-
-            if( iTopologyContainer != NULL )
-                {
-                delete iTopologyContainer;
-                iTopologyContainer = NULL;
-                }
-
-            iTopologyContainer = CAccPolAudioTopologyObjectCon::NewL();
-
-            iTopologyContainer->AddL( *iSpeakerMute );
-
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iTopologyContainer ) );
-
-            CAccPolMuteControl* mute;
-            mute = ( CAccPolMuteControl* )iTopologyContainer->AtL( 0 );
-
-            if( err == aParameter.iExpectedResult )
-                {
-                retval = KErrNone;
-                }
-            }
-            break;
-
-        case ETFAccessorySetMuteControlObjects:
-            {
-            RBufWriteStream wStrm;
-            CAccPolAudioTopologyObjectCon* setContainer =
-                CAccPolAudioTopologyObjectCon::NewLC();
-
-            iSpeakerMute->SetMute( aParameter.iArg1 );
-            setContainer->AddL( *iSpeakerMute );
-
-            CBufFlat* buf =
-                CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-            CleanupStack::PushL( buf );
-            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-            ( void )wStrm.Open( *buf );
-            wStrm.PushL();
-            setContainer->ExternalizeL( wStrm );
-            wStrm.Close();
-            wStrm.Pop();
-            TPtr8 ptr( buf->Ptr( 0 ) );
-
-            retval = RProperty::Set( KTFAccessoryTestProperty,
-                KTFAccessoryObjectMethod,
-                ptr );
-
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TRAPD( setErr, iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, *setContainer ) );
-
-            retval = setErr;
-
-            CleanupStack::PopAndDestroy( buf );
-            CleanupStack::PopAndDestroy( setContainer );
-            }
-            break;
-
-            //
-            // Accessory Control
-            //           
-
-        case ETFAccessoryControl_Open:
-            {
-            if( iAccessoryControl == NULL )
-                {
-                iAccessoryControl = new ( ELeave ) RAccessoryControl;
-                retval = iAccessoryControl->CreateSubSession( iAccessoryServer );
-                }
-            else
-                {
-                retval = KErrNone;
-                }
-            }
-            break;
-
-        case ETFAccessoryControl_Close:
-            {
-            TRACE_ASSERT( iAccessoryControl != NULL );
-
-            if( iAccessoryControl != NULL )
-                {
-                iAccessoryControl->CloseSubSession();
-                delete iAccessoryControl;
-                iAccessoryControl = NULL;
-                }
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryNotifyAccessoryConnectionStatusChanged:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyAccessoryConnectionStatusChanged( iGenericIdArray );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFSyncGetAccessoryConnectionStatus:
-            {
-            iAccessoryConnection->GetAccessoryConnectionStatus( iGenericIdArray );
-
-            if( iGenericIdArray.Count() != aParameter.iArg1 )
-                {
-                retval = KErrArgument;
-                }
-            else
-                {
-                retval = KErrNone;
-                }
-            }
-            break;
-
-        case ETFASyncGetAccessoryConnectionStatus:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->GetAccessoryConnectionStatus( iGenericIdArray );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFSetIntValue:
-       	   {
-       	   SetIntValue(aParameter, &retval);
-       	   }
-            break;
-
-        case ETFSetBoolValue:
-            {
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TAccValueTypeTBool aBoolValue;
-            aBoolValue.iValue = aParameter.iArg1;
-            retval = iAccessoryControl->SetValueL( iGenericId[aParameter.iGid],
-                aNameRecord,
-                aBoolValue );
-            }
-            break;
-
-            //
-            //Tuupaa
-            //
-        case ETFAccessoryValueChangedNotifyInt:
-            {
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( KAccAudioOutputType );
-            TAccValueTypeTInt aIntValue;
-            aIntValue.iValue = EAccAudioOutPutTypePublic;
-            iAccessoryControl->AccessoryValueChangedNotifyL( iGenericId[aParameter.iGid],
-                aNameRecord,
-                aIntValue );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryValueChangedNotifyBool:
-            {
-            TAccPolNameRecord aNameRecord;
-            aNameRecord.SetNameL( aParameter.iArg3 );
-            TAccValueTypeTBool aBoolValue;
-            aBoolValue.iValue = ETrue;
-            iAccessoryControl->AccessoryValueChangedNotifyL( iGenericId[aParameter.iGid],
-                aNameRecord,
-                aBoolValue );
-            retval = KErrNone;
-            }
-            break;
-
-            //
-            // BT Control    
-            //
-        case ETFBTAccessoryValueChangedNotifyBool:
-            {
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            TAccPolNameRecord nameRecord;
-            nameRecord.SetNameL( aParameter.iArg3 );
-            TAccValueTypeTBool boolValue;
-            boolValue.iValue = aParameter.iArg4;
-            iAccessoryBTControl->AccessoryValueChangedNotifyL( btaddr,
-                nameRecord,
-                boolValue );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFBTAccessoryValueChangedNotifyInt:
-            {
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            TAccPolNameRecord nameRecord;
-            nameRecord.SetNameL( aParameter.iArg3 );
-            TAccValueTypeTInt intValue;
-            intValue.iValue = aParameter.iArg4;
-            iAccessoryBTControl->AccessoryValueChangedNotifyL( btaddr,
-                nameRecord,
-                intValue );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryBtControl_Open:
-            {
-            if( iAccessoryBTControl == NULL )
-                {
-                iAccessoryBTControl = new ( ELeave ) RAccessoryBTControl;
-                retval
-                    = iAccessoryBTControl->CreateSubSession( iAccessoryServer );
-                }
-            else
-                {
-                retval = KErrNone;
-                }
-            }
-            break;
-
-        case ETFAccessoryBtControl_Close:
-            {
-            TRACE_ASSERT( iAccessoryBTControl != NULL );
-
-            if( iAccessoryBTControl != NULL )
-                {
-                iAccessoryBTControl->CloseSubSession();
-                delete iAccessoryBTControl;
-                iAccessoryBTControl = NULL;
-                }
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryBtConnectAccessory:
-            {
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->ConnectBTAccessory( btaddr );
-            retval = KErrNone;
-            }
-            break;
-        case ETFAccessoryBtDisconnectAccessory:
-            {
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            TRequestStatus status;
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->DisconnectBTAccessory( btaddr );
-            retval = KErrNone;
-            TAccPolGenericID emptyInstance;
-            iGenericId[aParameter.iGid] = emptyInstance;
-            }
-            break;
-
-        case ETFAccessoryNotifyBluetoothAudioLinkOpenReq:
-            {
-            //TRequestStatus status; 			   	
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyBluetoothAudioLinkOpenReq();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryBluetoothAudioLinkOpenedNotify:
-            {
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkOpenedNotifyL( btaddr, (TAccAudioType)aParameter.iArg3 ) );
-
-            if( err == aParameter.iExpectedResult )
-                {
-                retval = KErrNone;
-                }
-            else
-                {
-                retval = KErrGeneral;
-                }
-            }
-            break;
-
-        case ETFAccessoryBluetoothAudioLinkOpenResp:
-            {
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            TInt response( aParameter.iArg2 );
-            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkOpenRespL( btaddr, response ) );
-
-            if( err == aParameter.iExpectedResult )
-                {
-                retval = KErrNone;
-                }
-            else
-                {
-                retval = KErrGeneral;
-                }
-            }
-            break;
-
-        case ETFAccessoryNotifyBluetoothAudioLinkCloseReq:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyBluetoothAudioLinkCloseReq();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryBluetoothAudioLinkClosedNotify:
-            {
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkClosedNotifyL( btaddr, ( TAccAudioType )aParameter.iArg3 ) );
-
-            if( err == aParameter.iExpectedResult )
-                {
-                retval = KErrNone;
-                }
-            else
-                {
-                retval = KErrGeneral;
-                }
-            }
-            break;
-
-        case ETFAccessoryBluetoothAudioLinkCloseResp:
-            {
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            TInt response( aParameter.iArg2 );
-            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkCloseRespL( btaddr, response ) );
-
-            if( err == aParameter.iExpectedResult )
-                {
-                retval = KErrNone;
-                }
-            else
-                {
-                retval = KErrGeneral;
-                }
-            }
-            break;
-
-        case ETFAccessoryBtCancelConnectAccessory:
-            {
-            TRequestStatus status;
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            iAccessoryBTControl->ConnectAccessory( status, btaddr );
-            iAccessoryBTControl->CancelConnectAccessory();
-            User::WaitForRequest( status );
-            if( KErrCancel != status.Int() )
-                {
-                retval = status.Int();
-                }
-            else
-                {
-                retval = KErrNone;
-                }
-            }
-            break;
-
-        case ETFAccessoryBtCancelDisconnectAccessory:
-            {
-            TRequestStatus status;
-            TBTDevAddr btaddr( aParameter.iArg1 );
-            iAccessoryBTControl->DisconnectAccessory( status, btaddr );
-            iAccessoryBTControl->CancelDisconnectAccessory();
-            User::WaitForRequest( status );
-            retval = status.Int();
-            }
-            break;
-
-            //
-            // Accessory Mode 
-            //                                            	         		      		
-        case ETFAccessoryMode_Open:
-            {
-            if( iAccessoryMode == NULL )
-                {
-                iAccessoryMode = new ( ELeave ) RAccessoryMode;
-                retval = iAccessoryMode->CreateSubSession( iAccessoryServer );
-                }
-            else
-                {
-                retval = KErrNone;
-                }
-            }
-            break;
-
-        case ETFAccessoryMode_Close:
-            {
-            TRACE_ASSERT( iAccessoryMode != NULL );
-
-            if( iAccessoryMode != NULL )
-                {
-                iAccessoryMode->CloseSubSession();
-                delete iAccessoryMode;
-                iAccessoryMode = NULL;
-                }
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryNotifyAccessoryModeChanged:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyAccessoryModeChanged();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryAccessoryModeSync:
-            {
-            TAccPolAccessoryMode mode;
-            retval = iAccessoryMode->GetAccessoryMode( mode );
-
-            if( retval == KErrNone )
-                {
-                if( aParameter.iArg1 != mode.iAccessoryMode )
-                    {
-                    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Unexpected Accessory Mode Parameter1 %d %d" ), aParameter.iArg1, mode.iAccessoryMode ) );
-                    retval = KTFErrAccessoryUnexpectedArg1;
-                    }
-#ifdef __WINS__ // Just check this in winscw
-                if( aParameter.iArg2 != mode.iAudioOutputStatus )
-                    {
-                    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Unexpected Accessory Mode Parameter2 %d %d" ), aParameter.iArg2, mode.iAudioOutputStatus ) );
-                    retval = KTFErrAccessoryUnexpectedArg2;
-                    }
-#endif
-                }
-            else
-                {
-                TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Getting Accessory Mode Failed %d" ), retval ) );
-                }
-
-            }
-            break;
-
-        case ETFAccessoryAccessoryModeASync:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->GetAccessoryMode();
-            retval = KErrNone;
-            }
-            break;
-
-            //
-            // Audio Control
-            //       
-        case ETFAccessoryAudioControl_Open:
-            {
-            if( iAccessoryAudioControl == NULL )
-                {
-                iAccessoryAudioControl = new ( ELeave ) RAccessoryAudioControl;
-                retval
-                    = iAccessoryAudioControl->CreateSubSession( iAccessoryServer );
-                }
-            else
-                {
-                retval = KErrNone;
-                }
-            }
-            break;
-
-        case ETFAccessoryAudioControl_Close:
-            {
-            TRACE_ASSERT( iAccessoryAudioControl != NULL );
-
-            if( iAccessoryAudioControl != NULL )
-                {
-                iAccessoryAudioControl->CloseSubSession();
-                delete iAccessoryAudioControl;
-                iAccessoryAudioControl = NULL;
-                }
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAudioRoutingStatusNotify:
-            {
-            RAccessoryAudioControl audioControl;
-            audioControl.CreateSubSession( iAccessoryServer );
-
-            audioControl.AudioRoutingStatusNotify( aParameter.iArg1,
-                iGenericId[aParameter.iGid] );
-            retval = KErrNone;
-
-            audioControl.CloseSubSession();
-            }
-            break;
-
-        case ETFAccessoryAudioLinkOpen:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->AccessoryAudioLinkOpen( iGenericId[aParameter.iGid],
-                aParameter.iArg3 );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryNotifyAccessoryAudioLinkOpened:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyAccessoryAudioLinkOpened( iGenericId[aParameter.iGid] );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryNotifyAccessoryAudioLinkClosed:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->NotifyAccessoryAudioLinkClosed( iGenericId[aParameter.iGid] );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryAccessoryAudioLinkClose:
-            {
-            CTFTestControlObserver* aConnectionObserver = CreateObserver();
-            TRACE_ASSERT( aConnectionObserver != NULL );
-            aConnectionObserver->AccessoryAudioLinkClose( iGenericId[aParameter.iGid],
-                aParameter.iArg3 );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessoryPublishAndSubscribe:
-            {
-            PublishAndSubscribeL( aParameter );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFAccessory_Cancel:
-            {
-            CTFTestControlObserver* item;
-            if( !iStack.IsEmpty() )
-                {
-                item = iStack.First();
-                item->Cancel();
-                }
-            retval = KErrNone;
-            }
-            break;
-
-            //
-            // Cancels
-            //
-        case ETFCancelAccessoryAudioLinkOpen:
-            {
-            iAccessoryAudioControl->CancelAccessoryAudioLinkOpen();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelAccessoryAudioLinkClose:
-            {
-            iAccessoryAudioControl->CancelAccessoryAudioLinkClose();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyAccessoryAudioLinkOpened:
-            {
-            iAccessoryAudioControl->CancelNotifyAccessoryAudioLinkOpened();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyAccessoryAudioLinkClosed:
-            {
-            iAccessoryAudioControl->CancelNotifyAccessoryAudioLinkClosed();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyProcessCommand:
-            {
-            TRACE_ASSERT_ALWAYS;
-            }
-            break;
-
-        case ETFCancelConnectAccessory:
-            {
-            iAccessoryControl->CancelConnectAccessory();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelDisconnectAccessory:
-            {
-            iAccessoryControl->CancelDisconnectAccessory();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyBluetoothAudioLinkOpenReq:
-            {
-            iAccessoryBTControl->CancelNotifyBluetoothAudioLinkOpenReq();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyBluetoothAudioLinkCloseReq:
-            {
-            iAccessoryBTControl->CancelNotifyBluetoothAudioLinkCloseReq();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyAccessoryConnectionStatusChanged:
-            {
-            iAccessoryConnection->CancelNotifyAccessoryConnectionStatusChanged();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelGetAccessoryConnectionStatus:
-            {
-            iAccessoryConnection->CancelGetAccessoryConnectionStatus();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelConnectAccessoryBT:
-            {
-            iAccessoryBTControl->CancelConnectAccessory();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelDisconnectAccessoryBT:
-            {
-            iAccessoryBTControl->CancelDisconnectAccessory();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyAccessoryModeChanged:
-            {
-            iAccessoryMode->CancelNotifyAccessoryModeChanged();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelGetAccessoryMode:
-            {
-            iAccessoryMode->CancelGetAccessoryMode();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyNewAccessoryConnected:
-            {
-            iAccessorySingleConnection->CancelNotifyNewAccessoryConnected();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyAccessoryDisconnected:
-            {
-            iAccessorySingleConnection->CancelNotifyAccessoryDisconnected();
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFCancelNotifyAccessoryValueChanged:
-            {
-            TAccPolNameRecord nameRecord;
-            nameRecord.SetNameL( aParameter.iArg3 );
-            iAccessorySingleConnection->CancelNotifyAccessoryValueChanged( nameRecord );
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFSelectionDialogText:
-            {
-                SelectionDialog(ETFSelectionDialogText, &retval);
-            }
-            break;
-
-        case ETFSelectionDialogCancel:
-            {
-                SelectionDialog(ETFSelectionDialogCancel, &retval);
-            }
-            break;
-
-        case ETFNotSupportedNote:
-            {
-            TUid KAccFwUiNoteNotifierUid =
-                {
-                0x10205061
-                };
-            RNotifier notifier;
-            notifier.Connect();
-
-            TInt err = notifier.StartNotifier( KAccFwUiNoteNotifierUid,
-                KNullDesC8 );
-
-            TInt value( 0 );
-            TPckg<TInt> intPckg( value );
-            notifier.Close();
-
-            notifier.Connect();
-            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
-            notifier.Close();
-
-            value = 1;
-            notifier.Connect();
-            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
-            notifier.Close();
-
-            value = value << 1;
-            notifier.Connect();
-            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
-            notifier.Close();
-
-            value = value << 1;
-            notifier.Connect();
-            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
-            notifier.Close();
-
-            value = value << 1;
-            notifier.Connect();
-            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
-            notifier.Close();
-
-            value = value << 1;
-            notifier.Connect();
-            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
-            notifier.Close();
-
-            value = value << 1;
-            notifier.Connect();
-            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
-            notifier.Close();
-
-            value = value << 1;
-            notifier.Connect();
-            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
-            notifier.Close();
-
-            retval = KErrNone;
-            }
-            break;
-
-        case ETFValueRecordTests:
-            {
-            retval = TestValueRecordL();
-            }
-            break;
-
-        case ETFObjectBaseSerializationTests:
-            {
-            retval = TestBaseSerializationL();
-            }
-            break;
-
-        case ETFCheckConnectedAccessory:
-            {
-            CheckConnectedAccessory(&retval);
-            }
-            break;
-
-        case ETFCallTClassMethods:
-            {
-						CallTClassMethods(&retval);  \
-						}
-            
-        case ETFSetHdmiObject_PubSub:
-            {
-            CreateHdmiObjectsToPubSubL( aParameter );
-            retval = KErrNone;
-            break;
-            }
-            
-        case ETFGetHdmiObject:
-            {
-            TInt err = KErrNone;
-            TAccPolNameRecord nameRecord;
-            nameRecord.SetNameL( aParameter.iArg3 );
-
-            // Create HDMI container
-            CAccPolHdmiObjectCon* conFromASY = CAccPolHdmiObjectCon::NewLC();
-            CAccPolHdmiObjectCon* conFromPS = CAccPolHdmiObjectCon::NewLC();
-            
-            // Get HDMI container
-            TRAP( err, iAccessorySingleConnection->GetValueL(
-                iGenericId[aParameter.iGid], nameRecord, *conFromASY ) );
-            
-            // Get HDMI container from P&S
-            CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-            CleanupStack::PushL( buf );
-            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-            
-            TPtr8 bufPtr( buf->Ptr( 0 ) );
-            err = RProperty::Get( KTFAccessoryTestProperty,
-                KTFAccessoryObjectMethod,
-                bufPtr );
-            if( err == KErrNone )
-                {
-                RBufReadStream readStream( *buf );
-                readStream.PushL();
-                conFromPS->InternalizeL( readStream );
-                CleanupStack::PopAndDestroy( &readStream );
-                }
-            switch( aParameter.iArg3 )
-                {
-                case KAccVideoHdmiAttributes:
-                    {
-                    // Validate object count
-                    if( conFromASY->Count() != conFromPS->Count() )
-                        {
-                        err = KErrArgument;
-                        }
-                    
-                    // Validate speaker allocation
-                    RAccPolHdmiSpeakerAllocationArray array;
-                    CleanupClosePushL( array );
-                    conFromASY->GetHdmiSpeakerAllocationObjectsL( array );
-                    if( array.Count() )
-                        {
-                        CAccPolHdmiSpeakerAllocation* speakerAllocation = array[0];
-                        TUint32 bits = speakerAllocation->SpeakerAllocation();
-                        
-                        // Speaker allocation should be EHdmiSpeakerUnknown
-                        if( bits != CAccPolHdmiSpeakerAllocation::EHdmiSpeakerUnknown )
-                            {
-                            err = KErrArgument;
-                            }
-                        
-                        // Speaker count should be zero
-                        if( speakerAllocation->SpeakerCount() )
-                            {
-                            err = KErrArgument;
-                            }
-                        }
-                    CleanupStack::PopAndDestroy( &array );
-                    break;
-                    }
-                case KAccVideoFormat:
-                    {
-                    // Validate object count
-                    if( conFromASY->Count() != conFromPS->Count() )
-                        {
-                        err = KErrArgument;
-                        }
-                    
-                    // Validate video format
-                    RAccPolHdmiVideoFormatArray array;
-                    CleanupClosePushL( array );
-                    conFromASY->GetHdmiVideoFormatObjectsL( array );
-                    if( array.Count() )
-                        {
-                        CAccPolHdmiVideoFormat* videoFormat = array[0];
-                        
-                        // Interlaced video should be enabled
-                        if( !videoFormat->Interlaced() )
-                            {
-                            err = KErrArgument;
-                            }
-                        }
-                    else
-                        {
-                        err = KErrArgument;
-                        }
-                    CleanupStack::PopAndDestroy( &array );
-                    break;
-                    }
-                default:
-                    {
-                    break;
-                    }
-                }            
-            CleanupStack::PopAndDestroy( buf );
-            CleanupStack::PopAndDestroy( conFromPS );
-            CleanupStack::PopAndDestroy( conFromASY );
-            retval = err;
-            break;
-            }
-            
-        case ETFCheckHdmiObject:
-            {
-            TInt err = KErrNone;
-            TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Check HDMI object %d" ),
-                aParameter.iArg1 ) );
-            switch( aParameter.iArg1 )
-                {
-                case EAccPolHdmiObjectCon:
-                    {
-                    err = CheckHdmiContainerObjectL();
-                    break;
-                    }
-                case EAccPolHdmiSinkObject:
-                    {
-                    err = CheckHdmiSinkObjectL();
-                    break;
-                    }
-                case EAccPolHdmiAudioFormatObject:
-                    {
-                    err = CheckHdmiAudioFormatObjectL();
-                    break;
-                    }
-                case EAccPolHdmiLatencyObject:
-                    {
-                    err = CheckHdmiLatencyObjectL();
-                    break;
-                    }
-                case EAccPolHdmiSpeakerAllocationObject:
-                    {
-                    err = CheckHdmiSpeakerAllocationObjectL();
-                    break;
-                    }
-                case EAccPolHdmiVideoFormatObject:
-                    {
-                    err = CheckHdmiVideoFormatObjectL();
-                    break;
-                    }
-                default:
-                    {
-                    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Invalid HDMI object=%d" ),
-                        aParameter.iArg1 ) );
-                    err = KErrArgument;
-                    break;
-                    }
-                }
-            TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Check HDMI object %d returned with code %d" ),
-                aParameter.iArg1, err ) );
-            retval = err;
-            break;
-            }
-
-        default:
-            TRACE_ASSERT_ALWAYS;
-            break;
-
-        }
-    User::LeaveIfError( retval );
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::TestValueRecordL()
-// ----------------------------------------------------------------------------------	
-//
-TInt CTFAccessoryTestControl::TestValueRecordL()
-    {
-    TInt ret( KErrNone );
-
-    TAccPolValueRecord valueRecord;
-    TBuf8<KAccMaxECIBlockLength> eci;
-    TBuf8<KAccMaxECIBlockLength> check;
-    _LIT( Kissa, "Kissa" );
-    eci.Copy( Kissa );
-
-    valueRecord.SetValue( eci );
-    check.Copy( valueRecord.ValueRef() );
-
-    if( KErrNone != eci.Compare( check ) )
-        {
-        User::Leave( KErrGeneral );
-        }
-
-    TDesC8& test( valueRecord.ValueRef() );
-    if( KErrNone != eci.Compare( test ) )
-        {
-        User::Leave( KErrGeneral );
-        }
-
-    return ret;
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::TestBaseSerializationL()
-// ----------------------------------------------------------------------------------
-//
-TInt CTFAccessoryTestControl::TestBaseSerializationL()
-    {
-    TInt ret( KErrNone );
-    TInt err( KErrNone );
-
-    /*** One container *************************************************************/
-    CAccPolAudioStreamFormatCon* container1 =
-        CAccPolAudioStreamFormatCon::NewLC();
-    CAccPolAudioStreamFormatCon* container2 =
-        CAccPolAudioStreamFormatCon::NewLC();
-
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-
-    //Externalize to buf
-    RBufWriteStream wStrm;
-    ( void )wStrm.Open( *buf );
-    wStrm.PushL();
-    container1->ExternalizeL( wStrm );
-    wStrm.CommitL();
-    wStrm.Close();
-    wStrm.Pop();
-
-    //Internalize from buf
-    RBufReadStream rStrm;
-    ( void )rStrm.Open( *buf );
-    rStrm.PushL();
-    container2->InternalizeL( rStrm );
-    rStrm.Close();
-    rStrm.Pop();
-
-    //container1 content must equal to container2 content
-    err = ( 0 == memcompare( reinterpret_cast<TUint8*> ( container1 ),
-        sizeof(CAccPolObjectCon),
-        reinterpret_cast<TUint8*> ( container2 ),
-        sizeof(CAccPolObjectCon) ) ) ? KErrNone : KErrGeneral;
-    User::LeaveIfError( err );
-
-    CleanupStack::PopAndDestroy( buf );
-    CleanupStack::PopAndDestroy( container2 );
-    CleanupStack::PopAndDestroy( container1 );
-    container2 = NULL;
-    container1 = NULL;
-    /* end *************************************************************************/
-
-    //Make test again!
-
-    CAccPolAudioStreamFormat* audioStream1 =
-        CAccPolAudioStreamFormat::NewLC( EAccPolAudioInputStreamObject,
-            15,
-            KUidFormatMP3,
-            CAccPolAudioStreamFormat::EStereo,
-            CAccPolAudioStreamFormat::EBitsPerSample24,
-            11 );
-
-    buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-
-    //Externalize to buf        
-    ( void )wStrm.Open( *buf );
-    wStrm.PushL();
-    audioStream1->ExternalizeL( wStrm );
-    wStrm.CommitL();
-    wStrm.Close();
-    wStrm.Pop();
-
-    //Internalize from buf
-    ( void )rStrm.Open( *buf );
-    rStrm.PushL();
-
-    TInt objectid = rStrm.ReadUint8L();
-
-    if( ( TStreamConObjectType )objectid == EAccPolAudioInputStreamObject )
-        {
-        CAccPolAudioStreamFormat* audioStream2 =
-            CAccPolAudioStreamFormat::NewLC( EAccPolAudioInputStreamObject );
-
-        audioStream2->InternalizeL( rStrm );
-
-        //audioStream1 content must equal to audioStream2 content
-        err = ( 0 == memcompare( reinterpret_cast<TUint8*> ( audioStream1 ),
-            sizeof(CAccPolAudioStreamFormat),
-            reinterpret_cast<TUint8*> ( audioStream2 ),
-            sizeof(CAccPolAudioStreamFormat) ) ) ? KErrNone : KErrGeneral;
-
-        User::LeaveIfError( err );
-
-        CleanupStack::PopAndDestroy( audioStream2 );
-
-        rStrm.Close();
-        rStrm.Pop();
-
-        }
-    else
-        {
-        User::LeaveIfError( KErrGeneral );
-        }
-
-    CleanupStack::PopAndDestroy( buf );
-    CleanupStack::PopAndDestroy( audioStream1 );
-    audioStream1 = NULL;
-    /* end *************************************************************************/
-
-    return ret;
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::PublishAndSubscribeL()
-// ----------------------------------------------------------------------------------	
-//
-void CTFAccessoryTestControl::PublishAndSubscribeL( TTFAccessoryTestCaseStateControl& aParameter )
-    {
-    TPckgBuf<TTFAccessoryPublishAndSubscribe> buf;
-
-    buf().iTestCaseID = aParameter.iTestCaseID;
-    buf().iMethod = aParameter.iMethod;
-    buf().iParam1 = aParameter.iArg1;
-    buf().iTimeMs = aParameter.iArg4;
-    buf().iGenericID = iGenericId[aParameter.iGid];
-
-    // Send capability to stub(s).
-
-    // if( aParameter.iArg3 )
-    // {
-    buf().iParam2 = aParameter.iArg3;
-    // }
-
-    /*
-     if( aParameter.iArg3->Compare( KNullDesC ) )
-     {
-     buf().iParam2.Copy( *aParameter.iArg3 );    
-     }
-
-     */
-    User::LeaveIfError( iSubscribe.Set( KTFAccessoryTestProperty,
-        KTFAccessoryMethod,
-        buf ) );
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CreateHdmiObjectsToPubSubL()
-// ----------------------------------------------------------------------------------   
-//
-void CTFAccessoryTestControl::CreateHdmiObjectsToPubSubL(
-    TTFAccessoryTestCaseStateControl& aParameter )
-    {
-    // Define property just in case
-    RProperty::Define( KTFAccessoryTestProperty,
-        KTFAccessoryObjectMethod,
-        RProperty::EByteArray );
-    
-    // Create HDMI container
-    CAccPolHdmiObjectCon* con = CAccPolHdmiObjectCon::NewLC();
-    switch( aParameter.iArg3 )
-        {
-        case KAccVideoHdmiAttributes:
-            {
-            // Create audio format object
-            CreateHdmiObjectL( *con, EAccPolHdmiAudioFormatObject );
-            
-            // Create latency object
-            CreateHdmiObjectL( *con, EAccPolHdmiLatencyObject );
-            
-            // Create sink object
-            CreateHdmiObjectL( *con, EAccPolHdmiSinkObject );
-            
-            // Create speaker allocation object
-            CreateHdmiObjectL( *con, EAccPolHdmiSpeakerAllocationObject );
-            
-            // Create video format object
-            CreateHdmiObjectL( *con, EAccPolHdmiVideoFormatObject );
-            break;
-            }
-        case KAccVideoFormat:
-            {
-            // Create video format object
-            CreateHdmiObjectL( *con, EAccPolHdmiVideoFormatObject );
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }
-    // Stream HDMI container to P&S
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-
-    RBufWriteStream writeStream( *buf );
-    writeStream.PushL();
-    con->ExternalizeL( writeStream );
-    writeStream.CommitL();
-    CleanupStack::PopAndDestroy( &writeStream );
-    
-    TPtr8 bufPtr( buf->Ptr( 0 ) );
-    TInt err = RProperty::Set( KTFAccessoryTestProperty,
-        KTFAccessoryObjectMethod,
-        bufPtr );
-    User::LeaveIfError( err );
-    
-    // Check if ASY stub needs to be informed
-    if( aParameter.iArg2 )
-        {
-        PublishAndSubscribeL( aParameter );
-        }
-    
-    // Cleanup
-    CleanupStack::PopAndDestroy( buf );
-    CleanupStack::PopAndDestroy( con );
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CheckHdmiContainerObjectL
-// ----------------------------------------------------------------------------------   
-TInt CTFAccessoryTestControl::CheckHdmiContainerObjectL()
-    {
-    TInt err = KErrNone;
-    CAccPolHdmiObjectCon* con1 = NULL;
-    CAccPolHdmiObjectCon* con2 = NULL;
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-    
-    // NewL
-    con1 = CAccPolHdmiObjectCon::NewL();
-    CleanupStack::PushL( con1 );
-    CleanupStack::PopAndDestroy( con1 );
-    
-    // NewLC
-    con1 = CAccPolHdmiObjectCon::NewLC();
-    CleanupStack::PopAndDestroy( con1 );
-    
-    // Internalize & Externalize
-    con1 = CAccPolHdmiObjectCon::NewLC();
-    CreateHdmiObjectL( *con1, EAccPolHdmiAudioFormatObject );
-    CreateHdmiObjectL( *con1, EAccPolHdmiLatencyObject );
-    CreateHdmiObjectL( *con1, EAccPolHdmiSinkObject );
-    CreateHdmiObjectL( *con1, EAccPolHdmiSpeakerAllocationObject );
-    CreateHdmiObjectL( *con1, EAccPolHdmiVideoFormatObject );
-    RBufWriteStream writeStream;
-    writeStream.Open( *buf );
-    writeStream.PushL();
-    con1->ExternalizeL( writeStream );
-    writeStream.CommitL();
-    CleanupStack::PopAndDestroy( &writeStream );
-    
-    con2 = CAccPolHdmiObjectCon::NewLC();
-    RBufReadStream readStream;
-    readStream.Open( *buf );
-    readStream.PushL();
-    con2->InternalizeL( readStream );
-    if( con1->Count() == con2->Count() )
-        {
-        TInt count = con1->Count();
-        CAccPolObjectBase* objBase1 = NULL;
-        CAccPolObjectBase* objBase2 = NULL;
-        for( TInt i = 0; i < count; i++ )
-            {
-            objBase1 = con1->AtL( i );
-            objBase2 = con2->AtL( i );
-            if( objBase1->ObjectType() != objBase2->ObjectType() )
-                {
-                err = KErrArgument;
-                }
-            }
-        }
-    else
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( &readStream );
-    CleanupStack::PopAndDestroy( con2 );
-    CleanupStack::PopAndDestroy( con1 );
-    
-    // DuplicateLC
-    con1 = CAccPolHdmiObjectCon::NewLC();
-    CreateHdmiObjectL( *con1, EAccPolHdmiAudioFormatObject );
-    CreateHdmiObjectL( *con1, EAccPolHdmiLatencyObject );
-    CreateHdmiObjectL( *con1, EAccPolHdmiSinkObject );
-    CreateHdmiObjectL( *con1, EAccPolHdmiSpeakerAllocationObject );
-    CreateHdmiObjectL( *con1, EAccPolHdmiVideoFormatObject );
-    con2 = static_cast<CAccPolHdmiObjectCon*>( con1->DuplicateLC() );
-    if( con1->Count() == con2->Count() )
-        {
-        TInt count = con1->Count();
-        CAccPolObjectBase* objBase1 = NULL;
-        CAccPolObjectBase* objBase2 = NULL;
-        for( TInt i = 0; i < count; i++ )
-            {
-            objBase1 = con1->AtL( i );
-            objBase2 = con2->AtL( i );
-            if( objBase1->ObjectType() != objBase2->ObjectType() )
-                {
-                err = KErrArgument;
-                }
-            }
-        }
-    else
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( con2 );
-    CleanupStack::PopAndDestroy( con1 );
-    
-    // Rest of the API
-    con1 = CAccPolHdmiObjectCon::NewLC();
-    THdmiConObjectType objectType = EAccPolHdmiObjectCon;
-    TBool exit = EFalse;
-    TInt index = 0;
-    TInt count = 0;
-    do
-        {
-        index++;
-        err = KErrArgument;
-        objectType = ( THdmiConObjectType )( index );
-        CreateHdmiObjectL( *con1, objectType );
-        count = con1->Count();
-        CAccPolObjectBase* obj = NULL;
-        if( con1->Count() != index )
-            {
-            err = KErrArgument;
-            break;
-            }
-        for( TInt ii = 0; ii < count; ii++ )
-            {
-            obj = con1->AtL( ii );
-            if( obj->ObjectType() == objectType )
-                {
-                err = KErrNone;
-                break;
-                }
-            }
-        if( objectType == EAccPolHdmiVideoFormatObject )
-            {
-            // Last object
-            exit = ETrue;
-            }
-        }
-    while( !exit && ( err == KErrNone ) );
-    CleanupStack::PopAndDestroy( con1 );
-    CleanupStack::PopAndDestroy( buf );
-    
-    return err;
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CheckHdmiSinkObjectL
-// ----------------------------------------------------------------------------------   
-TInt CTFAccessoryTestControl::CheckHdmiSinkObjectL()
-    {
-    TInt err = KErrNone;
-    CAccPolHdmiSink* obj = NULL;
-    CAccPolHdmiSink* objDuplicate = NULL;
-    TUint8 objectType = 0;
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-    
-    // NewL
-    obj = CAccPolHdmiSink::NewL();
-    CleanupStack::PushL( obj );
-    CleanupStack::PopAndDestroy( obj );
-
-    // NewL - with params
-    obj = CAccPolHdmiSink::NewL( ETrue, ETrue );
-    CleanupStack::PushL( obj );
-    if( !obj->BasicAudioSupport() )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->HdcpSupport() )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewLC
-    obj = CAccPolHdmiSink::NewLC();
-    CleanupStack::PopAndDestroy( obj );
-
-    // NewLC - with params
-    obj = CAccPolHdmiSink::NewLC( ETrue, ETrue );
-    if( !obj->BasicAudioSupport() )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->HdcpSupport() )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    
-    // Internalize & Externalize
-    obj = CAccPolHdmiSink::NewLC( ETrue, ETrue );
-    
-    RBufWriteStream writeStream;
-    writeStream.Open( *buf );
-    writeStream.PushL();
-    obj->ExternalizeL( writeStream );
-    writeStream.CommitL();
-    CleanupStack::PopAndDestroy( &writeStream );
-    CleanupStack::PopAndDestroy( obj );
-    
-    obj = CAccPolHdmiSink::NewLC();
-    RBufReadStream readStream;
-    readStream.Open( *buf );
-    readStream.PushL();
-    objectType = readStream.ReadUint8L();
-    obj->InternalizeL( readStream );
-    if( objectType != EAccPolHdmiSinkObject )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->BasicAudioSupport() )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->HdcpSupport() )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( &readStream );
-    CleanupStack::PopAndDestroy( obj );
-
-    // DuplicateLC - mem compare can be used since the object does not contain
-    // any ponters as memebers
-    obj = CAccPolHdmiSink::NewLC( ETrue, ETrue );
-    objDuplicate = static_cast<CAccPolHdmiSink*>( obj->DuplicateLC() );
-    TUint8* left = reinterpret_cast<TUint8*>( obj );
-    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
-    TInt size = sizeof( CAccPolHdmiSink );
-    if( Mem::Compare( left, size, right, size ) != KErrNone )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( objDuplicate );
-    CleanupStack::PopAndDestroy( obj );
-
-    // Rest of the API
-    obj = CAccPolHdmiSink::NewLC();
-    obj->SetBasicAudioSupport( ETrue );
-    if( !obj->BasicAudioSupport() )
-        {
-        err = KErrArgument;
-        }
-    obj->SetHdcpSupport( ETrue );
-    if( !obj->HdcpSupport() )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    CleanupStack::PopAndDestroy( buf );
-    return err;
-    }
-
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CheckHdmiAudioFormatObjectL
-// ----------------------------------------------------------------------------------   
-TInt CTFAccessoryTestControl::CheckHdmiAudioFormatObjectL()
-    {
-    TInt err = KErrNone;
-    CAccPolHdmiAudioFormat* obj = NULL;
-    CAccPolHdmiAudioFormat* objDuplicate = NULL;
-    TUint8 objectType = 0;
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-    
-    // NewL
-    obj = CAccPolHdmiAudioFormat::NewL();
-    CleanupStack::PushL( obj );
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewL - with params
-    obj = CAccPolHdmiAudioFormat::NewL( HdmiAudioFormat::KUidFormatPCM16,
-        1,
-        1,
-        1,
-        1,
-        1 );
-    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatPCM16 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->ChannelCount() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->BitResolution() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->MaxBitResolution() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->SamFreq() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->FormatDependentValue() != 1 )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PushL( obj );
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewLC
-    obj = CAccPolHdmiAudioFormat::NewLC();
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewLC - with params
-    obj = CAccPolHdmiAudioFormat::NewLC( HdmiAudioFormat::KUidFormatPCM16,
-        1,
-        1,
-        1,
-        1,
-        1 );
-    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatPCM16 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->ChannelCount() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->BitResolution() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->MaxBitResolution() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->SamFreq() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->FormatDependentValue() != 1 )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    
-    // Internalize & Externalize
-    obj = CAccPolHdmiAudioFormat::NewLC( HdmiAudioFormat::KUidFormatPCM16,
-        1,
-        1,
-        1,
-        1,
-        1 );
-    RBufWriteStream writeStream;
-    writeStream.Open( *buf );
-    writeStream.PushL();
-    obj->ExternalizeL( writeStream );
-    writeStream.CommitL();
-    CleanupStack::PopAndDestroy( &writeStream );
-    CleanupStack::PopAndDestroy( obj );
-    
-    obj = CAccPolHdmiAudioFormat::NewLC();
-    RBufReadStream readStream;
-    readStream.Open( *buf );
-    readStream.PushL();
-    objectType = readStream.ReadUint8L();
-    obj->InternalizeL( readStream );
-    if( objectType != EAccPolHdmiAudioFormatObject )
-        {
-        err = KErrArgument;
-        }
-    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatPCM16 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->ChannelCount() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->BitResolution() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->MaxBitResolution() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->SamFreq() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->FormatDependentValue() != 1 )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( &readStream );
-    CleanupStack::PopAndDestroy( obj );
-    
-    // DuplicateLC - mem compare can be used since the object does not contain
-    // any ponters as memebers
-    obj = CAccPolHdmiAudioFormat::NewLC( HdmiAudioFormat::KUidFormatPCM16,
-        1,
-        1,
-        1,
-        1,
-        1 );
-    objDuplicate = static_cast<CAccPolHdmiAudioFormat*>( obj->DuplicateLC() );
-    TUint8* left = reinterpret_cast<TUint8*>( obj );
-    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
-    TInt size = sizeof( CAccPolHdmiSink );
-    if( Mem::Compare( left, size, right, size ) != KErrNone )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( objDuplicate );
-    CleanupStack::PopAndDestroy( obj );
-
-    // Rest of the API
-    obj = CAccPolHdmiAudioFormat::NewLC();
-    obj->SetAudioFormat( HdmiAudioFormat::KUidFormatEAC3 );
-    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatEAC3 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetChannelCount( 2 );
-    if( obj->ChannelCount() != 2 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample20 );
-    if( !( obj->BitResolution() & CAccPolHdmiAudioFormat::EBitsPerSample20 ) )
-        {
-        err = KErrArgument;
-        }
-    obj->SetMaxBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample24 );
-    if( obj->MaxBitResolution() != CAccPolHdmiAudioFormat::EBitsPerSample24 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetSamFreq( CAccPolHdmiAudioFormat::ESamplingFreq192KHz );
-    if( !( obj->SamFreq() & CAccPolHdmiAudioFormat::ESamplingFreq192KHz ) )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFormatDependentValue( CAccPolHdmiAudioFormat::EBitsPerSample16 );
-    if( !( obj->FormatDependentValue() & CAccPolHdmiAudioFormat::EBitsPerSample16 ) )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    CleanupStack::PopAndDestroy( buf );
-    
-    return err;
-    }
-
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CheckHdmiLatencyObjectL
-// ----------------------------------------------------------------------------------   
-TInt CTFAccessoryTestControl::CheckHdmiLatencyObjectL()
-    {
-    TInt err = KErrNone;
-    CAccPolHdmiLatency* obj = NULL;
-    CAccPolHdmiLatency* objDuplicate = NULL;
-    TUint8 objectType = 0;
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-    
-    // NewL
-    obj = CAccPolHdmiLatency::NewL();
-    CleanupStack::PushL( obj );
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewL - with params
-    obj = CAccPolHdmiLatency::NewL( HdmiLatency::KUidLatency, 100, 200 );
-    CleanupStack::PushL( obj );
-    if( obj->LatencyType() != HdmiLatency::KUidLatency )
-        {
-        err = KErrArgument;
-        }
-    if( obj->AudioLatency() != 100 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->VideoLatency() != 200 )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewLC
-    obj = CAccPolHdmiLatency::NewLC();
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewLC - with params
-    obj = CAccPolHdmiLatency::NewLC( HdmiLatency::KUidLatency, 100, 200 );
-    if( obj->LatencyType() != HdmiLatency::KUidLatency )
-        {
-        err = KErrArgument;
-        }
-    if( obj->AudioLatency() != 100 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->VideoLatency() != 200 )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    
-    // Internalize & Externalize
-    obj = CAccPolHdmiLatency::NewLC( HdmiLatency::KUidLatency, 100, 200 );
-    RBufWriteStream writeStream;
-    writeStream.Open( *buf );
-    writeStream.PushL();
-    obj->ExternalizeL( writeStream );
-    writeStream.CommitL();
-    CleanupStack::PopAndDestroy( &writeStream );
-    CleanupStack::PopAndDestroy( obj );
-    
-    obj = CAccPolHdmiLatency::NewLC();
-    RBufReadStream readStream;
-    readStream.Open( *buf );
-    readStream.PushL();
-    objectType = readStream.ReadUint8L();
-    obj->InternalizeL( readStream );
-    if( objectType != EAccPolHdmiLatencyObject )
-        {
-        err = KErrArgument;
-        }
-    if( obj->LatencyType() != HdmiLatency::KUidLatency )
-        {
-        err = KErrArgument;
-        }
-    if( obj->AudioLatency() != 100 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->VideoLatency() != 200 )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( &readStream );
-    CleanupStack::PopAndDestroy( obj );
-    
-    // DuplicateLC - mem compare can be used since the object does not contain
-    // any ponters as memebers
-    obj = CAccPolHdmiLatency::NewLC( HdmiLatency::KUidLatency, 100, 200 );
-    objDuplicate = static_cast<CAccPolHdmiLatency*>( obj->DuplicateLC() );
-    TUint8* left = reinterpret_cast<TUint8*>( obj );
-    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
-    TInt size = sizeof( CAccPolHdmiLatency );
-    if( Mem::Compare( left, size, right, size ) != KErrNone )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( objDuplicate );
-    CleanupStack::PopAndDestroy( obj );
-
-    // Rest of the API
-    obj = CAccPolHdmiLatency::NewLC();
-    obj->SetLatencyType( HdmiLatency::KUidLatency );
-    if( obj->LatencyType() != HdmiLatency::KUidLatency )
-        {
-        err = KErrArgument;
-        }
-    obj->SetAudioLatency( 100 );
-    if( obj->AudioLatency() != 100 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetVideoLatency( 200 );
-    if( obj->VideoLatency() != 200 )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );    
-    CleanupStack::PopAndDestroy( buf );
-    
-    return err;
-    }
-
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CheckHdmiSpeakerAllocationObjectL
-// ----------------------------------------------------------------------------------   
-TInt CTFAccessoryTestControl::CheckHdmiSpeakerAllocationObjectL()
-    {
-    TInt err = KErrNone;
-    CAccPolHdmiSpeakerAllocation* obj = NULL;
-    CAccPolHdmiSpeakerAllocation* objDuplicate = NULL;
-    TUint8 objectType = 0;
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-    TUint32 bits = 0x0;
-    
-    // NewL
-    obj = CAccPolHdmiSpeakerAllocation::NewL();
-    CleanupStack::PushL( obj );
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewLC
-    obj = CAccPolHdmiSpeakerAllocation::NewLC();
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewL - with params
-    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
-        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
-    obj = CAccPolHdmiSpeakerAllocation::NewL( bits );
-    CleanupStack::PushL( obj );
-    if( !obj->FrontCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->RearCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-
-    obj = CAccPolHdmiSpeakerAllocation::NewL( EFalse,
-        EFalse,
-        EFalse,
-        ETrue,
-        EFalse,
-        EFalse,
-        ETrue,
-        EFalse,
-        EFalse,
-        EFalse,
-        EFalse );
-    CleanupStack::PushL( obj );
-    if( !obj->FrontCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->RearCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-
-    // NewLC - with params
-    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
-        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
-    obj = CAccPolHdmiSpeakerAllocation::NewLC( bits );
-    if( !obj->FrontCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->RearCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-
-    obj = CAccPolHdmiSpeakerAllocation::NewLC( EFalse,
-        EFalse,
-        EFalse,
-        ETrue,
-        EFalse,
-        EFalse,
-        ETrue,
-        EFalse,
-        EFalse,
-        EFalse,
-        EFalse );
-    if( !obj->FrontCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->RearCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    
-    // Internalize & Externalize
-    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
-        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
-    obj = CAccPolHdmiSpeakerAllocation::NewLC( bits );
-    RBufWriteStream writeStream;
-    writeStream.Open( *buf );
-    writeStream.PushL();
-    obj->ExternalizeL( writeStream );
-    writeStream.CommitL();
-    CleanupStack::PopAndDestroy( &writeStream );
-    CleanupStack::PopAndDestroy( obj );
-    
-    obj = CAccPolHdmiSpeakerAllocation::NewLC();
-    RBufReadStream readStream;
-    readStream.Open( *buf );
-    readStream.PushL();
-    objectType = readStream.ReadUint8L();
-    obj->InternalizeL( readStream );
-    if( objectType != EAccPolHdmiSpeakerAllocationObject )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->FrontCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->RearCenter() )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( &readStream );
-    CleanupStack::PopAndDestroy( obj );
-    
-    // DuplicateLC - mem compare can be used since the object does not contain
-    // any ponters as memebers
-    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
-        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
-    obj = CAccPolHdmiSpeakerAllocation::NewLC( bits );
-    objDuplicate = static_cast<CAccPolHdmiSpeakerAllocation*>( obj->DuplicateLC() );
-    TUint8* left = reinterpret_cast<TUint8*>( obj );
-    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
-    TInt size = sizeof( CAccPolHdmiSpeakerAllocation );
-    if( Mem::Compare( left, size, right, size ) != KErrNone )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( objDuplicate );
-    CleanupStack::PopAndDestroy( obj );
-
-    // Rest of the API
-    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
-        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter |
-        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerTopCenter;
-    obj = CAccPolHdmiSpeakerAllocation::NewLC();
-    obj->SetSpeakerAllocation( bits );
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
-        {
-        err = KErrArgument;
-        }
-    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerTopCenter ) )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-
-    obj = CAccPolHdmiSpeakerAllocation::NewLC();
-    obj->SetFrontSpeakers( ETrue );
-    if( !obj->FrontSpeakers() || obj->SpeakerCount() != 2 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontSpeakers( EFalse );
-    if( obj->FrontSpeakers() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetRearSpeakers( ETrue );
-    if( !obj->RearSpeakers() || obj->SpeakerCount() != 2 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetRearSpeakers( EFalse );
-    if( obj->RearSpeakers() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetLowFrequencyEffect( ETrue );
-    if( !obj->LowFrequencyEffect() || obj->SpeakerCount() != 1 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetLowFrequencyEffect( EFalse );
-    if( obj->LowFrequencyEffect() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontCenter( ETrue );
-    if( !obj->FrontCenter() || obj->SpeakerCount() != 1 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontCenter( EFalse );
-    if( obj->FrontCenter() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontCenterHigh( ETrue );
-    if( !obj->FrontCenterHigh() || obj->SpeakerCount() != 1 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontCenterHigh( EFalse );
-    if( obj->FrontCenterHigh() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetTopCenter( ETrue );
-    if( !obj->TopCenter() || obj->SpeakerCount() != 1 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetTopCenter( EFalse );
-    if( obj->TopCenter() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetRearCenter( ETrue );
-    if( !obj->RearCenter() || obj->SpeakerCount() != 1 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetRearCenter( EFalse );
-    if( obj->RearCenter() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontLeftRightCenter( ETrue );
-    if( !obj->FrontLeftRightCenter() || obj->SpeakerCount() != 2 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontLeftRightCenter( EFalse );
-    if( obj->FrontLeftRightCenter() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetRearLeftRightCenter( ETrue );
-    if( !obj->RearLeftRightCenter() || obj->SpeakerCount() != 2 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetRearLeftRightCenter( EFalse );
-    if( obj->RearLeftRightCenter() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontWideSpeakers( ETrue );
-    if( !obj->FrontWideSpeakers() || obj->SpeakerCount() != 2 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontWideSpeakers( EFalse );
-    if( obj->FrontWideSpeakers() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontHighSpeakers( ETrue );
-    if( !obj->FrontHighSpeakers() || obj->SpeakerCount() != 2 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetFrontHighSpeakers( EFalse );
-    if( obj->FrontHighSpeakers() || obj->SpeakerCount() != 0 )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    CleanupStack::PopAndDestroy( buf );
-    
-    return err;
-    }
-
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CheckHdmiVideoFormatObjectL
-// ----------------------------------------------------------------------------------   
-TInt CTFAccessoryTestControl::CheckHdmiVideoFormatObjectL()
-    {
-    TInt err = KErrNone;
-    CAccPolHdmiVideoFormat* obj = NULL;
-    CAccPolHdmiVideoFormat* objDuplicate = NULL;
-    TUint8 objectType = 0;
-    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
-    CleanupStack::PushL( buf );
-    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
-    
-    // NewL
-    obj = CAccPolHdmiVideoFormat::NewL();
-    CleanupStack::PushL( obj );
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewLC
-    obj = CAccPolHdmiVideoFormat::NewLC();
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewL - with params
-    obj = CAccPolHdmiVideoFormat::NewL( E640x480p59_94d60Hz4d3,
-        E640x350p85HzRB,
-        1,
-        ETrue );
-    CleanupStack::PushL( obj );
-    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->DmtFixedMode() != E640x350p85HzRB )
-        {
-        err = KErrArgument;
-        }
-    if( obj->PixelRepeat() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->Interlaced() )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    
-    // NewLC - with params
-    obj = CAccPolHdmiVideoFormat::NewLC( E640x480p59_94d60Hz4d3,
-        E640x350p85HzRB,
-        1,
-        ETrue );
-    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->DmtFixedMode() != E640x350p85HzRB )
-        {
-        err = KErrArgument;
-        }
-    if( obj->PixelRepeat() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->Interlaced() )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    
-    // Internalize & Externalize
-    obj = CAccPolHdmiVideoFormat::NewLC( E640x480p59_94d60Hz4d3,
-        E640x350p85HzRB,
-        1,
-        ETrue );
-    RBufWriteStream writeStream;
-    writeStream.Open( *buf );
-    writeStream.PushL();
-    obj->ExternalizeL( writeStream );
-    writeStream.CommitL();
-    CleanupStack::PopAndDestroy( &writeStream );
-    CleanupStack::PopAndDestroy( obj );
-    
-    obj = CAccPolHdmiVideoFormat::NewLC();
-    RBufReadStream readStream;
-    readStream.Open( *buf );
-    readStream.PushL();
-    objectType = readStream.ReadUint8L();
-    obj->InternalizeL( readStream );
-    if( objectType != EAccPolHdmiVideoFormatObject )
-        {
-        err = KErrArgument;
-        }
-    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
-        {
-        err = KErrArgument;
-        }
-    if( obj->DmtFixedMode() != E640x350p85HzRB )
-        {
-        err = KErrArgument;
-        }
-    if( obj->PixelRepeat() != 1 )
-        {
-        err = KErrArgument;
-        }
-    if( !obj->Interlaced() )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( &readStream );
-    CleanupStack::PopAndDestroy( obj );
-    
-    // DuplicateLC - mem compare can be used since the object does not contain
-    // any ponters as memebers
-    obj = CAccPolHdmiVideoFormat::NewLC( E640x480p59_94d60Hz4d3,
-        E640x350p85HzRB,
-        1,
-        ETrue );
-    objDuplicate = static_cast<CAccPolHdmiVideoFormat*>( obj->DuplicateLC() );
-    TUint8* left = reinterpret_cast<TUint8*>( obj );
-    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
-    TInt size = sizeof( CAccPolHdmiVideoFormat );
-    if( Mem::Compare( left, size, right, size ) != KErrNone )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( objDuplicate );
-    CleanupStack::PopAndDestroy( obj );
-
-    // Rest of the API
-    obj = CAccPolHdmiVideoFormat::NewLC();
-    obj->SetCeaFixedMode( E640x480p59_94d60Hz4d3 );
-    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetDmtFixedMode( E640x350p85HzRB );
-    if( obj->DmtFixedMode() != E640x350p85HzRB )
-        {
-        err = KErrArgument;
-        }
-    obj->SetPixelRepeat( 4 );
-    if( obj->PixelRepeat() != 4 )
-        {
-        err = KErrArgument;
-        }
-    obj->SetInterlaced( ETrue );
-    if( !obj->Interlaced() )
-        {
-        err = KErrArgument;
-        }
-    CleanupStack::PopAndDestroy( obj );
-    CleanupStack::PopAndDestroy( buf );
-    
-    return err;
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFTestControlObserver* CTFAccessoryTestControl::CreateObserver()
-// ----------------------------------------------------------------------------------	
-CTFTestControlObserver* CTFAccessoryTestControl::CreateObserver()
-    {
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CreateObserver()" ) ) );
-    iStack.AddFirst/*AddLast*/( *CTFTestControlObserver::NewL( *this ) );
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CreateObserver() return" ) ) );
-    return iStack.First/*Last*/();
-    }
-
-// Not used at this point.
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::ProcessMessageAndCompleteL
-// ----------------------------------------------------------------------------------	
-void CTFAccessoryTestControl::ProcessMessageAndCompleteL( const RMessage2& aMessage )
-    {
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ProcessMessageAndCompleteL enter" ) ) );
-    aMessage.Complete( KErrNone );
-    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ProcessMessageAndCompleteL return" ) ) );
-    }
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::MessageCompleteL
-// ----------------------------------------------------------------------------------	
-void CTFAccessoryTestControl::MessageCompleteL( TInt /*aResult*/)
-    {
-
-    }
-
-//
-// ----------------------------------------------------------------------------------
-// CTFAccessoryTestControl::CreateHdmiObjectL
-// ----------------------------------------------------------------------------------   
-void CTFAccessoryTestControl::CreateHdmiObjectL( CAccPolObjectCon& aCon,
-    THdmiConObjectType aType )
-    {
-    switch( aType )
-        {
-        case EAccPolHdmiSinkObject:
-            {
-            CAccPolHdmiSink* sink = CAccPolHdmiSink::NewLC();
-            sink->SetBasicAudioSupport( ETrue );
-            sink->SetHdcpSupport( ETrue );
-            aCon.AddL( *sink );
-            CleanupStack::PopAndDestroy( sink );
-            break;
-            }
-        case EAccPolHdmiAudioFormatObject:
-            {
-            CAccPolHdmiAudioFormat* audioFormat = CAccPolHdmiAudioFormat::NewLC();
-            audioFormat->SetAudioFormat( HdmiAudioFormat::KUidFormatPCM16 );
-            audioFormat->SetChannelCount( 2 );
-            audioFormat->SetBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample16 );
-            audioFormat->SetMaxBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample16 );
-            audioFormat->SetFormatDependentValue( CAccPolHdmiAudioFormat::EBitsPerSample16 );
-            audioFormat->SamFreq( CAccPolHdmiAudioFormat::ESamplingFreq32KHz );
-            aCon.AddL( *audioFormat );
-            CleanupStack::PopAndDestroy( audioFormat );
-            break;
-            }
-        case EAccPolHdmiLatencyObject:
-            {
-            CAccPolHdmiLatency* latency = CAccPolHdmiLatency::NewLC();
-            latency->SetLatencyType( HdmiLatency::KUidLatency );
-            latency->SetAudioLatency( 100 );
-            latency->SetVideoLatency( 200 );
-            aCon.AddL( *latency );
-            CleanupStack::PopAndDestroy( latency );
-            break;
-            }
-        case EAccPolHdmiSpeakerAllocationObject:
-            {
-            CAccPolHdmiSpeakerAllocation* speakerAllocation =
-                CAccPolHdmiSpeakerAllocation::NewLC();
-            speakerAllocation->SetFrontSpeakers( ETrue );
-            speakerAllocation->SetRearSpeakers( ETrue );
-            speakerAllocation->SetLowFrequencyEffect( ETrue );
-            speakerAllocation->SetFrontCenter( ETrue );
-            speakerAllocation->SetFrontCenterHigh( ETrue );
-            speakerAllocation->SetTopCenter( ETrue );
-            speakerAllocation->SetRearCenter( ETrue );
-            speakerAllocation->SetFrontLeftRightCenter( ETrue );
-            speakerAllocation->SetRearLeftRightCenter( ETrue );
-            speakerAllocation->SetFrontWideSpeakers( ETrue );
-            speakerAllocation->SetFrontHighSpeakers( ETrue );
-            aCon.AddL( *speakerAllocation );
-            CleanupStack::PopAndDestroy( speakerAllocation );
-            break;
-            }
-        case EAccPolHdmiVideoFormatObject:
-            {
-            CAccPolHdmiVideoFormat* videoFormat = CAccPolHdmiVideoFormat::NewLC();
-            videoFormat->SetCeaFixedMode( E640x480p59_94d60Hz4d3 );
-            videoFormat->SetDmtFixedMode( E640x480p85HzRB );
-            videoFormat->SetInterlaced( EFalse );
-            aCon.AddL( *videoFormat );
-            CleanupStack::PopAndDestroy( videoFormat );
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }
-    }
-    
-
-void CTFAccessoryTestControl::AccessoryConnectionOpenClose(TTFAccessoryFunction aCase, TInt* aRetval)
-    {
-    switch(aCase)
-        {
-        case ETFAccessoryConnection_Open:
-            {
-            if ( iAccessoryConnection == NULL )
-                {
-                    iAccessoryConnection = new ( ELeave ) RAccessoryConnection;
-                    *aRetval = iAccessoryConnection->CreateSubSession( iAccessoryServer );
-                    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL(TTFAccessoryTestCaseStateControl& aParameter) - ETFAccessoryConnection_Open - Sub session created - (%d)" ), *aRetval ) );
-                 }
-           else
-                 {
-                    *aRetval = KErrNone;
-                    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL(TTFAccessoryTestCaseStateControl& aParameter) - ETFAccessoryConnection_Open - Sub session not created - (%d)" ), *aRetval ) );
-                 }
-            }
-            break;
-        
-        case ETFAccessoryConnection_Close:
-            {
-            TRACE_ASSERT( iAccessoryConnection != NULL );
-                                
-            if ( iAccessoryConnection != NULL )
-                {
-                     iAccessoryConnection->CloseSubSession();
-                     delete iAccessoryConnection;
-                     iAccessoryConnection = NULL;
-                     COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL(TTFAccessoryTestCaseStateControl& aParameter) - ETFAccessoryConnection_Close - Sub session closed" ) ) );
-                 }                               
-             *aRetval = KErrNone;
-            }
-            break;
-            
-        default:
-            break;
-        }
-      
-    }
-
-void CTFAccessoryTestControl::FindAndCheckRequestL( TInt* aRetval, TTFAccessoryTestCaseStateControl& aParameter )
-    {
-    CTFAccessoryTestCaseControl* testCase = STATIC_CAST( CTFAccessoryTestCaseControl*, CurrentTestCase());          
-    TInt errVal = 0;
-                
-    TRACE_ASSERT( testCase != NULL );
-    if ( testCase != NULL )
-        {
-           TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::FindAndCheckRequest() - inside if ( testCase != NULL )" ) ) );
-           if(!iStack.IsEmpty())
-              {
-                 iStackIter.SetToFirst(); 
-            
-              while ( ( iObserverItem = iStackIter++ ) != NULL )
-                 {
-                     if(iObserverItem->FindRequest(aParameter.iRequestType))
-                        {
-                           testCase->CheckRequest( iObserverItem->iStatus, 
-                                                   iObserverItem->iValue, 
-                                                   iObserverItem->iCapabilityName,
-                                                   &errVal );  
-                                        
-                            if(errVal == KTFDontDeleteObserver)
-                                {
-                                aParameter.iArg1 = KTFDontDeleteObserver;
-                                }
-                                
-                                        
-                            if ( !iStack.IsEmpty() ) // Check if observes are already deleted by CheckRequest()
-                                {
-                                   if( KTFDontDeleteObserver != aParameter.iArg1 )
-                                      {
-                                         if (iObserverItem->iStatus == KRequestPending )
-                                             {
-                                             User::WaitForRequest(iObserverItem->iStatus);
-                                             }
-                                         iStack.Remove( *iObserverItem );
-                                         delete iObserverItem;
-                                      }
-                                   else
-                                       {
-                                          User::Leave( KTFDontDeleteObserver );
-                                       }
-                                 }
-                            else
-                                 {
-                                     *aRetval = KErrGeneral;
-                                 }
-                          }                               
-                  }
-        }
-    else
-        {
-            *aRetval = KErrGeneral;
-        }
-    }
-          
-    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::FindAndCheckRequest() returning and setting *aRetval = KErrNone )" ) ) );
-   *aRetval = KErrNone;
-    }
-
-
-void CTFAccessoryTestControl::AccessorySettingsOpenClose( TTFAccessoryFunction aCase, TInt* aRetval )
-    {
-        switch(aCase)
-            {
-            case ETFAccessorySettings_Open:
-                {
-                if ( iAccessorySettings == NULL )
-                    {
-                         iAccessorySettings = new ( ELeave ) RAccessorySettings;
-                         *aRetval = iAccessorySettings->CreateSubSession( iAccessoryServer );
-                     }
-                else
-                         *aRetval = KErrNone;
-                }
-                break;
-                
-            case ETFAccessorySettings_Close:
-                {
-                    TRACE_ASSERT( iAccessorySettings != NULL );
-                            
-                    if ( iAccessorySettings != NULL )
-                        {
-                            iAccessorySettings->CloseSubSession();
-                            delete iAccessorySettings;
-                            iAccessorySettings = NULL;
-                        }                                
-                    *aRetval = KErrNone;
-                }
-                break;
-                
-            default:
-                break;
-            
-            }
-    }
-
-void CTFAccessoryTestControl::SetSeveralAccessoryModeSetting( TInt* aRetval )
-    {
-        TAccModeSetting accModeSettingIn;
-        TAccMode tAccMode = EAccModeWirelessHeadset;
-        TBuf< KMaxAccModeSetting > aDesIn; 
-        // Set
-        // setting 1
-        accModeSettingIn.SetId( 11 ); // unknown TInt
-        accModeSettingIn.SetTInt( 1 );
-        TAccModeSettingArray arrayIn;
-        arrayIn.AddSetting( accModeSettingIn );
-                
-        // setting 2
-        accModeSettingIn.SetId( 12 );   // unknown Des
-        _LIT( KAccSetting2, "012345678901234567890" );
-        aDesIn.Copy( KAccSetting2 );
-        accModeSettingIn.SetTDes( aDesIn );
-        arrayIn.AddSetting( accModeSettingIn );
-                
-        // setting 3
-        accModeSettingIn.SetId( 13 ); // unknown TBool
-        accModeSettingIn.SetTBool( ETrue );
-        arrayIn.AddSetting( accModeSettingIn );
-        
-        *aRetval = iAccessorySettings->SetAccessoryModeSettingsL( tAccMode, arrayIn );
-    }
-
-void CTFAccessoryTestControl::GetSeveralAccessoryModeSetting( TInt* aRetval )
-    {
-    TAccModeSetting accModeSettingOut;
-    TAccMode tAccMode = EAccModeWirelessHeadset;
-    TBuf< KMaxAccModeSetting > aDesOut; 
-    TAccModeSettingArray arrayOut;
-    TInt intOut( 0 );
-    // set input parameters for GetAccessoryModeSettings()
-    // setting 11
-    accModeSettingOut.SetId( 11 );
-    arrayOut.AddSetting( accModeSettingOut );
-
-    // setting 12
-    accModeSettingOut.SetId( 12 );
-    arrayOut.AddSetting( accModeSettingOut );
-
-    // setting 13
-    accModeSettingOut.SetId( 13 );
-    arrayOut.AddSetting( accModeSettingOut );
-                
-    *aRetval = iAccessorySettings->GetAccessoryModeSettings( tAccMode, arrayOut );
-                
-    // Check that got settings are right
-                
-    TInt count = arrayOut.GetArraySize();
-    TInt foundCount(0);
-                
-    for( TInt index = 0; index < count; index++ )
-        {
-            arrayOut.GetSetting( index, accModeSettingOut );
-                        
-            if( 11 == accModeSettingOut.Id() ) 
-                {
-                            
-                accModeSettingOut.GetTInt( intOut);
-                            
-                if( 1 == intOut )
-                    {
-                        foundCount++;    
-                    }
-                 }
-                            
-                            
-             if( 12 == accModeSettingOut.Id() ) 
-                 {
-                     accModeSettingOut.GetTDes( aDesOut );
-                
-                     if( KErrNone == aDesOut.Compare( _L("012345678901234567890") ) )
-                     {
-                         foundCount++;
-                      }
-                            
-                  }
-                            
-              if( 13 == accModeSettingOut.Id() ) 
-                  {
-                            
-                      accModeSettingOut.GetTBool( intOut );
-                            
-                      if( intOut )
-                          {
-                              foundCount++;    
-                          }
-                  } 
-        }
-
-        if(foundCount != 3)
-            {
-                *aRetval = KErrNotFound;
-            }
-                       
-        //
-        // Reset Settings
-        //
-        TAccModeSetting accModeSettingIn;
-        TBuf< KMaxAccModeSetting > aDesIn; 
-        // Set
-        // setting 1
-        accModeSettingIn.SetId( 11 ); // unknown TInt
-        accModeSettingIn.SetTInt( 0 );
-        TAccModeSettingArray arrayIn;
-        arrayIn.AddSetting( accModeSettingIn );
-                    
-        // setting 2
-        accModeSettingIn.SetId( 12 );   // unknown Des
-        _LIT( KAccSetting2, "" );
-        aDesIn.Copy( KAccSetting2 );
-        accModeSettingIn.SetTDes( aDesIn );
-        arrayIn.AddSetting( accModeSettingIn );
-                    
-        // setting 3
-        accModeSettingIn.SetId( 13 ); // unknown TBool
-        accModeSettingIn.SetTBool( EFalse );
-        arrayIn.AddSetting( accModeSettingIn );
-                    
-        iAccessorySettings->SetAccessoryModeSettingsL( tAccMode, arrayIn );
-    
-    }
-
-void CTFAccessoryTestControl::SetIntValue( TTFAccessoryTestCaseStateControl& aParameter, TInt *aRetval )
-    {
-        switch( aParameter.iArg3 )
-               {
-               case KAccSetVolumeLevel:
-                   {
-                   //AccPolCommonNameValuePairs.h contains following example code  
-                   RAccessoryControl accessoryControl;
-                   accessoryControl.CreateSubSession( iAccessoryServer );
-                            
-                   CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();  
-                   CleanupStack::PushL( nameArray );      
-                   accessoryControl.GetSubblockNameArrayL( iGenericId[aParameter.iGid], *nameArray );
-            
-                   TAccPolNameRecord nameRecord;
-                   nameRecord.SetNameL( KAccSetVolumeLevel );                      
-                   TAccValueTypeTInt value;
-                        
-                   if( nameArray->HasName( KAccSetVolumeLevel ) )
-                       {
-                       accessoryControl.GetValueL( iGenericId[aParameter.iGid], nameRecord, value );                                               
-                       value.iValue = value.iValue | aParameter.iArg1;                
-                       accessoryControl.AccessoryValueChangedNotifyL( iGenericId[aParameter.iGid], nameRecord, value );
-                   }
-                                
-                   CleanupStack::PopAndDestroy( nameArray );
-                   accessoryControl.CloseSubSession();
-                   *aRetval = KErrNone;
-                   }
-                   break;
-            
-               default:
-                   {
-                   TAccPolNameRecord aNameRecord;
-                   aNameRecord.SetNameL( aParameter.iArg3 );                       
-                   TAccValueTypeTInt aIntValue;         
-                   aIntValue.iValue = aParameter.iArg1;
-                   *aRetval = iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, aIntValue );
-                   }
-                   break;
-               }
-    
-    }
-
-void CTFAccessoryTestControl::SelectionDialog( TTFAccessoryFunction aCase, TInt* aRetval )
-    {
-        switch(aCase)
-            {
-            case ETFSelectionDialogText:
-                {
-                    const TUid KAccFwUiDialogNotifierUid = { 0x10205062 };
-                        
-                    RNotifier notifier;
-                    notifier.Connect();
-                    
-                    TInt selectionListBitmask = 255;
-                    TInt reply = 0;
-                    
-                    TPckg<TInt> replyPck( reply);
-                    TPckg<TUint32> selectionBitmaskPackage( selectionListBitmask);
-        
-                    //activate active object
-                    TRequestStatus status;
-                    status = KRequestPending;
-                    
-                    //open ui
-                    notifier.StartNotifierAndGetResponse( status, KAccFwUiDialogNotifierUid, selectionBitmaskPackage, replyPck);
-                    
-                    User::WaitForRequest( status);
-                    
-                    
-                    notifier.Close();
-                    
-                    *aRetval = KErrNone;
-                }
- 
-            case ETFSelectionDialogCancel:
-                {
-                    const TUid KAccFwUiDialogNotifierUid = { 0x10205062 };
-                            
-                    RNotifier notifier;
-                    notifier.Connect();
-                    
-                    TInt selectionListBitmask = 7;
-                    TInt reply = 0;
-                    
-                    TPckg<TInt> replyPck( reply);
-                    TPckg<TUint32> selectionBitmaskPackage( selectionListBitmask);
-        
-                    //activate active object
-                    TRequestStatus status;
-                    
-                    //open ui
-                    notifier.StartNotifierAndGetResponse( status, KAccFwUiDialogNotifierUid, selectionBitmaskPackage, replyPck);
-                    User::After( 2500000);
-                    notifier.CancelNotifier( KAccFwUiDialogNotifierUid);
-                    
-                    // Implementation of the dialog is changed. Request is completed every time
-                    User::WaitForRequest( status );
-                    
-                    notifier.Close();
-                    
-                    *aRetval = KErrNone;
-                }
-            
-            default:
-                break;
-                
-            }
-    
-    }
-
-void CTFAccessoryTestControl::CheckConnectedAccessory( TInt* aRetval )
-    {
-        *aRetval = KErrNone;
-                    
-        TAccPolGenericID            genID;                                  // TGeneric ID that should be connected
-        TAccPolGenericID            genIDConnected;                         // TGeneric ID that is connected
-        TAccPolGIDHeader            iGenericIDHeader;                       // Header of the GID that should be connected
-        TAccPolGIDHeader            iGenericIDHeaderConnected;              // Header of the connected GID
-        TAccPolGenericIDArray       genericIdArray;                         // Array of connected generic ID's
-        CAccConGenericID*           aGenericID = CAccConGenericID::NewL();  // This might be needed for capabilities 
-        CAccPolSubblockNameArray*   nameArrayConnected = CAccPolSubblockNameArray::NewL();
-        
-        CleanupStack::PushL( aGenericID );                        
-        CleanupStack::PushL( nameArrayConnected );
-        
-        TAccPolGenericID genericID = aGenericID->GenericID();
-
-        TBuf<KHWModelIDMaxLength>      hwModelID(_L("headset"));
-        // Set GenericID header
-        iGenericIDHeader.iAccessoryDeviceType   = KDTHeadset;
-        iGenericIDHeader.iPhysicalConnection    = KPCWired;
-        iGenericIDHeader.iApplicationProtocol   = 0x0;
-    
-        iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;   
-    
-        iGenericIDHeader.iHWModelID             = hwModelID;
-        iGenericIDHeader.iHWDeviceID            = 0x0;
-        iGenericIDHeader.iDBID                    = 0x0;
-                                           
-        RAccessoryConnection* accessoryConnection = new ( ELeave ) RAccessoryConnection();
-        CleanupStack::PushL( accessoryConnection );
-        accessoryConnection->CreateSubSession( iAccessoryServer );
-        accessoryConnection->GetAccessoryConnectionStatus( genericIdArray );
-        CleanupStack::PopAndDestroy( accessoryConnection );
-        
-        genIDConnected = genericIdArray.GetGenericIDL( 0 );
-        
-        RAccessorySingleConnection singleConnect;// = new ( ELeave ) RAccessoryConnectionBase();
-        singleConnect.CreateSubSession( iAccessoryServer );
-        singleConnect.GetSubblockNameArrayL( genIDConnected, *nameArrayConnected );
-        
-        singleConnect.CloseSubSession();
-        
-        iGenericIDHeaderConnected.iAccessoryDeviceType = genIDConnected.DeviceTypeCaps();
-        iGenericIDHeaderConnected.iPhysicalConnection = genIDConnected.PhysicalConnectionCaps();
-        iGenericIDHeaderConnected.iApplicationProtocol = genIDConnected.ApplicationProtocolCaps();
-        iGenericIDHeaderConnected.iCapabilitiesSubblocks = genIDConnected.SubblockCaps();
-        iGenericIDHeaderConnected.iHWModelID = genIDConnected.HWModelID();
-        iGenericIDHeaderConnected.iHWDeviceID = genIDConnected.HWDeviceID();
-        iGenericIDHeaderConnected.iDBID = 0x0;
-
-        //Check GenericID header
-        if( iGenericIDHeader.iAccessoryDeviceType != iGenericIDHeaderConnected.iAccessoryDeviceType )
-        {
-            *aRetval = EFalse;
-        }
-        if( iGenericIDHeader.iPhysicalConnection != iGenericIDHeaderConnected.iPhysicalConnection )
-        {
-            *aRetval = EFalse;
-        }
-        if( iGenericIDHeader.iApplicationProtocol != iGenericIDHeaderConnected.iApplicationProtocol )
-        {
-            *aRetval = EFalse;
-        }
-        if( iGenericIDHeader.iCapabilitiesSubblocks != iGenericIDHeaderConnected.iCapabilitiesSubblocks )
-        {
-            *aRetval = EFalse;
-        }
-        if( iGenericIDHeader.iHWModelID != iGenericIDHeaderConnected.iHWModelID )
-        {
-            *aRetval = EFalse;
-        }
-        if( iGenericIDHeader.iHWDeviceID != iGenericIDHeaderConnected.iHWDeviceID )
-        {
-            *aRetval = EFalse;
-        }
-        if( !( nameArrayConnected->HasName( KAccStereoAudio ) ) )
-        {
-            *aRetval = EFalse;
-        }
-
-        if( !( nameArrayConnected->HasName( KAccAudioOutConnector ) ) )
-        {
-            *aRetval = EFalse;
-        }
-
-        if( !( nameArrayConnected->HasName( KAccAudioOutputType ) ) )
-        {
-            *aRetval = EFalse;
-        }
-        //CleanupStack::PopAndDestroy( nameValueArray );
-        CleanupStack::PopAndDestroy( nameArrayConnected );
-        CleanupStack::PopAndDestroy( aGenericID );
-
-    }
-
-
-void CTFAccessoryTestControl::CallTClassMethods( TInt* aRetval )
-    {
-     //   Settings();
-        Policy();
-      *aRetval = KErrNone;
-    }
-
-void CTFAccessoryTestControl::Settings()
-    {
-    TAccModeSettingArray array;
-    array.Reset();
-    TInt ret = array.GetMaxArraySize();
-    TAccModeSetting setting;
-    TUint32 settingId( 1 );
-    setting.SetId( settingId );
-    array.AddSetting( setting );
-    TAccModeSetting setting2;
-    ret = array.GetSetting( 0, setting2 );
-    ret = array.GetArraySize();
-    }
-
-void CTFAccessoryTestControl::Policy()
-    {
-    TInt valueInt( 1 );
-    TUint32 valueUInt( 1 );
-    TDesC8 des( _L8( "timo" ) );
-    //TDes8 valueDesc = des;
-    TAccPolNameRecord nameRecord;
-    TAccPolValueRecord valRec( des, EAPVPolicy );
-    TAccPolNameValueRecord nameValRec;
-    TAccPolNameValueRecord nameValRec1( nameRecord, valRec );
-    TAccPolNameValueRecord nameValRec2( valueUInt, valueInt, EAPVInt, EAPVPolicy );
-    TAccPolNameValueRecord nameValRec3( valueUInt, des, EAPVPolicy );
-    TAccPolNameValueRecord nameValRec4( valueUInt );
-    //TDesC8 valueToGet;
-    valRec.GetValueL( des );
-    valRec.SetValue( des );
-    //valRec.SetValue( valueToGet );
-    TAccPolValueRecord valRec1( valueInt, EAPVInt, EAPVPolicy );
-    valRec1.SetValue( valueInt );
-    valRec1.SetLocation( EAPVPolicy );
-    valRec1.SetL( valueInt, EAPVInt, EAPVPolicy );
-    }
-
-void CTFAccessoryTestControl::GetBoolAccessoryModeSetting( TTFAccessoryTestCaseStateControl& aParameter, TInt* aRetval )
-    {
-        TBool aSettingsValueBool;
-                    
-        TAccMode aAccMode = (TAccMode)aParameter.iArg1;
-        TAccModeSetting aSetting;
-        aSetting.SetId(aParameter.iArg2);
-        
-        *aRetval = iAccessorySettings->GetAccessoryModeSetting(aAccMode, aSetting);
-        
-        if( aSetting.Type() == EAccModeSettingBool) 
-            {
-                *aRetval = aSetting.GetTBool(aSettingsValueBool);
-                
-                if(*aRetval != KErrNotFound)
-                {
-                    if(aSettingsValueBool == (TBool)aParameter.iArg4)  
-                    {
-                        *aRetval = KErrNone;
-                    }
-                    else
-                    {
-                        *aRetval = KErrArgument;
-                    }
-                }
-            }
-            else
-            {
-                *aRetval = KErrNotFound;
-            }
-    }
-
-void CTFAccessoryTestControl::GetIntAccessoryModeSetting( TTFAccessoryTestCaseStateControl& aParameter, TInt* aRetval )
-    {
-        TInt aSettingsValueInt;
-                    
-        TAccMode aAccMode = (TAccMode)aParameter.iArg1;
-        TAccModeSetting aSetting;
-        aSetting.SetId(aParameter.iArg2);
-        
-        *aRetval = iAccessorySettings->GetAccessoryModeSetting(aAccMode, aSetting);
-        
-        if(aSetting.Type() == EAccModeSettingInt)  
-            {
-                *aRetval = aSetting.GetTInt(aSettingsValueInt);
-                
-                if(*aRetval != KErrNotFound)
-                {
-                    if( aSettingsValueInt == aParameter.iArg4 )  
-                    {
-                        *aRetval = KErrNone;
-                    }
-                    else
-                    {
-                        *aRetval = KErrArgument;
-                    }
-                }
-            }
-            else
-            {
-                *aRetval = KErrNotFound;
-            }
-    }
-
-void CTFAccessoryTestControl::GetDesAccessoryModeSetting( TTFAccessoryTestCaseStateControl& aParameter, TInt* aRetval )
-    {
-        TBuf<KMaxAccModeSetting> aSettingsValueDes;
-                    
-        TAccMode aAccMode = (TAccMode)aParameter.iArg1;
-        TAccModeSetting aSetting;
-        aSetting.SetId( aParameter.iArg2 );
-        
-        *aRetval = iAccessorySettings->GetAccessoryModeSetting( aAccMode, aSetting );
-        
-        if( aSetting.Type() == EAccModeSettingDes ) 
-            {
-                *aRetval = aSetting.GetTDes( aSettingsValueDes );
-                
-                if(*aRetval != KErrNotFound)
-                {
-                    TBuf<KMaxAccModeSetting> buffer;
-                    buffer.Num( aParameter.iArg3 );
-                    if( KErrNone == aSettingsValueDes.Compare( buffer ) )  
-                    {
-                        *aRetval = KErrNone;
-                    }
-                    else
-                    {
-                        *aRetval = KErrArgument;
-                    }
-                }
-            }
-            else
-            {
-                *aRetval = KErrNotFound;
-            }
-    }    
-
-// End of file
+/*
+ * Copyright (c) 2005 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:
+ *
+ */
+
+// INCLUDE FILES
+
+#include <ctffactory.h>
+#include <tftypes.h>
+#include <AccPolSubblockNameArray.h>
+#include "siftrace.h"
+#include "CtfAccessoryTestcontrol.h"
+#include "CtfAccessoryTestCaseControl.h"
+#include <AccPolProprietaryNameValuePairs.h>
+#include <AccConGenericID.h>
+#include <AccPolPropGenericid.h>
+#include <AccessoryConnectionBase.h>
+#include <s32mem.h>
+
+#include <accpolobjectcon.h>
+#include <accpolaudiostreamformat.h>
+#include <accpolterminalbase.h>
+#include <accpoloutputterminal.h>
+#include <accpolinputterminal.h>
+#include <accpolmixerunit.h>
+#include <accpolfeatureunit.h>
+#include <accpolvolumecontrol.h>
+#include <accpolmutecontrol.h>
+#include <accpolselectorunit.h>
+
+#include <StartupDomainPSKeys.h>
+
+#include <E32Math.h>
+#include "AccClientServerMessages.h"
+#include <e32property.h>
+
+#include <accpolhdmiobjectcon.h>
+#include <tvoutconfigdef.h>
+
+//
+// ----------------------------------------------------------------------------------
+// MTFAccessoryTestControl* GetAccessoryTestControl
+// ----------------------------------------------------------------------------------	  
+MTFAccessoryTestControl* GetAccessoryTestControl( void )
+    {
+    CTFStub* stub = CTFFactory::Stub( KTFStubTypeAccessoryControl );
+    return STATIC_CAST( CTFAccessoryTestControl*, stub );
+    }
+//
+// ----------------------------------------------------------------------------------
+// MTFAccessoryTestControl::MTFAccessoryTestControl
+// ----------------------------------------------------------------------------------	  
+MTFAccessoryTestControl::MTFAccessoryTestControl( void )
+    {
+    }
+//
+// ----------------------------------------------------------------------------------
+// MTFAccessoryTestControl::~MTFAccessoryTestControl
+// ----------------------------------------------------------------------------------	  
+MTFAccessoryTestControl::~MTFAccessoryTestControl( void )
+    {
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CTFAccessoryTestControl
+// ----------------------------------------------------------------------------------	
+CTFAccessoryTestControl::CTFAccessoryTestControl( void ) :
+    CTFRemoteStub( KTFStubTypeAccessoryControl ),
+        iStack( CTFTestControlObserver::iOffset ), iStackIter( iStack )
+    {
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CTFAccessoryTestControl()" ) ) );
+
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CTFAccessoryTestControl() - return" ) ) );
+    }
+
+//lint -e1740 Pointer not directly deleted by destructor
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::~CTFAccessoryTestControl
+// ----------------------------------------------------------------------------------	
+CTFAccessoryTestControl::~CTFAccessoryTestControl( void )
+    {
+
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::~CTFAccessoryTestControl()" ) ) );
+    RProperty::Delete( KTFAccessoryTestProperty, KTFAccessoryMethod );
+
+    ResetAccessoryServices();
+
+    iAccessoryServer.Disconnect();
+
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::~CTFAccessoryTestControl() - Accessory Server connection closed" ) ) );
+
+    }
+//lint +e1740    
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::InitializeL
+// ----------------------------------------------------------------------------------	   
+void CTFAccessoryTestControl::InitializeL( void )
+    {
+
+    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::InitializeL( void ) - enter" ) ) );
+    TInt retval( KErrNone );
+
+    iAccessoryConnection = NULL;
+    iAccessorySingleConnection = NULL;
+    iAccessoryControl = NULL;
+    iAccessorySettings = NULL;
+    iAccessoryMode = NULL;
+    iAccessoryAudioControl = NULL;
+    iAccessoryBTControl = NULL;
+
+    iStreamContainer = NULL;
+    iTopologyContainer = NULL;
+    iSpeakerRightVolume = NULL;
+    iSpeakerLeftVolume = NULL;
+    iSpeakerMute = NULL;
+    iMicRightVolume = NULL;
+    iMicLeftVolume = NULL;
+
+    TAccPolGenericID emptyInstance;
+    for( TInt i( 0 ); i < 10; i++ )
+        {
+        iGenericId[i] = emptyInstance;
+        }
+
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::InitializeL()" ) ) );
+
+    User::LeaveIfError( iAccessoryServer.Connect() );
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::InitializeL() - Connected to accessory server" ) ) );
+
+    retval = RProperty::Define( KTFAccessoryTestProperty,
+        KTFAccessoryMethod,
+        RProperty::EByteArray );
+    if( retval != KErrAlreadyExists )
+        User::LeaveIfError( retval );
+    //attach to property
+
+
+    RProperty systemState;
+    User::LeaveIfError( systemState.Attach( KPSUidStartup, KPSGlobalSystemState ) );
+    TInt value( KErrNone );
+    //check value
+    TInt err = systemState.Get( value );
+
+    if( err != KErrNone )
+        {
+        err = systemState.Define( KPSUidStartup,
+            KPSGlobalSystemState,
+            RProperty::EInt );
+        TInt err = systemState.Get( value );
+        }
+
+    if( value != ESwStateNormalRfOn || value != ESwStateNormalRfOff || value
+        != ESwStateNormalBTSap )
+        {
+        TInt err = systemState.Set( KPSUidStartup,
+            KPSGlobalSystemState,
+            ESwStateNormalRfOn );
+        }
+
+    iInitialized = ETrue;
+
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::InitializeL - return" ) ) );
+    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::InitializeL( void ) - return" ) ) );
+    }
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::ResetAccessoryServices
+// ----------------------------------------------------------------------------------	
+void CTFAccessoryTestControl::ResetAccessoryServices( void )
+    {
+    ResetAccessoryServer();
+
+    iInitialized = EFalse;
+
+    iAccessoryServer.Close();
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::ResetAccessoryServer
+// ----------------------------------------------------------------------------------	
+void CTFAccessoryTestControl::ResetAccessoryServer( void )
+    {
+
+    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::ResetAccessoryServer()" ) ) );
+
+    CTFTestControlObserver* observerItem;
+    if( !iStack.IsEmpty() )
+        {
+        iStackIter.SetToFirst();
+
+        while( ( observerItem = iStackIter++ ) != NULL )
+            {
+            observerItem->Cancel();
+            User::After( 2000000 );
+            iStack.Remove( *observerItem );
+            COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Remove Observer" ) ) );
+            delete observerItem;
+            COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Delete Observer" ) ) );
+            };
+        }
+
+    iStack.Reset();
+
+    TAccPolGenericID emptyInstance;
+
+    for( TInt i( 0 ); i < 10; i++ )
+        {
+        COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Clear instances" ) ) );
+        if( KErrNotFound != iGenericId[i].UniqueID() )
+            {
+            if( iGenericId[i].PhysicalConnectionCaps( KPCBluetooth ) )
+                {
+                COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- BT Found" ) ) );
+                TBTDevAddr BTDevAddr( iGenericId[i].DeviceAddress() );
+                if( iAccessoryBTControl != NULL )
+                    {
+                    TRequestStatus status;
+                    status = KRequestPending;
+                    iAccessoryBTControl->DisconnectAccessory( status, BTDevAddr );
+                    User::WaitForRequest( status );
+                    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- BT Disconnected" ) ) );
+                    }
+                }
+            else
+                {
+                COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Wired Found" ) ) );
+                TPckgBuf<TTFAccessoryPublishAndSubscribe> buf;
+                buf().iMethod = ETFAsyDisc;
+                User::LeaveIfError( iSubscribe.Set( KTFAccessoryTestProperty,
+                    KTFAccessoryMethod,
+                    buf ) );
+                COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Wired Disconnected" ) ) );
+                }
+            }
+        iGenericId[i] = emptyInstance;
+        }
+
+    if( iAccessoryConnection != NULL )
+        {
+        iAccessoryConnection->CloseSubSession();
+        delete iAccessoryConnection;
+        iAccessoryConnection = NULL;
+        }
+
+    if( iAccessorySingleConnection != NULL )
+        {
+        iAccessorySingleConnection->CloseSubSession();
+        delete iAccessorySingleConnection;
+        iAccessorySingleConnection = NULL;
+        }
+    if( iAccessoryControl != NULL )
+        {
+        iAccessoryControl->CloseSubSession();
+        delete iAccessoryControl;
+        iAccessoryControl = NULL;
+        }
+    if( iAccessorySettings != NULL )
+        {
+        iAccessorySettings->CloseSubSession();
+        delete iAccessorySettings;
+        iAccessorySettings = NULL;
+        }
+    if( iAccessoryMode != NULL )
+        {
+        iAccessoryMode->CloseSubSession();
+        delete iAccessoryMode;
+        iAccessoryMode = NULL;
+        }
+
+    if( iAccessoryAudioControl != NULL )
+        {
+        iAccessoryAudioControl->CloseSubSession();
+        delete iAccessoryAudioControl;
+        iAccessoryAudioControl = NULL;
+        }
+
+    if( iAccessoryBTControl != NULL )
+        {
+        iAccessoryBTControl->CloseSubSession();
+        delete iAccessoryBTControl;
+        iAccessoryBTControl = NULL;
+        }
+
+    if( iSpeakerRightVolume != NULL )
+        {
+        delete iSpeakerRightVolume;
+        iSpeakerRightVolume = NULL;
+        }
+
+    if( iSpeakerLeftVolume != NULL )
+        {
+        delete iSpeakerLeftVolume;
+        iSpeakerLeftVolume = NULL;
+        }
+
+    if( iSpeakerMute != NULL )
+        {
+        delete iSpeakerMute;
+        iSpeakerMute = NULL;
+        }
+
+    if( iMicRightVolume != NULL )
+        {
+        delete iMicRightVolume;
+        iMicRightVolume = NULL;
+        }
+
+    if( iMicLeftVolume != NULL )
+        {
+        delete iMicLeftVolume;
+        iMicLeftVolume = NULL;
+        }
+
+    if( iStreamContainer != NULL )
+        {
+        delete iStreamContainer;
+        iStreamContainer = NULL;
+        }
+
+    if( iTopologyContainer != NULL )
+        {
+        delete iTopologyContainer;
+        iTopologyContainer = NULL;
+        }
+
+    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::ResetAccessoryServer() - Success" ) ) );
+    }
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CancelOutStandingRequest
+// ----------------------------------------------------------------------------------	    
+void CTFAccessoryTestControl::CancelOutStandingRequest()
+    {
+    iObserverItem->Cancel();
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::FillObjectL
+// ----------------------------------------------------------------------------------
+void CTFAccessoryTestControl::FillObjectL( CAccPolAudioStreamFormatCon* aContainer,
+    TStreamConObjectType aobjectType,
+    TInt64 aNumberOfObjects )
+    {
+
+    for( TInt i = 0; i < aNumberOfObjects; i++ )
+        {
+        switch( aobjectType )
+            {
+            case EAccPolAudioInputStreamObject:
+                {
+                CAccPolAudioStreamFormat* stream =
+                    CAccPolAudioStreamFormat::NewLC( aobjectType,
+                        i,
+                        KUidFormatPCM16,
+                        CAccPolAudioStreamFormat::EStereo,
+                        CAccPolAudioStreamFormat::EBitsPerSample16,
+                        i + 200 );
+                aContainer->AddL( *stream );
+                CleanupStack::PopAndDestroy( stream );
+                }
+                break;
+
+            case EAccPolAudioOutputStreamObject:
+                {
+
+                CAccPolAudioStreamFormat
+                    * stream =
+                        CAccPolAudioStreamFormat::NewLC( EAccPolAudioOutputStreamObject );
+
+                stream->SetUnitId( i );
+                stream->SetAudioFormat( KUidFormatPCM16 );
+                stream->SetStreamType( CAccPolAudioStreamFormat::EMono );
+                stream->SetBitResolution( CAccPolAudioStreamFormat::EBitsPerSample32 );
+                stream->SetSamFreq( i + 200 );
+
+                aContainer->AddL( *stream );
+                CleanupStack::PopAndDestroy( stream );
+                }
+                break;
+
+            default:
+                {
+                TRACE_ASSERT_ALWAYS;
+                }
+                break;
+            }
+        }
+
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CreateObjectPubSub
+// ----------------------------------------------------------------------------------
+void CTFAccessoryTestControl::CreateObjectPubSubL( TStreamConObjectType aobjectType,
+    TInt64 aNumberOfObjects,
+    TStreamConObjectType aobjectType2,
+    TInt64 aNumberOfObjects2 )
+    {
+    RProperty prop;
+    prop.Define( KTFAccessoryTestProperty,
+        KTFAccessoryObjectMethod,
+        RProperty::EByteArray );
+
+    CAccPolAudioStreamFormatCon* container =
+        CAccPolAudioStreamFormatCon::NewLC();
+
+    FillObjectL( container, aobjectType, aNumberOfObjects );
+    FillObjectL( container, aobjectType2, aNumberOfObjects2 );
+
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+
+    //Externalize container to buf
+    RBufWriteStream wStrm;
+    ( void )wStrm.Open( *buf );
+    wStrm.PushL();
+    container->ExternalizeL( wStrm );
+    wStrm.CommitL();
+    wStrm.Close();
+    wStrm.Pop();
+
+    TPtr8 ptr( buf->Ptr( 0 ) );
+
+    TInt retval = prop.Set( KTFAccessoryTestProperty,
+        KTFAccessoryObjectMethod,
+        ptr );
+
+    CleanupStack::PopAndDestroy( buf );
+    CleanupStack::PopAndDestroy( container );
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CreateObjectPubSub
+// ----------------------------------------------------------------------------------
+void CTFAccessoryTestControl::CreateTopologyObjectsToPubSubL(
+    TTFAccessoryTestCaseStateControl& aParameter )
+    {
+    RProperty prop;
+    prop.Define( KTFAccessoryTestProperty,
+        KTFAccessoryObjectMethod,
+        RProperty::EByteArray );
+
+    CAccPolAudioTopologyObjectCon* aObject =
+        CAccPolAudioTopologyObjectCon::NewLC();
+
+    //Speaker
+    //OT-3
+    CAccPolOutputTerminal* OT3 = CAccPolOutputTerminal::NewLC( 3,
+        CAccPolOutputTerminal::EAPTHeadphone,
+        2 );
+    //Connected to FU-2                                                                  
+    aObject->AddL( *OT3 );
+
+    //FU2
+    CAccPolFeatureUnit* FU2 = CAccPolFeatureUnit::NewLC( 2, 8 );
+    // Volume control object.
+    CAccPolVolumeControl* speakerRightVolume =
+        CAccPolVolumeControl::NewLC( KAccRightFrontChannel, 7, 5, 20, 5 );
+    CAccPolVolumeControl* speakerLeftVolume =
+        CAccPolVolumeControl::NewLC( KAccLeftFrontChannel, 7, 5, 20, 5 );
+
+    CAccPolMuteControl* speakermute =
+        CAccPolMuteControl::NewLC( KAccMasterChannel, ETrue );
+
+    FU2->AddControlL( *speakerRightVolume );
+    FU2->AddControlL( *speakerLeftVolume );
+    FU2->AddControlL( *speakermute );
+
+    //Connected to MU-8
+    aObject->AddL( *FU2 );
+
+    CAccPolMixerUnit* MU8 = CAccPolMixerUnit::NewLC( 8 );
+    MU8->AddSourceIdL( 1 );
+    MU8->AddSourceIdL( 7 );
+
+    //Connected to IT1 and FU7
+    aObject->AddL( *MU8 );
+
+    //Choice one
+    //IT-1
+    TUint8 aChannelCount = 2;
+    TUint16 aChannelConfig = 0;
+    aChannelConfig = aChannelConfig | KAccRightFrontChannel;
+    aChannelConfig = aChannelConfig | KAccLeftFrontChannel;
+
+    CAccPolInputTerminal* IT1 = CAccPolInputTerminal::NewLC( 1,
+        CAccPolInputTerminal::EAPTStream,
+        aChannelCount,
+        aChannelConfig );
+    aObject->AddL( *IT1 );
+
+    //choice two
+    //FU7
+    CAccPolFeatureUnit* FU7 = CAccPolFeatureUnit::NewLC( 7, 5 ); //Connected to FU5
+    // Volume control object.
+    CAccPolVolumeControl* sidetoneRightVolume =
+        CAccPolVolumeControl::NewLC( KAccMasterChannel, 7, 5, 20, 5 );
+    CAccPolVolumeControl* sidetoneLeftVolume =
+        CAccPolVolumeControl::NewLC( KAccMasterChannel, 7, 5, 20, 5 );
+
+    FU7->AddControlL( *sidetoneRightVolume );
+    FU7->AddControlL( *sidetoneLeftVolume );
+
+    aObject->AddL( *FU7 );
+
+    //Microphone
+    //IT-4
+
+    //OT-6
+    CAccPolOutputTerminal* OT6 = CAccPolOutputTerminal::NewLC( 6,
+        CAccPolOutputTerminal::EAPTStream,
+        10 );
+    //Connected to SU-10                                                           
+    aObject->AddL( *OT6 );
+
+    //SU-10
+    CAccPolSelectorUnit* SU10 = CAccPolSelectorUnit::NewLC( 10, 1 );
+
+    // Connected to FU 5                                                       
+    SU10->AddSourceIdL( 5 );
+    aObject->AddL( *SU10 );
+
+    //FU5
+    CAccPolFeatureUnit* FU5 = CAccPolFeatureUnit::NewLC( 5, 9 );
+
+    // Volume control object.
+    CAccPolVolumeControl* micRightVolume =
+        CAccPolVolumeControl::NewLC( KAccRightFrontChannel, 7, 5, 20, 5 );
+    CAccPolVolumeControl* micLeftVolume =
+        CAccPolVolumeControl::NewLC( KAccLeftFrontChannel, 7, 5, 20, 5 );
+    CAccPolMuteControl* micmute = CAccPolMuteControl::NewLC( KAccMasterChannel,
+        ETrue );
+
+    FU5->AddControlL( *micRightVolume );
+    FU5->AddControlL( *micLeftVolume );
+    FU5->AddControlL( *micmute );
+
+    //Connected to FU-9                                                               
+    aObject->AddL( *FU5 );
+
+    ///FU9
+    CAccPolFeatureUnit* FU9 = CAccPolFeatureUnit::NewLC( 9, 4 );
+    //Connected IT-4                                                               
+    aObject->AddL( *FU9 );
+
+    CAccPolInputTerminal* IT4 = CAccPolInputTerminal::NewLC( 4,
+        CAccPolInputTerminal::EAPTMicrophone,
+        aChannelCount,
+        aChannelConfig );
+    aObject->AddL( *IT4 );
+
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+
+    //Externalize container to buf
+    RBufWriteStream wStrm;
+    ( void )wStrm.Open( *buf );
+    wStrm.PushL();
+    aObject->ExternalizeL( wStrm );
+    wStrm.CommitL();
+    wStrm.Close();
+    wStrm.Pop();
+    TPtr8 ptr( buf->Ptr( 0 ) );
+    TInt retval = prop.Set( KTFAccessoryTestProperty,
+        KTFAccessoryObjectMethod,
+        ptr );
+    
+    // Notify ASY stub
+    if( aParameter.iArg2 )
+        {
+        PublishAndSubscribeL( aParameter );
+        }
+
+    CleanupStack::PopAndDestroy( buf );
+    CleanupStack::PopAndDestroy( IT4 );
+    CleanupStack::PopAndDestroy( FU9 );
+    CleanupStack::PopAndDestroy( micmute );
+    CleanupStack::PopAndDestroy( micLeftVolume );
+    CleanupStack::PopAndDestroy( micRightVolume );
+    CleanupStack::PopAndDestroy( FU5 );
+    CleanupStack::PopAndDestroy( SU10 );
+    CleanupStack::PopAndDestroy( OT6 );
+    CleanupStack::PopAndDestroy( sidetoneLeftVolume );
+    CleanupStack::PopAndDestroy( sidetoneRightVolume );
+    CleanupStack::PopAndDestroy( FU7 );
+    CleanupStack::PopAndDestroy( IT1 );
+    CleanupStack::PopAndDestroy( MU8 );
+    CleanupStack::PopAndDestroy( speakermute );
+    CleanupStack::PopAndDestroy( speakerLeftVolume );
+    CleanupStack::PopAndDestroy( speakerRightVolume );
+    CleanupStack::PopAndDestroy( FU2 );
+    CleanupStack::PopAndDestroy( OT3 );
+    CleanupStack::PopAndDestroy( aObject );
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CallAccessoryFunctionL
+// ----------------------------------------------------------------------------------	
+void CTFAccessoryTestControl::CallAccessoryFunctionL( TTFAccessoryTestCaseStateControl& aParameter )
+    {
+
+    //    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CallAccessoryFunctionL(%d, %d, %d)" ), aParameter.iAccessoryFunction, aParameter.iArg1, aParameter.iArg2 ) );
+    if( !iInitialized )
+        {
+        InitializeL();
+        }
+
+    TInt retval = KTFErrAccessoryServiceMissing;
+
+    switch( aParameter.iAccessoryFunction )
+        {
+        case ETFAccessorySet_ObjectPubSub:
+            {
+            CreateObjectPubSubL( ( TStreamConObjectType )aParameter.iArg1,
+                aParameter.iArg2,
+                ( TStreamConObjectType )aParameter.iArg3,
+                aParameter.iArg4 );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessorySet_TopologyObjectsPubSub:
+            {
+            CreateTopologyObjectsToPubSubL( aParameter );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessorySet_PubSub:
+            {
+            RProperty prop;
+            prop.Define( KTFAccessoryTestProperty,
+                KTFAccessoryNotifierMethod,
+                RProperty::EInt );
+            retval = prop.Set( KTFAccessoryTestProperty,
+                KTFAccessoryNotifierMethod,
+                aParameter.iArg1 );
+            }
+            break;
+
+        case ETFConnectWiredAccessory:
+            {
+            PublishAndSubscribeL( aParameter );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFClearStack:
+            {
+            CTFTestControlObserver* observerItem;
+            TInt count = 0;
+            if( !iStack.IsEmpty() )
+                {
+                iStackIter.SetToFirst();
+
+                while( ( observerItem = iStackIter++ ) != NULL )
+                    {
+                    observerItem->Cancel();
+                    iStack.Remove( *observerItem );
+                    delete observerItem;
+                    count++;
+                    };
+                }
+
+            TEST_CASE_TRACE( ( _L( "CTFAccessoryTestCaseControl::ETF_Pappa - count=%d " ), count ) );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFDisconnectWiredAccessory:
+            {
+            retval = KErrNone;
+            PublishAndSubscribeL( aParameter );
+            TAccPolGenericID emptyInstance;
+            iGenericId[aParameter.iGid] = emptyInstance;
+            }
+            break;
+
+        case ETFCheckCapabilityGroup:
+            {
+            if( aParameter.iArg2
+                == iGenericId[aParameter.iGid].SubblockCaps( aParameter.iArg3 ) )
+                {
+                retval = KErrNone;
+                }
+            else
+                {
+                retval = KErrNotFound;
+                }
+            }
+            break;
+
+        case ETFCheckCapability:
+            {
+            RAccessoryConnection accessoryConnectionn;
+            accessoryConnectionn.CreateSubSession( iAccessoryServer );
+
+            CAccPolSubblockNameArray* nameArrayy =
+                CAccPolSubblockNameArray::NewL();
+            CleanupStack::PushL( nameArrayy );
+            accessoryConnectionn.GetSubblockNameArrayL( iGenericId[aParameter.iGid],
+                *nameArrayy );
+
+            if( aParameter.iArg2 == nameArrayy->HasName( aParameter.iArg3 ) )
+                {
+                retval = KErrNone;
+                }
+            else
+                {
+                retval = KErrNotFound;
+                }
+
+            CleanupStack::PopAndDestroy( nameArrayy );
+            accessoryConnectionn.CloseSubSession();
+            }
+            break;
+
+        case ETFFindAndCheckRequest:
+
+            {
+            FindAndCheckRequestL(&retval, aParameter);
+		}
+            break;
+
+        case ETFFindAndCheckObjectRequest:
+            {
+            CTFAccessoryTestCaseControl* testCase = STATIC_CAST( CTFAccessoryTestCaseControl*, CurrentTestCase());
+            TRACE_ASSERT( testCase != NULL );
+            if( testCase != NULL )
+                {
+                if( !iStack.IsEmpty() )
+                    {
+                    iStackIter.SetToFirst();
+
+                    while( ( iObserverItem = iStackIter++ ) != NULL )
+                        {
+                        if( iObserverItem->FindRequest( aParameter.iRequestType ) )
+                            {
+                            testCase->CheckObjectRequest( iObserverItem->iStatus,
+                                iObserverItem->iObjectValue,
+                                iObserverItem->iCapabilityName );
+
+                            if( !iStack.IsEmpty() ) // Check if observes are already deleted by CheckRequest()
+                                {
+                                if( KTFDontDeleteObserver != aParameter.iArg1 )
+                                    {
+                                    iStack.Remove( *iObserverItem );
+                                    delete iObserverItem;
+                                    return;
+                                    }
+                                else
+                                    {
+                                    User::Leave( KTFDontDeleteObserver );
+                                    }
+                                }
+                            else
+                                {
+                                retval = KErrGeneral;
+                                }
+                            }
+                        }
+                    }
+                else
+                    {
+                    retval = KErrGeneral;
+                    }
+                }
+
+            retval = KErrNone;
+            }
+            break;
+
+            //
+            // Accessory Connection
+            //                 
+        case ETFAccessoryConnection_Open:
+            {
+                AccessoryConnectionOpenClose(ETFAccessoryConnection_Open, &retval);            
+            }
+            break;
+
+        case ETFAccessoryConnection_Close:
+
+            {
+                AccessoryConnectionOpenClose(ETFAccessoryConnection_Close, &retval);
+        	}        	
+            break;
+
+            //
+            // Accessory Settings
+            //                                           		
+        case ETFAccessorySettings_Open:
+            {
+                AccessorySettingsOpenClose(ETFAccessorySettings_Open, &retval);        	
+        	}
+            break;
+
+        case ETFAccessorySettings_Close:
+            {
+        	AccessorySettingsOpenClose(ETFAccessorySettings_Close, &retval);
+        	}
+            break;
+
+        case ETFSetHWDeviceSettings:
+            {
+            retval
+                = iAccessorySettings->SetHWDeviceSettingsL( aParameter.iArg1,
+                    ( TBool )aParameter.iArg2 );
+            }
+            break;
+
+        case ETFGetHWDeviceSettings:
+            {
+            TUint32 aSettingsValue( 0 );
+            retval = iAccessorySettings->GetHWDeviceSettings( aSettingsValue );
+
+            if( aSettingsValue != aParameter.iArg1 )
+                {
+                retval = KErrArgument;
+                }
+            }
+            break;
+
+        case ETFGetSupportedHWDeviceSettings:
+            {
+            TUint32 aSettingsSupportedValue( 0 );
+
+            retval
+                = iAccessorySettings->GetSupportedHWDeviceSettings( aSettingsSupportedValue );
+
+            if( aSettingsSupportedValue != ( aParameter.iArg1
+                | aParameter.iArg2 ) )
+                {
+                retval = KErrArgument;
+                }
+            }
+            break;
+
+        case ETFSetIntAccessoryModeSetting:
+            {
+            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
+            TAccModeSetting aSetting;
+
+            //Set Lights
+            aSetting.SetId( aParameter.iArg2 );
+            aSetting.SetTInt( aParameter.iArg4 );
+
+            retval = iAccessorySettings->SetAccessoryModeSettingL( aAccMode,
+                aSetting );
+            }
+            break;
+
+        case ETFSetBoolAccessoryModeSetting:
+            {
+            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
+            TAccModeSetting aSetting;
+
+            //Set Lights 
+            aSetting.SetId( aParameter.iArg2 );
+            aSetting.SetTBool( aParameter.iArg4 );
+
+            retval = iAccessorySettings->SetAccessoryModeSettingL( aAccMode,
+                aSetting );
+            }
+            break;
+
+        case ETFSetDesAccessoryModeSetting:
+            {
+            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
+            TAccModeSetting aSetting;
+
+            TBuf<KMaxAccModeSetting> buf;
+            buf.Num( aParameter.iArg3 );
+            //	buf.Copy( *aParameter.iArg3 );
+
+            aSetting.SetId( aParameter.iArg2 );
+            aSetting.SetTDes( buf );
+            retval = iAccessorySettings->SetAccessoryModeSettingL( aAccMode,
+                aSetting );
+            }
+            break;
+
+        case ETFGetIntAccessoryModeSetting:
+            {
+            TInt aSettingsValueInt;
+
+            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
+            TAccModeSetting aSetting;
+            aSetting.SetId( aParameter.iArg2 );
+
+            retval = iAccessorySettings->GetAccessoryModeSetting( aAccMode,
+                aSetting );
+
+            if( aSetting.Type() == EAccModeSettingInt )
+                {
+                retval = aSetting.GetTInt( aSettingsValueInt );
+
+                if( retval != KErrNotFound )
+                    {
+                    if( aSettingsValueInt == aParameter.iArg4 )
+                        {
+                        retval = KErrNone;
+                        }
+                    else
+                        {
+                        retval = KErrArgument;
+                        }
+                    }
+                }
+            else
+                {
+                retval = KErrNotFound;
+                }
+            }
+            break;
+
+        case ETFGetBoolAccessoryModeSetting:
+            {
+            TBool aSettingsValueBool;
+
+            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
+            TAccModeSetting aSetting;
+            aSetting.SetId( aParameter.iArg2 );
+
+            retval = iAccessorySettings->GetAccessoryModeSetting( aAccMode,
+                aSetting );
+
+            if( aSetting.Type() == EAccModeSettingBool )
+                {
+                retval = aSetting.GetTBool( aSettingsValueBool );
+
+                if( retval != KErrNotFound )
+                    {
+                    if( aSettingsValueBool == ( TBool )aParameter.iArg4 )
+                        {
+                        retval = KErrNone;
+                        }
+                    else
+                        {
+                        retval = KErrArgument;
+                        }
+                    }
+                }
+            else
+                {
+                retval = KErrNotFound;
+                }
+            }
+            break;
+
+        case ETFGetDesAccessoryModeSetting:
+            {
+            TBuf<KMaxAccModeSetting> aSettingsValueDes;
+
+            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
+            TAccModeSetting aSetting;
+            aSetting.SetId( aParameter.iArg2 );
+
+            retval = iAccessorySettings->GetAccessoryModeSetting( aAccMode,
+                aSetting );
+
+            if( aSetting.Type() == EAccModeSettingDes )
+                {
+                retval = aSetting.GetTDes( aSettingsValueDes );
+
+                if( retval != KErrNotFound )
+                    {
+                    TBuf<KMaxAccModeSetting> buffer;
+                    buffer.Num( aParameter.iArg3 );
+                    if( KErrNone == aSettingsValueDes.Compare( buffer ) )
+                        {
+                        retval = KErrNone;
+                        }
+                    else
+                        {
+                        retval = KErrArgument;
+                        }
+                    }
+                }
+            else
+                {
+                retval = KErrNotFound;
+                }
+            }
+            break;
+
+        case ETFSetSeveralAccessoryModeSetting:
+            {
+
+            TAccModeSetting accModeSettingIn;
+            TAccMode tAccMode = EAccModeWirelessHeadset;
+            TBuf<KMaxAccModeSetting> aDesIn;
+            // Set
+            // setting 1
+            accModeSettingIn.SetId( 11 ); // unknown TInt
+            accModeSettingIn.SetTInt( 1 );
+            TAccModeSettingArray arrayIn;
+            arrayIn.AddSetting( accModeSettingIn );
+
+            // setting 2
+            accModeSettingIn.SetId( 12 ); // unknown Des
+            _LIT( KAccSetting2, "012345678901234567890" );
+            aDesIn.Copy( KAccSetting2 );
+            accModeSettingIn.SetTDes( aDesIn );
+            arrayIn.AddSetting( accModeSettingIn );
+
+            // setting 3
+            accModeSettingIn.SetId( 13 ); // unknown TBool
+            accModeSettingIn.SetTBool( ETrue );
+            arrayIn.AddSetting( accModeSettingIn );
+
+            retval = iAccessorySettings->SetAccessoryModeSettingsL( tAccMode,
+                arrayIn );
+
+            }
+            break;
+
+        case ETFGetSeveralAccessoryModeSetting:
+            {
+
+            TAccModeSetting accModeSettingOut;
+            TAccMode tAccMode = EAccModeWirelessHeadset;
+            TBuf<KMaxAccModeSetting> aDesOut;
+            TAccModeSettingArray arrayOut;
+            TInt intOut( 0 );
+            // set input parameters for GetAccessoryModeSettings()
+            // setting 11
+            accModeSettingOut.SetId( 11 );
+            arrayOut.AddSetting( accModeSettingOut );
+
+            // setting 12
+            accModeSettingOut.SetId( 12 );
+            arrayOut.AddSetting( accModeSettingOut );
+
+            // setting 13
+            accModeSettingOut.SetId( 13 );
+            arrayOut.AddSetting( accModeSettingOut );
+
+            retval = iAccessorySettings->GetAccessoryModeSettings( tAccMode,
+                arrayOut );
+
+            // Check that got settings are right
+
+            TInt count = arrayOut.GetArraySize();
+            TInt foundCount( 0 );
+
+            for( TInt index = 0; index < count; index++ )
+                {
+                arrayOut.GetSetting( index, accModeSettingOut );
+
+                if( 11 == accModeSettingOut.Id() )
+                    {
+
+                    accModeSettingOut.GetTInt( intOut );
+
+                    if( 1 == intOut )
+                        {
+                        foundCount++;
+                        }
+                    }
+
+                if( 12 == accModeSettingOut.Id() )
+                    {
+                    accModeSettingOut.GetTDes( aDesOut );
+
+                    if( KErrNone == aDesOut.Compare( _L("012345678901234567890") ) )
+                        {
+                        foundCount++;
+                        }
+
+                    }
+
+                if( 13 == accModeSettingOut.Id() )
+                    {
+
+                    accModeSettingOut.GetTBool( intOut );
+
+                    if( intOut )
+                        {
+                        foundCount++;
+                        }
+                    }
+                }
+
+            if( foundCount != 3 )
+                {
+                retval = KErrNotFound;
+                }
+
+            //
+            // Reset Settings
+            //
+            TAccModeSetting accModeSettingIn;
+            TBuf<KMaxAccModeSetting> aDesIn;
+            // Set
+            // setting 1
+            accModeSettingIn.SetId( 11 ); // unknown TInt
+            accModeSettingIn.SetTInt( 0 );
+            TAccModeSettingArray arrayIn;
+            arrayIn.AddSetting( accModeSettingIn );
+
+            // setting 2
+            accModeSettingIn.SetId( 12 ); // unknown Des
+            _LIT( KAccSetting2, "" );
+            aDesIn.Copy( KAccSetting2 );
+            accModeSettingIn.SetTDes( aDesIn );
+            arrayIn.AddSetting( accModeSettingIn );
+
+            // setting 3
+            accModeSettingIn.SetId( 13 ); // unknown TBool
+            accModeSettingIn.SetTBool( EFalse );
+            arrayIn.AddSetting( accModeSettingIn );
+
+            iAccessorySettings->SetAccessoryModeSettingsL( tAccMode, arrayIn );
+            }
+            break;
+
+            //
+            // Accessory Single Connection
+            //                    		
+        case ETFAccessorySingleConnection_Open:
+            {
+            if( iAccessorySingleConnection == NULL )
+                {
+                iAccessorySingleConnection
+                    = new ( ELeave ) RAccessorySingleConnection;
+                retval
+                    = iAccessorySingleConnection->CreateSubSession( iAccessoryServer );
+                }
+            else
+                {
+                retval = KErrNone;
+                }
+            }
+            break;
+
+        case ETFAccessorySingleConnection_Close:
+            {
+            TRACE_ASSERT( iAccessorySingleConnection != NULL );
+
+            if( iAccessorySingleConnection != NULL )
+                {
+                iAccessorySingleConnection->CloseSubSession();
+                delete iAccessorySingleConnection;
+                iAccessorySingleConnection = NULL;
+                }
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryNotifyNewAccessoryConnected:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyNewAccessoryConnected( iGenericId[aParameter.iGid] );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryNotifyAccessoryDisconnected:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyAccessoryDisconnected( iGenericId[aParameter.iGid] );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFNotifyIntAccessoryValueChanged:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyIntegerAccessoryValueChanged( iGenericId[aParameter.iGid],
+                aParameter.iArg3 );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFNotifyBoolAccessoryValueChanged:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyBooleanAccessoryValueChanged( iGenericId[aParameter.iGid],
+                aParameter.iArg3 );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFNotifyObjectAccessoryValueChanged:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyObjectAccessoryValueChanged( iGenericId[aParameter.iGid],
+                aParameter.iArg3 );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryIntGetValue:
+            {
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TAccValueTypeTInt aIntValue;
+
+            iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid],
+                aNameRecord,
+                aIntValue );
+
+            if( aIntValue.iValue == aParameter.iArg2 )
+                {
+                retval = KErrNone;
+                }
+            else
+                {
+                retval = KErrArgument;
+                }
+            }
+            break;
+
+        case ETFAccessoryBoolGetValue:
+            {
+            RAccessoryConnection accessoryConnection;
+            accessoryConnection.CreateSubSession( iAccessoryServer );
+
+            TAccPolNameRecord nameRecord;
+            nameRecord.SetNameL( aParameter.iArg3 );
+            TAccValueTypeTBool boolValue;
+            retval
+                = accessoryConnection.GetValueL( iGenericId[aParameter.iGid],
+                    nameRecord,
+                    boolValue );
+
+            if( boolValue.iValue != aParameter.iArg1 )
+                {
+                retval = KErrArgument;
+                }
+
+            accessoryConnection.CloseSubSession();
+            }
+            break;
+
+        case ETFAccessoryDes8GetValue:
+            {
+            TBuf8<80>
+                worm( _L8("Malicious Worm Attach with extra long data with extra long content" ));
+            TBuf8<85> valueBuf;
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg1 );
+            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, valueBuf ) );
+
+            if( err == aParameter.iExpectedResult )
+                {
+
+                if( aParameter.iExpectedResult == KErrArgument )
+                    {
+                    retval = KErrNone;
+                    }
+                else
+                    {
+                    if( KErrNone == valueBuf.Compare( worm ) )
+                        {
+                        RDebug::RawPrint( valueBuf );
+                        retval = KErrNone;
+                        }
+                    else
+                        {
+                        retval = KErrArgument;
+                        }
+                    }
+                }
+            else
+                {
+                retval = KErrArgument;
+                }
+            }
+            break;
+
+        case ETFAccessoryObjectParseTopology:
+            {
+
+            TInt rspeaker( KErrGeneral );
+            TInt lspeaker( KErrGeneral );
+            TInt rmic( KErrGeneral );
+            TInt lmic( KErrGeneral );
+            TInt mute( KErrGeneral );
+            TInt sidetone( KErrGeneral );
+            //
+            // Find speaker volume object in USB headset case.
+            //                                      
+            CAccPolAudioUnitBase* audioUnit = NULL;
+            CAccPolAudioControlBase* audioControl = NULL;
+            //CAccPolOutputTerminal* ouputTerminal = NULL;	          	          
+
+            if( iTopologyContainer->OutputTerminalL( CAccPolOutputTerminal::EAPTHeadphone,
+                audioUnit ) )
+                {
+                if( audioUnit->GetNextAudioUnitL( audioUnit ) )
+                    {
+                    if( audioUnit->ObjectType()
+                        == EAccPolAudioFeatureUnitObject )
+                        {
+                        if( audioUnit->GetAudioControlL( EAccPolAudioVolumeControlObject,
+                            KAccRightFrontChannel,
+                            audioControl ) )
+                            {
+                            iSpeakerRightVolume = CAccPolVolumeControl::NewL();
+                            *iSpeakerRightVolume
+                                = *reinterpret_cast<CAccPolVolumeControl*> ( audioControl );
+                            rspeaker = KErrNone;
+                            }
+                        if( audioUnit->GetAudioControlL( EAccPolAudioVolumeControlObject,
+                            KAccLeftFrontChannel,
+                            audioControl ) )
+                            {
+                            iSpeakerLeftVolume = CAccPolVolumeControl::NewL();
+                            *iSpeakerLeftVolume
+                                = *reinterpret_cast<CAccPolVolumeControl*> ( audioControl );
+                            lspeaker = KErrNone;
+                            }
+                        if( audioUnit->GetAudioControlL( EAccPolAudioMuteControlObject,
+                            KAccMasterChannel,
+                            audioControl ) )
+                            {
+                            iSpeakerMute = CAccPolMuteControl::NewL();
+                            *iSpeakerMute
+                                = *reinterpret_cast<CAccPolMuteControl*> ( audioControl );
+                            mute = KErrNone;
+                            }
+
+                        }
+                    }
+                }
+
+            //
+            // Find mic volume object in USB headset case.
+            //                                                                                           
+            if( iTopologyContainer->OutputTerminalL( CAccPolOutputTerminal::EAPTStream,
+                audioUnit ) )
+                {
+                do
+                    {
+                    }
+                while( audioUnit->GetNextAudioUnitL( audioUnit )
+                    && audioUnit->ObjectType() != EAccPolAudioFeatureUnitObject );
+
+                RPointerArray<CAccPolAudioControlBase> aAudioControls;
+                audioUnit->GetAudioControlsL( KAccRightFrontChannel,
+                    aAudioControls );
+
+                if( aAudioControls.Count() > 0 )
+                    {
+                    iMicRightVolume = CAccPolVolumeControl::NewL();
+                    *iMicRightVolume
+                        = *reinterpret_cast<CAccPolVolumeControl*> ( aAudioControls.operator[]( 0 ) );
+                    rmic = KErrNone;
+                    }
+                aAudioControls.Reset();
+
+                audioUnit->GetAudioControlsL( KAccLeftFrontChannel,
+                    aAudioControls );
+
+                if( aAudioControls.Count() > 0 )
+                    {
+                    iMicLeftVolume = CAccPolVolumeControl::NewL();
+                    *iMicLeftVolume
+                        = *reinterpret_cast<CAccPolVolumeControl*> ( aAudioControls.operator[]( 0 ) );
+                    lmic = KErrNone;
+                    }
+
+                //
+                // Find sidetone volume object in USB headset case.
+                //                                                               
+                iTopologyContainer->OutputTerminalL( CAccPolOutputTerminal::EAPTHeadphone,
+                    audioUnit );
+
+                do
+                    {
+                    audioUnit->GetNextAudioUnitL( audioUnit );
+                    }
+                while( audioUnit->ObjectType() != EAccPolAudioMixerUnitObject );
+
+                if( audioUnit->SourceIdCount() > 1 )
+                    {
+                    RPointerArray<CAccPolAudioUnitBase> aAudioUnits;
+                    audioUnit->GetAudioUnitListL( aAudioUnits );
+
+                    for( TInt i = 0; i < aAudioUnits.Count(); i++ )
+                        {
+                        if( aAudioUnits.operator[]( i )->ObjectType()
+                            == EAccPolAudioFeatureUnitObject )
+                            {
+                            audioUnit = aAudioUnits.operator[]( i );
+                            break;
+                            }
+                        }
+                    }
+
+                aAudioControls.Reset();
+                audioUnit->GetAudioControlsL( aAudioControls );
+                if( aAudioControls.Count() == 2 )
+                    {
+                    sidetone = KErrNone;
+                    }
+                }
+
+            retval = ( rspeaker | lspeaker | rmic | lmic | mute | sidetone );
+
+            }
+            break;
+
+        case ETFAccessoryGetStreamObjects:
+            {
+            if( iStreamContainer != NULL )
+                {
+                delete iStreamContainer;
+                iStreamContainer = NULL;
+                }
+            iStreamContainer = CAccPolAudioStreamFormatCon::NewL();
+
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iStreamContainer ) );
+
+            if( err == aParameter.iExpectedResult )
+                {
+                //externalize container to bufFromASY        
+                CBufFlat* bufFromASY =
+                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+                CleanupStack::PushL( bufFromASY );
+                bufFromASY->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+                RBufWriteStream wStrm;
+                ( void )wStrm.Open( *bufFromASY );
+                wStrm.PushL();
+                iStreamContainer->ExternalizeL( wStrm );
+                wStrm.CommitL();
+                wStrm.Close();
+                wStrm.Pop();
+                TPtr8 ptrbufFromASY( bufFromASY->Ptr( 0 ) );
+
+                //Read container from PubSub
+                RProperty prop;
+                RBufReadStream rStrm;
+                CBufFlat* bufFromPubSub =
+                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+                CleanupStack::PushL( bufFromPubSub );
+                bufFromPubSub->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+                TPtr8 ptrBufFromPubSub( bufFromPubSub->Ptr( 0 ) );
+                TInt ret = prop.Get( KTFAccessoryTestProperty,
+                    KTFAccessoryObjectMethod,
+                    ptrBufFromPubSub );
+
+                TInt k = sizeof( bufFromASY );
+                TInt kk = sizeof( bufFromPubSub );
+
+                bufFromASY->Compress();
+                bufFromPubSub->Compress();
+
+                k = sizeof( bufFromASY );
+                kk = sizeof( bufFromPubSub );
+
+                retval
+                    = ( 0
+                        == memcompare( reinterpret_cast<TUint8*> ( &ptrbufFromASY ),
+                            sizeof( bufFromASY ),
+                            reinterpret_cast<TUint8*> ( &ptrBufFromPubSub ),
+                            sizeof( bufFromASY ) ) ) ? KErrNone : KErrGeneral;
+
+                CleanupStack::PopAndDestroy( bufFromPubSub );
+                CleanupStack::PopAndDestroy( bufFromASY );
+                }
+            }
+            break;
+
+        case ETFAccessoryGetStreamObjectsFromPolicy:
+            {
+            if( iStreamContainer != NULL )
+                {
+                delete iStreamContainer;
+                iStreamContainer = NULL;
+                }
+            iStreamContainer = CAccPolAudioStreamFormatCon::NewL();
+
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iStreamContainer ) );
+
+            RPointerArray<CAccPolAudioStreamFormat> inputStreamObjects;
+            RPointerArray<CAccPolAudioStreamFormat> outputStreamObjects;
+
+            iStreamContainer->GetInputStreamFormatsL( inputStreamObjects );
+            iStreamContainer->GetOutputStreamFormatsL( outputStreamObjects );
+
+            CAccPolAudioStreamFormat* inputStream =
+                inputStreamObjects.operator[]( 0 );
+            CAccPolAudioStreamFormat* ouputStream =
+                outputStreamObjects.operator[]( 0 );
+
+            retval = err;
+            }
+            break;
+
+        case ETFAccessorySetStreamObjects:
+            {
+            CAccPolAudioStreamFormatCon* setContainer = CAccPolAudioStreamFormatCon::NewLC();
+
+            RPointerArray<CAccPolAudioStreamFormat> inputStreamObjects;
+            RPointerArray<CAccPolAudioStreamFormat> outputStreamObjects;
+
+            iStreamContainer->GetInputStreamFormatsL( inputStreamObjects );
+            CAccPolAudioStreamFormat* inputStream = NULL;
+            for(TInt i=0; i<inputStreamObjects.Count(); i++)
+                {
+                inputStream = inputStreamObjects.operator[]( i );
+                if( inputStream->AudioFormat() == KUidFormatPCM16 &&
+                    inputStream->UnitId() == 0 &&
+                    inputStream->StreamType() == CAccPolAudioStreamFormat::EStereo &&
+                    inputStream->BitResolution() == CAccPolAudioStreamFormat::EBitsPerSample16 &&
+                    inputStream->SamFreq() == 200 )
+                    {
+                    setContainer->AddL( *inputStream );
+                    break;
+                    }
+                }
+
+            iStreamContainer->GetOutputStreamFormatsL( outputStreamObjects );
+            CAccPolAudioStreamFormat* outputStream = NULL;
+            for(TInt i=0; i<outputStreamObjects.Count(); i++)
+                {
+                outputStream = outputStreamObjects.operator[]( i );
+                if( outputStream->AudioFormat() == KUidFormatPCM16 &&
+                    outputStream->UnitId() == 0 &&
+                    outputStream->StreamType() == CAccPolAudioStreamFormat::EMono &&
+                    outputStream->BitResolution() == CAccPolAudioStreamFormat::EBitsPerSample32 &&
+                    outputStream->SamFreq() == 200 )
+                    {
+                    setContainer->AddL( *outputStream );
+                    break;
+                    }
+                }
+
+            RBufWriteStream wStrm;
+            CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+            CleanupStack::PushL( buf );
+            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+            (void)wStrm.Open( *buf );
+            wStrm.PushL();
+            setContainer->ExternalizeL( wStrm );
+            wStrm.Close();
+            wStrm.Pop();
+            TPtr8 ptr( buf->Ptr( 0 ) );
+
+            retval = RProperty::Set( KTFAccessoryTestProperty, KTFAccessoryObjectMethod, ptr );
+
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+
+            TRAPD( setErr, iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, *setContainer ) );
+
+            retval = setErr;
+
+            CleanupStack::PopAndDestroy( buf );
+            CleanupStack::PopAndDestroy( setContainer );
+            inputStreamObjects.Close();
+            outputStreamObjects.Close();
+            }
+        break;
+
+        case ETFAccessoryGetTopologyObjects:
+            {
+            if( iTopologyContainer != NULL )
+                {
+                delete iTopologyContainer;
+                iTopologyContainer = NULL;
+                }
+
+            iTopologyContainer = CAccPolAudioTopologyObjectCon::NewL();
+
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iTopologyContainer ) );
+
+            if( err == aParameter.iExpectedResult )
+                {
+                //externalize container to bufFromASY        
+                CBufFlat* bufFromASY =
+                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+                CleanupStack::PushL( bufFromASY );
+                bufFromASY->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+                RBufWriteStream wStrm;
+                ( void )wStrm.Open( *bufFromASY );
+                wStrm.PushL();
+                iTopologyContainer->ExternalizeL( wStrm );
+                wStrm.CommitL();
+                wStrm.Close();
+                wStrm.Pop();
+                TPtr8 ptrbufFromASY( bufFromASY->Ptr( 0 ) );
+
+                //Read container from PubSub
+                RProperty prop;
+                RBufReadStream rStrm;
+                CBufFlat* bufFromPubSub =
+                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+                CleanupStack::PushL( bufFromPubSub );
+                bufFromPubSub->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+                TPtr8 ptrBufFromPubSub( bufFromPubSub->Ptr( 0 ) );
+                TInt ret = prop.Get( KTFAccessoryTestProperty,
+                    KTFAccessoryObjectMethod,
+                    ptrBufFromPubSub );
+
+                TInt k = sizeof( bufFromASY );
+                TInt kk = sizeof( bufFromPubSub );
+
+                bufFromASY->Compress();
+                bufFromPubSub->Compress();
+
+                k = sizeof( bufFromASY );
+                kk = sizeof( bufFromPubSub );
+
+                retval
+                    = ( 0
+                        == memcompare( reinterpret_cast<TUint8*> ( &ptrbufFromASY ),
+                            sizeof( bufFromASY ),
+                            reinterpret_cast<TUint8*> ( &ptrBufFromPubSub ),
+                            sizeof( bufFromASY ) ) ) ? KErrNone : KErrGeneral;
+
+                CleanupStack::PopAndDestroy( bufFromPubSub );
+                CleanupStack::PopAndDestroy( bufFromASY );
+                }
+            }
+            break;
+
+        case ETFAccessoryGetVolumeControlObjects:
+            {
+
+            if( iTopologyContainer != NULL )
+                {
+                delete iTopologyContainer;
+                iTopologyContainer = NULL;
+                }
+
+            iTopologyContainer = CAccPolAudioTopologyObjectCon::NewL();
+
+            iTopologyContainer->AddL( *iSpeakerRightVolume );
+            iTopologyContainer->AddL( *iSpeakerLeftVolume );
+
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iTopologyContainer ) );
+
+            CAccPolVolumeControl* rightVolume;
+            rightVolume = ( CAccPolVolumeControl* )iTopologyContainer->AtL( 0 );
+
+            CAccPolVolumeControl* leftVolume;
+            leftVolume = ( CAccPolVolumeControl* )iTopologyContainer->AtL( 1 );
+
+            if( err == aParameter.iExpectedResult )
+                {
+                retval = KErrNone;
+                }
+            }
+            break;
+
+        case ETFAccessorySetVolumeControlObjects:
+            {
+            RBufWriteStream wStrm;
+            CAccPolAudioTopologyObjectCon* setContainer =
+                CAccPolAudioTopologyObjectCon::NewLC();
+
+            iSpeakerRightVolume->SetVolumeDb( aParameter.iArg1 );
+            iSpeakerRightVolume->SetMinVolumeDb( aParameter.iArg2 );
+            iSpeakerRightVolume->SetMaxVolumeDb( aParameter.iArg4 );
+            iSpeakerRightVolume->SetVolumeResDb( 0x05 );
+            setContainer->AddL( *iSpeakerRightVolume );
+            iSpeakerLeftVolume->SetVolumeDb( aParameter.iArg1 );
+            iSpeakerLeftVolume->SetMinVolumeDb( aParameter.iArg2 );
+            iSpeakerLeftVolume->SetMaxVolumeDb( aParameter.iArg4 );
+            iSpeakerLeftVolume->SetVolumeResDb( 0x05 );
+            setContainer->AddL( *iSpeakerLeftVolume );
+
+            CBufFlat* buf =
+                CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+            CleanupStack::PushL( buf );
+            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+            ( void )wStrm.Open( *buf );
+            wStrm.PushL();
+            setContainer->ExternalizeL( wStrm );
+            wStrm.Close();
+            wStrm.Pop();
+            TPtr8 ptr( buf->Ptr( 0 ) );
+
+            retval = RProperty::Set( KTFAccessoryTestProperty,
+                KTFAccessoryObjectMethod,
+                ptr );
+
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TRAPD( setErr, iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, *setContainer ) );
+
+            retval = setErr;
+
+            CleanupStack::PopAndDestroy( buf );
+            CleanupStack::PopAndDestroy( setContainer );
+            }
+            break;
+
+        case ETFAccessoryGetMuteControlObjects:
+            {
+
+            if( iTopologyContainer != NULL )
+                {
+                delete iTopologyContainer;
+                iTopologyContainer = NULL;
+                }
+
+            iTopologyContainer = CAccPolAudioTopologyObjectCon::NewL();
+
+            iTopologyContainer->AddL( *iSpeakerMute );
+
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iTopologyContainer ) );
+
+            CAccPolMuteControl* mute;
+            mute = ( CAccPolMuteControl* )iTopologyContainer->AtL( 0 );
+
+            if( err == aParameter.iExpectedResult )
+                {
+                retval = KErrNone;
+                }
+            }
+            break;
+
+        case ETFAccessorySetMuteControlObjects:
+            {
+            RBufWriteStream wStrm;
+            CAccPolAudioTopologyObjectCon* setContainer =
+                CAccPolAudioTopologyObjectCon::NewLC();
+
+            iSpeakerMute->SetMute( aParameter.iArg1 );
+            setContainer->AddL( *iSpeakerMute );
+
+            CBufFlat* buf =
+                CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+            CleanupStack::PushL( buf );
+            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+            ( void )wStrm.Open( *buf );
+            wStrm.PushL();
+            setContainer->ExternalizeL( wStrm );
+            wStrm.Close();
+            wStrm.Pop();
+            TPtr8 ptr( buf->Ptr( 0 ) );
+
+            retval = RProperty::Set( KTFAccessoryTestProperty,
+                KTFAccessoryObjectMethod,
+                ptr );
+
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TRAPD( setErr, iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, *setContainer ) );
+
+            retval = setErr;
+
+            CleanupStack::PopAndDestroy( buf );
+            CleanupStack::PopAndDestroy( setContainer );
+            }
+            break;
+
+            //
+            // Accessory Control
+            //           
+
+        case ETFAccessoryControl_Open:
+            {
+            if( iAccessoryControl == NULL )
+                {
+                iAccessoryControl = new ( ELeave ) RAccessoryControl;
+                retval = iAccessoryControl->CreateSubSession( iAccessoryServer );
+                }
+            else
+                {
+                retval = KErrNone;
+                }
+            }
+            break;
+
+        case ETFAccessoryControl_Close:
+            {
+            TRACE_ASSERT( iAccessoryControl != NULL );
+
+            if( iAccessoryControl != NULL )
+                {
+                iAccessoryControl->CloseSubSession();
+                delete iAccessoryControl;
+                iAccessoryControl = NULL;
+                }
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryNotifyAccessoryConnectionStatusChanged:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyAccessoryConnectionStatusChanged( iGenericIdArray );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFSyncGetAccessoryConnectionStatus:
+            {
+            iAccessoryConnection->GetAccessoryConnectionStatus( iGenericIdArray );
+
+            if( iGenericIdArray.Count() != aParameter.iArg1 )
+                {
+                retval = KErrArgument;
+                }
+            else
+                {
+                retval = KErrNone;
+                }
+            }
+            break;
+
+        case ETFASyncGetAccessoryConnectionStatus:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->GetAccessoryConnectionStatus( iGenericIdArray );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFSetIntValue:
+       	   {
+       	   SetIntValue(aParameter, &retval);
+       	   }
+            break;
+
+        case ETFSetBoolValue:
+            {
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TAccValueTypeTBool aBoolValue;
+            aBoolValue.iValue = aParameter.iArg1;
+            retval = iAccessoryControl->SetValueL( iGenericId[aParameter.iGid],
+                aNameRecord,
+                aBoolValue );
+            }
+            break;
+
+            //
+            //Tuupaa
+            //
+        case ETFAccessoryValueChangedNotifyInt:
+            {
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( KAccAudioOutputType );
+            TAccValueTypeTInt aIntValue;
+            aIntValue.iValue = EAccAudioOutPutTypePublic;
+            iAccessoryControl->AccessoryValueChangedNotifyL( iGenericId[aParameter.iGid],
+                aNameRecord,
+                aIntValue );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryValueChangedNotifyBool:
+            {
+            TAccPolNameRecord aNameRecord;
+            aNameRecord.SetNameL( aParameter.iArg3 );
+            TAccValueTypeTBool aBoolValue;
+            aBoolValue.iValue = ETrue;
+            iAccessoryControl->AccessoryValueChangedNotifyL( iGenericId[aParameter.iGid],
+                aNameRecord,
+                aBoolValue );
+            retval = KErrNone;
+            }
+            break;
+
+            //
+            // BT Control    
+            //
+        case ETFBTAccessoryValueChangedNotifyBool:
+            {
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            TAccPolNameRecord nameRecord;
+            nameRecord.SetNameL( aParameter.iArg3 );
+            TAccValueTypeTBool boolValue;
+            boolValue.iValue = aParameter.iArg4;
+            iAccessoryBTControl->AccessoryValueChangedNotifyL( btaddr,
+                nameRecord,
+                boolValue );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFBTAccessoryValueChangedNotifyInt:
+            {
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            TAccPolNameRecord nameRecord;
+            nameRecord.SetNameL( aParameter.iArg3 );
+            TAccValueTypeTInt intValue;
+            intValue.iValue = aParameter.iArg4;
+            iAccessoryBTControl->AccessoryValueChangedNotifyL( btaddr,
+                nameRecord,
+                intValue );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryBtControl_Open:
+            {
+            if( iAccessoryBTControl == NULL )
+                {
+                iAccessoryBTControl = new ( ELeave ) RAccessoryBTControl;
+                retval
+                    = iAccessoryBTControl->CreateSubSession( iAccessoryServer );
+                }
+            else
+                {
+                retval = KErrNone;
+                }
+            }
+            break;
+
+        case ETFAccessoryBtControl_Close:
+            {
+            TRACE_ASSERT( iAccessoryBTControl != NULL );
+
+            if( iAccessoryBTControl != NULL )
+                {
+                iAccessoryBTControl->CloseSubSession();
+                delete iAccessoryBTControl;
+                iAccessoryBTControl = NULL;
+                }
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryBtConnectAccessory:
+            {
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->ConnectBTAccessory( btaddr );
+            retval = KErrNone;
+            }
+            break;
+        case ETFAccessoryBtDisconnectAccessory:
+            {
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            TRequestStatus status;
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->DisconnectBTAccessory( btaddr );
+            retval = KErrNone;
+            TAccPolGenericID emptyInstance;
+            iGenericId[aParameter.iGid] = emptyInstance;
+            }
+            break;
+
+        case ETFAccessoryNotifyBluetoothAudioLinkOpenReq:
+            {
+            //TRequestStatus status; 			   	
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyBluetoothAudioLinkOpenReq();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryBluetoothAudioLinkOpenedNotify:
+            {
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkOpenedNotifyL( btaddr, (TAccAudioType)aParameter.iArg3 ) );
+
+            if( err == aParameter.iExpectedResult )
+                {
+                retval = KErrNone;
+                }
+            else
+                {
+                retval = KErrGeneral;
+                }
+            }
+            break;
+
+        case ETFAccessoryBluetoothAudioLinkOpenResp:
+            {
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            TInt response( aParameter.iArg2 );
+            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkOpenRespL( btaddr, response ) );
+
+            if( err == aParameter.iExpectedResult )
+                {
+                retval = KErrNone;
+                }
+            else
+                {
+                retval = KErrGeneral;
+                }
+            }
+            break;
+
+        case ETFAccessoryNotifyBluetoothAudioLinkCloseReq:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyBluetoothAudioLinkCloseReq();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryBluetoothAudioLinkClosedNotify:
+            {
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkClosedNotifyL( btaddr, ( TAccAudioType )aParameter.iArg3 ) );
+
+            if( err == aParameter.iExpectedResult )
+                {
+                retval = KErrNone;
+                }
+            else
+                {
+                retval = KErrGeneral;
+                }
+            }
+            break;
+
+        case ETFAccessoryBluetoothAudioLinkCloseResp:
+            {
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            TInt response( aParameter.iArg2 );
+            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkCloseRespL( btaddr, response ) );
+
+            if( err == aParameter.iExpectedResult )
+                {
+                retval = KErrNone;
+                }
+            else
+                {
+                retval = KErrGeneral;
+                }
+            }
+            break;
+
+        case ETFAccessoryBtCancelConnectAccessory:
+            {
+            TRequestStatus status;
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            iAccessoryBTControl->ConnectAccessory( status, btaddr );
+            iAccessoryBTControl->CancelConnectAccessory();
+            User::WaitForRequest( status );
+            if( KErrCancel != status.Int() )
+                {
+                retval = status.Int();
+                }
+            else
+                {
+                retval = KErrNone;
+                }
+            }
+            break;
+
+        case ETFAccessoryBtCancelDisconnectAccessory:
+            {
+            TRequestStatus status;
+            TBTDevAddr btaddr( aParameter.iArg1 );
+            iAccessoryBTControl->DisconnectAccessory( status, btaddr );
+            iAccessoryBTControl->CancelDisconnectAccessory();
+            User::WaitForRequest( status );
+            retval = status.Int();
+            }
+            break;
+
+            //
+            // Accessory Mode 
+            //                                            	         		      		
+        case ETFAccessoryMode_Open:
+            {
+            if( iAccessoryMode == NULL )
+                {
+                iAccessoryMode = new ( ELeave ) RAccessoryMode;
+                retval = iAccessoryMode->CreateSubSession( iAccessoryServer );
+                }
+            else
+                {
+                retval = KErrNone;
+                }
+            }
+            break;
+
+        case ETFAccessoryMode_Close:
+            {
+            TRACE_ASSERT( iAccessoryMode != NULL );
+
+            if( iAccessoryMode != NULL )
+                {
+                iAccessoryMode->CloseSubSession();
+                delete iAccessoryMode;
+                iAccessoryMode = NULL;
+                }
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryNotifyAccessoryModeChanged:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyAccessoryModeChanged();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryAccessoryModeSync:
+            {
+            TAccPolAccessoryMode mode;
+            retval = iAccessoryMode->GetAccessoryMode( mode );
+
+            if( retval == KErrNone )
+                {
+                if( aParameter.iArg1 != mode.iAccessoryMode )
+                    {
+                    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Unexpected Accessory Mode Parameter1 %d %d" ), aParameter.iArg1, mode.iAccessoryMode ) );
+                    retval = KTFErrAccessoryUnexpectedArg1;
+                    }
+#ifdef __WINS__ // Just check this in winscw
+                if( aParameter.iArg2 != mode.iAudioOutputStatus )
+                    {
+                    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Unexpected Accessory Mode Parameter2 %d %d" ), aParameter.iArg2, mode.iAudioOutputStatus ) );
+                    retval = KTFErrAccessoryUnexpectedArg2;
+                    }
+#endif
+                }
+            else
+                {
+                TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Getting Accessory Mode Failed %d" ), retval ) );
+                }
+
+            }
+            break;
+
+        case ETFAccessoryAccessoryModeASync:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->GetAccessoryMode();
+            retval = KErrNone;
+            }
+            break;
+
+            //
+            // Audio Control
+            //       
+        case ETFAccessoryAudioControl_Open:
+            {
+            if( iAccessoryAudioControl == NULL )
+                {
+                iAccessoryAudioControl = new ( ELeave ) RAccessoryAudioControl;
+                retval
+                    = iAccessoryAudioControl->CreateSubSession( iAccessoryServer );
+                }
+            else
+                {
+                retval = KErrNone;
+                }
+            }
+            break;
+
+        case ETFAccessoryAudioControl_Close:
+            {
+            TRACE_ASSERT( iAccessoryAudioControl != NULL );
+
+            if( iAccessoryAudioControl != NULL )
+                {
+                iAccessoryAudioControl->CloseSubSession();
+                delete iAccessoryAudioControl;
+                iAccessoryAudioControl = NULL;
+                }
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAudioRoutingStatusNotify:
+            {
+            RAccessoryAudioControl audioControl;
+            audioControl.CreateSubSession( iAccessoryServer );
+
+            audioControl.AudioRoutingStatusNotify( aParameter.iArg1,
+                iGenericId[aParameter.iGid] );
+            retval = KErrNone;
+
+            audioControl.CloseSubSession();
+            }
+            break;
+
+        case ETFAccessoryAudioLinkOpen:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->AccessoryAudioLinkOpen( iGenericId[aParameter.iGid],
+                aParameter.iArg3 );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryNotifyAccessoryAudioLinkOpened:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyAccessoryAudioLinkOpened( iGenericId[aParameter.iGid] );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryNotifyAccessoryAudioLinkClosed:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->NotifyAccessoryAudioLinkClosed( iGenericId[aParameter.iGid] );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryAccessoryAudioLinkClose:
+            {
+            CTFTestControlObserver* aConnectionObserver = CreateObserver();
+            TRACE_ASSERT( aConnectionObserver != NULL );
+            aConnectionObserver->AccessoryAudioLinkClose( iGenericId[aParameter.iGid],
+                aParameter.iArg3 );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessoryPublishAndSubscribe:
+            {
+            PublishAndSubscribeL( aParameter );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFAccessory_Cancel:
+            {
+            CTFTestControlObserver* item;
+            if( !iStack.IsEmpty() )
+                {
+                item = iStack.First();
+                item->Cancel();
+                }
+            retval = KErrNone;
+            }
+            break;
+
+            //
+            // Cancels
+            //
+        case ETFCancelAccessoryAudioLinkOpen:
+            {
+            iAccessoryAudioControl->CancelAccessoryAudioLinkOpen();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelAccessoryAudioLinkClose:
+            {
+            iAccessoryAudioControl->CancelAccessoryAudioLinkClose();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyAccessoryAudioLinkOpened:
+            {
+            iAccessoryAudioControl->CancelNotifyAccessoryAudioLinkOpened();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyAccessoryAudioLinkClosed:
+            {
+            iAccessoryAudioControl->CancelNotifyAccessoryAudioLinkClosed();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyProcessCommand:
+            {
+            TRACE_ASSERT_ALWAYS;
+            }
+            break;
+
+        case ETFCancelConnectAccessory:
+            {
+            iAccessoryControl->CancelConnectAccessory();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelDisconnectAccessory:
+            {
+            iAccessoryControl->CancelDisconnectAccessory();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyBluetoothAudioLinkOpenReq:
+            {
+            iAccessoryBTControl->CancelNotifyBluetoothAudioLinkOpenReq();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyBluetoothAudioLinkCloseReq:
+            {
+            iAccessoryBTControl->CancelNotifyBluetoothAudioLinkCloseReq();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyAccessoryConnectionStatusChanged:
+            {
+            iAccessoryConnection->CancelNotifyAccessoryConnectionStatusChanged();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelGetAccessoryConnectionStatus:
+            {
+            iAccessoryConnection->CancelGetAccessoryConnectionStatus();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelConnectAccessoryBT:
+            {
+            iAccessoryBTControl->CancelConnectAccessory();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelDisconnectAccessoryBT:
+            {
+            iAccessoryBTControl->CancelDisconnectAccessory();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyAccessoryModeChanged:
+            {
+            iAccessoryMode->CancelNotifyAccessoryModeChanged();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelGetAccessoryMode:
+            {
+            iAccessoryMode->CancelGetAccessoryMode();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyNewAccessoryConnected:
+            {
+            iAccessorySingleConnection->CancelNotifyNewAccessoryConnected();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyAccessoryDisconnected:
+            {
+            iAccessorySingleConnection->CancelNotifyAccessoryDisconnected();
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFCancelNotifyAccessoryValueChanged:
+            {
+            TAccPolNameRecord nameRecord;
+            nameRecord.SetNameL( aParameter.iArg3 );
+            iAccessorySingleConnection->CancelNotifyAccessoryValueChanged( nameRecord );
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFSelectionDialogText:
+            {
+                SelectionDialog(ETFSelectionDialogText, &retval);
+            }
+            break;
+
+        case ETFSelectionDialogCancel:
+            {
+                SelectionDialog(ETFSelectionDialogCancel, &retval);
+            }
+            break;
+
+        case ETFNotSupportedNote:
+            {
+            TUid KAccFwUiNoteNotifierUid =
+                {
+                0x10205061
+                };
+            RNotifier notifier;
+            notifier.Connect();
+
+            TInt err = notifier.StartNotifier( KAccFwUiNoteNotifierUid,
+                KNullDesC8 );
+
+            TInt value( 0 );
+            TPckg<TInt> intPckg( value );
+            notifier.Close();
+
+            notifier.Connect();
+            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
+            notifier.Close();
+
+            value = 1;
+            notifier.Connect();
+            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
+            notifier.Close();
+
+            value = value << 1;
+            notifier.Connect();
+            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
+            notifier.Close();
+
+            value = value << 1;
+            notifier.Connect();
+            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
+            notifier.Close();
+
+            value = value << 1;
+            notifier.Connect();
+            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
+            notifier.Close();
+
+            value = value << 1;
+            notifier.Connect();
+            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
+            notifier.Close();
+
+            value = value << 1;
+            notifier.Connect();
+            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
+            notifier.Close();
+
+            value = value << 1;
+            notifier.Connect();
+            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
+            notifier.Close();
+
+            retval = KErrNone;
+            }
+            break;
+
+        case ETFValueRecordTests:
+            {
+            retval = TestValueRecordL();
+            }
+            break;
+
+        case ETFObjectBaseSerializationTests:
+            {
+            retval = TestBaseSerializationL();
+            }
+            break;
+
+        case ETFCheckConnectedAccessory:
+            {
+            CheckConnectedAccessory(&retval);
+            }
+            break;
+
+        case ETFCallTClassMethods:
+            {
+						CallTClassMethods(&retval);  \
+						}
+            
+        case ETFSetHdmiObject_PubSub:
+            {
+            CreateHdmiObjectsToPubSubL( aParameter );
+            retval = KErrNone;
+            break;
+            }
+            
+        case ETFGetHdmiObject:
+            {
+            TInt err = KErrNone;
+            TAccPolNameRecord nameRecord;
+            nameRecord.SetNameL( aParameter.iArg3 );
+
+            // Create HDMI container
+            CAccPolHdmiObjectCon* conFromASY = CAccPolHdmiObjectCon::NewLC();
+            CAccPolHdmiObjectCon* conFromPS = CAccPolHdmiObjectCon::NewLC();
+            
+            // Get HDMI container
+            TRAP( err, iAccessorySingleConnection->GetValueL(
+                iGenericId[aParameter.iGid], nameRecord, *conFromASY ) );
+            
+            // Get HDMI container from P&S
+            CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+            CleanupStack::PushL( buf );
+            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+            
+            TPtr8 bufPtr( buf->Ptr( 0 ) );
+            err = RProperty::Get( KTFAccessoryTestProperty,
+                KTFAccessoryObjectMethod,
+                bufPtr );
+            if( err == KErrNone )
+                {
+                RBufReadStream readStream( *buf );
+                readStream.PushL();
+                conFromPS->InternalizeL( readStream );
+                CleanupStack::PopAndDestroy( &readStream );
+                }
+            switch( aParameter.iArg3 )
+                {
+                case KAccVideoHdmiAttributes:
+                    {
+                    // Validate object count
+                    if( conFromASY->Count() != conFromPS->Count() )
+                        {
+                        err = KErrArgument;
+                        }
+                    
+                    // Validate speaker allocation
+                    RAccPolHdmiSpeakerAllocationArray array;
+                    CleanupClosePushL( array );
+                    conFromASY->GetHdmiSpeakerAllocationObjectsL( array );
+                    if( array.Count() )
+                        {
+                        CAccPolHdmiSpeakerAllocation* speakerAllocation = array[0];
+                        TUint32 bits = speakerAllocation->SpeakerAllocation();
+                        
+                        // Speaker allocation should be EHdmiSpeakerUnknown
+                        if( bits != CAccPolHdmiSpeakerAllocation::EHdmiSpeakerUnknown )
+                            {
+                            err = KErrArgument;
+                            }
+                        
+                        // Speaker count should be zero
+                        if( speakerAllocation->SpeakerCount() )
+                            {
+                            err = KErrArgument;
+                            }
+                        }
+                    CleanupStack::PopAndDestroy( &array );
+                    break;
+                    }
+                case KAccVideoFormat:
+                    {
+                    // Validate object count
+                    if( conFromASY->Count() != conFromPS->Count() )
+                        {
+                        err = KErrArgument;
+                        }
+                    
+                    // Validate video format
+                    RAccPolHdmiVideoFormatArray array;
+                    CleanupClosePushL( array );
+                    conFromASY->GetHdmiVideoFormatObjectsL( array );
+                    if( array.Count() )
+                        {
+                        CAccPolHdmiVideoFormat* videoFormat = array[0];
+                        
+                        // Interlaced video should be enabled
+                        if( !videoFormat->Interlaced() )
+                            {
+                            err = KErrArgument;
+                            }
+                        }
+                    else
+                        {
+                        err = KErrArgument;
+                        }
+                    CleanupStack::PopAndDestroy( &array );
+                    break;
+                    }
+                default:
+                    {
+                    break;
+                    }
+                }            
+            CleanupStack::PopAndDestroy( buf );
+            CleanupStack::PopAndDestroy( conFromPS );
+            CleanupStack::PopAndDestroy( conFromASY );
+            retval = err;
+            break;
+            }
+            
+        case ETFCheckHdmiObject:
+            {
+            TInt err = KErrNone;
+            TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Check HDMI object %d" ),
+                aParameter.iArg1 ) );
+            switch( aParameter.iArg1 )
+                {
+                case EAccPolHdmiObjectCon:
+                    {
+                    err = CheckHdmiContainerObjectL();
+                    break;
+                    }
+                case EAccPolHdmiSinkObject:
+                    {
+                    err = CheckHdmiSinkObjectL();
+                    break;
+                    }
+                case EAccPolHdmiAudioFormatObject:
+                    {
+                    err = CheckHdmiAudioFormatObjectL();
+                    break;
+                    }
+                case EAccPolHdmiLatencyObject:
+                    {
+                    err = CheckHdmiLatencyObjectL();
+                    break;
+                    }
+                case EAccPolHdmiSpeakerAllocationObject:
+                    {
+                    err = CheckHdmiSpeakerAllocationObjectL();
+                    break;
+                    }
+                case EAccPolHdmiVideoFormatObject:
+                    {
+                    err = CheckHdmiVideoFormatObjectL();
+                    break;
+                    }
+                default:
+                    {
+                    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Invalid HDMI object=%d" ),
+                        aParameter.iArg1 ) );
+                    err = KErrArgument;
+                    break;
+                    }
+                }
+            TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Check HDMI object %d returned with code %d" ),
+                aParameter.iArg1, err ) );
+            retval = err;
+            break;
+            }
+
+        default:
+            TRACE_ASSERT_ALWAYS;
+            break;
+
+        }
+    User::LeaveIfError( retval );
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::TestValueRecordL()
+// ----------------------------------------------------------------------------------	
+//
+TInt CTFAccessoryTestControl::TestValueRecordL()
+    {
+    TInt ret( KErrNone );
+
+    TAccPolValueRecord valueRecord;
+    TBuf8<KAccMaxECIBlockLength> eci;
+    TBuf8<KAccMaxECIBlockLength> check;
+    _LIT( Kissa, "Kissa" );
+    eci.Copy( Kissa );
+
+    valueRecord.SetValue( eci );
+    check.Copy( valueRecord.ValueRef() );
+
+    if( KErrNone != eci.Compare( check ) )
+        {
+        User::Leave( KErrGeneral );
+        }
+
+    TDesC8& test( valueRecord.ValueRef() );
+    if( KErrNone != eci.Compare( test ) )
+        {
+        User::Leave( KErrGeneral );
+        }
+
+    return ret;
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::TestBaseSerializationL()
+// ----------------------------------------------------------------------------------
+//
+TInt CTFAccessoryTestControl::TestBaseSerializationL()
+    {
+    TInt ret( KErrNone );
+    TInt err( KErrNone );
+
+    /*** One container *************************************************************/
+    CAccPolAudioStreamFormatCon* container1 =
+        CAccPolAudioStreamFormatCon::NewLC();
+    CAccPolAudioStreamFormatCon* container2 =
+        CAccPolAudioStreamFormatCon::NewLC();
+
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+
+    //Externalize to buf
+    RBufWriteStream wStrm;
+    ( void )wStrm.Open( *buf );
+    wStrm.PushL();
+    container1->ExternalizeL( wStrm );
+    wStrm.CommitL();
+    wStrm.Close();
+    wStrm.Pop();
+
+    //Internalize from buf
+    RBufReadStream rStrm;
+    ( void )rStrm.Open( *buf );
+    rStrm.PushL();
+    container2->InternalizeL( rStrm );
+    rStrm.Close();
+    rStrm.Pop();
+
+    //container1 content must equal to container2 content
+    err = ( 0 == memcompare( reinterpret_cast<TUint8*> ( container1 ),
+        sizeof(CAccPolObjectCon),
+        reinterpret_cast<TUint8*> ( container2 ),
+        sizeof(CAccPolObjectCon) ) ) ? KErrNone : KErrGeneral;
+    User::LeaveIfError( err );
+
+    CleanupStack::PopAndDestroy( buf );
+    CleanupStack::PopAndDestroy( container2 );
+    CleanupStack::PopAndDestroy( container1 );
+    container2 = NULL;
+    container1 = NULL;
+    /* end *************************************************************************/
+
+    //Make test again!
+
+    CAccPolAudioStreamFormat* audioStream1 =
+        CAccPolAudioStreamFormat::NewLC( EAccPolAudioInputStreamObject,
+            15,
+            KUidFormatMP3,
+            CAccPolAudioStreamFormat::EStereo,
+            CAccPolAudioStreamFormat::EBitsPerSample24,
+            11 );
+
+    buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+
+    //Externalize to buf        
+    ( void )wStrm.Open( *buf );
+    wStrm.PushL();
+    audioStream1->ExternalizeL( wStrm );
+    wStrm.CommitL();
+    wStrm.Close();
+    wStrm.Pop();
+
+    //Internalize from buf
+    ( void )rStrm.Open( *buf );
+    rStrm.PushL();
+
+    TInt objectid = rStrm.ReadUint8L();
+
+    if( ( TStreamConObjectType )objectid == EAccPolAudioInputStreamObject )
+        {
+        CAccPolAudioStreamFormat* audioStream2 =
+            CAccPolAudioStreamFormat::NewLC( EAccPolAudioInputStreamObject );
+
+        audioStream2->InternalizeL( rStrm );
+
+        //audioStream1 content must equal to audioStream2 content
+        err = ( 0 == memcompare( reinterpret_cast<TUint8*> ( audioStream1 ),
+            sizeof(CAccPolAudioStreamFormat),
+            reinterpret_cast<TUint8*> ( audioStream2 ),
+            sizeof(CAccPolAudioStreamFormat) ) ) ? KErrNone : KErrGeneral;
+
+        User::LeaveIfError( err );
+
+        CleanupStack::PopAndDestroy( audioStream2 );
+
+        rStrm.Close();
+        rStrm.Pop();
+
+        }
+    else
+        {
+        User::LeaveIfError( KErrGeneral );
+        }
+
+    CleanupStack::PopAndDestroy( buf );
+    CleanupStack::PopAndDestroy( audioStream1 );
+    audioStream1 = NULL;
+    /* end *************************************************************************/
+
+    return ret;
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::PublishAndSubscribeL()
+// ----------------------------------------------------------------------------------	
+//
+void CTFAccessoryTestControl::PublishAndSubscribeL( TTFAccessoryTestCaseStateControl& aParameter )
+    {
+    TPckgBuf<TTFAccessoryPublishAndSubscribe> buf;
+
+    buf().iTestCaseID = aParameter.iTestCaseID;
+    buf().iMethod = aParameter.iMethod;
+    buf().iParam1 = aParameter.iArg1;
+    buf().iTimeMs = aParameter.iArg4;
+    buf().iGenericID = iGenericId[aParameter.iGid];
+
+    // Send capability to stub(s).
+
+    // if( aParameter.iArg3 )
+    // {
+    buf().iParam2 = aParameter.iArg3;
+    // }
+
+    /*
+     if( aParameter.iArg3->Compare( KNullDesC ) )
+     {
+     buf().iParam2.Copy( *aParameter.iArg3 );    
+     }
+
+     */
+    User::LeaveIfError( iSubscribe.Set( KTFAccessoryTestProperty,
+        KTFAccessoryMethod,
+        buf ) );
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CreateHdmiObjectsToPubSubL()
+// ----------------------------------------------------------------------------------   
+//
+void CTFAccessoryTestControl::CreateHdmiObjectsToPubSubL(
+    TTFAccessoryTestCaseStateControl& aParameter )
+    {
+    // Define property just in case
+    RProperty::Define( KTFAccessoryTestProperty,
+        KTFAccessoryObjectMethod,
+        RProperty::EByteArray );
+    
+    // Create HDMI container
+    CAccPolHdmiObjectCon* con = CAccPolHdmiObjectCon::NewLC();
+    switch( aParameter.iArg3 )
+        {
+        case KAccVideoHdmiAttributes:
+            {
+            // Create audio format object
+            CreateHdmiObjectL( *con, EAccPolHdmiAudioFormatObject );
+            
+            // Create latency object
+            CreateHdmiObjectL( *con, EAccPolHdmiLatencyObject );
+            
+            // Create sink object
+            CreateHdmiObjectL( *con, EAccPolHdmiSinkObject );
+            
+            // Create speaker allocation object
+            CreateHdmiObjectL( *con, EAccPolHdmiSpeakerAllocationObject );
+            
+            // Create video format object
+            CreateHdmiObjectL( *con, EAccPolHdmiVideoFormatObject );
+            break;
+            }
+        case KAccVideoFormat:
+            {
+            // Create video format object
+            CreateHdmiObjectL( *con, EAccPolHdmiVideoFormatObject );
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    // Stream HDMI container to P&S
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+
+    RBufWriteStream writeStream( *buf );
+    writeStream.PushL();
+    con->ExternalizeL( writeStream );
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    
+    TPtr8 bufPtr( buf->Ptr( 0 ) );
+    TInt err = RProperty::Set( KTFAccessoryTestProperty,
+        KTFAccessoryObjectMethod,
+        bufPtr );
+    User::LeaveIfError( err );
+    
+    // Check if ASY stub needs to be informed
+    if( aParameter.iArg2 )
+        {
+        PublishAndSubscribeL( aParameter );
+        }
+    
+    // Cleanup
+    CleanupStack::PopAndDestroy( buf );
+    CleanupStack::PopAndDestroy( con );
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CheckHdmiContainerObjectL
+// ----------------------------------------------------------------------------------   
+TInt CTFAccessoryTestControl::CheckHdmiContainerObjectL()
+    {
+    TInt err = KErrNone;
+    CAccPolHdmiObjectCon* con1 = NULL;
+    CAccPolHdmiObjectCon* con2 = NULL;
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+    
+    // NewL
+    con1 = CAccPolHdmiObjectCon::NewL();
+    CleanupStack::PushL( con1 );
+    CleanupStack::PopAndDestroy( con1 );
+    
+    // NewLC
+    con1 = CAccPolHdmiObjectCon::NewLC();
+    CleanupStack::PopAndDestroy( con1 );
+    
+    // Internalize & Externalize
+    con1 = CAccPolHdmiObjectCon::NewLC();
+    CreateHdmiObjectL( *con1, EAccPolHdmiAudioFormatObject );
+    CreateHdmiObjectL( *con1, EAccPolHdmiLatencyObject );
+    CreateHdmiObjectL( *con1, EAccPolHdmiSinkObject );
+    CreateHdmiObjectL( *con1, EAccPolHdmiSpeakerAllocationObject );
+    CreateHdmiObjectL( *con1, EAccPolHdmiVideoFormatObject );
+    RBufWriteStream writeStream;
+    writeStream.Open( *buf );
+    writeStream.PushL();
+    con1->ExternalizeL( writeStream );
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    
+    con2 = CAccPolHdmiObjectCon::NewLC();
+    RBufReadStream readStream;
+    readStream.Open( *buf );
+    readStream.PushL();
+    con2->InternalizeL( readStream );
+    if( con1->Count() == con2->Count() )
+        {
+        TInt count = con1->Count();
+        CAccPolObjectBase* objBase1 = NULL;
+        CAccPolObjectBase* objBase2 = NULL;
+        for( TInt i = 0; i < count; i++ )
+            {
+            objBase1 = con1->AtL( i );
+            objBase2 = con2->AtL( i );
+            if( objBase1->ObjectType() != objBase2->ObjectType() )
+                {
+                err = KErrArgument;
+                }
+            }
+        }
+    else
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( &readStream );
+    CleanupStack::PopAndDestroy( con2 );
+    CleanupStack::PopAndDestroy( con1 );
+    
+    // DuplicateLC
+    con1 = CAccPolHdmiObjectCon::NewLC();
+    CreateHdmiObjectL( *con1, EAccPolHdmiAudioFormatObject );
+    CreateHdmiObjectL( *con1, EAccPolHdmiLatencyObject );
+    CreateHdmiObjectL( *con1, EAccPolHdmiSinkObject );
+    CreateHdmiObjectL( *con1, EAccPolHdmiSpeakerAllocationObject );
+    CreateHdmiObjectL( *con1, EAccPolHdmiVideoFormatObject );
+    con2 = static_cast<CAccPolHdmiObjectCon*>( con1->DuplicateLC() );
+    if( con1->Count() == con2->Count() )
+        {
+        TInt count = con1->Count();
+        CAccPolObjectBase* objBase1 = NULL;
+        CAccPolObjectBase* objBase2 = NULL;
+        for( TInt i = 0; i < count; i++ )
+            {
+            objBase1 = con1->AtL( i );
+            objBase2 = con2->AtL( i );
+            if( objBase1->ObjectType() != objBase2->ObjectType() )
+                {
+                err = KErrArgument;
+                }
+            }
+        }
+    else
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( con2 );
+    CleanupStack::PopAndDestroy( con1 );
+    
+    // Rest of the API
+    con1 = CAccPolHdmiObjectCon::NewLC();
+    THdmiConObjectType objectType = EAccPolHdmiObjectCon;
+    TBool exit = EFalse;
+    TInt index = 0;
+    TInt count = 0;
+    do
+        {
+        index++;
+        err = KErrArgument;
+        objectType = ( THdmiConObjectType )( index );
+        CreateHdmiObjectL( *con1, objectType );
+        count = con1->Count();
+        CAccPolObjectBase* obj = NULL;
+        if( con1->Count() != index )
+            {
+            err = KErrArgument;
+            break;
+            }
+        for( TInt ii = 0; ii < count; ii++ )
+            {
+            obj = con1->AtL( ii );
+            if( obj->ObjectType() == objectType )
+                {
+                err = KErrNone;
+                break;
+                }
+            }
+        if( objectType == EAccPolHdmiVideoFormatObject )
+            {
+            // Last object
+            exit = ETrue;
+            }
+        }
+    while( !exit && ( err == KErrNone ) );
+    CleanupStack::PopAndDestroy( con1 );
+    CleanupStack::PopAndDestroy( buf );
+    
+    return err;
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CheckHdmiSinkObjectL
+// ----------------------------------------------------------------------------------   
+TInt CTFAccessoryTestControl::CheckHdmiSinkObjectL()
+    {
+    TInt err = KErrNone;
+    CAccPolHdmiSink* obj = NULL;
+    CAccPolHdmiSink* objDuplicate = NULL;
+    TUint8 objectType = 0;
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+    
+    // NewL
+    obj = CAccPolHdmiSink::NewL();
+    CleanupStack::PushL( obj );
+    CleanupStack::PopAndDestroy( obj );
+
+    // NewL - with params
+    obj = CAccPolHdmiSink::NewL( ETrue, ETrue );
+    CleanupStack::PushL( obj );
+    if( !obj->BasicAudioSupport() )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->HdcpSupport() )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewLC
+    obj = CAccPolHdmiSink::NewLC();
+    CleanupStack::PopAndDestroy( obj );
+
+    // NewLC - with params
+    obj = CAccPolHdmiSink::NewLC( ETrue, ETrue );
+    if( !obj->BasicAudioSupport() )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->HdcpSupport() )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    
+    // Internalize & Externalize
+    obj = CAccPolHdmiSink::NewLC( ETrue, ETrue );
+    
+    RBufWriteStream writeStream;
+    writeStream.Open( *buf );
+    writeStream.PushL();
+    obj->ExternalizeL( writeStream );
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    CleanupStack::PopAndDestroy( obj );
+    
+    obj = CAccPolHdmiSink::NewLC();
+    RBufReadStream readStream;
+    readStream.Open( *buf );
+    readStream.PushL();
+    objectType = readStream.ReadUint8L();
+    obj->InternalizeL( readStream );
+    if( objectType != EAccPolHdmiSinkObject )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->BasicAudioSupport() )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->HdcpSupport() )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( &readStream );
+    CleanupStack::PopAndDestroy( obj );
+
+    // DuplicateLC - mem compare can be used since the object does not contain
+    // any ponters as memebers
+    obj = CAccPolHdmiSink::NewLC( ETrue, ETrue );
+    objDuplicate = static_cast<CAccPolHdmiSink*>( obj->DuplicateLC() );
+    TUint8* left = reinterpret_cast<TUint8*>( obj );
+    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
+    TInt size = sizeof( CAccPolHdmiSink );
+    if( Mem::Compare( left, size, right, size ) != KErrNone )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( objDuplicate );
+    CleanupStack::PopAndDestroy( obj );
+
+    // Rest of the API
+    obj = CAccPolHdmiSink::NewLC();
+    obj->SetBasicAudioSupport( ETrue );
+    if( !obj->BasicAudioSupport() )
+        {
+        err = KErrArgument;
+        }
+    obj->SetHdcpSupport( ETrue );
+    if( !obj->HdcpSupport() )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    CleanupStack::PopAndDestroy( buf );
+    return err;
+    }
+
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CheckHdmiAudioFormatObjectL
+// ----------------------------------------------------------------------------------   
+TInt CTFAccessoryTestControl::CheckHdmiAudioFormatObjectL()
+    {
+    TInt err = KErrNone;
+    CAccPolHdmiAudioFormat* obj = NULL;
+    CAccPolHdmiAudioFormat* objDuplicate = NULL;
+    TUint8 objectType = 0;
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+    
+    // NewL
+    obj = CAccPolHdmiAudioFormat::NewL();
+    CleanupStack::PushL( obj );
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewL - with params
+    obj = CAccPolHdmiAudioFormat::NewL( HdmiAudioFormat::KUidFormatPCM16,
+        1,
+        1,
+        1,
+        1,
+        1 );
+    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatPCM16 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->ChannelCount() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->BitResolution() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->MaxBitResolution() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->SamFreq() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->FormatDependentValue() != 1 )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PushL( obj );
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewLC
+    obj = CAccPolHdmiAudioFormat::NewLC();
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewLC - with params
+    obj = CAccPolHdmiAudioFormat::NewLC( HdmiAudioFormat::KUidFormatPCM16,
+        1,
+        1,
+        1,
+        1,
+        1 );
+    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatPCM16 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->ChannelCount() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->BitResolution() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->MaxBitResolution() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->SamFreq() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->FormatDependentValue() != 1 )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    
+    // Internalize & Externalize
+    obj = CAccPolHdmiAudioFormat::NewLC( HdmiAudioFormat::KUidFormatPCM16,
+        1,
+        1,
+        1,
+        1,
+        1 );
+    RBufWriteStream writeStream;
+    writeStream.Open( *buf );
+    writeStream.PushL();
+    obj->ExternalizeL( writeStream );
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    CleanupStack::PopAndDestroy( obj );
+    
+    obj = CAccPolHdmiAudioFormat::NewLC();
+    RBufReadStream readStream;
+    readStream.Open( *buf );
+    readStream.PushL();
+    objectType = readStream.ReadUint8L();
+    obj->InternalizeL( readStream );
+    if( objectType != EAccPolHdmiAudioFormatObject )
+        {
+        err = KErrArgument;
+        }
+    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatPCM16 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->ChannelCount() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->BitResolution() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->MaxBitResolution() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->SamFreq() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->FormatDependentValue() != 1 )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( &readStream );
+    CleanupStack::PopAndDestroy( obj );
+    
+    // DuplicateLC - mem compare can be used since the object does not contain
+    // any ponters as memebers
+    obj = CAccPolHdmiAudioFormat::NewLC( HdmiAudioFormat::KUidFormatPCM16,
+        1,
+        1,
+        1,
+        1,
+        1 );
+    objDuplicate = static_cast<CAccPolHdmiAudioFormat*>( obj->DuplicateLC() );
+    TUint8* left = reinterpret_cast<TUint8*>( obj );
+    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
+    TInt size = sizeof( CAccPolHdmiSink );
+    if( Mem::Compare( left, size, right, size ) != KErrNone )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( objDuplicate );
+    CleanupStack::PopAndDestroy( obj );
+
+    // Rest of the API
+    obj = CAccPolHdmiAudioFormat::NewLC();
+    obj->SetAudioFormat( HdmiAudioFormat::KUidFormatEAC3 );
+    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatEAC3 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetChannelCount( 2 );
+    if( obj->ChannelCount() != 2 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample20 );
+    if( !( obj->BitResolution() & CAccPolHdmiAudioFormat::EBitsPerSample20 ) )
+        {
+        err = KErrArgument;
+        }
+    obj->SetMaxBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample24 );
+    if( obj->MaxBitResolution() != CAccPolHdmiAudioFormat::EBitsPerSample24 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetSamFreq( CAccPolHdmiAudioFormat::ESamplingFreq192KHz );
+    if( !( obj->SamFreq() & CAccPolHdmiAudioFormat::ESamplingFreq192KHz ) )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFormatDependentValue( CAccPolHdmiAudioFormat::EBitsPerSample16 );
+    if( !( obj->FormatDependentValue() & CAccPolHdmiAudioFormat::EBitsPerSample16 ) )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    CleanupStack::PopAndDestroy( buf );
+    
+    return err;
+    }
+
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CheckHdmiLatencyObjectL
+// ----------------------------------------------------------------------------------   
+TInt CTFAccessoryTestControl::CheckHdmiLatencyObjectL()
+    {
+    TInt err = KErrNone;
+    CAccPolHdmiLatency* obj = NULL;
+    CAccPolHdmiLatency* objDuplicate = NULL;
+    TUint8 objectType = 0;
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+    
+    // NewL
+    obj = CAccPolHdmiLatency::NewL();
+    CleanupStack::PushL( obj );
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewL - with params
+    obj = CAccPolHdmiLatency::NewL( HdmiLatency::KUidLatency, 100, 200 );
+    CleanupStack::PushL( obj );
+    if( obj->LatencyType() != HdmiLatency::KUidLatency )
+        {
+        err = KErrArgument;
+        }
+    if( obj->AudioLatency() != 100 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->VideoLatency() != 200 )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewLC
+    obj = CAccPolHdmiLatency::NewLC();
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewLC - with params
+    obj = CAccPolHdmiLatency::NewLC( HdmiLatency::KUidLatency, 100, 200 );
+    if( obj->LatencyType() != HdmiLatency::KUidLatency )
+        {
+        err = KErrArgument;
+        }
+    if( obj->AudioLatency() != 100 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->VideoLatency() != 200 )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    
+    // Internalize & Externalize
+    obj = CAccPolHdmiLatency::NewLC( HdmiLatency::KUidLatency, 100, 200 );
+    RBufWriteStream writeStream;
+    writeStream.Open( *buf );
+    writeStream.PushL();
+    obj->ExternalizeL( writeStream );
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    CleanupStack::PopAndDestroy( obj );
+    
+    obj = CAccPolHdmiLatency::NewLC();
+    RBufReadStream readStream;
+    readStream.Open( *buf );
+    readStream.PushL();
+    objectType = readStream.ReadUint8L();
+    obj->InternalizeL( readStream );
+    if( objectType != EAccPolHdmiLatencyObject )
+        {
+        err = KErrArgument;
+        }
+    if( obj->LatencyType() != HdmiLatency::KUidLatency )
+        {
+        err = KErrArgument;
+        }
+    if( obj->AudioLatency() != 100 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->VideoLatency() != 200 )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( &readStream );
+    CleanupStack::PopAndDestroy( obj );
+    
+    // DuplicateLC - mem compare can be used since the object does not contain
+    // any ponters as memebers
+    obj = CAccPolHdmiLatency::NewLC( HdmiLatency::KUidLatency, 100, 200 );
+    objDuplicate = static_cast<CAccPolHdmiLatency*>( obj->DuplicateLC() );
+    TUint8* left = reinterpret_cast<TUint8*>( obj );
+    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
+    TInt size = sizeof( CAccPolHdmiLatency );
+    if( Mem::Compare( left, size, right, size ) != KErrNone )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( objDuplicate );
+    CleanupStack::PopAndDestroy( obj );
+
+    // Rest of the API
+    obj = CAccPolHdmiLatency::NewLC();
+    obj->SetLatencyType( HdmiLatency::KUidLatency );
+    if( obj->LatencyType() != HdmiLatency::KUidLatency )
+        {
+        err = KErrArgument;
+        }
+    obj->SetAudioLatency( 100 );
+    if( obj->AudioLatency() != 100 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetVideoLatency( 200 );
+    if( obj->VideoLatency() != 200 )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );    
+    CleanupStack::PopAndDestroy( buf );
+    
+    return err;
+    }
+
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CheckHdmiSpeakerAllocationObjectL
+// ----------------------------------------------------------------------------------   
+TInt CTFAccessoryTestControl::CheckHdmiSpeakerAllocationObjectL()
+    {
+    TInt err = KErrNone;
+    CAccPolHdmiSpeakerAllocation* obj = NULL;
+    CAccPolHdmiSpeakerAllocation* objDuplicate = NULL;
+    TUint8 objectType = 0;
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+    TUint32 bits = 0x0;
+    
+    // NewL
+    obj = CAccPolHdmiSpeakerAllocation::NewL();
+    CleanupStack::PushL( obj );
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewLC
+    obj = CAccPolHdmiSpeakerAllocation::NewLC();
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewL - with params
+    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
+        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
+    obj = CAccPolHdmiSpeakerAllocation::NewL( bits );
+    CleanupStack::PushL( obj );
+    if( !obj->FrontCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->RearCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+
+    obj = CAccPolHdmiSpeakerAllocation::NewL( EFalse,
+        EFalse,
+        EFalse,
+        ETrue,
+        EFalse,
+        EFalse,
+        ETrue,
+        EFalse,
+        EFalse,
+        EFalse,
+        EFalse );
+    CleanupStack::PushL( obj );
+    if( !obj->FrontCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->RearCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+
+    // NewLC - with params
+    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
+        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
+    obj = CAccPolHdmiSpeakerAllocation::NewLC( bits );
+    if( !obj->FrontCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->RearCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+
+    obj = CAccPolHdmiSpeakerAllocation::NewLC( EFalse,
+        EFalse,
+        EFalse,
+        ETrue,
+        EFalse,
+        EFalse,
+        ETrue,
+        EFalse,
+        EFalse,
+        EFalse,
+        EFalse );
+    if( !obj->FrontCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->RearCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    
+    // Internalize & Externalize
+    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
+        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
+    obj = CAccPolHdmiSpeakerAllocation::NewLC( bits );
+    RBufWriteStream writeStream;
+    writeStream.Open( *buf );
+    writeStream.PushL();
+    obj->ExternalizeL( writeStream );
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    CleanupStack::PopAndDestroy( obj );
+    
+    obj = CAccPolHdmiSpeakerAllocation::NewLC();
+    RBufReadStream readStream;
+    readStream.Open( *buf );
+    readStream.PushL();
+    objectType = readStream.ReadUint8L();
+    obj->InternalizeL( readStream );
+    if( objectType != EAccPolHdmiSpeakerAllocationObject )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->FrontCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->RearCenter() )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( &readStream );
+    CleanupStack::PopAndDestroy( obj );
+    
+    // DuplicateLC - mem compare can be used since the object does not contain
+    // any ponters as memebers
+    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
+        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
+    obj = CAccPolHdmiSpeakerAllocation::NewLC( bits );
+    objDuplicate = static_cast<CAccPolHdmiSpeakerAllocation*>( obj->DuplicateLC() );
+    TUint8* left = reinterpret_cast<TUint8*>( obj );
+    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
+    TInt size = sizeof( CAccPolHdmiSpeakerAllocation );
+    if( Mem::Compare( left, size, right, size ) != KErrNone )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( objDuplicate );
+    CleanupStack::PopAndDestroy( obj );
+
+    // Rest of the API
+    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
+        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter |
+        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerTopCenter;
+    obj = CAccPolHdmiSpeakerAllocation::NewLC();
+    obj->SetSpeakerAllocation( bits );
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
+        {
+        err = KErrArgument;
+        }
+    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerTopCenter ) )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+
+    obj = CAccPolHdmiSpeakerAllocation::NewLC();
+    obj->SetFrontSpeakers( ETrue );
+    if( !obj->FrontSpeakers() || obj->SpeakerCount() != 2 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontSpeakers( EFalse );
+    if( obj->FrontSpeakers() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetRearSpeakers( ETrue );
+    if( !obj->RearSpeakers() || obj->SpeakerCount() != 2 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetRearSpeakers( EFalse );
+    if( obj->RearSpeakers() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetLowFrequencyEffect( ETrue );
+    if( !obj->LowFrequencyEffect() || obj->SpeakerCount() != 1 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetLowFrequencyEffect( EFalse );
+    if( obj->LowFrequencyEffect() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontCenter( ETrue );
+    if( !obj->FrontCenter() || obj->SpeakerCount() != 1 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontCenter( EFalse );
+    if( obj->FrontCenter() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontCenterHigh( ETrue );
+    if( !obj->FrontCenterHigh() || obj->SpeakerCount() != 1 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontCenterHigh( EFalse );
+    if( obj->FrontCenterHigh() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetTopCenter( ETrue );
+    if( !obj->TopCenter() || obj->SpeakerCount() != 1 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetTopCenter( EFalse );
+    if( obj->TopCenter() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetRearCenter( ETrue );
+    if( !obj->RearCenter() || obj->SpeakerCount() != 1 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetRearCenter( EFalse );
+    if( obj->RearCenter() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontLeftRightCenter( ETrue );
+    if( !obj->FrontLeftRightCenter() || obj->SpeakerCount() != 2 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontLeftRightCenter( EFalse );
+    if( obj->FrontLeftRightCenter() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetRearLeftRightCenter( ETrue );
+    if( !obj->RearLeftRightCenter() || obj->SpeakerCount() != 2 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetRearLeftRightCenter( EFalse );
+    if( obj->RearLeftRightCenter() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontWideSpeakers( ETrue );
+    if( !obj->FrontWideSpeakers() || obj->SpeakerCount() != 2 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontWideSpeakers( EFalse );
+    if( obj->FrontWideSpeakers() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontHighSpeakers( ETrue );
+    if( !obj->FrontHighSpeakers() || obj->SpeakerCount() != 2 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetFrontHighSpeakers( EFalse );
+    if( obj->FrontHighSpeakers() || obj->SpeakerCount() != 0 )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    CleanupStack::PopAndDestroy( buf );
+    
+    return err;
+    }
+
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CheckHdmiVideoFormatObjectL
+// ----------------------------------------------------------------------------------   
+TInt CTFAccessoryTestControl::CheckHdmiVideoFormatObjectL()
+    {
+    TInt err = KErrNone;
+    CAccPolHdmiVideoFormat* obj = NULL;
+    CAccPolHdmiVideoFormat* objDuplicate = NULL;
+    TUint8 objectType = 0;
+    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
+    CleanupStack::PushL( buf );
+    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
+    
+    // NewL
+    obj = CAccPolHdmiVideoFormat::NewL();
+    CleanupStack::PushL( obj );
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewLC
+    obj = CAccPolHdmiVideoFormat::NewLC();
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewL - with params
+    obj = CAccPolHdmiVideoFormat::NewL( E640x480p59_94d60Hz4d3,
+        E640x350p85HzRB,
+        1,
+        ETrue );
+    CleanupStack::PushL( obj );
+    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->DmtFixedMode() != E640x350p85HzRB )
+        {
+        err = KErrArgument;
+        }
+    if( obj->PixelRepeat() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->Interlaced() )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    
+    // NewLC - with params
+    obj = CAccPolHdmiVideoFormat::NewLC( E640x480p59_94d60Hz4d3,
+        E640x350p85HzRB,
+        1,
+        ETrue );
+    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->DmtFixedMode() != E640x350p85HzRB )
+        {
+        err = KErrArgument;
+        }
+    if( obj->PixelRepeat() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->Interlaced() )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    
+    // Internalize & Externalize
+    obj = CAccPolHdmiVideoFormat::NewLC( E640x480p59_94d60Hz4d3,
+        E640x350p85HzRB,
+        1,
+        ETrue );
+    RBufWriteStream writeStream;
+    writeStream.Open( *buf );
+    writeStream.PushL();
+    obj->ExternalizeL( writeStream );
+    writeStream.CommitL();
+    CleanupStack::PopAndDestroy( &writeStream );
+    CleanupStack::PopAndDestroy( obj );
+    
+    obj = CAccPolHdmiVideoFormat::NewLC();
+    RBufReadStream readStream;
+    readStream.Open( *buf );
+    readStream.PushL();
+    objectType = readStream.ReadUint8L();
+    obj->InternalizeL( readStream );
+    if( objectType != EAccPolHdmiVideoFormatObject )
+        {
+        err = KErrArgument;
+        }
+    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
+        {
+        err = KErrArgument;
+        }
+    if( obj->DmtFixedMode() != E640x350p85HzRB )
+        {
+        err = KErrArgument;
+        }
+    if( obj->PixelRepeat() != 1 )
+        {
+        err = KErrArgument;
+        }
+    if( !obj->Interlaced() )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( &readStream );
+    CleanupStack::PopAndDestroy( obj );
+    
+    // DuplicateLC - mem compare can be used since the object does not contain
+    // any ponters as memebers
+    obj = CAccPolHdmiVideoFormat::NewLC( E640x480p59_94d60Hz4d3,
+        E640x350p85HzRB,
+        1,
+        ETrue );
+    objDuplicate = static_cast<CAccPolHdmiVideoFormat*>( obj->DuplicateLC() );
+    TUint8* left = reinterpret_cast<TUint8*>( obj );
+    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
+    TInt size = sizeof( CAccPolHdmiVideoFormat );
+    if( Mem::Compare( left, size, right, size ) != KErrNone )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( objDuplicate );
+    CleanupStack::PopAndDestroy( obj );
+
+    // Rest of the API
+    obj = CAccPolHdmiVideoFormat::NewLC();
+    obj->SetCeaFixedMode( E640x480p59_94d60Hz4d3 );
+    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetDmtFixedMode( E640x350p85HzRB );
+    if( obj->DmtFixedMode() != E640x350p85HzRB )
+        {
+        err = KErrArgument;
+        }
+    obj->SetPixelRepeat( 4 );
+    if( obj->PixelRepeat() != 4 )
+        {
+        err = KErrArgument;
+        }
+    obj->SetInterlaced( ETrue );
+    if( !obj->Interlaced() )
+        {
+        err = KErrArgument;
+        }
+    CleanupStack::PopAndDestroy( obj );
+    CleanupStack::PopAndDestroy( buf );
+    
+    return err;
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFTestControlObserver* CTFAccessoryTestControl::CreateObserver()
+// ----------------------------------------------------------------------------------	
+CTFTestControlObserver* CTFAccessoryTestControl::CreateObserver()
+    {
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CreateObserver()" ) ) );
+    iStack.AddFirst/*AddLast*/( *CTFTestControlObserver::NewL( *this ) );
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CreateObserver() return" ) ) );
+    return iStack.First/*Last*/();
+    }
+
+// Not used at this point.
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::ProcessMessageAndCompleteL
+// ----------------------------------------------------------------------------------	
+void CTFAccessoryTestControl::ProcessMessageAndCompleteL( const RMessage2& aMessage )
+    {
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ProcessMessageAndCompleteL enter" ) ) );
+    aMessage.Complete( KErrNone );
+    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ProcessMessageAndCompleteL return" ) ) );
+    }
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::MessageCompleteL
+// ----------------------------------------------------------------------------------	
+void CTFAccessoryTestControl::MessageCompleteL( TInt /*aResult*/)
+    {
+
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CTFAccessoryTestControl::CreateHdmiObjectL
+// ----------------------------------------------------------------------------------   
+void CTFAccessoryTestControl::CreateHdmiObjectL( CAccPolObjectCon& aCon,
+    THdmiConObjectType aType )
+    {
+    switch( aType )
+        {
+        case EAccPolHdmiSinkObject:
+            {
+            CAccPolHdmiSink* sink = CAccPolHdmiSink::NewLC();
+            sink->SetBasicAudioSupport( ETrue );
+            sink->SetHdcpSupport( ETrue );
+            aCon.AddL( *sink );
+            CleanupStack::PopAndDestroy( sink );
+            break;
+            }
+        case EAccPolHdmiAudioFormatObject:
+            {
+            CAccPolHdmiAudioFormat* audioFormat = CAccPolHdmiAudioFormat::NewLC();
+            audioFormat->SetAudioFormat( HdmiAudioFormat::KUidFormatPCM16 );
+            audioFormat->SetChannelCount( 2 );
+            audioFormat->SetBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample16 );
+            audioFormat->SetMaxBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample16 );
+            audioFormat->SetFormatDependentValue( CAccPolHdmiAudioFormat::EBitsPerSample16 );
+            audioFormat->SamFreq( CAccPolHdmiAudioFormat::ESamplingFreq32KHz );
+            aCon.AddL( *audioFormat );
+            CleanupStack::PopAndDestroy( audioFormat );
+            break;
+            }
+        case EAccPolHdmiLatencyObject:
+            {
+            CAccPolHdmiLatency* latency = CAccPolHdmiLatency::NewLC();
+            latency->SetLatencyType( HdmiLatency::KUidLatency );
+            latency->SetAudioLatency( 100 );
+            latency->SetVideoLatency( 200 );
+            aCon.AddL( *latency );
+            CleanupStack::PopAndDestroy( latency );
+            break;
+            }
+        case EAccPolHdmiSpeakerAllocationObject:
+            {
+            CAccPolHdmiSpeakerAllocation* speakerAllocation =
+                CAccPolHdmiSpeakerAllocation::NewLC();
+            speakerAllocation->SetFrontSpeakers( ETrue );
+            speakerAllocation->SetRearSpeakers( ETrue );
+            speakerAllocation->SetLowFrequencyEffect( ETrue );
+            speakerAllocation->SetFrontCenter( ETrue );
+            speakerAllocation->SetFrontCenterHigh( ETrue );
+            speakerAllocation->SetTopCenter( ETrue );
+            speakerAllocation->SetRearCenter( ETrue );
+            speakerAllocation->SetFrontLeftRightCenter( ETrue );
+            speakerAllocation->SetRearLeftRightCenter( ETrue );
+            speakerAllocation->SetFrontWideSpeakers( ETrue );
+            speakerAllocation->SetFrontHighSpeakers( ETrue );
+            aCon.AddL( *speakerAllocation );
+            CleanupStack::PopAndDestroy( speakerAllocation );
+            break;
+            }
+        case EAccPolHdmiVideoFormatObject:
+            {
+            CAccPolHdmiVideoFormat* videoFormat = CAccPolHdmiVideoFormat::NewLC();
+            videoFormat->SetCeaFixedMode( E640x480p59_94d60Hz4d3 );
+            videoFormat->SetDmtFixedMode( E640x480p85HzRB );
+            videoFormat->SetInterlaced( EFalse );
+            aCon.AddL( *videoFormat );
+            CleanupStack::PopAndDestroy( videoFormat );
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    }
+    
+
+void CTFAccessoryTestControl::AccessoryConnectionOpenClose(TTFAccessoryFunction aCase, TInt* aRetval)
+    {
+    switch(aCase)
+        {
+        case ETFAccessoryConnection_Open:
+            {
+            if ( iAccessoryConnection == NULL )
+                {
+                    iAccessoryConnection = new ( ELeave ) RAccessoryConnection;
+                    *aRetval = iAccessoryConnection->CreateSubSession( iAccessoryServer );
+                    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL(TTFAccessoryTestCaseStateControl& aParameter) - ETFAccessoryConnection_Open - Sub session created - (%d)" ), *aRetval ) );
+                 }
+           else
+                 {
+                    *aRetval = KErrNone;
+                    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL(TTFAccessoryTestCaseStateControl& aParameter) - ETFAccessoryConnection_Open - Sub session not created - (%d)" ), *aRetval ) );
+                 }
+            }
+            break;
+        
+        case ETFAccessoryConnection_Close:
+            {
+            TRACE_ASSERT( iAccessoryConnection != NULL );
+                                
+            if ( iAccessoryConnection != NULL )
+                {
+                     iAccessoryConnection->CloseSubSession();
+                     delete iAccessoryConnection;
+                     iAccessoryConnection = NULL;
+                     COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL(TTFAccessoryTestCaseStateControl& aParameter) - ETFAccessoryConnection_Close - Sub session closed" ) ) );
+                 }                               
+             *aRetval = KErrNone;
+            }
+            break;
+            
+        default:
+            break;
+        }
+      
+    }
+
+void CTFAccessoryTestControl::FindAndCheckRequestL( TInt* aRetval, TTFAccessoryTestCaseStateControl& aParameter )
+    {
+    CTFAccessoryTestCaseControl* testCase = STATIC_CAST( CTFAccessoryTestCaseControl*, CurrentTestCase());          
+    TInt errVal = 0;
+                
+    TRACE_ASSERT( testCase != NULL );
+    if ( testCase != NULL )
+        {
+           TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::FindAndCheckRequest() - inside if ( testCase != NULL )" ) ) );
+           if(!iStack.IsEmpty())
+              {
+                 iStackIter.SetToFirst(); 
+            
+              while ( ( iObserverItem = iStackIter++ ) != NULL )
+                 {
+                     if(iObserverItem->FindRequest(aParameter.iRequestType))
+                        {
+                           testCase->CheckRequest( iObserverItem->iStatus, 
+                                                   iObserverItem->iValue, 
+                                                   iObserverItem->iCapabilityName,
+                                                   &errVal );  
+                                        
+                            if(errVal == KTFDontDeleteObserver)
+                                {
+                                aParameter.iArg1 = KTFDontDeleteObserver;
+                                }
+                                
+                                        
+                            if ( !iStack.IsEmpty() ) // Check if observes are already deleted by CheckRequest()
+                                {
+                                   if( KTFDontDeleteObserver != aParameter.iArg1 )
+                                      {
+                                         if (iObserverItem->iStatus == KRequestPending )
+                                             {
+                                             User::WaitForRequest(iObserverItem->iStatus);
+                                             }
+                                         iStack.Remove( *iObserverItem );
+                                         delete iObserverItem;
+                                      }
+                                   else
+                                       {
+                                          User::Leave( KTFDontDeleteObserver );
+                                       }
+                                 }
+                            else
+                                 {
+                                     *aRetval = KErrGeneral;
+                                 }
+                          }                               
+                  }
+        }
+    else
+        {
+            *aRetval = KErrGeneral;
+        }
+    }
+          
+    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::FindAndCheckRequest() returning and setting *aRetval = KErrNone )" ) ) );
+   *aRetval = KErrNone;
+    }
+
+
+void CTFAccessoryTestControl::AccessorySettingsOpenClose( TTFAccessoryFunction aCase, TInt* aRetval )
+    {
+        switch(aCase)
+            {
+            case ETFAccessorySettings_Open:
+                {
+                if ( iAccessorySettings == NULL )
+                    {
+                         iAccessorySettings = new ( ELeave ) RAccessorySettings;
+                         *aRetval = iAccessorySettings->CreateSubSession( iAccessoryServer );
+                     }
+                else
+                         *aRetval = KErrNone;
+                }
+                break;
+                
+            case ETFAccessorySettings_Close:
+                {
+                    TRACE_ASSERT( iAccessorySettings != NULL );
+                            
+                    if ( iAccessorySettings != NULL )
+                        {
+                            iAccessorySettings->CloseSubSession();
+                            delete iAccessorySettings;
+                            iAccessorySettings = NULL;
+                        }                                
+                    *aRetval = KErrNone;
+                }
+                break;
+                
+            default:
+                break;
+            
+            }
+    }
+
+void CTFAccessoryTestControl::SetSeveralAccessoryModeSetting( TInt* aRetval )
+    {
+        TAccModeSetting accModeSettingIn;
+        TAccMode tAccMode = EAccModeWirelessHeadset;
+        TBuf< KMaxAccModeSetting > aDesIn; 
+        // Set
+        // setting 1
+        accModeSettingIn.SetId( 11 ); // unknown TInt
+        accModeSettingIn.SetTInt( 1 );
+        TAccModeSettingArray arrayIn;
+        arrayIn.AddSetting( accModeSettingIn );
+                
+        // setting 2
+        accModeSettingIn.SetId( 12 );   // unknown Des
+        _LIT( KAccSetting2, "012345678901234567890" );
+        aDesIn.Copy( KAccSetting2 );
+        accModeSettingIn.SetTDes( aDesIn );
+        arrayIn.AddSetting( accModeSettingIn );
+                
+        // setting 3
+        accModeSettingIn.SetId( 13 ); // unknown TBool
+        accModeSettingIn.SetTBool( ETrue );
+        arrayIn.AddSetting( accModeSettingIn );
+        
+        *aRetval = iAccessorySettings->SetAccessoryModeSettingsL( tAccMode, arrayIn );
+    }
+
+void CTFAccessoryTestControl::GetSeveralAccessoryModeSetting( TInt* aRetval )
+    {
+    TAccModeSetting accModeSettingOut;
+    TAccMode tAccMode = EAccModeWirelessHeadset;
+    TBuf< KMaxAccModeSetting > aDesOut; 
+    TAccModeSettingArray arrayOut;
+    TInt intOut( 0 );
+    // set input parameters for GetAccessoryModeSettings()
+    // setting 11
+    accModeSettingOut.SetId( 11 );
+    arrayOut.AddSetting( accModeSettingOut );
+
+    // setting 12
+    accModeSettingOut.SetId( 12 );
+    arrayOut.AddSetting( accModeSettingOut );
+
+    // setting 13
+    accModeSettingOut.SetId( 13 );
+    arrayOut.AddSetting( accModeSettingOut );
+                
+    *aRetval = iAccessorySettings->GetAccessoryModeSettings( tAccMode, arrayOut );
+                
+    // Check that got settings are right
+                
+    TInt count = arrayOut.GetArraySize();
+    TInt foundCount(0);
+                
+    for( TInt index = 0; index < count; index++ )
+        {
+            arrayOut.GetSetting( index, accModeSettingOut );
+                        
+            if( 11 == accModeSettingOut.Id() ) 
+                {
+                            
+                accModeSettingOut.GetTInt( intOut);
+                            
+                if( 1 == intOut )
+                    {
+                        foundCount++;    
+                    }
+                 }
+                            
+                            
+             if( 12 == accModeSettingOut.Id() ) 
+                 {
+                     accModeSettingOut.GetTDes( aDesOut );
+                
+                     if( KErrNone == aDesOut.Compare( _L("012345678901234567890") ) )
+                     {
+                         foundCount++;
+                      }
+                            
+                  }
+                            
+              if( 13 == accModeSettingOut.Id() ) 
+                  {
+                            
+                      accModeSettingOut.GetTBool( intOut );
+                            
+                      if( intOut )
+                          {
+                              foundCount++;    
+                          }
+                  } 
+        }
+
+        if(foundCount != 3)
+            {
+                *aRetval = KErrNotFound;
+            }
+                       
+        //
+        // Reset Settings
+        //
+        TAccModeSetting accModeSettingIn;
+        TBuf< KMaxAccModeSetting > aDesIn; 
+        // Set
+        // setting 1
+        accModeSettingIn.SetId( 11 ); // unknown TInt
+        accModeSettingIn.SetTInt( 0 );
+        TAccModeSettingArray arrayIn;
+        arrayIn.AddSetting( accModeSettingIn );
+                    
+        // setting 2
+        accModeSettingIn.SetId( 12 );   // unknown Des
+        _LIT( KAccSetting2, "" );
+        aDesIn.Copy( KAccSetting2 );
+        accModeSettingIn.SetTDes( aDesIn );
+        arrayIn.AddSetting( accModeSettingIn );
+                    
+        // setting 3
+        accModeSettingIn.SetId( 13 ); // unknown TBool
+        accModeSettingIn.SetTBool( EFalse );
+        arrayIn.AddSetting( accModeSettingIn );
+                    
+        iAccessorySettings->SetAccessoryModeSettingsL( tAccMode, arrayIn );
+    
+    }
+
+void CTFAccessoryTestControl::SetIntValue( TTFAccessoryTestCaseStateControl& aParameter, TInt *aRetval )
+    {
+        switch( aParameter.iArg3 )
+               {
+               case KAccSetVolumeLevel:
+                   {
+                   //AccPolCommonNameValuePairs.h contains following example code  
+                   RAccessoryControl accessoryControl;
+                   accessoryControl.CreateSubSession( iAccessoryServer );
+                            
+                   CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();  
+                   CleanupStack::PushL( nameArray );      
+                   accessoryControl.GetSubblockNameArrayL( iGenericId[aParameter.iGid], *nameArray );
+            
+                   TAccPolNameRecord nameRecord;
+                   nameRecord.SetNameL( KAccSetVolumeLevel );                      
+                   TAccValueTypeTInt value;
+                        
+                   if( nameArray->HasName( KAccSetVolumeLevel ) )
+                       {
+                       accessoryControl.GetValueL( iGenericId[aParameter.iGid], nameRecord, value );                                               
+                       value.iValue = value.iValue | aParameter.iArg1;                
+                       accessoryControl.AccessoryValueChangedNotifyL( iGenericId[aParameter.iGid], nameRecord, value );
+                   }
+                                
+                   CleanupStack::PopAndDestroy( nameArray );
+                   accessoryControl.CloseSubSession();
+                   *aRetval = KErrNone;
+                   }
+                   break;
+            
+               default:
+                   {
+                   TAccPolNameRecord aNameRecord;
+                   aNameRecord.SetNameL( aParameter.iArg3 );                       
+                   TAccValueTypeTInt aIntValue;         
+                   aIntValue.iValue = aParameter.iArg1;
+                   *aRetval = iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, aIntValue );
+                   }
+                   break;
+               }
+    
+    }
+
+void CTFAccessoryTestControl::SelectionDialog( TTFAccessoryFunction aCase, TInt* aRetval )
+    {
+        switch(aCase)
+            {
+            case ETFSelectionDialogText:
+                {
+                    const TUid KAccFwUiDialogNotifierUid = { 0x10205062 };
+                        
+                    RNotifier notifier;
+                    notifier.Connect();
+                    
+                    TInt selectionListBitmask = 255;
+                    TInt reply = 0;
+                    
+                    TPckg<TInt> replyPck( reply);
+                    TPckg<TUint32> selectionBitmaskPackage( selectionListBitmask);
+        
+                    //activate active object
+                    TRequestStatus status;
+                    status = KRequestPending;
+                    
+                    //open ui
+                    notifier.StartNotifierAndGetResponse( status, KAccFwUiDialogNotifierUid, selectionBitmaskPackage, replyPck);
+                    
+                    User::WaitForRequest( status);
+                    
+                    
+                    notifier.Close();
+                    
+                    *aRetval = KErrNone;
+                }
+ 
+            case ETFSelectionDialogCancel:
+                {
+                    const TUid KAccFwUiDialogNotifierUid = { 0x10205062 };
+                            
+                    RNotifier notifier;
+                    notifier.Connect();
+                    
+                    TInt selectionListBitmask = 7;
+                    TInt reply = 0;
+                    
+                    TPckg<TInt> replyPck( reply);
+                    TPckg<TUint32> selectionBitmaskPackage( selectionListBitmask);
+        
+                    //activate active object
+                    TRequestStatus status;
+                    
+                    //open ui
+                    notifier.StartNotifierAndGetResponse( status, KAccFwUiDialogNotifierUid, selectionBitmaskPackage, replyPck);
+                    User::After( 2500000);
+                    notifier.CancelNotifier( KAccFwUiDialogNotifierUid);
+                    
+                    // Implementation of the dialog is changed. Request is completed every time
+                    User::WaitForRequest( status );
+                    
+                    notifier.Close();
+                    
+                    *aRetval = KErrNone;
+                }
+            
+            default:
+                break;
+                
+            }
+    
+    }
+
+void CTFAccessoryTestControl::CheckConnectedAccessory( TInt* aRetval )
+    {
+        *aRetval = KErrNone;
+                    
+        TAccPolGenericID            genID;                                  // TGeneric ID that should be connected
+        TAccPolGenericID            genIDConnected;                         // TGeneric ID that is connected
+        TAccPolGIDHeader            iGenericIDHeader;                       // Header of the GID that should be connected
+        TAccPolGIDHeader            iGenericIDHeaderConnected;              // Header of the connected GID
+        TAccPolGenericIDArray       genericIdArray;                         // Array of connected generic ID's
+        CAccConGenericID*           aGenericID = CAccConGenericID::NewL();  // This might be needed for capabilities 
+        
+        CleanupStack::PushL( aGenericID );                        
+        CAccPolSubblockNameArray*   nameArrayConnected = CAccPolSubblockNameArray::NewL();
+        
+        CleanupStack::PushL( nameArrayConnected );
+        
+        TAccPolGenericID genericID = aGenericID->GenericID();
+
+        TBuf<KHWModelIDMaxLength>      hwModelID(_L("headset"));
+        // Set GenericID header
+        iGenericIDHeader.iAccessoryDeviceType   = KDTHeadset;
+        iGenericIDHeader.iPhysicalConnection    = KPCWired;
+        iGenericIDHeader.iApplicationProtocol   = 0x0;
+    
+        iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;   
+    
+        iGenericIDHeader.iHWModelID             = hwModelID;
+        iGenericIDHeader.iHWDeviceID            = 0x0;
+        iGenericIDHeader.iDBID                    = 0x0;
+                                           
+        RAccessoryConnection* accessoryConnection = new ( ELeave ) RAccessoryConnection();
+        CleanupStack::PushL( accessoryConnection );
+        accessoryConnection->CreateSubSession( iAccessoryServer );
+        accessoryConnection->GetAccessoryConnectionStatus( genericIdArray );
+        CleanupStack::PopAndDestroy( accessoryConnection );
+        
+        genIDConnected = genericIdArray.GetGenericIDL( 0 );
+        
+        RAccessorySingleConnection singleConnect;// = new ( ELeave ) RAccessoryConnectionBase();
+        singleConnect.CreateSubSession( iAccessoryServer );
+        singleConnect.GetSubblockNameArrayL( genIDConnected, *nameArrayConnected );
+        
+        singleConnect.CloseSubSession();
+        
+        iGenericIDHeaderConnected.iAccessoryDeviceType = genIDConnected.DeviceTypeCaps();
+        iGenericIDHeaderConnected.iPhysicalConnection = genIDConnected.PhysicalConnectionCaps();
+        iGenericIDHeaderConnected.iApplicationProtocol = genIDConnected.ApplicationProtocolCaps();
+        iGenericIDHeaderConnected.iCapabilitiesSubblocks = genIDConnected.SubblockCaps();
+        iGenericIDHeaderConnected.iHWModelID = genIDConnected.HWModelID();
+        iGenericIDHeaderConnected.iHWDeviceID = genIDConnected.HWDeviceID();
+        iGenericIDHeaderConnected.iDBID = 0x0;
+
+        //Check GenericID header
+        if( iGenericIDHeader.iAccessoryDeviceType != iGenericIDHeaderConnected.iAccessoryDeviceType )
+        {
+            *aRetval = EFalse;
+        }
+        if( iGenericIDHeader.iPhysicalConnection != iGenericIDHeaderConnected.iPhysicalConnection )
+        {
+            *aRetval = EFalse;
+        }
+        if( iGenericIDHeader.iApplicationProtocol != iGenericIDHeaderConnected.iApplicationProtocol )
+        {
+            *aRetval = EFalse;
+        }
+        if( iGenericIDHeader.iCapabilitiesSubblocks != iGenericIDHeaderConnected.iCapabilitiesSubblocks )
+        {
+            *aRetval = EFalse;
+        }
+        if( iGenericIDHeader.iHWModelID != iGenericIDHeaderConnected.iHWModelID )
+        {
+            *aRetval = EFalse;
+        }
+        if( iGenericIDHeader.iHWDeviceID != iGenericIDHeaderConnected.iHWDeviceID )
+        {
+            *aRetval = EFalse;
+        }
+        if( !( nameArrayConnected->HasName( KAccStereoAudio ) ) )
+        {
+            *aRetval = EFalse;
+        }
+
+        if( !( nameArrayConnected->HasName( KAccAudioOutConnector ) ) )
+        {
+            *aRetval = EFalse;
+        }
+
+        if( !( nameArrayConnected->HasName( KAccAudioOutputType ) ) )
+        {
+            *aRetval = EFalse;
+        }
+        //CleanupStack::PopAndDestroy( nameValueArray );
+        CleanupStack::PopAndDestroy( nameArrayConnected );
+        CleanupStack::PopAndDestroy( aGenericID );
+
+    }
+
+
+void CTFAccessoryTestControl::CallTClassMethods( TInt* aRetval )
+    {
+     //   Settings();
+        Policy();
+      *aRetval = KErrNone;
+    }
+
+void CTFAccessoryTestControl::Settings()
+    {
+    TAccModeSettingArray array;
+    array.Reset();
+    TInt ret = array.GetMaxArraySize();
+    TAccModeSetting setting;
+    TUint32 settingId( 1 );
+    setting.SetId( settingId );
+    array.AddSetting( setting );
+    TAccModeSetting setting2;
+    ret = array.GetSetting( 0, setting2 );
+    ret = array.GetArraySize();
+    }
+
+void CTFAccessoryTestControl::Policy()
+    {
+    TInt valueInt( 1 );
+    TUint32 valueUInt( 1 );
+    TDesC8 des( _L8( "timo" ) );
+    //TDes8 valueDesc = des;
+    TAccPolNameRecord nameRecord;
+    TAccPolValueRecord valRec( des, EAPVPolicy );
+    TAccPolNameValueRecord nameValRec;
+    TAccPolNameValueRecord nameValRec1( nameRecord, valRec );
+    TAccPolNameValueRecord nameValRec2( valueUInt, valueInt, EAPVInt, EAPVPolicy );
+    TAccPolNameValueRecord nameValRec3( valueUInt, des, EAPVPolicy );
+    TAccPolNameValueRecord nameValRec4( valueUInt );
+    //TDesC8 valueToGet;
+    valRec.GetValueL( des );
+    valRec.SetValue( des );
+    //valRec.SetValue( valueToGet );
+    TAccPolValueRecord valRec1( valueInt, EAPVInt, EAPVPolicy );
+    valRec1.SetValue( valueInt );
+    valRec1.SetLocation( EAPVPolicy );
+    valRec1.SetL( valueInt, EAPVInt, EAPVPolicy );
+    }
+
+void CTFAccessoryTestControl::GetBoolAccessoryModeSetting( TTFAccessoryTestCaseStateControl& aParameter, TInt* aRetval )
+    {
+        TBool aSettingsValueBool;
+                    
+        TAccMode aAccMode = (TAccMode)aParameter.iArg1;
+        TAccModeSetting aSetting;
+        aSetting.SetId(aParameter.iArg2);
+        
+        *aRetval = iAccessorySettings->GetAccessoryModeSetting(aAccMode, aSetting);
+        
+        if( aSetting.Type() == EAccModeSettingBool) 
+            {
+                *aRetval = aSetting.GetTBool(aSettingsValueBool);
+                
+                if(*aRetval != KErrNotFound)
+                {
+                    if(aSettingsValueBool == (TBool)aParameter.iArg4)  
+                    {
+                        *aRetval = KErrNone;
+                    }
+                    else
+                    {
+                        *aRetval = KErrArgument;
+                    }
+                }
+            }
+            else
+            {
+                *aRetval = KErrNotFound;
+            }
+    }
+
+void CTFAccessoryTestControl::GetIntAccessoryModeSetting( TTFAccessoryTestCaseStateControl& aParameter, TInt* aRetval )
+    {
+        TInt aSettingsValueInt;
+                    
+        TAccMode aAccMode = (TAccMode)aParameter.iArg1;
+        TAccModeSetting aSetting;
+        aSetting.SetId(aParameter.iArg2);
+        
+        *aRetval = iAccessorySettings->GetAccessoryModeSetting(aAccMode, aSetting);
+        
+        if(aSetting.Type() == EAccModeSettingInt)  
+            {
+                *aRetval = aSetting.GetTInt(aSettingsValueInt);
+                
+                if(*aRetval != KErrNotFound)
+                {
+                    if( aSettingsValueInt == aParameter.iArg4 )  
+                    {
+                        *aRetval = KErrNone;
+                    }
+                    else
+                    {
+                        *aRetval = KErrArgument;
+                    }
+                }
+            }
+            else
+            {
+                *aRetval = KErrNotFound;
+            }
+    }
+
+void CTFAccessoryTestControl::GetDesAccessoryModeSetting( TTFAccessoryTestCaseStateControl& aParameter, TInt* aRetval )
+    {
+        TBuf<KMaxAccModeSetting> aSettingsValueDes;
+                    
+        TAccMode aAccMode = (TAccMode)aParameter.iArg1;
+        TAccModeSetting aSetting;
+        aSetting.SetId( aParameter.iArg2 );
+        
+        *aRetval = iAccessorySettings->GetAccessoryModeSetting( aAccMode, aSetting );
+        
+        if( aSetting.Type() == EAccModeSettingDes ) 
+            {
+                *aRetval = aSetting.GetTDes( aSettingsValueDes );
+                
+                if(*aRetval != KErrNotFound)
+                {
+                    TBuf<KMaxAccModeSetting> buffer;
+                    buffer.Num( aParameter.iArg3 );
+                    if( KErrNone == aSettingsValueDes.Compare( buffer ) )  
+                    {
+                        *aRetval = KErrNone;
+                    }
+                    else
+                    {
+                        *aRetval = KErrArgument;
+                    }
+                }
+            }
+            else
+            {
+                *aRetval = KErrNotFound;
+            }
+    }    
+
+// End of file