accessoryservices/accessoryserver/tsrc/public/basic/AccessoryTestControl/AccessoryTestControlPlugin/src/TfAccessoryTestControl.cpp
author hgs
Fri, 08 Oct 2010 14:33:25 +0300
changeset 76 cb32bcc88bad
parent 41 c87e5f80c17d
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
76
hgs
parents: 41
diff changeset
     1
/*
hgs
parents: 41
diff changeset
     2
 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents: 41
diff changeset
     3
 * All rights reserved.
hgs
parents: 41
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents: 41
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents: 41
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents: 41
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents: 41
diff changeset
     8
 *
hgs
parents: 41
diff changeset
     9
 * Initial Contributors:
hgs
parents: 41
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents: 41
diff changeset
    11
 *
hgs
parents: 41
diff changeset
    12
 * Contributors:
hgs
parents: 41
diff changeset
    13
 *
hgs
parents: 41
diff changeset
    14
 * Description:
hgs
parents: 41
diff changeset
    15
 *
hgs
parents: 41
diff changeset
    16
 */
hgs
parents: 41
diff changeset
    17
hgs
parents: 41
diff changeset
    18
// INCLUDE FILES
hgs
parents: 41
diff changeset
    19
hgs
parents: 41
diff changeset
    20
#include <ctffactory.h>
hgs
parents: 41
diff changeset
    21
#include <tftypes.h>
hgs
parents: 41
diff changeset
    22
#include <AccPolSubblockNameArray.h>
hgs
parents: 41
diff changeset
    23
#include "siftrace.h"
hgs
parents: 41
diff changeset
    24
#include "CtfAccessoryTestcontrol.h"
hgs
parents: 41
diff changeset
    25
#include "CtfAccessoryTestCaseControl.h"
hgs
parents: 41
diff changeset
    26
#include <AccPolProprietaryNameValuePairs.h>
hgs
parents: 41
diff changeset
    27
#include <AccConGenericID.h>
hgs
parents: 41
diff changeset
    28
#include <AccPolPropGenericid.h>
hgs
parents: 41
diff changeset
    29
#include <AccessoryConnectionBase.h>
hgs
parents: 41
diff changeset
    30
#include <s32mem.h>
hgs
parents: 41
diff changeset
    31
hgs
parents: 41
diff changeset
    32
#include <accpolobjectcon.h>
hgs
parents: 41
diff changeset
    33
#include <accpolaudiostreamformat.h>
hgs
parents: 41
diff changeset
    34
#include <accpolterminalbase.h>
hgs
parents: 41
diff changeset
    35
#include <accpoloutputterminal.h>
hgs
parents: 41
diff changeset
    36
#include <accpolinputterminal.h>
hgs
parents: 41
diff changeset
    37
#include <accpolmixerunit.h>
hgs
parents: 41
diff changeset
    38
#include <accpolfeatureunit.h>
hgs
parents: 41
diff changeset
    39
#include <accpolvolumecontrol.h>
hgs
parents: 41
diff changeset
    40
#include <accpolmutecontrol.h>
hgs
parents: 41
diff changeset
    41
#include <accpolselectorunit.h>
hgs
parents: 41
diff changeset
    42
hgs
parents: 41
diff changeset
    43
#include <StartupDomainPSKeys.h>
hgs
parents: 41
diff changeset
    44
hgs
parents: 41
diff changeset
    45
#include <E32Math.h>
hgs
parents: 41
diff changeset
    46
#include "AccClientServerMessages.h"
hgs
parents: 41
diff changeset
    47
#include <e32property.h>
hgs
parents: 41
diff changeset
    48
hgs
parents: 41
diff changeset
    49
#include <accpolhdmiobjectcon.h>
hgs
parents: 41
diff changeset
    50
#include <tvoutconfigdef.h>
hgs
parents: 41
diff changeset
    51
hgs
parents: 41
diff changeset
    52
//
hgs
parents: 41
diff changeset
    53
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
    54
// MTFAccessoryTestControl* GetAccessoryTestControl
hgs
parents: 41
diff changeset
    55
// ----------------------------------------------------------------------------------	  
hgs
parents: 41
diff changeset
    56
MTFAccessoryTestControl* GetAccessoryTestControl( void )
hgs
parents: 41
diff changeset
    57
    {
hgs
parents: 41
diff changeset
    58
    CTFStub* stub = CTFFactory::Stub( KTFStubTypeAccessoryControl );
hgs
parents: 41
diff changeset
    59
    return STATIC_CAST( CTFAccessoryTestControl*, stub );
hgs
parents: 41
diff changeset
    60
    }
hgs
parents: 41
diff changeset
    61
//
hgs
parents: 41
diff changeset
    62
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
    63
// MTFAccessoryTestControl::MTFAccessoryTestControl
hgs
parents: 41
diff changeset
    64
// ----------------------------------------------------------------------------------	  
hgs
parents: 41
diff changeset
    65
MTFAccessoryTestControl::MTFAccessoryTestControl( void )
hgs
parents: 41
diff changeset
    66
    {
hgs
parents: 41
diff changeset
    67
    }
hgs
parents: 41
diff changeset
    68
//
hgs
parents: 41
diff changeset
    69
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
    70
// MTFAccessoryTestControl::~MTFAccessoryTestControl
hgs
parents: 41
diff changeset
    71
// ----------------------------------------------------------------------------------	  
hgs
parents: 41
diff changeset
    72
MTFAccessoryTestControl::~MTFAccessoryTestControl( void )
hgs
parents: 41
diff changeset
    73
    {
hgs
parents: 41
diff changeset
    74
    }
hgs
parents: 41
diff changeset
    75
hgs
parents: 41
diff changeset
    76
//
hgs
parents: 41
diff changeset
    77
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
    78
// CTFAccessoryTestControl::CTFAccessoryTestControl
hgs
parents: 41
diff changeset
    79
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
    80
CTFAccessoryTestControl::CTFAccessoryTestControl( void ) :
hgs
parents: 41
diff changeset
    81
    CTFRemoteStub( KTFStubTypeAccessoryControl ),
hgs
parents: 41
diff changeset
    82
        iStack( CTFTestControlObserver::iOffset ), iStackIter( iStack )
hgs
parents: 41
diff changeset
    83
    {
hgs
parents: 41
diff changeset
    84
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CTFAccessoryTestControl()" ) ) );
hgs
parents: 41
diff changeset
    85
hgs
parents: 41
diff changeset
    86
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CTFAccessoryTestControl() - return" ) ) );
hgs
parents: 41
diff changeset
    87
    }
hgs
parents: 41
diff changeset
    88
hgs
parents: 41
diff changeset
    89
//lint -e1740 Pointer not directly deleted by destructor
hgs
parents: 41
diff changeset
    90
//
hgs
parents: 41
diff changeset
    91
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
    92
// CTFAccessoryTestControl::~CTFAccessoryTestControl
hgs
parents: 41
diff changeset
    93
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
    94
CTFAccessoryTestControl::~CTFAccessoryTestControl( void )
hgs
parents: 41
diff changeset
    95
    {
hgs
parents: 41
diff changeset
    96
hgs
parents: 41
diff changeset
    97
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::~CTFAccessoryTestControl()" ) ) );
hgs
parents: 41
diff changeset
    98
    RProperty::Delete( KTFAccessoryTestProperty, KTFAccessoryMethod );
hgs
parents: 41
diff changeset
    99
hgs
parents: 41
diff changeset
   100
    ResetAccessoryServices();
hgs
parents: 41
diff changeset
   101
hgs
parents: 41
diff changeset
   102
    iAccessoryServer.Disconnect();
hgs
parents: 41
diff changeset
   103
hgs
parents: 41
diff changeset
   104
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::~CTFAccessoryTestControl() - Accessory Server connection closed" ) ) );
hgs
parents: 41
diff changeset
   105
hgs
parents: 41
diff changeset
   106
    }
hgs
parents: 41
diff changeset
   107
//lint +e1740    
hgs
parents: 41
diff changeset
   108
//
hgs
parents: 41
diff changeset
   109
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   110
// CTFAccessoryTestControl::InitializeL
hgs
parents: 41
diff changeset
   111
// ----------------------------------------------------------------------------------	   
hgs
parents: 41
diff changeset
   112
void CTFAccessoryTestControl::InitializeL( void )
hgs
parents: 41
diff changeset
   113
    {
hgs
parents: 41
diff changeset
   114
hgs
parents: 41
diff changeset
   115
    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::InitializeL( void ) - enter" ) ) );
hgs
parents: 41
diff changeset
   116
    TInt retval( KErrNone );
hgs
parents: 41
diff changeset
   117
hgs
parents: 41
diff changeset
   118
    iAccessoryConnection = NULL;
hgs
parents: 41
diff changeset
   119
    iAccessorySingleConnection = NULL;
hgs
parents: 41
diff changeset
   120
    iAccessoryControl = NULL;
hgs
parents: 41
diff changeset
   121
    iAccessorySettings = NULL;
hgs
parents: 41
diff changeset
   122
    iAccessoryMode = NULL;
hgs
parents: 41
diff changeset
   123
    iAccessoryAudioControl = NULL;
hgs
parents: 41
diff changeset
   124
    iAccessoryBTControl = NULL;
hgs
parents: 41
diff changeset
   125
hgs
parents: 41
diff changeset
   126
    iStreamContainer = NULL;
hgs
parents: 41
diff changeset
   127
    iTopologyContainer = NULL;
hgs
parents: 41
diff changeset
   128
    iSpeakerRightVolume = NULL;
hgs
parents: 41
diff changeset
   129
    iSpeakerLeftVolume = NULL;
hgs
parents: 41
diff changeset
   130
    iSpeakerMute = NULL;
hgs
parents: 41
diff changeset
   131
    iMicRightVolume = NULL;
hgs
parents: 41
diff changeset
   132
    iMicLeftVolume = NULL;
hgs
parents: 41
diff changeset
   133
hgs
parents: 41
diff changeset
   134
    TAccPolGenericID emptyInstance;
hgs
parents: 41
diff changeset
   135
    for( TInt i( 0 ); i < 10; i++ )
hgs
parents: 41
diff changeset
   136
        {
hgs
parents: 41
diff changeset
   137
        iGenericId[i] = emptyInstance;
hgs
parents: 41
diff changeset
   138
        }
hgs
parents: 41
diff changeset
   139
hgs
parents: 41
diff changeset
   140
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::InitializeL()" ) ) );
hgs
parents: 41
diff changeset
   141
hgs
parents: 41
diff changeset
   142
    User::LeaveIfError( iAccessoryServer.Connect() );
hgs
parents: 41
diff changeset
   143
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::InitializeL() - Connected to accessory server" ) ) );
hgs
parents: 41
diff changeset
   144
hgs
parents: 41
diff changeset
   145
    retval = RProperty::Define( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
   146
        KTFAccessoryMethod,
hgs
parents: 41
diff changeset
   147
        RProperty::EByteArray );
hgs
parents: 41
diff changeset
   148
    if( retval != KErrAlreadyExists )
hgs
parents: 41
diff changeset
   149
        User::LeaveIfError( retval );
hgs
parents: 41
diff changeset
   150
    //attach to property
hgs
parents: 41
diff changeset
   151
hgs
parents: 41
diff changeset
   152
hgs
parents: 41
diff changeset
   153
    RProperty systemState;
hgs
parents: 41
diff changeset
   154
    User::LeaveIfError( systemState.Attach( KPSUidStartup, KPSGlobalSystemState ) );
hgs
parents: 41
diff changeset
   155
    TInt value( KErrNone );
hgs
parents: 41
diff changeset
   156
    //check value
hgs
parents: 41
diff changeset
   157
    TInt err = systemState.Get( value );
hgs
parents: 41
diff changeset
   158
hgs
parents: 41
diff changeset
   159
    if( err != KErrNone )
hgs
parents: 41
diff changeset
   160
        {
hgs
parents: 41
diff changeset
   161
        err = systemState.Define( KPSUidStartup,
hgs
parents: 41
diff changeset
   162
            KPSGlobalSystemState,
hgs
parents: 41
diff changeset
   163
            RProperty::EInt );
hgs
parents: 41
diff changeset
   164
        TInt err = systemState.Get( value );
hgs
parents: 41
diff changeset
   165
        }
hgs
parents: 41
diff changeset
   166
hgs
parents: 41
diff changeset
   167
    if( value != ESwStateNormalRfOn || value != ESwStateNormalRfOff || value
hgs
parents: 41
diff changeset
   168
        != ESwStateNormalBTSap )
hgs
parents: 41
diff changeset
   169
        {
hgs
parents: 41
diff changeset
   170
        TInt err = systemState.Set( KPSUidStartup,
hgs
parents: 41
diff changeset
   171
            KPSGlobalSystemState,
hgs
parents: 41
diff changeset
   172
            ESwStateNormalRfOn );
hgs
parents: 41
diff changeset
   173
        }
hgs
parents: 41
diff changeset
   174
hgs
parents: 41
diff changeset
   175
    iInitialized = ETrue;
hgs
parents: 41
diff changeset
   176
hgs
parents: 41
diff changeset
   177
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::InitializeL - return" ) ) );
hgs
parents: 41
diff changeset
   178
    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::InitializeL( void ) - return" ) ) );
hgs
parents: 41
diff changeset
   179
    }
hgs
parents: 41
diff changeset
   180
//
hgs
parents: 41
diff changeset
   181
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   182
// CTFAccessoryTestControl::ResetAccessoryServices
hgs
parents: 41
diff changeset
   183
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
   184
void CTFAccessoryTestControl::ResetAccessoryServices( void )
hgs
parents: 41
diff changeset
   185
    {
hgs
parents: 41
diff changeset
   186
    ResetAccessoryServer();
hgs
parents: 41
diff changeset
   187
hgs
parents: 41
diff changeset
   188
    iInitialized = EFalse;
hgs
parents: 41
diff changeset
   189
hgs
parents: 41
diff changeset
   190
    iAccessoryServer.Close();
hgs
parents: 41
diff changeset
   191
    }
hgs
parents: 41
diff changeset
   192
hgs
parents: 41
diff changeset
   193
//
hgs
parents: 41
diff changeset
   194
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   195
// CTFAccessoryTestControl::ResetAccessoryServer
hgs
parents: 41
diff changeset
   196
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
   197
void CTFAccessoryTestControl::ResetAccessoryServer( void )
hgs
parents: 41
diff changeset
   198
    {
hgs
parents: 41
diff changeset
   199
hgs
parents: 41
diff changeset
   200
    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::ResetAccessoryServer()" ) ) );
hgs
parents: 41
diff changeset
   201
hgs
parents: 41
diff changeset
   202
    CTFTestControlObserver* observerItem;
hgs
parents: 41
diff changeset
   203
    if( !iStack.IsEmpty() )
hgs
parents: 41
diff changeset
   204
        {
hgs
parents: 41
diff changeset
   205
        iStackIter.SetToFirst();
hgs
parents: 41
diff changeset
   206
hgs
parents: 41
diff changeset
   207
        while( ( observerItem = iStackIter++ ) != NULL )
hgs
parents: 41
diff changeset
   208
            {
hgs
parents: 41
diff changeset
   209
            observerItem->Cancel();
hgs
parents: 41
diff changeset
   210
            User::After( 2000000 );
hgs
parents: 41
diff changeset
   211
            iStack.Remove( *observerItem );
hgs
parents: 41
diff changeset
   212
            COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Remove Observer" ) ) );
hgs
parents: 41
diff changeset
   213
            delete observerItem;
hgs
parents: 41
diff changeset
   214
            COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Delete Observer" ) ) );
hgs
parents: 41
diff changeset
   215
            };
hgs
parents: 41
diff changeset
   216
        }
hgs
parents: 41
diff changeset
   217
hgs
parents: 41
diff changeset
   218
    iStack.Reset();
hgs
parents: 41
diff changeset
   219
hgs
parents: 41
diff changeset
   220
    TAccPolGenericID emptyInstance;
hgs
parents: 41
diff changeset
   221
hgs
parents: 41
diff changeset
   222
    for( TInt i( 0 ); i < 10; i++ )
hgs
parents: 41
diff changeset
   223
        {
hgs
parents: 41
diff changeset
   224
        COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Clear instances" ) ) );
hgs
parents: 41
diff changeset
   225
        if( KErrNotFound != iGenericId[i].UniqueID() )
hgs
parents: 41
diff changeset
   226
            {
hgs
parents: 41
diff changeset
   227
            if( iGenericId[i].PhysicalConnectionCaps( KPCBluetooth ) )
hgs
parents: 41
diff changeset
   228
                {
hgs
parents: 41
diff changeset
   229
                COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- BT Found" ) ) );
hgs
parents: 41
diff changeset
   230
                TBTDevAddr BTDevAddr( iGenericId[i].DeviceAddress() );
hgs
parents: 41
diff changeset
   231
                if( iAccessoryBTControl != NULL )
hgs
parents: 41
diff changeset
   232
                    {
hgs
parents: 41
diff changeset
   233
                    TRequestStatus status;
hgs
parents: 41
diff changeset
   234
                    status = KRequestPending;
hgs
parents: 41
diff changeset
   235
                    iAccessoryBTControl->DisconnectAccessory( status, BTDevAddr );
hgs
parents: 41
diff changeset
   236
                    User::WaitForRequest( status );
hgs
parents: 41
diff changeset
   237
                    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- BT Disconnected" ) ) );
hgs
parents: 41
diff changeset
   238
                    }
hgs
parents: 41
diff changeset
   239
                }
hgs
parents: 41
diff changeset
   240
            else
hgs
parents: 41
diff changeset
   241
                {
hgs
parents: 41
diff changeset
   242
                COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Wired Found" ) ) );
hgs
parents: 41
diff changeset
   243
                TPckgBuf<TTFAccessoryPublishAndSubscribe> buf;
hgs
parents: 41
diff changeset
   244
                buf().iMethod = ETFAsyDisc;
hgs
parents: 41
diff changeset
   245
                User::LeaveIfError( iSubscribe.Set( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
   246
                    KTFAccessoryMethod,
hgs
parents: 41
diff changeset
   247
                    buf ) );
hgs
parents: 41
diff changeset
   248
                COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ResetAccessoryServer -- Wired Disconnected" ) ) );
hgs
parents: 41
diff changeset
   249
                }
hgs
parents: 41
diff changeset
   250
            }
hgs
parents: 41
diff changeset
   251
        iGenericId[i] = emptyInstance;
hgs
parents: 41
diff changeset
   252
        }
hgs
parents: 41
diff changeset
   253
hgs
parents: 41
diff changeset
   254
    if( iAccessoryConnection != NULL )
hgs
parents: 41
diff changeset
   255
        {
hgs
parents: 41
diff changeset
   256
        iAccessoryConnection->CloseSubSession();
hgs
parents: 41
diff changeset
   257
        delete iAccessoryConnection;
hgs
parents: 41
diff changeset
   258
        iAccessoryConnection = NULL;
hgs
parents: 41
diff changeset
   259
        }
hgs
parents: 41
diff changeset
   260
hgs
parents: 41
diff changeset
   261
    if( iAccessorySingleConnection != NULL )
hgs
parents: 41
diff changeset
   262
        {
hgs
parents: 41
diff changeset
   263
        iAccessorySingleConnection->CloseSubSession();
hgs
parents: 41
diff changeset
   264
        delete iAccessorySingleConnection;
hgs
parents: 41
diff changeset
   265
        iAccessorySingleConnection = NULL;
hgs
parents: 41
diff changeset
   266
        }
hgs
parents: 41
diff changeset
   267
    if( iAccessoryControl != NULL )
hgs
parents: 41
diff changeset
   268
        {
hgs
parents: 41
diff changeset
   269
        iAccessoryControl->CloseSubSession();
hgs
parents: 41
diff changeset
   270
        delete iAccessoryControl;
hgs
parents: 41
diff changeset
   271
        iAccessoryControl = NULL;
hgs
parents: 41
diff changeset
   272
        }
hgs
parents: 41
diff changeset
   273
    if( iAccessorySettings != NULL )
hgs
parents: 41
diff changeset
   274
        {
hgs
parents: 41
diff changeset
   275
        iAccessorySettings->CloseSubSession();
hgs
parents: 41
diff changeset
   276
        delete iAccessorySettings;
hgs
parents: 41
diff changeset
   277
        iAccessorySettings = NULL;
hgs
parents: 41
diff changeset
   278
        }
hgs
parents: 41
diff changeset
   279
    if( iAccessoryMode != NULL )
hgs
parents: 41
diff changeset
   280
        {
hgs
parents: 41
diff changeset
   281
        iAccessoryMode->CloseSubSession();
hgs
parents: 41
diff changeset
   282
        delete iAccessoryMode;
hgs
parents: 41
diff changeset
   283
        iAccessoryMode = NULL;
hgs
parents: 41
diff changeset
   284
        }
hgs
parents: 41
diff changeset
   285
hgs
parents: 41
diff changeset
   286
    if( iAccessoryAudioControl != NULL )
hgs
parents: 41
diff changeset
   287
        {
hgs
parents: 41
diff changeset
   288
        iAccessoryAudioControl->CloseSubSession();
hgs
parents: 41
diff changeset
   289
        delete iAccessoryAudioControl;
hgs
parents: 41
diff changeset
   290
        iAccessoryAudioControl = NULL;
hgs
parents: 41
diff changeset
   291
        }
hgs
parents: 41
diff changeset
   292
hgs
parents: 41
diff changeset
   293
    if( iAccessoryBTControl != NULL )
hgs
parents: 41
diff changeset
   294
        {
hgs
parents: 41
diff changeset
   295
        iAccessoryBTControl->CloseSubSession();
hgs
parents: 41
diff changeset
   296
        delete iAccessoryBTControl;
hgs
parents: 41
diff changeset
   297
        iAccessoryBTControl = NULL;
hgs
parents: 41
diff changeset
   298
        }
hgs
parents: 41
diff changeset
   299
hgs
parents: 41
diff changeset
   300
    if( iSpeakerRightVolume != NULL )
hgs
parents: 41
diff changeset
   301
        {
hgs
parents: 41
diff changeset
   302
        delete iSpeakerRightVolume;
hgs
parents: 41
diff changeset
   303
        iSpeakerRightVolume = NULL;
hgs
parents: 41
diff changeset
   304
        }
hgs
parents: 41
diff changeset
   305
hgs
parents: 41
diff changeset
   306
    if( iSpeakerLeftVolume != NULL )
hgs
parents: 41
diff changeset
   307
        {
hgs
parents: 41
diff changeset
   308
        delete iSpeakerLeftVolume;
hgs
parents: 41
diff changeset
   309
        iSpeakerLeftVolume = NULL;
hgs
parents: 41
diff changeset
   310
        }
hgs
parents: 41
diff changeset
   311
hgs
parents: 41
diff changeset
   312
    if( iSpeakerMute != NULL )
hgs
parents: 41
diff changeset
   313
        {
hgs
parents: 41
diff changeset
   314
        delete iSpeakerMute;
hgs
parents: 41
diff changeset
   315
        iSpeakerMute = NULL;
hgs
parents: 41
diff changeset
   316
        }
hgs
parents: 41
diff changeset
   317
hgs
parents: 41
diff changeset
   318
    if( iMicRightVolume != NULL )
hgs
parents: 41
diff changeset
   319
        {
hgs
parents: 41
diff changeset
   320
        delete iMicRightVolume;
hgs
parents: 41
diff changeset
   321
        iMicRightVolume = NULL;
hgs
parents: 41
diff changeset
   322
        }
hgs
parents: 41
diff changeset
   323
hgs
parents: 41
diff changeset
   324
    if( iMicLeftVolume != NULL )
hgs
parents: 41
diff changeset
   325
        {
hgs
parents: 41
diff changeset
   326
        delete iMicLeftVolume;
hgs
parents: 41
diff changeset
   327
        iMicLeftVolume = NULL;
hgs
parents: 41
diff changeset
   328
        }
hgs
parents: 41
diff changeset
   329
hgs
parents: 41
diff changeset
   330
    if( iStreamContainer != NULL )
hgs
parents: 41
diff changeset
   331
        {
hgs
parents: 41
diff changeset
   332
        delete iStreamContainer;
hgs
parents: 41
diff changeset
   333
        iStreamContainer = NULL;
hgs
parents: 41
diff changeset
   334
        }
hgs
parents: 41
diff changeset
   335
hgs
parents: 41
diff changeset
   336
    if( iTopologyContainer != NULL )
hgs
parents: 41
diff changeset
   337
        {
hgs
parents: 41
diff changeset
   338
        delete iTopologyContainer;
hgs
parents: 41
diff changeset
   339
        iTopologyContainer = NULL;
hgs
parents: 41
diff changeset
   340
        }
hgs
parents: 41
diff changeset
   341
hgs
parents: 41
diff changeset
   342
    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::ResetAccessoryServer() - Success" ) ) );
hgs
parents: 41
diff changeset
   343
    }
hgs
parents: 41
diff changeset
   344
//
hgs
parents: 41
diff changeset
   345
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   346
// CTFAccessoryTestControl::CancelOutStandingRequest
hgs
parents: 41
diff changeset
   347
// ----------------------------------------------------------------------------------	    
hgs
parents: 41
diff changeset
   348
void CTFAccessoryTestControl::CancelOutStandingRequest()
hgs
parents: 41
diff changeset
   349
    {
hgs
parents: 41
diff changeset
   350
    iObserverItem->Cancel();
hgs
parents: 41
diff changeset
   351
    }
hgs
parents: 41
diff changeset
   352
hgs
parents: 41
diff changeset
   353
//
hgs
parents: 41
diff changeset
   354
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   355
// CTFAccessoryTestControl::FillObjectL
hgs
parents: 41
diff changeset
   356
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   357
void CTFAccessoryTestControl::FillObjectL( CAccPolAudioStreamFormatCon* aContainer,
hgs
parents: 41
diff changeset
   358
    TStreamConObjectType aobjectType,
hgs
parents: 41
diff changeset
   359
    TInt64 aNumberOfObjects )
hgs
parents: 41
diff changeset
   360
    {
hgs
parents: 41
diff changeset
   361
hgs
parents: 41
diff changeset
   362
    for( TInt i = 0; i < aNumberOfObjects; i++ )
hgs
parents: 41
diff changeset
   363
        {
hgs
parents: 41
diff changeset
   364
        switch( aobjectType )
hgs
parents: 41
diff changeset
   365
            {
hgs
parents: 41
diff changeset
   366
            case EAccPolAudioInputStreamObject:
hgs
parents: 41
diff changeset
   367
                {
hgs
parents: 41
diff changeset
   368
                CAccPolAudioStreamFormat* stream =
hgs
parents: 41
diff changeset
   369
                    CAccPolAudioStreamFormat::NewLC( aobjectType,
hgs
parents: 41
diff changeset
   370
                        i,
hgs
parents: 41
diff changeset
   371
                        KUidFormatPCM16,
hgs
parents: 41
diff changeset
   372
                        CAccPolAudioStreamFormat::EStereo,
hgs
parents: 41
diff changeset
   373
                        CAccPolAudioStreamFormat::EBitsPerSample16,
hgs
parents: 41
diff changeset
   374
                        i + 200 );
hgs
parents: 41
diff changeset
   375
                aContainer->AddL( *stream );
hgs
parents: 41
diff changeset
   376
                CleanupStack::PopAndDestroy( stream );
hgs
parents: 41
diff changeset
   377
                }
hgs
parents: 41
diff changeset
   378
                break;
hgs
parents: 41
diff changeset
   379
hgs
parents: 41
diff changeset
   380
            case EAccPolAudioOutputStreamObject:
hgs
parents: 41
diff changeset
   381
                {
hgs
parents: 41
diff changeset
   382
hgs
parents: 41
diff changeset
   383
                CAccPolAudioStreamFormat
hgs
parents: 41
diff changeset
   384
                    * stream =
hgs
parents: 41
diff changeset
   385
                        CAccPolAudioStreamFormat::NewLC( EAccPolAudioOutputStreamObject );
hgs
parents: 41
diff changeset
   386
hgs
parents: 41
diff changeset
   387
                stream->SetUnitId( i );
hgs
parents: 41
diff changeset
   388
                stream->SetAudioFormat( KUidFormatPCM16 );
hgs
parents: 41
diff changeset
   389
                stream->SetStreamType( CAccPolAudioStreamFormat::EMono );
hgs
parents: 41
diff changeset
   390
                stream->SetBitResolution( CAccPolAudioStreamFormat::EBitsPerSample32 );
hgs
parents: 41
diff changeset
   391
                stream->SetSamFreq( i + 200 );
hgs
parents: 41
diff changeset
   392
hgs
parents: 41
diff changeset
   393
                aContainer->AddL( *stream );
hgs
parents: 41
diff changeset
   394
                CleanupStack::PopAndDestroy( stream );
hgs
parents: 41
diff changeset
   395
                }
hgs
parents: 41
diff changeset
   396
                break;
hgs
parents: 41
diff changeset
   397
hgs
parents: 41
diff changeset
   398
            default:
hgs
parents: 41
diff changeset
   399
                {
hgs
parents: 41
diff changeset
   400
                TRACE_ASSERT_ALWAYS;
hgs
parents: 41
diff changeset
   401
                }
hgs
parents: 41
diff changeset
   402
                break;
hgs
parents: 41
diff changeset
   403
            }
hgs
parents: 41
diff changeset
   404
        }
hgs
parents: 41
diff changeset
   405
hgs
parents: 41
diff changeset
   406
    }
hgs
parents: 41
diff changeset
   407
hgs
parents: 41
diff changeset
   408
//
hgs
parents: 41
diff changeset
   409
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   410
// CTFAccessoryTestControl::CreateObjectPubSub
hgs
parents: 41
diff changeset
   411
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   412
void CTFAccessoryTestControl::CreateObjectPubSubL( TStreamConObjectType aobjectType,
hgs
parents: 41
diff changeset
   413
    TInt64 aNumberOfObjects,
hgs
parents: 41
diff changeset
   414
    TStreamConObjectType aobjectType2,
hgs
parents: 41
diff changeset
   415
    TInt64 aNumberOfObjects2 )
hgs
parents: 41
diff changeset
   416
    {
hgs
parents: 41
diff changeset
   417
    RProperty prop;
hgs
parents: 41
diff changeset
   418
    prop.Define( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
   419
        KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
   420
        RProperty::EByteArray );
hgs
parents: 41
diff changeset
   421
hgs
parents: 41
diff changeset
   422
    CAccPolAudioStreamFormatCon* container =
hgs
parents: 41
diff changeset
   423
        CAccPolAudioStreamFormatCon::NewLC();
hgs
parents: 41
diff changeset
   424
hgs
parents: 41
diff changeset
   425
    FillObjectL( container, aobjectType, aNumberOfObjects );
hgs
parents: 41
diff changeset
   426
    FillObjectL( container, aobjectType2, aNumberOfObjects2 );
hgs
parents: 41
diff changeset
   427
hgs
parents: 41
diff changeset
   428
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
   429
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
   430
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
   431
hgs
parents: 41
diff changeset
   432
    //Externalize container to buf
hgs
parents: 41
diff changeset
   433
    RBufWriteStream wStrm;
hgs
parents: 41
diff changeset
   434
    ( void )wStrm.Open( *buf );
hgs
parents: 41
diff changeset
   435
    wStrm.PushL();
hgs
parents: 41
diff changeset
   436
    container->ExternalizeL( wStrm );
hgs
parents: 41
diff changeset
   437
    wStrm.CommitL();
hgs
parents: 41
diff changeset
   438
    wStrm.Close();
hgs
parents: 41
diff changeset
   439
    wStrm.Pop();
hgs
parents: 41
diff changeset
   440
hgs
parents: 41
diff changeset
   441
    TPtr8 ptr( buf->Ptr( 0 ) );
hgs
parents: 41
diff changeset
   442
hgs
parents: 41
diff changeset
   443
    TInt retval = prop.Set( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
   444
        KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
   445
        ptr );
hgs
parents: 41
diff changeset
   446
hgs
parents: 41
diff changeset
   447
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
   448
    CleanupStack::PopAndDestroy( container );
hgs
parents: 41
diff changeset
   449
    }
hgs
parents: 41
diff changeset
   450
hgs
parents: 41
diff changeset
   451
//
hgs
parents: 41
diff changeset
   452
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   453
// CTFAccessoryTestControl::CreateObjectPubSub
hgs
parents: 41
diff changeset
   454
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   455
void CTFAccessoryTestControl::CreateTopologyObjectsToPubSubL(
hgs
parents: 41
diff changeset
   456
    TTFAccessoryTestCaseStateControl& aParameter )
hgs
parents: 41
diff changeset
   457
    {
hgs
parents: 41
diff changeset
   458
    RProperty prop;
hgs
parents: 41
diff changeset
   459
    prop.Define( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
   460
        KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
   461
        RProperty::EByteArray );
hgs
parents: 41
diff changeset
   462
hgs
parents: 41
diff changeset
   463
    CAccPolAudioTopologyObjectCon* aObject =
hgs
parents: 41
diff changeset
   464
        CAccPolAudioTopologyObjectCon::NewLC();
hgs
parents: 41
diff changeset
   465
hgs
parents: 41
diff changeset
   466
    //Speaker
hgs
parents: 41
diff changeset
   467
    //OT-3
hgs
parents: 41
diff changeset
   468
    CAccPolOutputTerminal* OT3 = CAccPolOutputTerminal::NewLC( 3,
hgs
parents: 41
diff changeset
   469
        CAccPolOutputTerminal::EAPTHeadphone,
hgs
parents: 41
diff changeset
   470
        2 );
hgs
parents: 41
diff changeset
   471
    //Connected to FU-2                                                                  
hgs
parents: 41
diff changeset
   472
    aObject->AddL( *OT3 );
hgs
parents: 41
diff changeset
   473
hgs
parents: 41
diff changeset
   474
    //FU2
hgs
parents: 41
diff changeset
   475
    CAccPolFeatureUnit* FU2 = CAccPolFeatureUnit::NewLC( 2, 8 );
hgs
parents: 41
diff changeset
   476
    // Volume control object.
hgs
parents: 41
diff changeset
   477
    CAccPolVolumeControl* speakerRightVolume =
hgs
parents: 41
diff changeset
   478
        CAccPolVolumeControl::NewLC( KAccRightFrontChannel, 7, 5, 20, 5 );
hgs
parents: 41
diff changeset
   479
    CAccPolVolumeControl* speakerLeftVolume =
hgs
parents: 41
diff changeset
   480
        CAccPolVolumeControl::NewLC( KAccLeftFrontChannel, 7, 5, 20, 5 );
hgs
parents: 41
diff changeset
   481
hgs
parents: 41
diff changeset
   482
    CAccPolMuteControl* speakermute =
hgs
parents: 41
diff changeset
   483
        CAccPolMuteControl::NewLC( KAccMasterChannel, ETrue );
hgs
parents: 41
diff changeset
   484
hgs
parents: 41
diff changeset
   485
    FU2->AddControlL( *speakerRightVolume );
hgs
parents: 41
diff changeset
   486
    FU2->AddControlL( *speakerLeftVolume );
hgs
parents: 41
diff changeset
   487
    FU2->AddControlL( *speakermute );
hgs
parents: 41
diff changeset
   488
hgs
parents: 41
diff changeset
   489
    //Connected to MU-8
hgs
parents: 41
diff changeset
   490
    aObject->AddL( *FU2 );
hgs
parents: 41
diff changeset
   491
hgs
parents: 41
diff changeset
   492
    CAccPolMixerUnit* MU8 = CAccPolMixerUnit::NewLC( 8 );
hgs
parents: 41
diff changeset
   493
    MU8->AddSourceIdL( 1 );
hgs
parents: 41
diff changeset
   494
    MU8->AddSourceIdL( 7 );
hgs
parents: 41
diff changeset
   495
hgs
parents: 41
diff changeset
   496
    //Connected to IT1 and FU7
hgs
parents: 41
diff changeset
   497
    aObject->AddL( *MU8 );
hgs
parents: 41
diff changeset
   498
hgs
parents: 41
diff changeset
   499
    //Choice one
hgs
parents: 41
diff changeset
   500
    //IT-1
hgs
parents: 41
diff changeset
   501
    TUint8 aChannelCount = 2;
hgs
parents: 41
diff changeset
   502
    TUint16 aChannelConfig = 0;
hgs
parents: 41
diff changeset
   503
    aChannelConfig = aChannelConfig | KAccRightFrontChannel;
hgs
parents: 41
diff changeset
   504
    aChannelConfig = aChannelConfig | KAccLeftFrontChannel;
hgs
parents: 41
diff changeset
   505
hgs
parents: 41
diff changeset
   506
    CAccPolInputTerminal* IT1 = CAccPolInputTerminal::NewLC( 1,
hgs
parents: 41
diff changeset
   507
        CAccPolInputTerminal::EAPTStream,
hgs
parents: 41
diff changeset
   508
        aChannelCount,
hgs
parents: 41
diff changeset
   509
        aChannelConfig );
hgs
parents: 41
diff changeset
   510
    aObject->AddL( *IT1 );
hgs
parents: 41
diff changeset
   511
hgs
parents: 41
diff changeset
   512
    //choice two
hgs
parents: 41
diff changeset
   513
    //FU7
hgs
parents: 41
diff changeset
   514
    CAccPolFeatureUnit* FU7 = CAccPolFeatureUnit::NewLC( 7, 5 ); //Connected to FU5
hgs
parents: 41
diff changeset
   515
    // Volume control object.
hgs
parents: 41
diff changeset
   516
    CAccPolVolumeControl* sidetoneRightVolume =
hgs
parents: 41
diff changeset
   517
        CAccPolVolumeControl::NewLC( KAccMasterChannel, 7, 5, 20, 5 );
hgs
parents: 41
diff changeset
   518
    CAccPolVolumeControl* sidetoneLeftVolume =
hgs
parents: 41
diff changeset
   519
        CAccPolVolumeControl::NewLC( KAccMasterChannel, 7, 5, 20, 5 );
hgs
parents: 41
diff changeset
   520
hgs
parents: 41
diff changeset
   521
    FU7->AddControlL( *sidetoneRightVolume );
hgs
parents: 41
diff changeset
   522
    FU7->AddControlL( *sidetoneLeftVolume );
hgs
parents: 41
diff changeset
   523
hgs
parents: 41
diff changeset
   524
    aObject->AddL( *FU7 );
hgs
parents: 41
diff changeset
   525
hgs
parents: 41
diff changeset
   526
    //Microphone
hgs
parents: 41
diff changeset
   527
    //IT-4
hgs
parents: 41
diff changeset
   528
hgs
parents: 41
diff changeset
   529
    //OT-6
hgs
parents: 41
diff changeset
   530
    CAccPolOutputTerminal* OT6 = CAccPolOutputTerminal::NewLC( 6,
hgs
parents: 41
diff changeset
   531
        CAccPolOutputTerminal::EAPTStream,
hgs
parents: 41
diff changeset
   532
        10 );
hgs
parents: 41
diff changeset
   533
    //Connected to SU-10                                                           
hgs
parents: 41
diff changeset
   534
    aObject->AddL( *OT6 );
hgs
parents: 41
diff changeset
   535
hgs
parents: 41
diff changeset
   536
    //SU-10
hgs
parents: 41
diff changeset
   537
    CAccPolSelectorUnit* SU10 = CAccPolSelectorUnit::NewLC( 10, 1 );
hgs
parents: 41
diff changeset
   538
hgs
parents: 41
diff changeset
   539
    // Connected to FU 5                                                       
hgs
parents: 41
diff changeset
   540
    SU10->AddSourceIdL( 5 );
hgs
parents: 41
diff changeset
   541
    aObject->AddL( *SU10 );
hgs
parents: 41
diff changeset
   542
hgs
parents: 41
diff changeset
   543
    //FU5
hgs
parents: 41
diff changeset
   544
    CAccPolFeatureUnit* FU5 = CAccPolFeatureUnit::NewLC( 5, 9 );
hgs
parents: 41
diff changeset
   545
hgs
parents: 41
diff changeset
   546
    // Volume control object.
hgs
parents: 41
diff changeset
   547
    CAccPolVolumeControl* micRightVolume =
hgs
parents: 41
diff changeset
   548
        CAccPolVolumeControl::NewLC( KAccRightFrontChannel, 7, 5, 20, 5 );
hgs
parents: 41
diff changeset
   549
    CAccPolVolumeControl* micLeftVolume =
hgs
parents: 41
diff changeset
   550
        CAccPolVolumeControl::NewLC( KAccLeftFrontChannel, 7, 5, 20, 5 );
hgs
parents: 41
diff changeset
   551
    CAccPolMuteControl* micmute = CAccPolMuteControl::NewLC( KAccMasterChannel,
hgs
parents: 41
diff changeset
   552
        ETrue );
hgs
parents: 41
diff changeset
   553
hgs
parents: 41
diff changeset
   554
    FU5->AddControlL( *micRightVolume );
hgs
parents: 41
diff changeset
   555
    FU5->AddControlL( *micLeftVolume );
hgs
parents: 41
diff changeset
   556
    FU5->AddControlL( *micmute );
hgs
parents: 41
diff changeset
   557
hgs
parents: 41
diff changeset
   558
    //Connected to FU-9                                                               
hgs
parents: 41
diff changeset
   559
    aObject->AddL( *FU5 );
hgs
parents: 41
diff changeset
   560
hgs
parents: 41
diff changeset
   561
    ///FU9
hgs
parents: 41
diff changeset
   562
    CAccPolFeatureUnit* FU9 = CAccPolFeatureUnit::NewLC( 9, 4 );
hgs
parents: 41
diff changeset
   563
    //Connected IT-4                                                               
hgs
parents: 41
diff changeset
   564
    aObject->AddL( *FU9 );
hgs
parents: 41
diff changeset
   565
hgs
parents: 41
diff changeset
   566
    CAccPolInputTerminal* IT4 = CAccPolInputTerminal::NewLC( 4,
hgs
parents: 41
diff changeset
   567
        CAccPolInputTerminal::EAPTMicrophone,
hgs
parents: 41
diff changeset
   568
        aChannelCount,
hgs
parents: 41
diff changeset
   569
        aChannelConfig );
hgs
parents: 41
diff changeset
   570
    aObject->AddL( *IT4 );
hgs
parents: 41
diff changeset
   571
hgs
parents: 41
diff changeset
   572
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
   573
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
   574
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
   575
hgs
parents: 41
diff changeset
   576
    //Externalize container to buf
hgs
parents: 41
diff changeset
   577
    RBufWriteStream wStrm;
hgs
parents: 41
diff changeset
   578
    ( void )wStrm.Open( *buf );
hgs
parents: 41
diff changeset
   579
    wStrm.PushL();
hgs
parents: 41
diff changeset
   580
    aObject->ExternalizeL( wStrm );
hgs
parents: 41
diff changeset
   581
    wStrm.CommitL();
hgs
parents: 41
diff changeset
   582
    wStrm.Close();
hgs
parents: 41
diff changeset
   583
    wStrm.Pop();
hgs
parents: 41
diff changeset
   584
    TPtr8 ptr( buf->Ptr( 0 ) );
hgs
parents: 41
diff changeset
   585
    TInt retval = prop.Set( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
   586
        KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
   587
        ptr );
hgs
parents: 41
diff changeset
   588
    
hgs
parents: 41
diff changeset
   589
    // Notify ASY stub
hgs
parents: 41
diff changeset
   590
    if( aParameter.iArg2 )
hgs
parents: 41
diff changeset
   591
        {
hgs
parents: 41
diff changeset
   592
        PublishAndSubscribeL( aParameter );
hgs
parents: 41
diff changeset
   593
        }
hgs
parents: 41
diff changeset
   594
hgs
parents: 41
diff changeset
   595
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
   596
    CleanupStack::PopAndDestroy( IT4 );
hgs
parents: 41
diff changeset
   597
    CleanupStack::PopAndDestroy( FU9 );
hgs
parents: 41
diff changeset
   598
    CleanupStack::PopAndDestroy( micmute );
hgs
parents: 41
diff changeset
   599
    CleanupStack::PopAndDestroy( micLeftVolume );
hgs
parents: 41
diff changeset
   600
    CleanupStack::PopAndDestroy( micRightVolume );
hgs
parents: 41
diff changeset
   601
    CleanupStack::PopAndDestroy( FU5 );
hgs
parents: 41
diff changeset
   602
    CleanupStack::PopAndDestroy( SU10 );
hgs
parents: 41
diff changeset
   603
    CleanupStack::PopAndDestroy( OT6 );
hgs
parents: 41
diff changeset
   604
    CleanupStack::PopAndDestroy( sidetoneLeftVolume );
hgs
parents: 41
diff changeset
   605
    CleanupStack::PopAndDestroy( sidetoneRightVolume );
hgs
parents: 41
diff changeset
   606
    CleanupStack::PopAndDestroy( FU7 );
hgs
parents: 41
diff changeset
   607
    CleanupStack::PopAndDestroy( IT1 );
hgs
parents: 41
diff changeset
   608
    CleanupStack::PopAndDestroy( MU8 );
hgs
parents: 41
diff changeset
   609
    CleanupStack::PopAndDestroy( speakermute );
hgs
parents: 41
diff changeset
   610
    CleanupStack::PopAndDestroy( speakerLeftVolume );
hgs
parents: 41
diff changeset
   611
    CleanupStack::PopAndDestroy( speakerRightVolume );
hgs
parents: 41
diff changeset
   612
    CleanupStack::PopAndDestroy( FU2 );
hgs
parents: 41
diff changeset
   613
    CleanupStack::PopAndDestroy( OT3 );
hgs
parents: 41
diff changeset
   614
    CleanupStack::PopAndDestroy( aObject );
hgs
parents: 41
diff changeset
   615
    }
hgs
parents: 41
diff changeset
   616
hgs
parents: 41
diff changeset
   617
//
hgs
parents: 41
diff changeset
   618
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
   619
// CTFAccessoryTestControl::CallAccessoryFunctionL
hgs
parents: 41
diff changeset
   620
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
   621
void CTFAccessoryTestControl::CallAccessoryFunctionL( TTFAccessoryTestCaseStateControl& aParameter )
hgs
parents: 41
diff changeset
   622
    {
hgs
parents: 41
diff changeset
   623
hgs
parents: 41
diff changeset
   624
    //    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CallAccessoryFunctionL(%d, %d, %d)" ), aParameter.iAccessoryFunction, aParameter.iArg1, aParameter.iArg2 ) );
hgs
parents: 41
diff changeset
   625
    if( !iInitialized )
hgs
parents: 41
diff changeset
   626
        {
hgs
parents: 41
diff changeset
   627
        InitializeL();
hgs
parents: 41
diff changeset
   628
        }
hgs
parents: 41
diff changeset
   629
hgs
parents: 41
diff changeset
   630
    TInt retval = KTFErrAccessoryServiceMissing;
hgs
parents: 41
diff changeset
   631
hgs
parents: 41
diff changeset
   632
    switch( aParameter.iAccessoryFunction )
hgs
parents: 41
diff changeset
   633
        {
hgs
parents: 41
diff changeset
   634
        case ETFAccessorySet_ObjectPubSub:
hgs
parents: 41
diff changeset
   635
            {
hgs
parents: 41
diff changeset
   636
            CreateObjectPubSubL( ( TStreamConObjectType )aParameter.iArg1,
hgs
parents: 41
diff changeset
   637
                aParameter.iArg2,
hgs
parents: 41
diff changeset
   638
                ( TStreamConObjectType )aParameter.iArg3,
hgs
parents: 41
diff changeset
   639
                aParameter.iArg4 );
hgs
parents: 41
diff changeset
   640
            retval = KErrNone;
hgs
parents: 41
diff changeset
   641
            }
hgs
parents: 41
diff changeset
   642
            break;
hgs
parents: 41
diff changeset
   643
hgs
parents: 41
diff changeset
   644
        case ETFAccessorySet_TopologyObjectsPubSub:
hgs
parents: 41
diff changeset
   645
            {
hgs
parents: 41
diff changeset
   646
            CreateTopologyObjectsToPubSubL( aParameter );
hgs
parents: 41
diff changeset
   647
            retval = KErrNone;
hgs
parents: 41
diff changeset
   648
            }
hgs
parents: 41
diff changeset
   649
            break;
hgs
parents: 41
diff changeset
   650
hgs
parents: 41
diff changeset
   651
        case ETFAccessorySet_PubSub:
hgs
parents: 41
diff changeset
   652
            {
hgs
parents: 41
diff changeset
   653
            RProperty prop;
hgs
parents: 41
diff changeset
   654
            prop.Define( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
   655
                KTFAccessoryNotifierMethod,
hgs
parents: 41
diff changeset
   656
                RProperty::EInt );
hgs
parents: 41
diff changeset
   657
            retval = prop.Set( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
   658
                KTFAccessoryNotifierMethod,
hgs
parents: 41
diff changeset
   659
                aParameter.iArg1 );
hgs
parents: 41
diff changeset
   660
            }
hgs
parents: 41
diff changeset
   661
            break;
hgs
parents: 41
diff changeset
   662
hgs
parents: 41
diff changeset
   663
        case ETFConnectWiredAccessory:
hgs
parents: 41
diff changeset
   664
            {
hgs
parents: 41
diff changeset
   665
            PublishAndSubscribeL( aParameter );
hgs
parents: 41
diff changeset
   666
            retval = KErrNone;
hgs
parents: 41
diff changeset
   667
            }
hgs
parents: 41
diff changeset
   668
            break;
hgs
parents: 41
diff changeset
   669
hgs
parents: 41
diff changeset
   670
        case ETFClearStack:
hgs
parents: 41
diff changeset
   671
            {
hgs
parents: 41
diff changeset
   672
            CTFTestControlObserver* observerItem;
hgs
parents: 41
diff changeset
   673
            TInt count = 0;
hgs
parents: 41
diff changeset
   674
            if( !iStack.IsEmpty() )
hgs
parents: 41
diff changeset
   675
                {
hgs
parents: 41
diff changeset
   676
                iStackIter.SetToFirst();
hgs
parents: 41
diff changeset
   677
hgs
parents: 41
diff changeset
   678
                while( ( observerItem = iStackIter++ ) != NULL )
hgs
parents: 41
diff changeset
   679
                    {
hgs
parents: 41
diff changeset
   680
                    observerItem->Cancel();
hgs
parents: 41
diff changeset
   681
                    iStack.Remove( *observerItem );
hgs
parents: 41
diff changeset
   682
                    delete observerItem;
hgs
parents: 41
diff changeset
   683
                    count++;
hgs
parents: 41
diff changeset
   684
                    };
hgs
parents: 41
diff changeset
   685
                }
hgs
parents: 41
diff changeset
   686
hgs
parents: 41
diff changeset
   687
            TEST_CASE_TRACE( ( _L( "CTFAccessoryTestCaseControl::ETF_Pappa - count=%d " ), count ) );
hgs
parents: 41
diff changeset
   688
            retval = KErrNone;
hgs
parents: 41
diff changeset
   689
            }
hgs
parents: 41
diff changeset
   690
            break;
hgs
parents: 41
diff changeset
   691
hgs
parents: 41
diff changeset
   692
        case ETFDisconnectWiredAccessory:
hgs
parents: 41
diff changeset
   693
            {
hgs
parents: 41
diff changeset
   694
            retval = KErrNone;
hgs
parents: 41
diff changeset
   695
            PublishAndSubscribeL( aParameter );
hgs
parents: 41
diff changeset
   696
            TAccPolGenericID emptyInstance;
hgs
parents: 41
diff changeset
   697
            iGenericId[aParameter.iGid] = emptyInstance;
hgs
parents: 41
diff changeset
   698
            }
hgs
parents: 41
diff changeset
   699
            break;
hgs
parents: 41
diff changeset
   700
hgs
parents: 41
diff changeset
   701
        case ETFCheckCapabilityGroup:
hgs
parents: 41
diff changeset
   702
            {
hgs
parents: 41
diff changeset
   703
            if( aParameter.iArg2
hgs
parents: 41
diff changeset
   704
                == iGenericId[aParameter.iGid].SubblockCaps( aParameter.iArg3 ) )
hgs
parents: 41
diff changeset
   705
                {
hgs
parents: 41
diff changeset
   706
                retval = KErrNone;
hgs
parents: 41
diff changeset
   707
                }
hgs
parents: 41
diff changeset
   708
            else
hgs
parents: 41
diff changeset
   709
                {
hgs
parents: 41
diff changeset
   710
                retval = KErrNotFound;
hgs
parents: 41
diff changeset
   711
                }
hgs
parents: 41
diff changeset
   712
            }
hgs
parents: 41
diff changeset
   713
            break;
hgs
parents: 41
diff changeset
   714
hgs
parents: 41
diff changeset
   715
        case ETFCheckCapability:
hgs
parents: 41
diff changeset
   716
            {
hgs
parents: 41
diff changeset
   717
            RAccessoryConnection accessoryConnectionn;
hgs
parents: 41
diff changeset
   718
            accessoryConnectionn.CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
   719
hgs
parents: 41
diff changeset
   720
            CAccPolSubblockNameArray* nameArrayy =
hgs
parents: 41
diff changeset
   721
                CAccPolSubblockNameArray::NewL();
hgs
parents: 41
diff changeset
   722
            CleanupStack::PushL( nameArrayy );
hgs
parents: 41
diff changeset
   723
            accessoryConnectionn.GetSubblockNameArrayL( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
   724
                *nameArrayy );
hgs
parents: 41
diff changeset
   725
hgs
parents: 41
diff changeset
   726
            if( aParameter.iArg2 == nameArrayy->HasName( aParameter.iArg3 ) )
hgs
parents: 41
diff changeset
   727
                {
hgs
parents: 41
diff changeset
   728
                retval = KErrNone;
hgs
parents: 41
diff changeset
   729
                }
hgs
parents: 41
diff changeset
   730
            else
hgs
parents: 41
diff changeset
   731
                {
hgs
parents: 41
diff changeset
   732
                retval = KErrNotFound;
hgs
parents: 41
diff changeset
   733
                }
hgs
parents: 41
diff changeset
   734
hgs
parents: 41
diff changeset
   735
            CleanupStack::PopAndDestroy( nameArrayy );
hgs
parents: 41
diff changeset
   736
            accessoryConnectionn.CloseSubSession();
hgs
parents: 41
diff changeset
   737
            }
hgs
parents: 41
diff changeset
   738
            break;
hgs
parents: 41
diff changeset
   739
hgs
parents: 41
diff changeset
   740
        case ETFFindAndCheckRequest:
hgs
parents: 41
diff changeset
   741
hgs
parents: 41
diff changeset
   742
            {
hgs
parents: 41
diff changeset
   743
            FindAndCheckRequestL(&retval, aParameter);
hgs
parents: 41
diff changeset
   744
		}
hgs
parents: 41
diff changeset
   745
            break;
hgs
parents: 41
diff changeset
   746
hgs
parents: 41
diff changeset
   747
        case ETFFindAndCheckObjectRequest:
hgs
parents: 41
diff changeset
   748
            {
hgs
parents: 41
diff changeset
   749
            CTFAccessoryTestCaseControl* testCase = STATIC_CAST( CTFAccessoryTestCaseControl*, CurrentTestCase());
hgs
parents: 41
diff changeset
   750
            TRACE_ASSERT( testCase != NULL );
hgs
parents: 41
diff changeset
   751
            if( testCase != NULL )
hgs
parents: 41
diff changeset
   752
                {
hgs
parents: 41
diff changeset
   753
                if( !iStack.IsEmpty() )
hgs
parents: 41
diff changeset
   754
                    {
hgs
parents: 41
diff changeset
   755
                    iStackIter.SetToFirst();
hgs
parents: 41
diff changeset
   756
hgs
parents: 41
diff changeset
   757
                    while( ( iObserverItem = iStackIter++ ) != NULL )
hgs
parents: 41
diff changeset
   758
                        {
hgs
parents: 41
diff changeset
   759
                        if( iObserverItem->FindRequest( aParameter.iRequestType ) )
hgs
parents: 41
diff changeset
   760
                            {
hgs
parents: 41
diff changeset
   761
                            testCase->CheckObjectRequest( iObserverItem->iStatus,
hgs
parents: 41
diff changeset
   762
                                iObserverItem->iObjectValue,
hgs
parents: 41
diff changeset
   763
                                iObserverItem->iCapabilityName );
hgs
parents: 41
diff changeset
   764
hgs
parents: 41
diff changeset
   765
                            if( !iStack.IsEmpty() ) // Check if observes are already deleted by CheckRequest()
hgs
parents: 41
diff changeset
   766
                                {
hgs
parents: 41
diff changeset
   767
                                if( KTFDontDeleteObserver != aParameter.iArg1 )
hgs
parents: 41
diff changeset
   768
                                    {
hgs
parents: 41
diff changeset
   769
                                    iStack.Remove( *iObserverItem );
hgs
parents: 41
diff changeset
   770
                                    delete iObserverItem;
hgs
parents: 41
diff changeset
   771
                                    return;
hgs
parents: 41
diff changeset
   772
                                    }
hgs
parents: 41
diff changeset
   773
                                else
hgs
parents: 41
diff changeset
   774
                                    {
hgs
parents: 41
diff changeset
   775
                                    User::Leave( KTFDontDeleteObserver );
hgs
parents: 41
diff changeset
   776
                                    }
hgs
parents: 41
diff changeset
   777
                                }
hgs
parents: 41
diff changeset
   778
                            else
hgs
parents: 41
diff changeset
   779
                                {
hgs
parents: 41
diff changeset
   780
                                retval = KErrGeneral;
hgs
parents: 41
diff changeset
   781
                                }
hgs
parents: 41
diff changeset
   782
                            }
hgs
parents: 41
diff changeset
   783
                        }
hgs
parents: 41
diff changeset
   784
                    }
hgs
parents: 41
diff changeset
   785
                else
hgs
parents: 41
diff changeset
   786
                    {
hgs
parents: 41
diff changeset
   787
                    retval = KErrGeneral;
hgs
parents: 41
diff changeset
   788
                    }
hgs
parents: 41
diff changeset
   789
                }
hgs
parents: 41
diff changeset
   790
hgs
parents: 41
diff changeset
   791
            retval = KErrNone;
hgs
parents: 41
diff changeset
   792
            }
hgs
parents: 41
diff changeset
   793
            break;
hgs
parents: 41
diff changeset
   794
hgs
parents: 41
diff changeset
   795
            //
hgs
parents: 41
diff changeset
   796
            // Accessory Connection
hgs
parents: 41
diff changeset
   797
            //                 
hgs
parents: 41
diff changeset
   798
        case ETFAccessoryConnection_Open:
hgs
parents: 41
diff changeset
   799
            {
hgs
parents: 41
diff changeset
   800
                AccessoryConnectionOpenClose(ETFAccessoryConnection_Open, &retval);            
hgs
parents: 41
diff changeset
   801
            }
hgs
parents: 41
diff changeset
   802
            break;
hgs
parents: 41
diff changeset
   803
hgs
parents: 41
diff changeset
   804
        case ETFAccessoryConnection_Close:
hgs
parents: 41
diff changeset
   805
hgs
parents: 41
diff changeset
   806
            {
hgs
parents: 41
diff changeset
   807
                AccessoryConnectionOpenClose(ETFAccessoryConnection_Close, &retval);
hgs
parents: 41
diff changeset
   808
        	}        	
hgs
parents: 41
diff changeset
   809
            break;
hgs
parents: 41
diff changeset
   810
hgs
parents: 41
diff changeset
   811
            //
hgs
parents: 41
diff changeset
   812
            // Accessory Settings
hgs
parents: 41
diff changeset
   813
            //                                           		
hgs
parents: 41
diff changeset
   814
        case ETFAccessorySettings_Open:
hgs
parents: 41
diff changeset
   815
            {
hgs
parents: 41
diff changeset
   816
                AccessorySettingsOpenClose(ETFAccessorySettings_Open, &retval);        	
hgs
parents: 41
diff changeset
   817
        	}
hgs
parents: 41
diff changeset
   818
            break;
hgs
parents: 41
diff changeset
   819
hgs
parents: 41
diff changeset
   820
        case ETFAccessorySettings_Close:
hgs
parents: 41
diff changeset
   821
            {
hgs
parents: 41
diff changeset
   822
        	AccessorySettingsOpenClose(ETFAccessorySettings_Close, &retval);
hgs
parents: 41
diff changeset
   823
        	}
hgs
parents: 41
diff changeset
   824
            break;
hgs
parents: 41
diff changeset
   825
hgs
parents: 41
diff changeset
   826
        case ETFSetHWDeviceSettings:
hgs
parents: 41
diff changeset
   827
            {
hgs
parents: 41
diff changeset
   828
            retval
hgs
parents: 41
diff changeset
   829
                = iAccessorySettings->SetHWDeviceSettingsL( aParameter.iArg1,
hgs
parents: 41
diff changeset
   830
                    ( TBool )aParameter.iArg2 );
hgs
parents: 41
diff changeset
   831
            }
hgs
parents: 41
diff changeset
   832
            break;
hgs
parents: 41
diff changeset
   833
hgs
parents: 41
diff changeset
   834
        case ETFGetHWDeviceSettings:
hgs
parents: 41
diff changeset
   835
            {
hgs
parents: 41
diff changeset
   836
            TUint32 aSettingsValue( 0 );
hgs
parents: 41
diff changeset
   837
            retval = iAccessorySettings->GetHWDeviceSettings( aSettingsValue );
hgs
parents: 41
diff changeset
   838
hgs
parents: 41
diff changeset
   839
            if( aSettingsValue != aParameter.iArg1 )
hgs
parents: 41
diff changeset
   840
                {
hgs
parents: 41
diff changeset
   841
                retval = KErrArgument;
hgs
parents: 41
diff changeset
   842
                }
hgs
parents: 41
diff changeset
   843
            }
hgs
parents: 41
diff changeset
   844
            break;
hgs
parents: 41
diff changeset
   845
hgs
parents: 41
diff changeset
   846
        case ETFGetSupportedHWDeviceSettings:
hgs
parents: 41
diff changeset
   847
            {
hgs
parents: 41
diff changeset
   848
            TUint32 aSettingsSupportedValue( 0 );
hgs
parents: 41
diff changeset
   849
hgs
parents: 41
diff changeset
   850
            retval
hgs
parents: 41
diff changeset
   851
                = iAccessorySettings->GetSupportedHWDeviceSettings( aSettingsSupportedValue );
hgs
parents: 41
diff changeset
   852
hgs
parents: 41
diff changeset
   853
            if( aSettingsSupportedValue != ( aParameter.iArg1
hgs
parents: 41
diff changeset
   854
                | aParameter.iArg2 ) )
hgs
parents: 41
diff changeset
   855
                {
hgs
parents: 41
diff changeset
   856
                retval = KErrArgument;
hgs
parents: 41
diff changeset
   857
                }
hgs
parents: 41
diff changeset
   858
            }
hgs
parents: 41
diff changeset
   859
            break;
hgs
parents: 41
diff changeset
   860
hgs
parents: 41
diff changeset
   861
        case ETFSetIntAccessoryModeSetting:
hgs
parents: 41
diff changeset
   862
            {
hgs
parents: 41
diff changeset
   863
            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
hgs
parents: 41
diff changeset
   864
            TAccModeSetting aSetting;
hgs
parents: 41
diff changeset
   865
hgs
parents: 41
diff changeset
   866
            //Set Lights
hgs
parents: 41
diff changeset
   867
            aSetting.SetId( aParameter.iArg2 );
hgs
parents: 41
diff changeset
   868
            aSetting.SetTInt( aParameter.iArg4 );
hgs
parents: 41
diff changeset
   869
hgs
parents: 41
diff changeset
   870
            retval = iAccessorySettings->SetAccessoryModeSettingL( aAccMode,
hgs
parents: 41
diff changeset
   871
                aSetting );
hgs
parents: 41
diff changeset
   872
            }
hgs
parents: 41
diff changeset
   873
            break;
hgs
parents: 41
diff changeset
   874
hgs
parents: 41
diff changeset
   875
        case ETFSetBoolAccessoryModeSetting:
hgs
parents: 41
diff changeset
   876
            {
hgs
parents: 41
diff changeset
   877
            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
hgs
parents: 41
diff changeset
   878
            TAccModeSetting aSetting;
hgs
parents: 41
diff changeset
   879
hgs
parents: 41
diff changeset
   880
            //Set Lights 
hgs
parents: 41
diff changeset
   881
            aSetting.SetId( aParameter.iArg2 );
hgs
parents: 41
diff changeset
   882
            aSetting.SetTBool( aParameter.iArg4 );
hgs
parents: 41
diff changeset
   883
hgs
parents: 41
diff changeset
   884
            retval = iAccessorySettings->SetAccessoryModeSettingL( aAccMode,
hgs
parents: 41
diff changeset
   885
                aSetting );
hgs
parents: 41
diff changeset
   886
            }
hgs
parents: 41
diff changeset
   887
            break;
hgs
parents: 41
diff changeset
   888
hgs
parents: 41
diff changeset
   889
        case ETFSetDesAccessoryModeSetting:
hgs
parents: 41
diff changeset
   890
            {
hgs
parents: 41
diff changeset
   891
            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
hgs
parents: 41
diff changeset
   892
            TAccModeSetting aSetting;
hgs
parents: 41
diff changeset
   893
hgs
parents: 41
diff changeset
   894
            TBuf<KMaxAccModeSetting> buf;
hgs
parents: 41
diff changeset
   895
            buf.Num( aParameter.iArg3 );
hgs
parents: 41
diff changeset
   896
            //	buf.Copy( *aParameter.iArg3 );
hgs
parents: 41
diff changeset
   897
hgs
parents: 41
diff changeset
   898
            aSetting.SetId( aParameter.iArg2 );
hgs
parents: 41
diff changeset
   899
            aSetting.SetTDes( buf );
hgs
parents: 41
diff changeset
   900
            retval = iAccessorySettings->SetAccessoryModeSettingL( aAccMode,
hgs
parents: 41
diff changeset
   901
                aSetting );
hgs
parents: 41
diff changeset
   902
            }
hgs
parents: 41
diff changeset
   903
            break;
hgs
parents: 41
diff changeset
   904
hgs
parents: 41
diff changeset
   905
        case ETFGetIntAccessoryModeSetting:
hgs
parents: 41
diff changeset
   906
            {
hgs
parents: 41
diff changeset
   907
            TInt aSettingsValueInt;
hgs
parents: 41
diff changeset
   908
hgs
parents: 41
diff changeset
   909
            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
hgs
parents: 41
diff changeset
   910
            TAccModeSetting aSetting;
hgs
parents: 41
diff changeset
   911
            aSetting.SetId( aParameter.iArg2 );
hgs
parents: 41
diff changeset
   912
hgs
parents: 41
diff changeset
   913
            retval = iAccessorySettings->GetAccessoryModeSetting( aAccMode,
hgs
parents: 41
diff changeset
   914
                aSetting );
hgs
parents: 41
diff changeset
   915
hgs
parents: 41
diff changeset
   916
            if( aSetting.Type() == EAccModeSettingInt )
hgs
parents: 41
diff changeset
   917
                {
hgs
parents: 41
diff changeset
   918
                retval = aSetting.GetTInt( aSettingsValueInt );
hgs
parents: 41
diff changeset
   919
hgs
parents: 41
diff changeset
   920
                if( retval != KErrNotFound )
hgs
parents: 41
diff changeset
   921
                    {
hgs
parents: 41
diff changeset
   922
                    if( aSettingsValueInt == aParameter.iArg4 )
hgs
parents: 41
diff changeset
   923
                        {
hgs
parents: 41
diff changeset
   924
                        retval = KErrNone;
hgs
parents: 41
diff changeset
   925
                        }
hgs
parents: 41
diff changeset
   926
                    else
hgs
parents: 41
diff changeset
   927
                        {
hgs
parents: 41
diff changeset
   928
                        retval = KErrArgument;
hgs
parents: 41
diff changeset
   929
                        }
hgs
parents: 41
diff changeset
   930
                    }
hgs
parents: 41
diff changeset
   931
                }
hgs
parents: 41
diff changeset
   932
            else
hgs
parents: 41
diff changeset
   933
                {
hgs
parents: 41
diff changeset
   934
                retval = KErrNotFound;
hgs
parents: 41
diff changeset
   935
                }
hgs
parents: 41
diff changeset
   936
            }
hgs
parents: 41
diff changeset
   937
            break;
hgs
parents: 41
diff changeset
   938
hgs
parents: 41
diff changeset
   939
        case ETFGetBoolAccessoryModeSetting:
hgs
parents: 41
diff changeset
   940
            {
hgs
parents: 41
diff changeset
   941
            TBool aSettingsValueBool;
hgs
parents: 41
diff changeset
   942
hgs
parents: 41
diff changeset
   943
            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
hgs
parents: 41
diff changeset
   944
            TAccModeSetting aSetting;
hgs
parents: 41
diff changeset
   945
            aSetting.SetId( aParameter.iArg2 );
hgs
parents: 41
diff changeset
   946
hgs
parents: 41
diff changeset
   947
            retval = iAccessorySettings->GetAccessoryModeSetting( aAccMode,
hgs
parents: 41
diff changeset
   948
                aSetting );
hgs
parents: 41
diff changeset
   949
hgs
parents: 41
diff changeset
   950
            if( aSetting.Type() == EAccModeSettingBool )
hgs
parents: 41
diff changeset
   951
                {
hgs
parents: 41
diff changeset
   952
                retval = aSetting.GetTBool( aSettingsValueBool );
hgs
parents: 41
diff changeset
   953
hgs
parents: 41
diff changeset
   954
                if( retval != KErrNotFound )
hgs
parents: 41
diff changeset
   955
                    {
hgs
parents: 41
diff changeset
   956
                    if( aSettingsValueBool == ( TBool )aParameter.iArg4 )
hgs
parents: 41
diff changeset
   957
                        {
hgs
parents: 41
diff changeset
   958
                        retval = KErrNone;
hgs
parents: 41
diff changeset
   959
                        }
hgs
parents: 41
diff changeset
   960
                    else
hgs
parents: 41
diff changeset
   961
                        {
hgs
parents: 41
diff changeset
   962
                        retval = KErrArgument;
hgs
parents: 41
diff changeset
   963
                        }
hgs
parents: 41
diff changeset
   964
                    }
hgs
parents: 41
diff changeset
   965
                }
hgs
parents: 41
diff changeset
   966
            else
hgs
parents: 41
diff changeset
   967
                {
hgs
parents: 41
diff changeset
   968
                retval = KErrNotFound;
hgs
parents: 41
diff changeset
   969
                }
hgs
parents: 41
diff changeset
   970
            }
hgs
parents: 41
diff changeset
   971
            break;
hgs
parents: 41
diff changeset
   972
hgs
parents: 41
diff changeset
   973
        case ETFGetDesAccessoryModeSetting:
hgs
parents: 41
diff changeset
   974
            {
hgs
parents: 41
diff changeset
   975
            TBuf<KMaxAccModeSetting> aSettingsValueDes;
hgs
parents: 41
diff changeset
   976
hgs
parents: 41
diff changeset
   977
            TAccMode aAccMode = ( TAccMode )aParameter.iArg1;
hgs
parents: 41
diff changeset
   978
            TAccModeSetting aSetting;
hgs
parents: 41
diff changeset
   979
            aSetting.SetId( aParameter.iArg2 );
hgs
parents: 41
diff changeset
   980
hgs
parents: 41
diff changeset
   981
            retval = iAccessorySettings->GetAccessoryModeSetting( aAccMode,
hgs
parents: 41
diff changeset
   982
                aSetting );
hgs
parents: 41
diff changeset
   983
hgs
parents: 41
diff changeset
   984
            if( aSetting.Type() == EAccModeSettingDes )
hgs
parents: 41
diff changeset
   985
                {
hgs
parents: 41
diff changeset
   986
                retval = aSetting.GetTDes( aSettingsValueDes );
hgs
parents: 41
diff changeset
   987
hgs
parents: 41
diff changeset
   988
                if( retval != KErrNotFound )
hgs
parents: 41
diff changeset
   989
                    {
hgs
parents: 41
diff changeset
   990
                    TBuf<KMaxAccModeSetting> buffer;
hgs
parents: 41
diff changeset
   991
                    buffer.Num( aParameter.iArg3 );
hgs
parents: 41
diff changeset
   992
                    if( KErrNone == aSettingsValueDes.Compare( buffer ) )
hgs
parents: 41
diff changeset
   993
                        {
hgs
parents: 41
diff changeset
   994
                        retval = KErrNone;
hgs
parents: 41
diff changeset
   995
                        }
hgs
parents: 41
diff changeset
   996
                    else
hgs
parents: 41
diff changeset
   997
                        {
hgs
parents: 41
diff changeset
   998
                        retval = KErrArgument;
hgs
parents: 41
diff changeset
   999
                        }
hgs
parents: 41
diff changeset
  1000
                    }
hgs
parents: 41
diff changeset
  1001
                }
hgs
parents: 41
diff changeset
  1002
            else
hgs
parents: 41
diff changeset
  1003
                {
hgs
parents: 41
diff changeset
  1004
                retval = KErrNotFound;
hgs
parents: 41
diff changeset
  1005
                }
hgs
parents: 41
diff changeset
  1006
            }
hgs
parents: 41
diff changeset
  1007
            break;
hgs
parents: 41
diff changeset
  1008
hgs
parents: 41
diff changeset
  1009
        case ETFSetSeveralAccessoryModeSetting:
hgs
parents: 41
diff changeset
  1010
            {
hgs
parents: 41
diff changeset
  1011
hgs
parents: 41
diff changeset
  1012
            TAccModeSetting accModeSettingIn;
hgs
parents: 41
diff changeset
  1013
            TAccMode tAccMode = EAccModeWirelessHeadset;
hgs
parents: 41
diff changeset
  1014
            TBuf<KMaxAccModeSetting> aDesIn;
hgs
parents: 41
diff changeset
  1015
            // Set
hgs
parents: 41
diff changeset
  1016
            // setting 1
hgs
parents: 41
diff changeset
  1017
            accModeSettingIn.SetId( 11 ); // unknown TInt
hgs
parents: 41
diff changeset
  1018
            accModeSettingIn.SetTInt( 1 );
hgs
parents: 41
diff changeset
  1019
            TAccModeSettingArray arrayIn;
hgs
parents: 41
diff changeset
  1020
            arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  1021
hgs
parents: 41
diff changeset
  1022
            // setting 2
hgs
parents: 41
diff changeset
  1023
            accModeSettingIn.SetId( 12 ); // unknown Des
hgs
parents: 41
diff changeset
  1024
            _LIT( KAccSetting2, "012345678901234567890" );
hgs
parents: 41
diff changeset
  1025
            aDesIn.Copy( KAccSetting2 );
hgs
parents: 41
diff changeset
  1026
            accModeSettingIn.SetTDes( aDesIn );
hgs
parents: 41
diff changeset
  1027
            arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  1028
hgs
parents: 41
diff changeset
  1029
            // setting 3
hgs
parents: 41
diff changeset
  1030
            accModeSettingIn.SetId( 13 ); // unknown TBool
hgs
parents: 41
diff changeset
  1031
            accModeSettingIn.SetTBool( ETrue );
hgs
parents: 41
diff changeset
  1032
            arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  1033
hgs
parents: 41
diff changeset
  1034
            retval = iAccessorySettings->SetAccessoryModeSettingsL( tAccMode,
hgs
parents: 41
diff changeset
  1035
                arrayIn );
hgs
parents: 41
diff changeset
  1036
hgs
parents: 41
diff changeset
  1037
            }
hgs
parents: 41
diff changeset
  1038
            break;
hgs
parents: 41
diff changeset
  1039
hgs
parents: 41
diff changeset
  1040
        case ETFGetSeveralAccessoryModeSetting:
hgs
parents: 41
diff changeset
  1041
            {
hgs
parents: 41
diff changeset
  1042
hgs
parents: 41
diff changeset
  1043
            TAccModeSetting accModeSettingOut;
hgs
parents: 41
diff changeset
  1044
            TAccMode tAccMode = EAccModeWirelessHeadset;
hgs
parents: 41
diff changeset
  1045
            TBuf<KMaxAccModeSetting> aDesOut;
hgs
parents: 41
diff changeset
  1046
            TAccModeSettingArray arrayOut;
hgs
parents: 41
diff changeset
  1047
            TInt intOut( 0 );
hgs
parents: 41
diff changeset
  1048
            // set input parameters for GetAccessoryModeSettings()
hgs
parents: 41
diff changeset
  1049
            // setting 11
hgs
parents: 41
diff changeset
  1050
            accModeSettingOut.SetId( 11 );
hgs
parents: 41
diff changeset
  1051
            arrayOut.AddSetting( accModeSettingOut );
hgs
parents: 41
diff changeset
  1052
hgs
parents: 41
diff changeset
  1053
            // setting 12
hgs
parents: 41
diff changeset
  1054
            accModeSettingOut.SetId( 12 );
hgs
parents: 41
diff changeset
  1055
            arrayOut.AddSetting( accModeSettingOut );
hgs
parents: 41
diff changeset
  1056
hgs
parents: 41
diff changeset
  1057
            // setting 13
hgs
parents: 41
diff changeset
  1058
            accModeSettingOut.SetId( 13 );
hgs
parents: 41
diff changeset
  1059
            arrayOut.AddSetting( accModeSettingOut );
hgs
parents: 41
diff changeset
  1060
hgs
parents: 41
diff changeset
  1061
            retval = iAccessorySettings->GetAccessoryModeSettings( tAccMode,
hgs
parents: 41
diff changeset
  1062
                arrayOut );
hgs
parents: 41
diff changeset
  1063
hgs
parents: 41
diff changeset
  1064
            // Check that got settings are right
hgs
parents: 41
diff changeset
  1065
hgs
parents: 41
diff changeset
  1066
            TInt count = arrayOut.GetArraySize();
hgs
parents: 41
diff changeset
  1067
            TInt foundCount( 0 );
hgs
parents: 41
diff changeset
  1068
hgs
parents: 41
diff changeset
  1069
            for( TInt index = 0; index < count; index++ )
hgs
parents: 41
diff changeset
  1070
                {
hgs
parents: 41
diff changeset
  1071
                arrayOut.GetSetting( index, accModeSettingOut );
hgs
parents: 41
diff changeset
  1072
hgs
parents: 41
diff changeset
  1073
                if( 11 == accModeSettingOut.Id() )
hgs
parents: 41
diff changeset
  1074
                    {
hgs
parents: 41
diff changeset
  1075
hgs
parents: 41
diff changeset
  1076
                    accModeSettingOut.GetTInt( intOut );
hgs
parents: 41
diff changeset
  1077
hgs
parents: 41
diff changeset
  1078
                    if( 1 == intOut )
hgs
parents: 41
diff changeset
  1079
                        {
hgs
parents: 41
diff changeset
  1080
                        foundCount++;
hgs
parents: 41
diff changeset
  1081
                        }
hgs
parents: 41
diff changeset
  1082
                    }
hgs
parents: 41
diff changeset
  1083
hgs
parents: 41
diff changeset
  1084
                if( 12 == accModeSettingOut.Id() )
hgs
parents: 41
diff changeset
  1085
                    {
hgs
parents: 41
diff changeset
  1086
                    accModeSettingOut.GetTDes( aDesOut );
hgs
parents: 41
diff changeset
  1087
hgs
parents: 41
diff changeset
  1088
                    if( KErrNone == aDesOut.Compare( _L("012345678901234567890") ) )
hgs
parents: 41
diff changeset
  1089
                        {
hgs
parents: 41
diff changeset
  1090
                        foundCount++;
hgs
parents: 41
diff changeset
  1091
                        }
hgs
parents: 41
diff changeset
  1092
hgs
parents: 41
diff changeset
  1093
                    }
hgs
parents: 41
diff changeset
  1094
hgs
parents: 41
diff changeset
  1095
                if( 13 == accModeSettingOut.Id() )
hgs
parents: 41
diff changeset
  1096
                    {
hgs
parents: 41
diff changeset
  1097
hgs
parents: 41
diff changeset
  1098
                    accModeSettingOut.GetTBool( intOut );
hgs
parents: 41
diff changeset
  1099
hgs
parents: 41
diff changeset
  1100
                    if( intOut )
hgs
parents: 41
diff changeset
  1101
                        {
hgs
parents: 41
diff changeset
  1102
                        foundCount++;
hgs
parents: 41
diff changeset
  1103
                        }
hgs
parents: 41
diff changeset
  1104
                    }
hgs
parents: 41
diff changeset
  1105
                }
hgs
parents: 41
diff changeset
  1106
hgs
parents: 41
diff changeset
  1107
            if( foundCount != 3 )
hgs
parents: 41
diff changeset
  1108
                {
hgs
parents: 41
diff changeset
  1109
                retval = KErrNotFound;
hgs
parents: 41
diff changeset
  1110
                }
hgs
parents: 41
diff changeset
  1111
hgs
parents: 41
diff changeset
  1112
            //
hgs
parents: 41
diff changeset
  1113
            // Reset Settings
hgs
parents: 41
diff changeset
  1114
            //
hgs
parents: 41
diff changeset
  1115
            TAccModeSetting accModeSettingIn;
hgs
parents: 41
diff changeset
  1116
            TBuf<KMaxAccModeSetting> aDesIn;
hgs
parents: 41
diff changeset
  1117
            // Set
hgs
parents: 41
diff changeset
  1118
            // setting 1
hgs
parents: 41
diff changeset
  1119
            accModeSettingIn.SetId( 11 ); // unknown TInt
hgs
parents: 41
diff changeset
  1120
            accModeSettingIn.SetTInt( 0 );
hgs
parents: 41
diff changeset
  1121
            TAccModeSettingArray arrayIn;
hgs
parents: 41
diff changeset
  1122
            arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  1123
hgs
parents: 41
diff changeset
  1124
            // setting 2
hgs
parents: 41
diff changeset
  1125
            accModeSettingIn.SetId( 12 ); // unknown Des
hgs
parents: 41
diff changeset
  1126
            _LIT( KAccSetting2, "" );
hgs
parents: 41
diff changeset
  1127
            aDesIn.Copy( KAccSetting2 );
hgs
parents: 41
diff changeset
  1128
            accModeSettingIn.SetTDes( aDesIn );
hgs
parents: 41
diff changeset
  1129
            arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  1130
hgs
parents: 41
diff changeset
  1131
            // setting 3
hgs
parents: 41
diff changeset
  1132
            accModeSettingIn.SetId( 13 ); // unknown TBool
hgs
parents: 41
diff changeset
  1133
            accModeSettingIn.SetTBool( EFalse );
hgs
parents: 41
diff changeset
  1134
            arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  1135
hgs
parents: 41
diff changeset
  1136
            iAccessorySettings->SetAccessoryModeSettingsL( tAccMode, arrayIn );
hgs
parents: 41
diff changeset
  1137
            }
hgs
parents: 41
diff changeset
  1138
            break;
hgs
parents: 41
diff changeset
  1139
hgs
parents: 41
diff changeset
  1140
            //
hgs
parents: 41
diff changeset
  1141
            // Accessory Single Connection
hgs
parents: 41
diff changeset
  1142
            //                    		
hgs
parents: 41
diff changeset
  1143
        case ETFAccessorySingleConnection_Open:
hgs
parents: 41
diff changeset
  1144
            {
hgs
parents: 41
diff changeset
  1145
            if( iAccessorySingleConnection == NULL )
hgs
parents: 41
diff changeset
  1146
                {
hgs
parents: 41
diff changeset
  1147
                iAccessorySingleConnection
hgs
parents: 41
diff changeset
  1148
                    = new ( ELeave ) RAccessorySingleConnection;
hgs
parents: 41
diff changeset
  1149
                retval
hgs
parents: 41
diff changeset
  1150
                    = iAccessorySingleConnection->CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  1151
                }
hgs
parents: 41
diff changeset
  1152
            else
hgs
parents: 41
diff changeset
  1153
                {
hgs
parents: 41
diff changeset
  1154
                retval = KErrNone;
hgs
parents: 41
diff changeset
  1155
                }
hgs
parents: 41
diff changeset
  1156
            }
hgs
parents: 41
diff changeset
  1157
            break;
hgs
parents: 41
diff changeset
  1158
hgs
parents: 41
diff changeset
  1159
        case ETFAccessorySingleConnection_Close:
hgs
parents: 41
diff changeset
  1160
            {
hgs
parents: 41
diff changeset
  1161
            TRACE_ASSERT( iAccessorySingleConnection != NULL );
hgs
parents: 41
diff changeset
  1162
hgs
parents: 41
diff changeset
  1163
            if( iAccessorySingleConnection != NULL )
hgs
parents: 41
diff changeset
  1164
                {
hgs
parents: 41
diff changeset
  1165
                iAccessorySingleConnection->CloseSubSession();
hgs
parents: 41
diff changeset
  1166
                delete iAccessorySingleConnection;
hgs
parents: 41
diff changeset
  1167
                iAccessorySingleConnection = NULL;
hgs
parents: 41
diff changeset
  1168
                }
hgs
parents: 41
diff changeset
  1169
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1170
            }
hgs
parents: 41
diff changeset
  1171
            break;
hgs
parents: 41
diff changeset
  1172
hgs
parents: 41
diff changeset
  1173
        case ETFAccessoryNotifyNewAccessoryConnected:
hgs
parents: 41
diff changeset
  1174
            {
hgs
parents: 41
diff changeset
  1175
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1176
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1177
            aConnectionObserver->NotifyNewAccessoryConnected( iGenericId[aParameter.iGid] );
hgs
parents: 41
diff changeset
  1178
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1179
            }
hgs
parents: 41
diff changeset
  1180
            break;
hgs
parents: 41
diff changeset
  1181
hgs
parents: 41
diff changeset
  1182
        case ETFAccessoryNotifyAccessoryDisconnected:
hgs
parents: 41
diff changeset
  1183
            {
hgs
parents: 41
diff changeset
  1184
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1185
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1186
            aConnectionObserver->NotifyAccessoryDisconnected( iGenericId[aParameter.iGid] );
hgs
parents: 41
diff changeset
  1187
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1188
            }
hgs
parents: 41
diff changeset
  1189
            break;
hgs
parents: 41
diff changeset
  1190
hgs
parents: 41
diff changeset
  1191
        case ETFNotifyIntAccessoryValueChanged:
hgs
parents: 41
diff changeset
  1192
            {
hgs
parents: 41
diff changeset
  1193
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1194
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1195
            aConnectionObserver->NotifyIntegerAccessoryValueChanged( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  1196
                aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1197
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1198
            }
hgs
parents: 41
diff changeset
  1199
            break;
hgs
parents: 41
diff changeset
  1200
hgs
parents: 41
diff changeset
  1201
        case ETFNotifyBoolAccessoryValueChanged:
hgs
parents: 41
diff changeset
  1202
            {
hgs
parents: 41
diff changeset
  1203
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1204
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1205
            aConnectionObserver->NotifyBooleanAccessoryValueChanged( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  1206
                aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1207
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1208
            }
hgs
parents: 41
diff changeset
  1209
            break;
hgs
parents: 41
diff changeset
  1210
hgs
parents: 41
diff changeset
  1211
        case ETFNotifyObjectAccessoryValueChanged:
hgs
parents: 41
diff changeset
  1212
            {
hgs
parents: 41
diff changeset
  1213
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1214
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1215
            aConnectionObserver->NotifyObjectAccessoryValueChanged( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  1216
                aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1217
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1218
            }
hgs
parents: 41
diff changeset
  1219
            break;
hgs
parents: 41
diff changeset
  1220
hgs
parents: 41
diff changeset
  1221
        case ETFAccessoryIntGetValue:
hgs
parents: 41
diff changeset
  1222
            {
hgs
parents: 41
diff changeset
  1223
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1224
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1225
            TAccValueTypeTInt aIntValue;
hgs
parents: 41
diff changeset
  1226
hgs
parents: 41
diff changeset
  1227
            iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  1228
                aNameRecord,
hgs
parents: 41
diff changeset
  1229
                aIntValue );
hgs
parents: 41
diff changeset
  1230
hgs
parents: 41
diff changeset
  1231
            if( aIntValue.iValue == aParameter.iArg2 )
hgs
parents: 41
diff changeset
  1232
                {
hgs
parents: 41
diff changeset
  1233
                retval = KErrNone;
hgs
parents: 41
diff changeset
  1234
                }
hgs
parents: 41
diff changeset
  1235
            else
hgs
parents: 41
diff changeset
  1236
                {
hgs
parents: 41
diff changeset
  1237
                retval = KErrArgument;
hgs
parents: 41
diff changeset
  1238
                }
hgs
parents: 41
diff changeset
  1239
            }
hgs
parents: 41
diff changeset
  1240
            break;
hgs
parents: 41
diff changeset
  1241
hgs
parents: 41
diff changeset
  1242
        case ETFAccessoryBoolGetValue:
hgs
parents: 41
diff changeset
  1243
            {
hgs
parents: 41
diff changeset
  1244
            RAccessoryConnection accessoryConnection;
hgs
parents: 41
diff changeset
  1245
            accessoryConnection.CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  1246
hgs
parents: 41
diff changeset
  1247
            TAccPolNameRecord nameRecord;
hgs
parents: 41
diff changeset
  1248
            nameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1249
            TAccValueTypeTBool boolValue;
hgs
parents: 41
diff changeset
  1250
            retval
hgs
parents: 41
diff changeset
  1251
                = accessoryConnection.GetValueL( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  1252
                    nameRecord,
hgs
parents: 41
diff changeset
  1253
                    boolValue );
hgs
parents: 41
diff changeset
  1254
hgs
parents: 41
diff changeset
  1255
            if( boolValue.iValue != aParameter.iArg1 )
hgs
parents: 41
diff changeset
  1256
                {
hgs
parents: 41
diff changeset
  1257
                retval = KErrArgument;
hgs
parents: 41
diff changeset
  1258
                }
hgs
parents: 41
diff changeset
  1259
hgs
parents: 41
diff changeset
  1260
            accessoryConnection.CloseSubSession();
hgs
parents: 41
diff changeset
  1261
            }
hgs
parents: 41
diff changeset
  1262
            break;
hgs
parents: 41
diff changeset
  1263
hgs
parents: 41
diff changeset
  1264
        case ETFAccessoryDes8GetValue:
hgs
parents: 41
diff changeset
  1265
            {
hgs
parents: 41
diff changeset
  1266
            TBuf8<80>
hgs
parents: 41
diff changeset
  1267
                worm( _L8("Malicious Worm Attach with extra long data with extra long content" ));
hgs
parents: 41
diff changeset
  1268
            TBuf8<85> valueBuf;
hgs
parents: 41
diff changeset
  1269
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1270
            aNameRecord.SetNameL( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  1271
            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, valueBuf ) );
hgs
parents: 41
diff changeset
  1272
hgs
parents: 41
diff changeset
  1273
            if( err == aParameter.iExpectedResult )
hgs
parents: 41
diff changeset
  1274
                {
hgs
parents: 41
diff changeset
  1275
hgs
parents: 41
diff changeset
  1276
                if( aParameter.iExpectedResult == KErrArgument )
hgs
parents: 41
diff changeset
  1277
                    {
hgs
parents: 41
diff changeset
  1278
                    retval = KErrNone;
hgs
parents: 41
diff changeset
  1279
                    }
hgs
parents: 41
diff changeset
  1280
                else
hgs
parents: 41
diff changeset
  1281
                    {
hgs
parents: 41
diff changeset
  1282
                    if( KErrNone == valueBuf.Compare( worm ) )
hgs
parents: 41
diff changeset
  1283
                        {
hgs
parents: 41
diff changeset
  1284
                        RDebug::RawPrint( valueBuf );
hgs
parents: 41
diff changeset
  1285
                        retval = KErrNone;
hgs
parents: 41
diff changeset
  1286
                        }
hgs
parents: 41
diff changeset
  1287
                    else
hgs
parents: 41
diff changeset
  1288
                        {
hgs
parents: 41
diff changeset
  1289
                        retval = KErrArgument;
hgs
parents: 41
diff changeset
  1290
                        }
hgs
parents: 41
diff changeset
  1291
                    }
hgs
parents: 41
diff changeset
  1292
                }
hgs
parents: 41
diff changeset
  1293
            else
hgs
parents: 41
diff changeset
  1294
                {
hgs
parents: 41
diff changeset
  1295
                retval = KErrArgument;
hgs
parents: 41
diff changeset
  1296
                }
hgs
parents: 41
diff changeset
  1297
            }
hgs
parents: 41
diff changeset
  1298
            break;
hgs
parents: 41
diff changeset
  1299
hgs
parents: 41
diff changeset
  1300
        case ETFAccessoryObjectParseTopology:
hgs
parents: 41
diff changeset
  1301
            {
hgs
parents: 41
diff changeset
  1302
hgs
parents: 41
diff changeset
  1303
            TInt rspeaker( KErrGeneral );
hgs
parents: 41
diff changeset
  1304
            TInt lspeaker( KErrGeneral );
hgs
parents: 41
diff changeset
  1305
            TInt rmic( KErrGeneral );
hgs
parents: 41
diff changeset
  1306
            TInt lmic( KErrGeneral );
hgs
parents: 41
diff changeset
  1307
            TInt mute( KErrGeneral );
hgs
parents: 41
diff changeset
  1308
            TInt sidetone( KErrGeneral );
hgs
parents: 41
diff changeset
  1309
            //
hgs
parents: 41
diff changeset
  1310
            // Find speaker volume object in USB headset case.
hgs
parents: 41
diff changeset
  1311
            //                                      
hgs
parents: 41
diff changeset
  1312
            CAccPolAudioUnitBase* audioUnit = NULL;
hgs
parents: 41
diff changeset
  1313
            CAccPolAudioControlBase* audioControl = NULL;
hgs
parents: 41
diff changeset
  1314
            //CAccPolOutputTerminal* ouputTerminal = NULL;	          	          
hgs
parents: 41
diff changeset
  1315
hgs
parents: 41
diff changeset
  1316
            if( iTopologyContainer->OutputTerminalL( CAccPolOutputTerminal::EAPTHeadphone,
hgs
parents: 41
diff changeset
  1317
                audioUnit ) )
hgs
parents: 41
diff changeset
  1318
                {
hgs
parents: 41
diff changeset
  1319
                if( audioUnit->GetNextAudioUnitL( audioUnit ) )
hgs
parents: 41
diff changeset
  1320
                    {
hgs
parents: 41
diff changeset
  1321
                    if( audioUnit->ObjectType()
hgs
parents: 41
diff changeset
  1322
                        == EAccPolAudioFeatureUnitObject )
hgs
parents: 41
diff changeset
  1323
                        {
hgs
parents: 41
diff changeset
  1324
                        if( audioUnit->GetAudioControlL( EAccPolAudioVolumeControlObject,
hgs
parents: 41
diff changeset
  1325
                            KAccRightFrontChannel,
hgs
parents: 41
diff changeset
  1326
                            audioControl ) )
hgs
parents: 41
diff changeset
  1327
                            {
hgs
parents: 41
diff changeset
  1328
                            iSpeakerRightVolume = CAccPolVolumeControl::NewL();
hgs
parents: 41
diff changeset
  1329
                            *iSpeakerRightVolume
hgs
parents: 41
diff changeset
  1330
                                = *reinterpret_cast<CAccPolVolumeControl*> ( audioControl );
hgs
parents: 41
diff changeset
  1331
                            rspeaker = KErrNone;
hgs
parents: 41
diff changeset
  1332
                            }
hgs
parents: 41
diff changeset
  1333
                        if( audioUnit->GetAudioControlL( EAccPolAudioVolumeControlObject,
hgs
parents: 41
diff changeset
  1334
                            KAccLeftFrontChannel,
hgs
parents: 41
diff changeset
  1335
                            audioControl ) )
hgs
parents: 41
diff changeset
  1336
                            {
hgs
parents: 41
diff changeset
  1337
                            iSpeakerLeftVolume = CAccPolVolumeControl::NewL();
hgs
parents: 41
diff changeset
  1338
                            *iSpeakerLeftVolume
hgs
parents: 41
diff changeset
  1339
                                = *reinterpret_cast<CAccPolVolumeControl*> ( audioControl );
hgs
parents: 41
diff changeset
  1340
                            lspeaker = KErrNone;
hgs
parents: 41
diff changeset
  1341
                            }
hgs
parents: 41
diff changeset
  1342
                        if( audioUnit->GetAudioControlL( EAccPolAudioMuteControlObject,
hgs
parents: 41
diff changeset
  1343
                            KAccMasterChannel,
hgs
parents: 41
diff changeset
  1344
                            audioControl ) )
hgs
parents: 41
diff changeset
  1345
                            {
hgs
parents: 41
diff changeset
  1346
                            iSpeakerMute = CAccPolMuteControl::NewL();
hgs
parents: 41
diff changeset
  1347
                            *iSpeakerMute
hgs
parents: 41
diff changeset
  1348
                                = *reinterpret_cast<CAccPolMuteControl*> ( audioControl );
hgs
parents: 41
diff changeset
  1349
                            mute = KErrNone;
hgs
parents: 41
diff changeset
  1350
                            }
hgs
parents: 41
diff changeset
  1351
hgs
parents: 41
diff changeset
  1352
                        }
hgs
parents: 41
diff changeset
  1353
                    }
hgs
parents: 41
diff changeset
  1354
                }
hgs
parents: 41
diff changeset
  1355
hgs
parents: 41
diff changeset
  1356
            //
hgs
parents: 41
diff changeset
  1357
            // Find mic volume object in USB headset case.
hgs
parents: 41
diff changeset
  1358
            //                                                                                           
hgs
parents: 41
diff changeset
  1359
            if( iTopologyContainer->OutputTerminalL( CAccPolOutputTerminal::EAPTStream,
hgs
parents: 41
diff changeset
  1360
                audioUnit ) )
hgs
parents: 41
diff changeset
  1361
                {
hgs
parents: 41
diff changeset
  1362
                do
hgs
parents: 41
diff changeset
  1363
                    {
hgs
parents: 41
diff changeset
  1364
                    }
hgs
parents: 41
diff changeset
  1365
                while( audioUnit->GetNextAudioUnitL( audioUnit )
hgs
parents: 41
diff changeset
  1366
                    && audioUnit->ObjectType() != EAccPolAudioFeatureUnitObject );
hgs
parents: 41
diff changeset
  1367
hgs
parents: 41
diff changeset
  1368
                RPointerArray<CAccPolAudioControlBase> aAudioControls;
hgs
parents: 41
diff changeset
  1369
                audioUnit->GetAudioControlsL( KAccRightFrontChannel,
hgs
parents: 41
diff changeset
  1370
                    aAudioControls );
hgs
parents: 41
diff changeset
  1371
hgs
parents: 41
diff changeset
  1372
                if( aAudioControls.Count() > 0 )
hgs
parents: 41
diff changeset
  1373
                    {
hgs
parents: 41
diff changeset
  1374
                    iMicRightVolume = CAccPolVolumeControl::NewL();
hgs
parents: 41
diff changeset
  1375
                    *iMicRightVolume
hgs
parents: 41
diff changeset
  1376
                        = *reinterpret_cast<CAccPolVolumeControl*> ( aAudioControls.operator[]( 0 ) );
hgs
parents: 41
diff changeset
  1377
                    rmic = KErrNone;
hgs
parents: 41
diff changeset
  1378
                    }
hgs
parents: 41
diff changeset
  1379
                aAudioControls.Reset();
hgs
parents: 41
diff changeset
  1380
hgs
parents: 41
diff changeset
  1381
                audioUnit->GetAudioControlsL( KAccLeftFrontChannel,
hgs
parents: 41
diff changeset
  1382
                    aAudioControls );
hgs
parents: 41
diff changeset
  1383
hgs
parents: 41
diff changeset
  1384
                if( aAudioControls.Count() > 0 )
hgs
parents: 41
diff changeset
  1385
                    {
hgs
parents: 41
diff changeset
  1386
                    iMicLeftVolume = CAccPolVolumeControl::NewL();
hgs
parents: 41
diff changeset
  1387
                    *iMicLeftVolume
hgs
parents: 41
diff changeset
  1388
                        = *reinterpret_cast<CAccPolVolumeControl*> ( aAudioControls.operator[]( 0 ) );
hgs
parents: 41
diff changeset
  1389
                    lmic = KErrNone;
hgs
parents: 41
diff changeset
  1390
                    }
hgs
parents: 41
diff changeset
  1391
hgs
parents: 41
diff changeset
  1392
                //
hgs
parents: 41
diff changeset
  1393
                // Find sidetone volume object in USB headset case.
hgs
parents: 41
diff changeset
  1394
                //                                                               
hgs
parents: 41
diff changeset
  1395
                iTopologyContainer->OutputTerminalL( CAccPolOutputTerminal::EAPTHeadphone,
hgs
parents: 41
diff changeset
  1396
                    audioUnit );
hgs
parents: 41
diff changeset
  1397
hgs
parents: 41
diff changeset
  1398
                do
hgs
parents: 41
diff changeset
  1399
                    {
hgs
parents: 41
diff changeset
  1400
                    audioUnit->GetNextAudioUnitL( audioUnit );
hgs
parents: 41
diff changeset
  1401
                    }
hgs
parents: 41
diff changeset
  1402
                while( audioUnit->ObjectType() != EAccPolAudioMixerUnitObject );
hgs
parents: 41
diff changeset
  1403
hgs
parents: 41
diff changeset
  1404
                if( audioUnit->SourceIdCount() > 1 )
hgs
parents: 41
diff changeset
  1405
                    {
hgs
parents: 41
diff changeset
  1406
                    RPointerArray<CAccPolAudioUnitBase> aAudioUnits;
hgs
parents: 41
diff changeset
  1407
                    audioUnit->GetAudioUnitListL( aAudioUnits );
hgs
parents: 41
diff changeset
  1408
hgs
parents: 41
diff changeset
  1409
                    for( TInt i = 0; i < aAudioUnits.Count(); i++ )
hgs
parents: 41
diff changeset
  1410
                        {
hgs
parents: 41
diff changeset
  1411
                        if( aAudioUnits.operator[]( i )->ObjectType()
hgs
parents: 41
diff changeset
  1412
                            == EAccPolAudioFeatureUnitObject )
hgs
parents: 41
diff changeset
  1413
                            {
hgs
parents: 41
diff changeset
  1414
                            audioUnit = aAudioUnits.operator[]( i );
hgs
parents: 41
diff changeset
  1415
                            break;
hgs
parents: 41
diff changeset
  1416
                            }
hgs
parents: 41
diff changeset
  1417
                        }
hgs
parents: 41
diff changeset
  1418
                    }
hgs
parents: 41
diff changeset
  1419
hgs
parents: 41
diff changeset
  1420
                aAudioControls.Reset();
hgs
parents: 41
diff changeset
  1421
                audioUnit->GetAudioControlsL( aAudioControls );
hgs
parents: 41
diff changeset
  1422
                if( aAudioControls.Count() == 2 )
hgs
parents: 41
diff changeset
  1423
                    {
hgs
parents: 41
diff changeset
  1424
                    sidetone = KErrNone;
hgs
parents: 41
diff changeset
  1425
                    }
hgs
parents: 41
diff changeset
  1426
                }
hgs
parents: 41
diff changeset
  1427
hgs
parents: 41
diff changeset
  1428
            retval = ( rspeaker | lspeaker | rmic | lmic | mute | sidetone );
hgs
parents: 41
diff changeset
  1429
hgs
parents: 41
diff changeset
  1430
            }
hgs
parents: 41
diff changeset
  1431
            break;
hgs
parents: 41
diff changeset
  1432
hgs
parents: 41
diff changeset
  1433
        case ETFAccessoryGetStreamObjects:
hgs
parents: 41
diff changeset
  1434
            {
hgs
parents: 41
diff changeset
  1435
            if( iStreamContainer != NULL )
hgs
parents: 41
diff changeset
  1436
                {
hgs
parents: 41
diff changeset
  1437
                delete iStreamContainer;
hgs
parents: 41
diff changeset
  1438
                iStreamContainer = NULL;
hgs
parents: 41
diff changeset
  1439
                }
hgs
parents: 41
diff changeset
  1440
            iStreamContainer = CAccPolAudioStreamFormatCon::NewL();
hgs
parents: 41
diff changeset
  1441
hgs
parents: 41
diff changeset
  1442
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1443
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1444
            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iStreamContainer ) );
hgs
parents: 41
diff changeset
  1445
hgs
parents: 41
diff changeset
  1446
            if( err == aParameter.iExpectedResult )
hgs
parents: 41
diff changeset
  1447
                {
hgs
parents: 41
diff changeset
  1448
                //externalize container to bufFromASY        
hgs
parents: 41
diff changeset
  1449
                CBufFlat* bufFromASY =
hgs
parents: 41
diff changeset
  1450
                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  1451
                CleanupStack::PushL( bufFromASY );
hgs
parents: 41
diff changeset
  1452
                bufFromASY->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  1453
                RBufWriteStream wStrm;
hgs
parents: 41
diff changeset
  1454
                ( void )wStrm.Open( *bufFromASY );
hgs
parents: 41
diff changeset
  1455
                wStrm.PushL();
hgs
parents: 41
diff changeset
  1456
                iStreamContainer->ExternalizeL( wStrm );
hgs
parents: 41
diff changeset
  1457
                wStrm.CommitL();
hgs
parents: 41
diff changeset
  1458
                wStrm.Close();
hgs
parents: 41
diff changeset
  1459
                wStrm.Pop();
hgs
parents: 41
diff changeset
  1460
                TPtr8 ptrbufFromASY( bufFromASY->Ptr( 0 ) );
hgs
parents: 41
diff changeset
  1461
hgs
parents: 41
diff changeset
  1462
                //Read container from PubSub
hgs
parents: 41
diff changeset
  1463
                RProperty prop;
hgs
parents: 41
diff changeset
  1464
                RBufReadStream rStrm;
hgs
parents: 41
diff changeset
  1465
                CBufFlat* bufFromPubSub =
hgs
parents: 41
diff changeset
  1466
                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  1467
                CleanupStack::PushL( bufFromPubSub );
hgs
parents: 41
diff changeset
  1468
                bufFromPubSub->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  1469
                TPtr8 ptrBufFromPubSub( bufFromPubSub->Ptr( 0 ) );
hgs
parents: 41
diff changeset
  1470
                TInt ret = prop.Get( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
  1471
                    KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
  1472
                    ptrBufFromPubSub );
hgs
parents: 41
diff changeset
  1473
hgs
parents: 41
diff changeset
  1474
                TInt k = sizeof( bufFromASY );
hgs
parents: 41
diff changeset
  1475
                TInt kk = sizeof( bufFromPubSub );
hgs
parents: 41
diff changeset
  1476
hgs
parents: 41
diff changeset
  1477
                bufFromASY->Compress();
hgs
parents: 41
diff changeset
  1478
                bufFromPubSub->Compress();
hgs
parents: 41
diff changeset
  1479
hgs
parents: 41
diff changeset
  1480
                k = sizeof( bufFromASY );
hgs
parents: 41
diff changeset
  1481
                kk = sizeof( bufFromPubSub );
hgs
parents: 41
diff changeset
  1482
hgs
parents: 41
diff changeset
  1483
                retval
hgs
parents: 41
diff changeset
  1484
                    = ( 0
hgs
parents: 41
diff changeset
  1485
                        == memcompare( reinterpret_cast<TUint8*> ( &ptrbufFromASY ),
hgs
parents: 41
diff changeset
  1486
                            sizeof( bufFromASY ),
hgs
parents: 41
diff changeset
  1487
                            reinterpret_cast<TUint8*> ( &ptrBufFromPubSub ),
hgs
parents: 41
diff changeset
  1488
                            sizeof( bufFromASY ) ) ) ? KErrNone : KErrGeneral;
hgs
parents: 41
diff changeset
  1489
hgs
parents: 41
diff changeset
  1490
                CleanupStack::PopAndDestroy( bufFromPubSub );
hgs
parents: 41
diff changeset
  1491
                CleanupStack::PopAndDestroy( bufFromASY );
hgs
parents: 41
diff changeset
  1492
                }
hgs
parents: 41
diff changeset
  1493
            }
hgs
parents: 41
diff changeset
  1494
            break;
hgs
parents: 41
diff changeset
  1495
hgs
parents: 41
diff changeset
  1496
        case ETFAccessoryGetStreamObjectsFromPolicy:
hgs
parents: 41
diff changeset
  1497
            {
hgs
parents: 41
diff changeset
  1498
            if( iStreamContainer != NULL )
hgs
parents: 41
diff changeset
  1499
                {
hgs
parents: 41
diff changeset
  1500
                delete iStreamContainer;
hgs
parents: 41
diff changeset
  1501
                iStreamContainer = NULL;
hgs
parents: 41
diff changeset
  1502
                }
hgs
parents: 41
diff changeset
  1503
            iStreamContainer = CAccPolAudioStreamFormatCon::NewL();
hgs
parents: 41
diff changeset
  1504
hgs
parents: 41
diff changeset
  1505
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1506
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1507
            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iStreamContainer ) );
hgs
parents: 41
diff changeset
  1508
hgs
parents: 41
diff changeset
  1509
            RPointerArray<CAccPolAudioStreamFormat> inputStreamObjects;
hgs
parents: 41
diff changeset
  1510
            RPointerArray<CAccPolAudioStreamFormat> outputStreamObjects;
hgs
parents: 41
diff changeset
  1511
hgs
parents: 41
diff changeset
  1512
            iStreamContainer->GetInputStreamFormatsL( inputStreamObjects );
hgs
parents: 41
diff changeset
  1513
            iStreamContainer->GetOutputStreamFormatsL( outputStreamObjects );
hgs
parents: 41
diff changeset
  1514
hgs
parents: 41
diff changeset
  1515
            CAccPolAudioStreamFormat* inputStream =
hgs
parents: 41
diff changeset
  1516
                inputStreamObjects.operator[]( 0 );
hgs
parents: 41
diff changeset
  1517
            CAccPolAudioStreamFormat* ouputStream =
hgs
parents: 41
diff changeset
  1518
                outputStreamObjects.operator[]( 0 );
hgs
parents: 41
diff changeset
  1519
hgs
parents: 41
diff changeset
  1520
            retval = err;
hgs
parents: 41
diff changeset
  1521
            }
hgs
parents: 41
diff changeset
  1522
            break;
hgs
parents: 41
diff changeset
  1523
hgs
parents: 41
diff changeset
  1524
        case ETFAccessorySetStreamObjects:
hgs
parents: 41
diff changeset
  1525
            {
hgs
parents: 41
diff changeset
  1526
            CAccPolAudioStreamFormatCon* setContainer = CAccPolAudioStreamFormatCon::NewLC();
hgs
parents: 41
diff changeset
  1527
hgs
parents: 41
diff changeset
  1528
            RPointerArray<CAccPolAudioStreamFormat> inputStreamObjects;
hgs
parents: 41
diff changeset
  1529
            RPointerArray<CAccPolAudioStreamFormat> outputStreamObjects;
hgs
parents: 41
diff changeset
  1530
hgs
parents: 41
diff changeset
  1531
            iStreamContainer->GetInputStreamFormatsL( inputStreamObjects );
hgs
parents: 41
diff changeset
  1532
            CAccPolAudioStreamFormat* inputStream = NULL;
hgs
parents: 41
diff changeset
  1533
            for(TInt i=0; i<inputStreamObjects.Count(); i++)
hgs
parents: 41
diff changeset
  1534
                {
hgs
parents: 41
diff changeset
  1535
                inputStream = inputStreamObjects.operator[]( i );
hgs
parents: 41
diff changeset
  1536
                if( inputStream->AudioFormat() == KUidFormatPCM16 &&
hgs
parents: 41
diff changeset
  1537
                    inputStream->UnitId() == 0 &&
hgs
parents: 41
diff changeset
  1538
                    inputStream->StreamType() == CAccPolAudioStreamFormat::EStereo &&
hgs
parents: 41
diff changeset
  1539
                    inputStream->BitResolution() == CAccPolAudioStreamFormat::EBitsPerSample16 &&
hgs
parents: 41
diff changeset
  1540
                    inputStream->SamFreq() == 200 )
hgs
parents: 41
diff changeset
  1541
                    {
hgs
parents: 41
diff changeset
  1542
                    setContainer->AddL( *inputStream );
hgs
parents: 41
diff changeset
  1543
                    break;
hgs
parents: 41
diff changeset
  1544
                    }
hgs
parents: 41
diff changeset
  1545
                }
hgs
parents: 41
diff changeset
  1546
hgs
parents: 41
diff changeset
  1547
            iStreamContainer->GetOutputStreamFormatsL( outputStreamObjects );
hgs
parents: 41
diff changeset
  1548
            CAccPolAudioStreamFormat* outputStream = NULL;
hgs
parents: 41
diff changeset
  1549
            for(TInt i=0; i<outputStreamObjects.Count(); i++)
hgs
parents: 41
diff changeset
  1550
                {
hgs
parents: 41
diff changeset
  1551
                outputStream = outputStreamObjects.operator[]( i );
hgs
parents: 41
diff changeset
  1552
                if( outputStream->AudioFormat() == KUidFormatPCM16 &&
hgs
parents: 41
diff changeset
  1553
                    outputStream->UnitId() == 0 &&
hgs
parents: 41
diff changeset
  1554
                    outputStream->StreamType() == CAccPolAudioStreamFormat::EMono &&
hgs
parents: 41
diff changeset
  1555
                    outputStream->BitResolution() == CAccPolAudioStreamFormat::EBitsPerSample32 &&
hgs
parents: 41
diff changeset
  1556
                    outputStream->SamFreq() == 200 )
hgs
parents: 41
diff changeset
  1557
                    {
hgs
parents: 41
diff changeset
  1558
                    setContainer->AddL( *outputStream );
hgs
parents: 41
diff changeset
  1559
                    break;
hgs
parents: 41
diff changeset
  1560
                    }
hgs
parents: 41
diff changeset
  1561
                }
hgs
parents: 41
diff changeset
  1562
hgs
parents: 41
diff changeset
  1563
            RBufWriteStream wStrm;
hgs
parents: 41
diff changeset
  1564
            CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  1565
            CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  1566
            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  1567
            (void)wStrm.Open( *buf );
hgs
parents: 41
diff changeset
  1568
            wStrm.PushL();
hgs
parents: 41
diff changeset
  1569
            setContainer->ExternalizeL( wStrm );
hgs
parents: 41
diff changeset
  1570
            wStrm.Close();
hgs
parents: 41
diff changeset
  1571
            wStrm.Pop();
hgs
parents: 41
diff changeset
  1572
            TPtr8 ptr( buf->Ptr( 0 ) );
hgs
parents: 41
diff changeset
  1573
hgs
parents: 41
diff changeset
  1574
            retval = RProperty::Set( KTFAccessoryTestProperty, KTFAccessoryObjectMethod, ptr );
hgs
parents: 41
diff changeset
  1575
hgs
parents: 41
diff changeset
  1576
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1577
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1578
hgs
parents: 41
diff changeset
  1579
            TRAPD( setErr, iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, *setContainer ) );
hgs
parents: 41
diff changeset
  1580
hgs
parents: 41
diff changeset
  1581
            retval = setErr;
hgs
parents: 41
diff changeset
  1582
hgs
parents: 41
diff changeset
  1583
            CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  1584
            CleanupStack::PopAndDestroy( setContainer );
hgs
parents: 41
diff changeset
  1585
            inputStreamObjects.Close();
hgs
parents: 41
diff changeset
  1586
            outputStreamObjects.Close();
hgs
parents: 41
diff changeset
  1587
            }
hgs
parents: 41
diff changeset
  1588
        break;
hgs
parents: 41
diff changeset
  1589
hgs
parents: 41
diff changeset
  1590
        case ETFAccessoryGetTopologyObjects:
hgs
parents: 41
diff changeset
  1591
            {
hgs
parents: 41
diff changeset
  1592
            if( iTopologyContainer != NULL )
hgs
parents: 41
diff changeset
  1593
                {
hgs
parents: 41
diff changeset
  1594
                delete iTopologyContainer;
hgs
parents: 41
diff changeset
  1595
                iTopologyContainer = NULL;
hgs
parents: 41
diff changeset
  1596
                }
hgs
parents: 41
diff changeset
  1597
hgs
parents: 41
diff changeset
  1598
            iTopologyContainer = CAccPolAudioTopologyObjectCon::NewL();
hgs
parents: 41
diff changeset
  1599
hgs
parents: 41
diff changeset
  1600
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1601
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1602
            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iTopologyContainer ) );
hgs
parents: 41
diff changeset
  1603
hgs
parents: 41
diff changeset
  1604
            if( err == aParameter.iExpectedResult )
hgs
parents: 41
diff changeset
  1605
                {
hgs
parents: 41
diff changeset
  1606
                //externalize container to bufFromASY        
hgs
parents: 41
diff changeset
  1607
                CBufFlat* bufFromASY =
hgs
parents: 41
diff changeset
  1608
                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  1609
                CleanupStack::PushL( bufFromASY );
hgs
parents: 41
diff changeset
  1610
                bufFromASY->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  1611
                RBufWriteStream wStrm;
hgs
parents: 41
diff changeset
  1612
                ( void )wStrm.Open( *bufFromASY );
hgs
parents: 41
diff changeset
  1613
                wStrm.PushL();
hgs
parents: 41
diff changeset
  1614
                iTopologyContainer->ExternalizeL( wStrm );
hgs
parents: 41
diff changeset
  1615
                wStrm.CommitL();
hgs
parents: 41
diff changeset
  1616
                wStrm.Close();
hgs
parents: 41
diff changeset
  1617
                wStrm.Pop();
hgs
parents: 41
diff changeset
  1618
                TPtr8 ptrbufFromASY( bufFromASY->Ptr( 0 ) );
hgs
parents: 41
diff changeset
  1619
hgs
parents: 41
diff changeset
  1620
                //Read container from PubSub
hgs
parents: 41
diff changeset
  1621
                RProperty prop;
hgs
parents: 41
diff changeset
  1622
                RBufReadStream rStrm;
hgs
parents: 41
diff changeset
  1623
                CBufFlat* bufFromPubSub =
hgs
parents: 41
diff changeset
  1624
                    CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  1625
                CleanupStack::PushL( bufFromPubSub );
hgs
parents: 41
diff changeset
  1626
                bufFromPubSub->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  1627
                TPtr8 ptrBufFromPubSub( bufFromPubSub->Ptr( 0 ) );
hgs
parents: 41
diff changeset
  1628
                TInt ret = prop.Get( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
  1629
                    KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
  1630
                    ptrBufFromPubSub );
hgs
parents: 41
diff changeset
  1631
hgs
parents: 41
diff changeset
  1632
                TInt k = sizeof( bufFromASY );
hgs
parents: 41
diff changeset
  1633
                TInt kk = sizeof( bufFromPubSub );
hgs
parents: 41
diff changeset
  1634
hgs
parents: 41
diff changeset
  1635
                bufFromASY->Compress();
hgs
parents: 41
diff changeset
  1636
                bufFromPubSub->Compress();
hgs
parents: 41
diff changeset
  1637
hgs
parents: 41
diff changeset
  1638
                k = sizeof( bufFromASY );
hgs
parents: 41
diff changeset
  1639
                kk = sizeof( bufFromPubSub );
hgs
parents: 41
diff changeset
  1640
hgs
parents: 41
diff changeset
  1641
                retval
hgs
parents: 41
diff changeset
  1642
                    = ( 0
hgs
parents: 41
diff changeset
  1643
                        == memcompare( reinterpret_cast<TUint8*> ( &ptrbufFromASY ),
hgs
parents: 41
diff changeset
  1644
                            sizeof( bufFromASY ),
hgs
parents: 41
diff changeset
  1645
                            reinterpret_cast<TUint8*> ( &ptrBufFromPubSub ),
hgs
parents: 41
diff changeset
  1646
                            sizeof( bufFromASY ) ) ) ? KErrNone : KErrGeneral;
hgs
parents: 41
diff changeset
  1647
hgs
parents: 41
diff changeset
  1648
                CleanupStack::PopAndDestroy( bufFromPubSub );
hgs
parents: 41
diff changeset
  1649
                CleanupStack::PopAndDestroy( bufFromASY );
hgs
parents: 41
diff changeset
  1650
                }
hgs
parents: 41
diff changeset
  1651
            }
hgs
parents: 41
diff changeset
  1652
            break;
hgs
parents: 41
diff changeset
  1653
hgs
parents: 41
diff changeset
  1654
        case ETFAccessoryGetVolumeControlObjects:
hgs
parents: 41
diff changeset
  1655
            {
hgs
parents: 41
diff changeset
  1656
hgs
parents: 41
diff changeset
  1657
            if( iTopologyContainer != NULL )
hgs
parents: 41
diff changeset
  1658
                {
hgs
parents: 41
diff changeset
  1659
                delete iTopologyContainer;
hgs
parents: 41
diff changeset
  1660
                iTopologyContainer = NULL;
hgs
parents: 41
diff changeset
  1661
                }
hgs
parents: 41
diff changeset
  1662
hgs
parents: 41
diff changeset
  1663
            iTopologyContainer = CAccPolAudioTopologyObjectCon::NewL();
hgs
parents: 41
diff changeset
  1664
hgs
parents: 41
diff changeset
  1665
            iTopologyContainer->AddL( *iSpeakerRightVolume );
hgs
parents: 41
diff changeset
  1666
            iTopologyContainer->AddL( *iSpeakerLeftVolume );
hgs
parents: 41
diff changeset
  1667
hgs
parents: 41
diff changeset
  1668
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1669
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1670
            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iTopologyContainer ) );
hgs
parents: 41
diff changeset
  1671
hgs
parents: 41
diff changeset
  1672
            CAccPolVolumeControl* rightVolume;
hgs
parents: 41
diff changeset
  1673
            rightVolume = ( CAccPolVolumeControl* )iTopologyContainer->AtL( 0 );
hgs
parents: 41
diff changeset
  1674
hgs
parents: 41
diff changeset
  1675
            CAccPolVolumeControl* leftVolume;
hgs
parents: 41
diff changeset
  1676
            leftVolume = ( CAccPolVolumeControl* )iTopologyContainer->AtL( 1 );
hgs
parents: 41
diff changeset
  1677
hgs
parents: 41
diff changeset
  1678
            if( err == aParameter.iExpectedResult )
hgs
parents: 41
diff changeset
  1679
                {
hgs
parents: 41
diff changeset
  1680
                retval = KErrNone;
hgs
parents: 41
diff changeset
  1681
                }
hgs
parents: 41
diff changeset
  1682
            }
hgs
parents: 41
diff changeset
  1683
            break;
hgs
parents: 41
diff changeset
  1684
hgs
parents: 41
diff changeset
  1685
        case ETFAccessorySetVolumeControlObjects:
hgs
parents: 41
diff changeset
  1686
            {
hgs
parents: 41
diff changeset
  1687
            RBufWriteStream wStrm;
hgs
parents: 41
diff changeset
  1688
            CAccPolAudioTopologyObjectCon* setContainer =
hgs
parents: 41
diff changeset
  1689
                CAccPolAudioTopologyObjectCon::NewLC();
hgs
parents: 41
diff changeset
  1690
hgs
parents: 41
diff changeset
  1691
            iSpeakerRightVolume->SetVolumeDb( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  1692
            iSpeakerRightVolume->SetMinVolumeDb( aParameter.iArg2 );
hgs
parents: 41
diff changeset
  1693
            iSpeakerRightVolume->SetMaxVolumeDb( aParameter.iArg4 );
hgs
parents: 41
diff changeset
  1694
            iSpeakerRightVolume->SetVolumeResDb( 0x05 );
hgs
parents: 41
diff changeset
  1695
            setContainer->AddL( *iSpeakerRightVolume );
hgs
parents: 41
diff changeset
  1696
            iSpeakerLeftVolume->SetVolumeDb( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  1697
            iSpeakerLeftVolume->SetMinVolumeDb( aParameter.iArg2 );
hgs
parents: 41
diff changeset
  1698
            iSpeakerLeftVolume->SetMaxVolumeDb( aParameter.iArg4 );
hgs
parents: 41
diff changeset
  1699
            iSpeakerLeftVolume->SetVolumeResDb( 0x05 );
hgs
parents: 41
diff changeset
  1700
            setContainer->AddL( *iSpeakerLeftVolume );
hgs
parents: 41
diff changeset
  1701
hgs
parents: 41
diff changeset
  1702
            CBufFlat* buf =
hgs
parents: 41
diff changeset
  1703
                CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  1704
            CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  1705
            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  1706
            ( void )wStrm.Open( *buf );
hgs
parents: 41
diff changeset
  1707
            wStrm.PushL();
hgs
parents: 41
diff changeset
  1708
            setContainer->ExternalizeL( wStrm );
hgs
parents: 41
diff changeset
  1709
            wStrm.Close();
hgs
parents: 41
diff changeset
  1710
            wStrm.Pop();
hgs
parents: 41
diff changeset
  1711
            TPtr8 ptr( buf->Ptr( 0 ) );
hgs
parents: 41
diff changeset
  1712
hgs
parents: 41
diff changeset
  1713
            retval = RProperty::Set( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
  1714
                KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
  1715
                ptr );
hgs
parents: 41
diff changeset
  1716
hgs
parents: 41
diff changeset
  1717
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1718
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1719
            TRAPD( setErr, iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, *setContainer ) );
hgs
parents: 41
diff changeset
  1720
hgs
parents: 41
diff changeset
  1721
            retval = setErr;
hgs
parents: 41
diff changeset
  1722
hgs
parents: 41
diff changeset
  1723
            CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  1724
            CleanupStack::PopAndDestroy( setContainer );
hgs
parents: 41
diff changeset
  1725
            }
hgs
parents: 41
diff changeset
  1726
            break;
hgs
parents: 41
diff changeset
  1727
hgs
parents: 41
diff changeset
  1728
        case ETFAccessoryGetMuteControlObjects:
hgs
parents: 41
diff changeset
  1729
            {
hgs
parents: 41
diff changeset
  1730
hgs
parents: 41
diff changeset
  1731
            if( iTopologyContainer != NULL )
hgs
parents: 41
diff changeset
  1732
                {
hgs
parents: 41
diff changeset
  1733
                delete iTopologyContainer;
hgs
parents: 41
diff changeset
  1734
                iTopologyContainer = NULL;
hgs
parents: 41
diff changeset
  1735
                }
hgs
parents: 41
diff changeset
  1736
hgs
parents: 41
diff changeset
  1737
            iTopologyContainer = CAccPolAudioTopologyObjectCon::NewL();
hgs
parents: 41
diff changeset
  1738
hgs
parents: 41
diff changeset
  1739
            iTopologyContainer->AddL( *iSpeakerMute );
hgs
parents: 41
diff changeset
  1740
hgs
parents: 41
diff changeset
  1741
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1742
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1743
            TRAPD( err, iAccessorySingleConnection->GetValueL( iGenericId[aParameter.iGid], aNameRecord, *iTopologyContainer ) );
hgs
parents: 41
diff changeset
  1744
hgs
parents: 41
diff changeset
  1745
            CAccPolMuteControl* mute;
hgs
parents: 41
diff changeset
  1746
            mute = ( CAccPolMuteControl* )iTopologyContainer->AtL( 0 );
hgs
parents: 41
diff changeset
  1747
hgs
parents: 41
diff changeset
  1748
            if( err == aParameter.iExpectedResult )
hgs
parents: 41
diff changeset
  1749
                {
hgs
parents: 41
diff changeset
  1750
                retval = KErrNone;
hgs
parents: 41
diff changeset
  1751
                }
hgs
parents: 41
diff changeset
  1752
            }
hgs
parents: 41
diff changeset
  1753
            break;
hgs
parents: 41
diff changeset
  1754
hgs
parents: 41
diff changeset
  1755
        case ETFAccessorySetMuteControlObjects:
hgs
parents: 41
diff changeset
  1756
            {
hgs
parents: 41
diff changeset
  1757
            RBufWriteStream wStrm;
hgs
parents: 41
diff changeset
  1758
            CAccPolAudioTopologyObjectCon* setContainer =
hgs
parents: 41
diff changeset
  1759
                CAccPolAudioTopologyObjectCon::NewLC();
hgs
parents: 41
diff changeset
  1760
hgs
parents: 41
diff changeset
  1761
            iSpeakerMute->SetMute( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  1762
            setContainer->AddL( *iSpeakerMute );
hgs
parents: 41
diff changeset
  1763
hgs
parents: 41
diff changeset
  1764
            CBufFlat* buf =
hgs
parents: 41
diff changeset
  1765
                CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  1766
            CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  1767
            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  1768
            ( void )wStrm.Open( *buf );
hgs
parents: 41
diff changeset
  1769
            wStrm.PushL();
hgs
parents: 41
diff changeset
  1770
            setContainer->ExternalizeL( wStrm );
hgs
parents: 41
diff changeset
  1771
            wStrm.Close();
hgs
parents: 41
diff changeset
  1772
            wStrm.Pop();
hgs
parents: 41
diff changeset
  1773
            TPtr8 ptr( buf->Ptr( 0 ) );
hgs
parents: 41
diff changeset
  1774
hgs
parents: 41
diff changeset
  1775
            retval = RProperty::Set( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
  1776
                KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
  1777
                ptr );
hgs
parents: 41
diff changeset
  1778
hgs
parents: 41
diff changeset
  1779
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1780
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1781
            TRAPD( setErr, iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, *setContainer ) );
hgs
parents: 41
diff changeset
  1782
hgs
parents: 41
diff changeset
  1783
            retval = setErr;
hgs
parents: 41
diff changeset
  1784
hgs
parents: 41
diff changeset
  1785
            CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  1786
            CleanupStack::PopAndDestroy( setContainer );
hgs
parents: 41
diff changeset
  1787
            }
hgs
parents: 41
diff changeset
  1788
            break;
hgs
parents: 41
diff changeset
  1789
hgs
parents: 41
diff changeset
  1790
            //
hgs
parents: 41
diff changeset
  1791
            // Accessory Control
hgs
parents: 41
diff changeset
  1792
            //           
hgs
parents: 41
diff changeset
  1793
hgs
parents: 41
diff changeset
  1794
        case ETFAccessoryControl_Open:
hgs
parents: 41
diff changeset
  1795
            {
hgs
parents: 41
diff changeset
  1796
            if( iAccessoryControl == NULL )
hgs
parents: 41
diff changeset
  1797
                {
hgs
parents: 41
diff changeset
  1798
                iAccessoryControl = new ( ELeave ) RAccessoryControl;
hgs
parents: 41
diff changeset
  1799
                retval = iAccessoryControl->CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  1800
                }
hgs
parents: 41
diff changeset
  1801
            else
hgs
parents: 41
diff changeset
  1802
                {
hgs
parents: 41
diff changeset
  1803
                retval = KErrNone;
hgs
parents: 41
diff changeset
  1804
                }
hgs
parents: 41
diff changeset
  1805
            }
hgs
parents: 41
diff changeset
  1806
            break;
hgs
parents: 41
diff changeset
  1807
hgs
parents: 41
diff changeset
  1808
        case ETFAccessoryControl_Close:
hgs
parents: 41
diff changeset
  1809
            {
hgs
parents: 41
diff changeset
  1810
            TRACE_ASSERT( iAccessoryControl != NULL );
hgs
parents: 41
diff changeset
  1811
hgs
parents: 41
diff changeset
  1812
            if( iAccessoryControl != NULL )
hgs
parents: 41
diff changeset
  1813
                {
hgs
parents: 41
diff changeset
  1814
                iAccessoryControl->CloseSubSession();
hgs
parents: 41
diff changeset
  1815
                delete iAccessoryControl;
hgs
parents: 41
diff changeset
  1816
                iAccessoryControl = NULL;
hgs
parents: 41
diff changeset
  1817
                }
hgs
parents: 41
diff changeset
  1818
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1819
            }
hgs
parents: 41
diff changeset
  1820
            break;
hgs
parents: 41
diff changeset
  1821
hgs
parents: 41
diff changeset
  1822
        case ETFAccessoryNotifyAccessoryConnectionStatusChanged:
hgs
parents: 41
diff changeset
  1823
            {
hgs
parents: 41
diff changeset
  1824
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1825
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1826
            aConnectionObserver->NotifyAccessoryConnectionStatusChanged( iGenericIdArray );
hgs
parents: 41
diff changeset
  1827
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1828
            }
hgs
parents: 41
diff changeset
  1829
            break;
hgs
parents: 41
diff changeset
  1830
hgs
parents: 41
diff changeset
  1831
        case ETFSyncGetAccessoryConnectionStatus:
hgs
parents: 41
diff changeset
  1832
            {
hgs
parents: 41
diff changeset
  1833
            iAccessoryConnection->GetAccessoryConnectionStatus( iGenericIdArray );
hgs
parents: 41
diff changeset
  1834
hgs
parents: 41
diff changeset
  1835
            if( iGenericIdArray.Count() != aParameter.iArg1 )
hgs
parents: 41
diff changeset
  1836
                {
hgs
parents: 41
diff changeset
  1837
                retval = KErrArgument;
hgs
parents: 41
diff changeset
  1838
                }
hgs
parents: 41
diff changeset
  1839
            else
hgs
parents: 41
diff changeset
  1840
                {
hgs
parents: 41
diff changeset
  1841
                retval = KErrNone;
hgs
parents: 41
diff changeset
  1842
                }
hgs
parents: 41
diff changeset
  1843
            }
hgs
parents: 41
diff changeset
  1844
            break;
hgs
parents: 41
diff changeset
  1845
hgs
parents: 41
diff changeset
  1846
        case ETFASyncGetAccessoryConnectionStatus:
hgs
parents: 41
diff changeset
  1847
            {
hgs
parents: 41
diff changeset
  1848
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1849
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1850
            aConnectionObserver->GetAccessoryConnectionStatus( iGenericIdArray );
hgs
parents: 41
diff changeset
  1851
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1852
            }
hgs
parents: 41
diff changeset
  1853
            break;
hgs
parents: 41
diff changeset
  1854
hgs
parents: 41
diff changeset
  1855
        case ETFSetIntValue:
hgs
parents: 41
diff changeset
  1856
       	   {
hgs
parents: 41
diff changeset
  1857
       	   SetIntValue(aParameter, &retval);
hgs
parents: 41
diff changeset
  1858
       	   }
hgs
parents: 41
diff changeset
  1859
            break;
hgs
parents: 41
diff changeset
  1860
hgs
parents: 41
diff changeset
  1861
        case ETFSetBoolValue:
hgs
parents: 41
diff changeset
  1862
            {
hgs
parents: 41
diff changeset
  1863
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1864
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1865
            TAccValueTypeTBool aBoolValue;
hgs
parents: 41
diff changeset
  1866
            aBoolValue.iValue = aParameter.iArg1;
hgs
parents: 41
diff changeset
  1867
            retval = iAccessoryControl->SetValueL( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  1868
                aNameRecord,
hgs
parents: 41
diff changeset
  1869
                aBoolValue );
hgs
parents: 41
diff changeset
  1870
            }
hgs
parents: 41
diff changeset
  1871
            break;
hgs
parents: 41
diff changeset
  1872
hgs
parents: 41
diff changeset
  1873
            //
hgs
parents: 41
diff changeset
  1874
            //Tuupaa
hgs
parents: 41
diff changeset
  1875
            //
hgs
parents: 41
diff changeset
  1876
        case ETFAccessoryValueChangedNotifyInt:
hgs
parents: 41
diff changeset
  1877
            {
hgs
parents: 41
diff changeset
  1878
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1879
            aNameRecord.SetNameL( KAccAudioOutputType );
hgs
parents: 41
diff changeset
  1880
            TAccValueTypeTInt aIntValue;
hgs
parents: 41
diff changeset
  1881
            aIntValue.iValue = EAccAudioOutPutTypePublic;
hgs
parents: 41
diff changeset
  1882
            iAccessoryControl->AccessoryValueChangedNotifyL( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  1883
                aNameRecord,
hgs
parents: 41
diff changeset
  1884
                aIntValue );
hgs
parents: 41
diff changeset
  1885
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1886
            }
hgs
parents: 41
diff changeset
  1887
            break;
hgs
parents: 41
diff changeset
  1888
hgs
parents: 41
diff changeset
  1889
        case ETFAccessoryValueChangedNotifyBool:
hgs
parents: 41
diff changeset
  1890
            {
hgs
parents: 41
diff changeset
  1891
            TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  1892
            aNameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1893
            TAccValueTypeTBool aBoolValue;
hgs
parents: 41
diff changeset
  1894
            aBoolValue.iValue = ETrue;
hgs
parents: 41
diff changeset
  1895
            iAccessoryControl->AccessoryValueChangedNotifyL( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  1896
                aNameRecord,
hgs
parents: 41
diff changeset
  1897
                aBoolValue );
hgs
parents: 41
diff changeset
  1898
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1899
            }
hgs
parents: 41
diff changeset
  1900
            break;
hgs
parents: 41
diff changeset
  1901
hgs
parents: 41
diff changeset
  1902
            //
hgs
parents: 41
diff changeset
  1903
            // BT Control    
hgs
parents: 41
diff changeset
  1904
            //
hgs
parents: 41
diff changeset
  1905
        case ETFBTAccessoryValueChangedNotifyBool:
hgs
parents: 41
diff changeset
  1906
            {
hgs
parents: 41
diff changeset
  1907
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  1908
            TAccPolNameRecord nameRecord;
hgs
parents: 41
diff changeset
  1909
            nameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1910
            TAccValueTypeTBool boolValue;
hgs
parents: 41
diff changeset
  1911
            boolValue.iValue = aParameter.iArg4;
hgs
parents: 41
diff changeset
  1912
            iAccessoryBTControl->AccessoryValueChangedNotifyL( btaddr,
hgs
parents: 41
diff changeset
  1913
                nameRecord,
hgs
parents: 41
diff changeset
  1914
                boolValue );
hgs
parents: 41
diff changeset
  1915
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1916
            }
hgs
parents: 41
diff changeset
  1917
            break;
hgs
parents: 41
diff changeset
  1918
hgs
parents: 41
diff changeset
  1919
        case ETFBTAccessoryValueChangedNotifyInt:
hgs
parents: 41
diff changeset
  1920
            {
hgs
parents: 41
diff changeset
  1921
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  1922
            TAccPolNameRecord nameRecord;
hgs
parents: 41
diff changeset
  1923
            nameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  1924
            TAccValueTypeTInt intValue;
hgs
parents: 41
diff changeset
  1925
            intValue.iValue = aParameter.iArg4;
hgs
parents: 41
diff changeset
  1926
            iAccessoryBTControl->AccessoryValueChangedNotifyL( btaddr,
hgs
parents: 41
diff changeset
  1927
                nameRecord,
hgs
parents: 41
diff changeset
  1928
                intValue );
hgs
parents: 41
diff changeset
  1929
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1930
            }
hgs
parents: 41
diff changeset
  1931
            break;
hgs
parents: 41
diff changeset
  1932
hgs
parents: 41
diff changeset
  1933
        case ETFAccessoryBtControl_Open:
hgs
parents: 41
diff changeset
  1934
            {
hgs
parents: 41
diff changeset
  1935
            if( iAccessoryBTControl == NULL )
hgs
parents: 41
diff changeset
  1936
                {
hgs
parents: 41
diff changeset
  1937
                iAccessoryBTControl = new ( ELeave ) RAccessoryBTControl;
hgs
parents: 41
diff changeset
  1938
                retval
hgs
parents: 41
diff changeset
  1939
                    = iAccessoryBTControl->CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  1940
                }
hgs
parents: 41
diff changeset
  1941
            else
hgs
parents: 41
diff changeset
  1942
                {
hgs
parents: 41
diff changeset
  1943
                retval = KErrNone;
hgs
parents: 41
diff changeset
  1944
                }
hgs
parents: 41
diff changeset
  1945
            }
hgs
parents: 41
diff changeset
  1946
            break;
hgs
parents: 41
diff changeset
  1947
hgs
parents: 41
diff changeset
  1948
        case ETFAccessoryBtControl_Close:
hgs
parents: 41
diff changeset
  1949
            {
hgs
parents: 41
diff changeset
  1950
            TRACE_ASSERT( iAccessoryBTControl != NULL );
hgs
parents: 41
diff changeset
  1951
hgs
parents: 41
diff changeset
  1952
            if( iAccessoryBTControl != NULL )
hgs
parents: 41
diff changeset
  1953
                {
hgs
parents: 41
diff changeset
  1954
                iAccessoryBTControl->CloseSubSession();
hgs
parents: 41
diff changeset
  1955
                delete iAccessoryBTControl;
hgs
parents: 41
diff changeset
  1956
                iAccessoryBTControl = NULL;
hgs
parents: 41
diff changeset
  1957
                }
hgs
parents: 41
diff changeset
  1958
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1959
            }
hgs
parents: 41
diff changeset
  1960
            break;
hgs
parents: 41
diff changeset
  1961
hgs
parents: 41
diff changeset
  1962
        case ETFAccessoryBtConnectAccessory:
hgs
parents: 41
diff changeset
  1963
            {
hgs
parents: 41
diff changeset
  1964
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  1965
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1966
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1967
            aConnectionObserver->ConnectBTAccessory( btaddr );
hgs
parents: 41
diff changeset
  1968
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1969
            }
hgs
parents: 41
diff changeset
  1970
            break;
hgs
parents: 41
diff changeset
  1971
        case ETFAccessoryBtDisconnectAccessory:
hgs
parents: 41
diff changeset
  1972
            {
hgs
parents: 41
diff changeset
  1973
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  1974
            TRequestStatus status;
hgs
parents: 41
diff changeset
  1975
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1976
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1977
            aConnectionObserver->DisconnectBTAccessory( btaddr );
hgs
parents: 41
diff changeset
  1978
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1979
            TAccPolGenericID emptyInstance;
hgs
parents: 41
diff changeset
  1980
            iGenericId[aParameter.iGid] = emptyInstance;
hgs
parents: 41
diff changeset
  1981
            }
hgs
parents: 41
diff changeset
  1982
            break;
hgs
parents: 41
diff changeset
  1983
hgs
parents: 41
diff changeset
  1984
        case ETFAccessoryNotifyBluetoothAudioLinkOpenReq:
hgs
parents: 41
diff changeset
  1985
            {
hgs
parents: 41
diff changeset
  1986
            //TRequestStatus status; 			   	
hgs
parents: 41
diff changeset
  1987
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  1988
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  1989
            aConnectionObserver->NotifyBluetoothAudioLinkOpenReq();
hgs
parents: 41
diff changeset
  1990
            retval = KErrNone;
hgs
parents: 41
diff changeset
  1991
            }
hgs
parents: 41
diff changeset
  1992
            break;
hgs
parents: 41
diff changeset
  1993
hgs
parents: 41
diff changeset
  1994
        case ETFAccessoryBluetoothAudioLinkOpenedNotify:
hgs
parents: 41
diff changeset
  1995
            {
hgs
parents: 41
diff changeset
  1996
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  1997
            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkOpenedNotifyL( btaddr, (TAccAudioType)aParameter.iArg3 ) );
hgs
parents: 41
diff changeset
  1998
hgs
parents: 41
diff changeset
  1999
            if( err == aParameter.iExpectedResult )
hgs
parents: 41
diff changeset
  2000
                {
hgs
parents: 41
diff changeset
  2001
                retval = KErrNone;
hgs
parents: 41
diff changeset
  2002
                }
hgs
parents: 41
diff changeset
  2003
            else
hgs
parents: 41
diff changeset
  2004
                {
hgs
parents: 41
diff changeset
  2005
                retval = KErrGeneral;
hgs
parents: 41
diff changeset
  2006
                }
hgs
parents: 41
diff changeset
  2007
            }
hgs
parents: 41
diff changeset
  2008
            break;
hgs
parents: 41
diff changeset
  2009
hgs
parents: 41
diff changeset
  2010
        case ETFAccessoryBluetoothAudioLinkOpenResp:
hgs
parents: 41
diff changeset
  2011
            {
hgs
parents: 41
diff changeset
  2012
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  2013
            TInt response( aParameter.iArg2 );
hgs
parents: 41
diff changeset
  2014
            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkOpenRespL( btaddr, response ) );
hgs
parents: 41
diff changeset
  2015
hgs
parents: 41
diff changeset
  2016
            if( err == aParameter.iExpectedResult )
hgs
parents: 41
diff changeset
  2017
                {
hgs
parents: 41
diff changeset
  2018
                retval = KErrNone;
hgs
parents: 41
diff changeset
  2019
                }
hgs
parents: 41
diff changeset
  2020
            else
hgs
parents: 41
diff changeset
  2021
                {
hgs
parents: 41
diff changeset
  2022
                retval = KErrGeneral;
hgs
parents: 41
diff changeset
  2023
                }
hgs
parents: 41
diff changeset
  2024
            }
hgs
parents: 41
diff changeset
  2025
            break;
hgs
parents: 41
diff changeset
  2026
hgs
parents: 41
diff changeset
  2027
        case ETFAccessoryNotifyBluetoothAudioLinkCloseReq:
hgs
parents: 41
diff changeset
  2028
            {
hgs
parents: 41
diff changeset
  2029
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  2030
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  2031
            aConnectionObserver->NotifyBluetoothAudioLinkCloseReq();
hgs
parents: 41
diff changeset
  2032
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2033
            }
hgs
parents: 41
diff changeset
  2034
            break;
hgs
parents: 41
diff changeset
  2035
hgs
parents: 41
diff changeset
  2036
        case ETFAccessoryBluetoothAudioLinkClosedNotify:
hgs
parents: 41
diff changeset
  2037
            {
hgs
parents: 41
diff changeset
  2038
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  2039
            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkClosedNotifyL( btaddr, ( TAccAudioType )aParameter.iArg3 ) );
hgs
parents: 41
diff changeset
  2040
hgs
parents: 41
diff changeset
  2041
            if( err == aParameter.iExpectedResult )
hgs
parents: 41
diff changeset
  2042
                {
hgs
parents: 41
diff changeset
  2043
                retval = KErrNone;
hgs
parents: 41
diff changeset
  2044
                }
hgs
parents: 41
diff changeset
  2045
            else
hgs
parents: 41
diff changeset
  2046
                {
hgs
parents: 41
diff changeset
  2047
                retval = KErrGeneral;
hgs
parents: 41
diff changeset
  2048
                }
hgs
parents: 41
diff changeset
  2049
            }
hgs
parents: 41
diff changeset
  2050
            break;
hgs
parents: 41
diff changeset
  2051
hgs
parents: 41
diff changeset
  2052
        case ETFAccessoryBluetoothAudioLinkCloseResp:
hgs
parents: 41
diff changeset
  2053
            {
hgs
parents: 41
diff changeset
  2054
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  2055
            TInt response( aParameter.iArg2 );
hgs
parents: 41
diff changeset
  2056
            TRAPD( err, iAccessoryBTControl->BluetoothAudioLinkCloseRespL( btaddr, response ) );
hgs
parents: 41
diff changeset
  2057
hgs
parents: 41
diff changeset
  2058
            if( err == aParameter.iExpectedResult )
hgs
parents: 41
diff changeset
  2059
                {
hgs
parents: 41
diff changeset
  2060
                retval = KErrNone;
hgs
parents: 41
diff changeset
  2061
                }
hgs
parents: 41
diff changeset
  2062
            else
hgs
parents: 41
diff changeset
  2063
                {
hgs
parents: 41
diff changeset
  2064
                retval = KErrGeneral;
hgs
parents: 41
diff changeset
  2065
                }
hgs
parents: 41
diff changeset
  2066
            }
hgs
parents: 41
diff changeset
  2067
            break;
hgs
parents: 41
diff changeset
  2068
hgs
parents: 41
diff changeset
  2069
        case ETFAccessoryBtCancelConnectAccessory:
hgs
parents: 41
diff changeset
  2070
            {
hgs
parents: 41
diff changeset
  2071
            TRequestStatus status;
hgs
parents: 41
diff changeset
  2072
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  2073
            iAccessoryBTControl->ConnectAccessory( status, btaddr );
hgs
parents: 41
diff changeset
  2074
            iAccessoryBTControl->CancelConnectAccessory();
hgs
parents: 41
diff changeset
  2075
            User::WaitForRequest( status );
hgs
parents: 41
diff changeset
  2076
            if( KErrCancel != status.Int() )
hgs
parents: 41
diff changeset
  2077
                {
hgs
parents: 41
diff changeset
  2078
                retval = status.Int();
hgs
parents: 41
diff changeset
  2079
                }
hgs
parents: 41
diff changeset
  2080
            else
hgs
parents: 41
diff changeset
  2081
                {
hgs
parents: 41
diff changeset
  2082
                retval = KErrNone;
hgs
parents: 41
diff changeset
  2083
                }
hgs
parents: 41
diff changeset
  2084
            }
hgs
parents: 41
diff changeset
  2085
            break;
hgs
parents: 41
diff changeset
  2086
hgs
parents: 41
diff changeset
  2087
        case ETFAccessoryBtCancelDisconnectAccessory:
hgs
parents: 41
diff changeset
  2088
            {
hgs
parents: 41
diff changeset
  2089
            TRequestStatus status;
hgs
parents: 41
diff changeset
  2090
            TBTDevAddr btaddr( aParameter.iArg1 );
hgs
parents: 41
diff changeset
  2091
            iAccessoryBTControl->DisconnectAccessory( status, btaddr );
hgs
parents: 41
diff changeset
  2092
            iAccessoryBTControl->CancelDisconnectAccessory();
hgs
parents: 41
diff changeset
  2093
            User::WaitForRequest( status );
hgs
parents: 41
diff changeset
  2094
            retval = status.Int();
hgs
parents: 41
diff changeset
  2095
            }
hgs
parents: 41
diff changeset
  2096
            break;
hgs
parents: 41
diff changeset
  2097
hgs
parents: 41
diff changeset
  2098
            //
hgs
parents: 41
diff changeset
  2099
            // Accessory Mode 
hgs
parents: 41
diff changeset
  2100
            //                                            	         		      		
hgs
parents: 41
diff changeset
  2101
        case ETFAccessoryMode_Open:
hgs
parents: 41
diff changeset
  2102
            {
hgs
parents: 41
diff changeset
  2103
            if( iAccessoryMode == NULL )
hgs
parents: 41
diff changeset
  2104
                {
hgs
parents: 41
diff changeset
  2105
                iAccessoryMode = new ( ELeave ) RAccessoryMode;
hgs
parents: 41
diff changeset
  2106
                retval = iAccessoryMode->CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  2107
                }
hgs
parents: 41
diff changeset
  2108
            else
hgs
parents: 41
diff changeset
  2109
                {
hgs
parents: 41
diff changeset
  2110
                retval = KErrNone;
hgs
parents: 41
diff changeset
  2111
                }
hgs
parents: 41
diff changeset
  2112
            }
hgs
parents: 41
diff changeset
  2113
            break;
hgs
parents: 41
diff changeset
  2114
hgs
parents: 41
diff changeset
  2115
        case ETFAccessoryMode_Close:
hgs
parents: 41
diff changeset
  2116
            {
hgs
parents: 41
diff changeset
  2117
            TRACE_ASSERT( iAccessoryMode != NULL );
hgs
parents: 41
diff changeset
  2118
hgs
parents: 41
diff changeset
  2119
            if( iAccessoryMode != NULL )
hgs
parents: 41
diff changeset
  2120
                {
hgs
parents: 41
diff changeset
  2121
                iAccessoryMode->CloseSubSession();
hgs
parents: 41
diff changeset
  2122
                delete iAccessoryMode;
hgs
parents: 41
diff changeset
  2123
                iAccessoryMode = NULL;
hgs
parents: 41
diff changeset
  2124
                }
hgs
parents: 41
diff changeset
  2125
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2126
            }
hgs
parents: 41
diff changeset
  2127
            break;
hgs
parents: 41
diff changeset
  2128
hgs
parents: 41
diff changeset
  2129
        case ETFAccessoryNotifyAccessoryModeChanged:
hgs
parents: 41
diff changeset
  2130
            {
hgs
parents: 41
diff changeset
  2131
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  2132
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  2133
            aConnectionObserver->NotifyAccessoryModeChanged();
hgs
parents: 41
diff changeset
  2134
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2135
            }
hgs
parents: 41
diff changeset
  2136
            break;
hgs
parents: 41
diff changeset
  2137
hgs
parents: 41
diff changeset
  2138
        case ETFAccessoryAccessoryModeSync:
hgs
parents: 41
diff changeset
  2139
            {
hgs
parents: 41
diff changeset
  2140
            TAccPolAccessoryMode mode;
hgs
parents: 41
diff changeset
  2141
            retval = iAccessoryMode->GetAccessoryMode( mode );
hgs
parents: 41
diff changeset
  2142
hgs
parents: 41
diff changeset
  2143
            if( retval == KErrNone )
hgs
parents: 41
diff changeset
  2144
                {
hgs
parents: 41
diff changeset
  2145
                if( aParameter.iArg1 != mode.iAccessoryMode )
hgs
parents: 41
diff changeset
  2146
                    {
hgs
parents: 41
diff changeset
  2147
                    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Unexpected Accessory Mode Parameter1 %d %d" ), aParameter.iArg1, mode.iAccessoryMode ) );
hgs
parents: 41
diff changeset
  2148
                    retval = KTFErrAccessoryUnexpectedArg1;
hgs
parents: 41
diff changeset
  2149
                    }
hgs
parents: 41
diff changeset
  2150
#ifdef __WINS__ // Just check this in winscw
hgs
parents: 41
diff changeset
  2151
                if( aParameter.iArg2 != mode.iAudioOutputStatus )
hgs
parents: 41
diff changeset
  2152
                    {
hgs
parents: 41
diff changeset
  2153
                    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Unexpected Accessory Mode Parameter2 %d %d" ), aParameter.iArg2, mode.iAudioOutputStatus ) );
hgs
parents: 41
diff changeset
  2154
                    retval = KTFErrAccessoryUnexpectedArg2;
hgs
parents: 41
diff changeset
  2155
                    }
hgs
parents: 41
diff changeset
  2156
#endif
hgs
parents: 41
diff changeset
  2157
                }
hgs
parents: 41
diff changeset
  2158
            else
hgs
parents: 41
diff changeset
  2159
                {
hgs
parents: 41
diff changeset
  2160
                TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Getting Accessory Mode Failed %d" ), retval ) );
hgs
parents: 41
diff changeset
  2161
                }
hgs
parents: 41
diff changeset
  2162
hgs
parents: 41
diff changeset
  2163
            }
hgs
parents: 41
diff changeset
  2164
            break;
hgs
parents: 41
diff changeset
  2165
hgs
parents: 41
diff changeset
  2166
        case ETFAccessoryAccessoryModeASync:
hgs
parents: 41
diff changeset
  2167
            {
hgs
parents: 41
diff changeset
  2168
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  2169
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  2170
            aConnectionObserver->GetAccessoryMode();
hgs
parents: 41
diff changeset
  2171
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2172
            }
hgs
parents: 41
diff changeset
  2173
            break;
hgs
parents: 41
diff changeset
  2174
hgs
parents: 41
diff changeset
  2175
            //
hgs
parents: 41
diff changeset
  2176
            // Audio Control
hgs
parents: 41
diff changeset
  2177
            //       
hgs
parents: 41
diff changeset
  2178
        case ETFAccessoryAudioControl_Open:
hgs
parents: 41
diff changeset
  2179
            {
hgs
parents: 41
diff changeset
  2180
            if( iAccessoryAudioControl == NULL )
hgs
parents: 41
diff changeset
  2181
                {
hgs
parents: 41
diff changeset
  2182
                iAccessoryAudioControl = new ( ELeave ) RAccessoryAudioControl;
hgs
parents: 41
diff changeset
  2183
                retval
hgs
parents: 41
diff changeset
  2184
                    = iAccessoryAudioControl->CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  2185
                }
hgs
parents: 41
diff changeset
  2186
            else
hgs
parents: 41
diff changeset
  2187
                {
hgs
parents: 41
diff changeset
  2188
                retval = KErrNone;
hgs
parents: 41
diff changeset
  2189
                }
hgs
parents: 41
diff changeset
  2190
            }
hgs
parents: 41
diff changeset
  2191
            break;
hgs
parents: 41
diff changeset
  2192
hgs
parents: 41
diff changeset
  2193
        case ETFAccessoryAudioControl_Close:
hgs
parents: 41
diff changeset
  2194
            {
hgs
parents: 41
diff changeset
  2195
            TRACE_ASSERT( iAccessoryAudioControl != NULL );
hgs
parents: 41
diff changeset
  2196
hgs
parents: 41
diff changeset
  2197
            if( iAccessoryAudioControl != NULL )
hgs
parents: 41
diff changeset
  2198
                {
hgs
parents: 41
diff changeset
  2199
                iAccessoryAudioControl->CloseSubSession();
hgs
parents: 41
diff changeset
  2200
                delete iAccessoryAudioControl;
hgs
parents: 41
diff changeset
  2201
                iAccessoryAudioControl = NULL;
hgs
parents: 41
diff changeset
  2202
                }
hgs
parents: 41
diff changeset
  2203
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2204
            }
hgs
parents: 41
diff changeset
  2205
            break;
hgs
parents: 41
diff changeset
  2206
hgs
parents: 41
diff changeset
  2207
        case ETFAudioRoutingStatusNotify:
hgs
parents: 41
diff changeset
  2208
            {
hgs
parents: 41
diff changeset
  2209
            RAccessoryAudioControl audioControl;
hgs
parents: 41
diff changeset
  2210
            audioControl.CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  2211
hgs
parents: 41
diff changeset
  2212
            audioControl.AudioRoutingStatusNotify( aParameter.iArg1,
hgs
parents: 41
diff changeset
  2213
                iGenericId[aParameter.iGid] );
hgs
parents: 41
diff changeset
  2214
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2215
hgs
parents: 41
diff changeset
  2216
            audioControl.CloseSubSession();
hgs
parents: 41
diff changeset
  2217
            }
hgs
parents: 41
diff changeset
  2218
            break;
hgs
parents: 41
diff changeset
  2219
hgs
parents: 41
diff changeset
  2220
        case ETFAccessoryAudioLinkOpen:
hgs
parents: 41
diff changeset
  2221
            {
hgs
parents: 41
diff changeset
  2222
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  2223
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  2224
            aConnectionObserver->AccessoryAudioLinkOpen( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  2225
                aParameter.iArg3 );
hgs
parents: 41
diff changeset
  2226
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2227
            }
hgs
parents: 41
diff changeset
  2228
            break;
hgs
parents: 41
diff changeset
  2229
hgs
parents: 41
diff changeset
  2230
        case ETFAccessoryNotifyAccessoryAudioLinkOpened:
hgs
parents: 41
diff changeset
  2231
            {
hgs
parents: 41
diff changeset
  2232
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  2233
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  2234
            aConnectionObserver->NotifyAccessoryAudioLinkOpened( iGenericId[aParameter.iGid] );
hgs
parents: 41
diff changeset
  2235
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2236
            }
hgs
parents: 41
diff changeset
  2237
            break;
hgs
parents: 41
diff changeset
  2238
hgs
parents: 41
diff changeset
  2239
        case ETFAccessoryNotifyAccessoryAudioLinkClosed:
hgs
parents: 41
diff changeset
  2240
            {
hgs
parents: 41
diff changeset
  2241
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  2242
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  2243
            aConnectionObserver->NotifyAccessoryAudioLinkClosed( iGenericId[aParameter.iGid] );
hgs
parents: 41
diff changeset
  2244
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2245
            }
hgs
parents: 41
diff changeset
  2246
            break;
hgs
parents: 41
diff changeset
  2247
hgs
parents: 41
diff changeset
  2248
        case ETFAccessoryAccessoryAudioLinkClose:
hgs
parents: 41
diff changeset
  2249
            {
hgs
parents: 41
diff changeset
  2250
            CTFTestControlObserver* aConnectionObserver = CreateObserver();
hgs
parents: 41
diff changeset
  2251
            TRACE_ASSERT( aConnectionObserver != NULL );
hgs
parents: 41
diff changeset
  2252
            aConnectionObserver->AccessoryAudioLinkClose( iGenericId[aParameter.iGid],
hgs
parents: 41
diff changeset
  2253
                aParameter.iArg3 );
hgs
parents: 41
diff changeset
  2254
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2255
            }
hgs
parents: 41
diff changeset
  2256
            break;
hgs
parents: 41
diff changeset
  2257
hgs
parents: 41
diff changeset
  2258
        case ETFAccessoryPublishAndSubscribe:
hgs
parents: 41
diff changeset
  2259
            {
hgs
parents: 41
diff changeset
  2260
            PublishAndSubscribeL( aParameter );
hgs
parents: 41
diff changeset
  2261
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2262
            }
hgs
parents: 41
diff changeset
  2263
            break;
hgs
parents: 41
diff changeset
  2264
hgs
parents: 41
diff changeset
  2265
        case ETFAccessory_Cancel:
hgs
parents: 41
diff changeset
  2266
            {
hgs
parents: 41
diff changeset
  2267
            CTFTestControlObserver* item;
hgs
parents: 41
diff changeset
  2268
            if( !iStack.IsEmpty() )
hgs
parents: 41
diff changeset
  2269
                {
hgs
parents: 41
diff changeset
  2270
                item = iStack.First();
hgs
parents: 41
diff changeset
  2271
                item->Cancel();
hgs
parents: 41
diff changeset
  2272
                }
hgs
parents: 41
diff changeset
  2273
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2274
            }
hgs
parents: 41
diff changeset
  2275
            break;
hgs
parents: 41
diff changeset
  2276
hgs
parents: 41
diff changeset
  2277
            //
hgs
parents: 41
diff changeset
  2278
            // Cancels
hgs
parents: 41
diff changeset
  2279
            //
hgs
parents: 41
diff changeset
  2280
        case ETFCancelAccessoryAudioLinkOpen:
hgs
parents: 41
diff changeset
  2281
            {
hgs
parents: 41
diff changeset
  2282
            iAccessoryAudioControl->CancelAccessoryAudioLinkOpen();
hgs
parents: 41
diff changeset
  2283
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2284
            }
hgs
parents: 41
diff changeset
  2285
            break;
hgs
parents: 41
diff changeset
  2286
hgs
parents: 41
diff changeset
  2287
        case ETFCancelAccessoryAudioLinkClose:
hgs
parents: 41
diff changeset
  2288
            {
hgs
parents: 41
diff changeset
  2289
            iAccessoryAudioControl->CancelAccessoryAudioLinkClose();
hgs
parents: 41
diff changeset
  2290
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2291
            }
hgs
parents: 41
diff changeset
  2292
            break;
hgs
parents: 41
diff changeset
  2293
hgs
parents: 41
diff changeset
  2294
        case ETFCancelNotifyAccessoryAudioLinkOpened:
hgs
parents: 41
diff changeset
  2295
            {
hgs
parents: 41
diff changeset
  2296
            iAccessoryAudioControl->CancelNotifyAccessoryAudioLinkOpened();
hgs
parents: 41
diff changeset
  2297
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2298
            }
hgs
parents: 41
diff changeset
  2299
            break;
hgs
parents: 41
diff changeset
  2300
hgs
parents: 41
diff changeset
  2301
        case ETFCancelNotifyAccessoryAudioLinkClosed:
hgs
parents: 41
diff changeset
  2302
            {
hgs
parents: 41
diff changeset
  2303
            iAccessoryAudioControl->CancelNotifyAccessoryAudioLinkClosed();
hgs
parents: 41
diff changeset
  2304
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2305
            }
hgs
parents: 41
diff changeset
  2306
            break;
hgs
parents: 41
diff changeset
  2307
hgs
parents: 41
diff changeset
  2308
        case ETFCancelNotifyProcessCommand:
hgs
parents: 41
diff changeset
  2309
            {
hgs
parents: 41
diff changeset
  2310
            TRACE_ASSERT_ALWAYS;
hgs
parents: 41
diff changeset
  2311
            }
hgs
parents: 41
diff changeset
  2312
            break;
hgs
parents: 41
diff changeset
  2313
hgs
parents: 41
diff changeset
  2314
        case ETFCancelConnectAccessory:
hgs
parents: 41
diff changeset
  2315
            {
hgs
parents: 41
diff changeset
  2316
            iAccessoryControl->CancelConnectAccessory();
hgs
parents: 41
diff changeset
  2317
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2318
            }
hgs
parents: 41
diff changeset
  2319
            break;
hgs
parents: 41
diff changeset
  2320
hgs
parents: 41
diff changeset
  2321
        case ETFCancelDisconnectAccessory:
hgs
parents: 41
diff changeset
  2322
            {
hgs
parents: 41
diff changeset
  2323
            iAccessoryControl->CancelDisconnectAccessory();
hgs
parents: 41
diff changeset
  2324
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2325
            }
hgs
parents: 41
diff changeset
  2326
            break;
hgs
parents: 41
diff changeset
  2327
hgs
parents: 41
diff changeset
  2328
        case ETFCancelNotifyBluetoothAudioLinkOpenReq:
hgs
parents: 41
diff changeset
  2329
            {
hgs
parents: 41
diff changeset
  2330
            iAccessoryBTControl->CancelNotifyBluetoothAudioLinkOpenReq();
hgs
parents: 41
diff changeset
  2331
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2332
            }
hgs
parents: 41
diff changeset
  2333
            break;
hgs
parents: 41
diff changeset
  2334
hgs
parents: 41
diff changeset
  2335
        case ETFCancelNotifyBluetoothAudioLinkCloseReq:
hgs
parents: 41
diff changeset
  2336
            {
hgs
parents: 41
diff changeset
  2337
            iAccessoryBTControl->CancelNotifyBluetoothAudioLinkCloseReq();
hgs
parents: 41
diff changeset
  2338
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2339
            }
hgs
parents: 41
diff changeset
  2340
            break;
hgs
parents: 41
diff changeset
  2341
hgs
parents: 41
diff changeset
  2342
        case ETFCancelNotifyAccessoryConnectionStatusChanged:
hgs
parents: 41
diff changeset
  2343
            {
hgs
parents: 41
diff changeset
  2344
            iAccessoryConnection->CancelNotifyAccessoryConnectionStatusChanged();
hgs
parents: 41
diff changeset
  2345
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2346
            }
hgs
parents: 41
diff changeset
  2347
            break;
hgs
parents: 41
diff changeset
  2348
hgs
parents: 41
diff changeset
  2349
        case ETFCancelGetAccessoryConnectionStatus:
hgs
parents: 41
diff changeset
  2350
            {
hgs
parents: 41
diff changeset
  2351
            iAccessoryConnection->CancelGetAccessoryConnectionStatus();
hgs
parents: 41
diff changeset
  2352
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2353
            }
hgs
parents: 41
diff changeset
  2354
            break;
hgs
parents: 41
diff changeset
  2355
hgs
parents: 41
diff changeset
  2356
        case ETFCancelConnectAccessoryBT:
hgs
parents: 41
diff changeset
  2357
            {
hgs
parents: 41
diff changeset
  2358
            iAccessoryBTControl->CancelConnectAccessory();
hgs
parents: 41
diff changeset
  2359
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2360
            }
hgs
parents: 41
diff changeset
  2361
            break;
hgs
parents: 41
diff changeset
  2362
hgs
parents: 41
diff changeset
  2363
        case ETFCancelDisconnectAccessoryBT:
hgs
parents: 41
diff changeset
  2364
            {
hgs
parents: 41
diff changeset
  2365
            iAccessoryBTControl->CancelDisconnectAccessory();
hgs
parents: 41
diff changeset
  2366
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2367
            }
hgs
parents: 41
diff changeset
  2368
            break;
hgs
parents: 41
diff changeset
  2369
hgs
parents: 41
diff changeset
  2370
        case ETFCancelNotifyAccessoryModeChanged:
hgs
parents: 41
diff changeset
  2371
            {
hgs
parents: 41
diff changeset
  2372
            iAccessoryMode->CancelNotifyAccessoryModeChanged();
hgs
parents: 41
diff changeset
  2373
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2374
            }
hgs
parents: 41
diff changeset
  2375
            break;
hgs
parents: 41
diff changeset
  2376
hgs
parents: 41
diff changeset
  2377
        case ETFCancelGetAccessoryMode:
hgs
parents: 41
diff changeset
  2378
            {
hgs
parents: 41
diff changeset
  2379
            iAccessoryMode->CancelGetAccessoryMode();
hgs
parents: 41
diff changeset
  2380
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2381
            }
hgs
parents: 41
diff changeset
  2382
            break;
hgs
parents: 41
diff changeset
  2383
hgs
parents: 41
diff changeset
  2384
        case ETFCancelNotifyNewAccessoryConnected:
hgs
parents: 41
diff changeset
  2385
            {
hgs
parents: 41
diff changeset
  2386
            iAccessorySingleConnection->CancelNotifyNewAccessoryConnected();
hgs
parents: 41
diff changeset
  2387
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2388
            }
hgs
parents: 41
diff changeset
  2389
            break;
hgs
parents: 41
diff changeset
  2390
hgs
parents: 41
diff changeset
  2391
        case ETFCancelNotifyAccessoryDisconnected:
hgs
parents: 41
diff changeset
  2392
            {
hgs
parents: 41
diff changeset
  2393
            iAccessorySingleConnection->CancelNotifyAccessoryDisconnected();
hgs
parents: 41
diff changeset
  2394
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2395
            }
hgs
parents: 41
diff changeset
  2396
            break;
hgs
parents: 41
diff changeset
  2397
hgs
parents: 41
diff changeset
  2398
        case ETFCancelNotifyAccessoryValueChanged:
hgs
parents: 41
diff changeset
  2399
            {
hgs
parents: 41
diff changeset
  2400
            TAccPolNameRecord nameRecord;
hgs
parents: 41
diff changeset
  2401
            nameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  2402
            iAccessorySingleConnection->CancelNotifyAccessoryValueChanged( nameRecord );
hgs
parents: 41
diff changeset
  2403
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2404
            }
hgs
parents: 41
diff changeset
  2405
            break;
hgs
parents: 41
diff changeset
  2406
hgs
parents: 41
diff changeset
  2407
        case ETFSelectionDialogText:
hgs
parents: 41
diff changeset
  2408
            {
hgs
parents: 41
diff changeset
  2409
                SelectionDialog(ETFSelectionDialogText, &retval);
hgs
parents: 41
diff changeset
  2410
            }
hgs
parents: 41
diff changeset
  2411
            break;
hgs
parents: 41
diff changeset
  2412
hgs
parents: 41
diff changeset
  2413
        case ETFSelectionDialogCancel:
hgs
parents: 41
diff changeset
  2414
            {
hgs
parents: 41
diff changeset
  2415
                SelectionDialog(ETFSelectionDialogCancel, &retval);
hgs
parents: 41
diff changeset
  2416
            }
hgs
parents: 41
diff changeset
  2417
            break;
hgs
parents: 41
diff changeset
  2418
hgs
parents: 41
diff changeset
  2419
        case ETFNotSupportedNote:
hgs
parents: 41
diff changeset
  2420
            {
hgs
parents: 41
diff changeset
  2421
            TUid KAccFwUiNoteNotifierUid =
hgs
parents: 41
diff changeset
  2422
                {
hgs
parents: 41
diff changeset
  2423
                0x10205061
hgs
parents: 41
diff changeset
  2424
                };
hgs
parents: 41
diff changeset
  2425
            RNotifier notifier;
hgs
parents: 41
diff changeset
  2426
            notifier.Connect();
hgs
parents: 41
diff changeset
  2427
hgs
parents: 41
diff changeset
  2428
            TInt err = notifier.StartNotifier( KAccFwUiNoteNotifierUid,
hgs
parents: 41
diff changeset
  2429
                KNullDesC8 );
hgs
parents: 41
diff changeset
  2430
hgs
parents: 41
diff changeset
  2431
            TInt value( 0 );
hgs
parents: 41
diff changeset
  2432
            TPckg<TInt> intPckg( value );
hgs
parents: 41
diff changeset
  2433
            notifier.Close();
hgs
parents: 41
diff changeset
  2434
hgs
parents: 41
diff changeset
  2435
            notifier.Connect();
hgs
parents: 41
diff changeset
  2436
            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
hgs
parents: 41
diff changeset
  2437
            notifier.Close();
hgs
parents: 41
diff changeset
  2438
hgs
parents: 41
diff changeset
  2439
            value = 1;
hgs
parents: 41
diff changeset
  2440
            notifier.Connect();
hgs
parents: 41
diff changeset
  2441
            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
hgs
parents: 41
diff changeset
  2442
            notifier.Close();
hgs
parents: 41
diff changeset
  2443
hgs
parents: 41
diff changeset
  2444
            value = value << 1;
hgs
parents: 41
diff changeset
  2445
            notifier.Connect();
hgs
parents: 41
diff changeset
  2446
            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
hgs
parents: 41
diff changeset
  2447
            notifier.Close();
hgs
parents: 41
diff changeset
  2448
hgs
parents: 41
diff changeset
  2449
            value = value << 1;
hgs
parents: 41
diff changeset
  2450
            notifier.Connect();
hgs
parents: 41
diff changeset
  2451
            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
hgs
parents: 41
diff changeset
  2452
            notifier.Close();
hgs
parents: 41
diff changeset
  2453
hgs
parents: 41
diff changeset
  2454
            value = value << 1;
hgs
parents: 41
diff changeset
  2455
            notifier.Connect();
hgs
parents: 41
diff changeset
  2456
            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
hgs
parents: 41
diff changeset
  2457
            notifier.Close();
hgs
parents: 41
diff changeset
  2458
hgs
parents: 41
diff changeset
  2459
            value = value << 1;
hgs
parents: 41
diff changeset
  2460
            notifier.Connect();
hgs
parents: 41
diff changeset
  2461
            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
hgs
parents: 41
diff changeset
  2462
            notifier.Close();
hgs
parents: 41
diff changeset
  2463
hgs
parents: 41
diff changeset
  2464
            value = value << 1;
hgs
parents: 41
diff changeset
  2465
            notifier.Connect();
hgs
parents: 41
diff changeset
  2466
            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
hgs
parents: 41
diff changeset
  2467
            notifier.Close();
hgs
parents: 41
diff changeset
  2468
hgs
parents: 41
diff changeset
  2469
            value = value << 1;
hgs
parents: 41
diff changeset
  2470
            notifier.Connect();
hgs
parents: 41
diff changeset
  2471
            err = notifier.StartNotifier( KAccFwUiNoteNotifierUid, intPckg );
hgs
parents: 41
diff changeset
  2472
            notifier.Close();
hgs
parents: 41
diff changeset
  2473
hgs
parents: 41
diff changeset
  2474
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2475
            }
hgs
parents: 41
diff changeset
  2476
            break;
hgs
parents: 41
diff changeset
  2477
hgs
parents: 41
diff changeset
  2478
        case ETFValueRecordTests:
hgs
parents: 41
diff changeset
  2479
            {
hgs
parents: 41
diff changeset
  2480
            retval = TestValueRecordL();
hgs
parents: 41
diff changeset
  2481
            }
hgs
parents: 41
diff changeset
  2482
            break;
hgs
parents: 41
diff changeset
  2483
hgs
parents: 41
diff changeset
  2484
        case ETFObjectBaseSerializationTests:
hgs
parents: 41
diff changeset
  2485
            {
hgs
parents: 41
diff changeset
  2486
            retval = TestBaseSerializationL();
hgs
parents: 41
diff changeset
  2487
            }
hgs
parents: 41
diff changeset
  2488
            break;
hgs
parents: 41
diff changeset
  2489
hgs
parents: 41
diff changeset
  2490
        case ETFCheckConnectedAccessory:
hgs
parents: 41
diff changeset
  2491
            {
hgs
parents: 41
diff changeset
  2492
            CheckConnectedAccessory(&retval);
hgs
parents: 41
diff changeset
  2493
            }
hgs
parents: 41
diff changeset
  2494
            break;
hgs
parents: 41
diff changeset
  2495
hgs
parents: 41
diff changeset
  2496
        case ETFCallTClassMethods:
hgs
parents: 41
diff changeset
  2497
            {
hgs
parents: 41
diff changeset
  2498
						CallTClassMethods(&retval);  \
hgs
parents: 41
diff changeset
  2499
						}
hgs
parents: 41
diff changeset
  2500
            
hgs
parents: 41
diff changeset
  2501
        case ETFSetHdmiObject_PubSub:
hgs
parents: 41
diff changeset
  2502
            {
hgs
parents: 41
diff changeset
  2503
            CreateHdmiObjectsToPubSubL( aParameter );
hgs
parents: 41
diff changeset
  2504
            retval = KErrNone;
hgs
parents: 41
diff changeset
  2505
            break;
hgs
parents: 41
diff changeset
  2506
            }
hgs
parents: 41
diff changeset
  2507
            
hgs
parents: 41
diff changeset
  2508
        case ETFGetHdmiObject:
hgs
parents: 41
diff changeset
  2509
            {
hgs
parents: 41
diff changeset
  2510
            TInt err = KErrNone;
hgs
parents: 41
diff changeset
  2511
            TAccPolNameRecord nameRecord;
hgs
parents: 41
diff changeset
  2512
            nameRecord.SetNameL( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  2513
hgs
parents: 41
diff changeset
  2514
            // Create HDMI container
hgs
parents: 41
diff changeset
  2515
            CAccPolHdmiObjectCon* conFromASY = CAccPolHdmiObjectCon::NewLC();
hgs
parents: 41
diff changeset
  2516
            CAccPolHdmiObjectCon* conFromPS = CAccPolHdmiObjectCon::NewLC();
hgs
parents: 41
diff changeset
  2517
            
hgs
parents: 41
diff changeset
  2518
            // Get HDMI container
hgs
parents: 41
diff changeset
  2519
            TRAP( err, iAccessorySingleConnection->GetValueL(
hgs
parents: 41
diff changeset
  2520
                iGenericId[aParameter.iGid], nameRecord, *conFromASY ) );
hgs
parents: 41
diff changeset
  2521
            
hgs
parents: 41
diff changeset
  2522
            // Get HDMI container from P&S
hgs
parents: 41
diff changeset
  2523
            CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  2524
            CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  2525
            buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  2526
            
hgs
parents: 41
diff changeset
  2527
            TPtr8 bufPtr( buf->Ptr( 0 ) );
hgs
parents: 41
diff changeset
  2528
            err = RProperty::Get( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
  2529
                KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
  2530
                bufPtr );
hgs
parents: 41
diff changeset
  2531
            if( err == KErrNone )
hgs
parents: 41
diff changeset
  2532
                {
hgs
parents: 41
diff changeset
  2533
                RBufReadStream readStream( *buf );
hgs
parents: 41
diff changeset
  2534
                readStream.PushL();
hgs
parents: 41
diff changeset
  2535
                conFromPS->InternalizeL( readStream );
hgs
parents: 41
diff changeset
  2536
                CleanupStack::PopAndDestroy( &readStream );
hgs
parents: 41
diff changeset
  2537
                }
hgs
parents: 41
diff changeset
  2538
            switch( aParameter.iArg3 )
hgs
parents: 41
diff changeset
  2539
                {
hgs
parents: 41
diff changeset
  2540
                case KAccVideoHdmiAttributes:
hgs
parents: 41
diff changeset
  2541
                    {
hgs
parents: 41
diff changeset
  2542
                    // Validate object count
hgs
parents: 41
diff changeset
  2543
                    if( conFromASY->Count() != conFromPS->Count() )
hgs
parents: 41
diff changeset
  2544
                        {
hgs
parents: 41
diff changeset
  2545
                        err = KErrArgument;
hgs
parents: 41
diff changeset
  2546
                        }
hgs
parents: 41
diff changeset
  2547
                    
hgs
parents: 41
diff changeset
  2548
                    // Validate speaker allocation
hgs
parents: 41
diff changeset
  2549
                    RAccPolHdmiSpeakerAllocationArray array;
hgs
parents: 41
diff changeset
  2550
                    CleanupClosePushL( array );
hgs
parents: 41
diff changeset
  2551
                    conFromASY->GetHdmiSpeakerAllocationObjectsL( array );
hgs
parents: 41
diff changeset
  2552
                    if( array.Count() )
hgs
parents: 41
diff changeset
  2553
                        {
hgs
parents: 41
diff changeset
  2554
                        CAccPolHdmiSpeakerAllocation* speakerAllocation = array[0];
hgs
parents: 41
diff changeset
  2555
                        TUint32 bits = speakerAllocation->SpeakerAllocation();
hgs
parents: 41
diff changeset
  2556
                        
hgs
parents: 41
diff changeset
  2557
                        // Speaker allocation should be EHdmiSpeakerUnknown
hgs
parents: 41
diff changeset
  2558
                        if( bits != CAccPolHdmiSpeakerAllocation::EHdmiSpeakerUnknown )
hgs
parents: 41
diff changeset
  2559
                            {
hgs
parents: 41
diff changeset
  2560
                            err = KErrArgument;
hgs
parents: 41
diff changeset
  2561
                            }
hgs
parents: 41
diff changeset
  2562
                        
hgs
parents: 41
diff changeset
  2563
                        // Speaker count should be zero
hgs
parents: 41
diff changeset
  2564
                        if( speakerAllocation->SpeakerCount() )
hgs
parents: 41
diff changeset
  2565
                            {
hgs
parents: 41
diff changeset
  2566
                            err = KErrArgument;
hgs
parents: 41
diff changeset
  2567
                            }
hgs
parents: 41
diff changeset
  2568
                        }
hgs
parents: 41
diff changeset
  2569
                    CleanupStack::PopAndDestroy( &array );
hgs
parents: 41
diff changeset
  2570
                    break;
hgs
parents: 41
diff changeset
  2571
                    }
hgs
parents: 41
diff changeset
  2572
                case KAccVideoFormat:
hgs
parents: 41
diff changeset
  2573
                    {
hgs
parents: 41
diff changeset
  2574
                    // Validate object count
hgs
parents: 41
diff changeset
  2575
                    if( conFromASY->Count() != conFromPS->Count() )
hgs
parents: 41
diff changeset
  2576
                        {
hgs
parents: 41
diff changeset
  2577
                        err = KErrArgument;
hgs
parents: 41
diff changeset
  2578
                        }
hgs
parents: 41
diff changeset
  2579
                    
hgs
parents: 41
diff changeset
  2580
                    // Validate video format
hgs
parents: 41
diff changeset
  2581
                    RAccPolHdmiVideoFormatArray array;
hgs
parents: 41
diff changeset
  2582
                    CleanupClosePushL( array );
hgs
parents: 41
diff changeset
  2583
                    conFromASY->GetHdmiVideoFormatObjectsL( array );
hgs
parents: 41
diff changeset
  2584
                    if( array.Count() )
hgs
parents: 41
diff changeset
  2585
                        {
hgs
parents: 41
diff changeset
  2586
                        CAccPolHdmiVideoFormat* videoFormat = array[0];
hgs
parents: 41
diff changeset
  2587
                        
hgs
parents: 41
diff changeset
  2588
                        // Interlaced video should be enabled
hgs
parents: 41
diff changeset
  2589
                        if( !videoFormat->Interlaced() )
hgs
parents: 41
diff changeset
  2590
                            {
hgs
parents: 41
diff changeset
  2591
                            err = KErrArgument;
hgs
parents: 41
diff changeset
  2592
                            }
hgs
parents: 41
diff changeset
  2593
                        }
hgs
parents: 41
diff changeset
  2594
                    else
hgs
parents: 41
diff changeset
  2595
                        {
hgs
parents: 41
diff changeset
  2596
                        err = KErrArgument;
hgs
parents: 41
diff changeset
  2597
                        }
hgs
parents: 41
diff changeset
  2598
                    CleanupStack::PopAndDestroy( &array );
hgs
parents: 41
diff changeset
  2599
                    break;
hgs
parents: 41
diff changeset
  2600
                    }
hgs
parents: 41
diff changeset
  2601
                default:
hgs
parents: 41
diff changeset
  2602
                    {
hgs
parents: 41
diff changeset
  2603
                    break;
hgs
parents: 41
diff changeset
  2604
                    }
hgs
parents: 41
diff changeset
  2605
                }            
hgs
parents: 41
diff changeset
  2606
            CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  2607
            CleanupStack::PopAndDestroy( conFromPS );
hgs
parents: 41
diff changeset
  2608
            CleanupStack::PopAndDestroy( conFromASY );
hgs
parents: 41
diff changeset
  2609
            retval = err;
hgs
parents: 41
diff changeset
  2610
            break;
hgs
parents: 41
diff changeset
  2611
            }
hgs
parents: 41
diff changeset
  2612
            
hgs
parents: 41
diff changeset
  2613
        case ETFCheckHdmiObject:
hgs
parents: 41
diff changeset
  2614
            {
hgs
parents: 41
diff changeset
  2615
            TInt err = KErrNone;
hgs
parents: 41
diff changeset
  2616
            TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Check HDMI object %d" ),
hgs
parents: 41
diff changeset
  2617
                aParameter.iArg1 ) );
hgs
parents: 41
diff changeset
  2618
            switch( aParameter.iArg1 )
hgs
parents: 41
diff changeset
  2619
                {
hgs
parents: 41
diff changeset
  2620
                case EAccPolHdmiObjectCon:
hgs
parents: 41
diff changeset
  2621
                    {
hgs
parents: 41
diff changeset
  2622
                    err = CheckHdmiContainerObjectL();
hgs
parents: 41
diff changeset
  2623
                    break;
hgs
parents: 41
diff changeset
  2624
                    }
hgs
parents: 41
diff changeset
  2625
                case EAccPolHdmiSinkObject:
hgs
parents: 41
diff changeset
  2626
                    {
hgs
parents: 41
diff changeset
  2627
                    err = CheckHdmiSinkObjectL();
hgs
parents: 41
diff changeset
  2628
                    break;
hgs
parents: 41
diff changeset
  2629
                    }
hgs
parents: 41
diff changeset
  2630
                case EAccPolHdmiAudioFormatObject:
hgs
parents: 41
diff changeset
  2631
                    {
hgs
parents: 41
diff changeset
  2632
                    err = CheckHdmiAudioFormatObjectL();
hgs
parents: 41
diff changeset
  2633
                    break;
hgs
parents: 41
diff changeset
  2634
                    }
hgs
parents: 41
diff changeset
  2635
                case EAccPolHdmiLatencyObject:
hgs
parents: 41
diff changeset
  2636
                    {
hgs
parents: 41
diff changeset
  2637
                    err = CheckHdmiLatencyObjectL();
hgs
parents: 41
diff changeset
  2638
                    break;
hgs
parents: 41
diff changeset
  2639
                    }
hgs
parents: 41
diff changeset
  2640
                case EAccPolHdmiSpeakerAllocationObject:
hgs
parents: 41
diff changeset
  2641
                    {
hgs
parents: 41
diff changeset
  2642
                    err = CheckHdmiSpeakerAllocationObjectL();
hgs
parents: 41
diff changeset
  2643
                    break;
hgs
parents: 41
diff changeset
  2644
                    }
hgs
parents: 41
diff changeset
  2645
                case EAccPolHdmiVideoFormatObject:
hgs
parents: 41
diff changeset
  2646
                    {
hgs
parents: 41
diff changeset
  2647
                    err = CheckHdmiVideoFormatObjectL();
hgs
parents: 41
diff changeset
  2648
                    break;
hgs
parents: 41
diff changeset
  2649
                    }
hgs
parents: 41
diff changeset
  2650
                default:
hgs
parents: 41
diff changeset
  2651
                    {
hgs
parents: 41
diff changeset
  2652
                    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Invalid HDMI object=%d" ),
hgs
parents: 41
diff changeset
  2653
                        aParameter.iArg1 ) );
hgs
parents: 41
diff changeset
  2654
                    err = KErrArgument;
hgs
parents: 41
diff changeset
  2655
                    break;
hgs
parents: 41
diff changeset
  2656
                    }
hgs
parents: 41
diff changeset
  2657
                }
hgs
parents: 41
diff changeset
  2658
            TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL: Check HDMI object %d returned with code %d" ),
hgs
parents: 41
diff changeset
  2659
                aParameter.iArg1, err ) );
hgs
parents: 41
diff changeset
  2660
            retval = err;
hgs
parents: 41
diff changeset
  2661
            break;
hgs
parents: 41
diff changeset
  2662
            }
hgs
parents: 41
diff changeset
  2663
hgs
parents: 41
diff changeset
  2664
        default:
hgs
parents: 41
diff changeset
  2665
            TRACE_ASSERT_ALWAYS;
hgs
parents: 41
diff changeset
  2666
            break;
hgs
parents: 41
diff changeset
  2667
hgs
parents: 41
diff changeset
  2668
        }
hgs
parents: 41
diff changeset
  2669
    User::LeaveIfError( retval );
hgs
parents: 41
diff changeset
  2670
    }
hgs
parents: 41
diff changeset
  2671
hgs
parents: 41
diff changeset
  2672
//
hgs
parents: 41
diff changeset
  2673
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  2674
// CTFAccessoryTestControl::TestValueRecordL()
hgs
parents: 41
diff changeset
  2675
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
  2676
//
hgs
parents: 41
diff changeset
  2677
TInt CTFAccessoryTestControl::TestValueRecordL()
hgs
parents: 41
diff changeset
  2678
    {
hgs
parents: 41
diff changeset
  2679
    TInt ret( KErrNone );
hgs
parents: 41
diff changeset
  2680
hgs
parents: 41
diff changeset
  2681
    TAccPolValueRecord valueRecord;
hgs
parents: 41
diff changeset
  2682
    TBuf8<KAccMaxECIBlockLength> eci;
hgs
parents: 41
diff changeset
  2683
    TBuf8<KAccMaxECIBlockLength> check;
hgs
parents: 41
diff changeset
  2684
    _LIT( Kissa, "Kissa" );
hgs
parents: 41
diff changeset
  2685
    eci.Copy( Kissa );
hgs
parents: 41
diff changeset
  2686
hgs
parents: 41
diff changeset
  2687
    valueRecord.SetValue( eci );
hgs
parents: 41
diff changeset
  2688
    check.Copy( valueRecord.ValueRef() );
hgs
parents: 41
diff changeset
  2689
hgs
parents: 41
diff changeset
  2690
    if( KErrNone != eci.Compare( check ) )
hgs
parents: 41
diff changeset
  2691
        {
hgs
parents: 41
diff changeset
  2692
        User::Leave( KErrGeneral );
hgs
parents: 41
diff changeset
  2693
        }
hgs
parents: 41
diff changeset
  2694
hgs
parents: 41
diff changeset
  2695
    TDesC8& test( valueRecord.ValueRef() );
hgs
parents: 41
diff changeset
  2696
    if( KErrNone != eci.Compare( test ) )
hgs
parents: 41
diff changeset
  2697
        {
hgs
parents: 41
diff changeset
  2698
        User::Leave( KErrGeneral );
hgs
parents: 41
diff changeset
  2699
        }
hgs
parents: 41
diff changeset
  2700
hgs
parents: 41
diff changeset
  2701
    return ret;
hgs
parents: 41
diff changeset
  2702
    }
hgs
parents: 41
diff changeset
  2703
hgs
parents: 41
diff changeset
  2704
//
hgs
parents: 41
diff changeset
  2705
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  2706
// CTFAccessoryTestControl::TestBaseSerializationL()
hgs
parents: 41
diff changeset
  2707
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  2708
//
hgs
parents: 41
diff changeset
  2709
TInt CTFAccessoryTestControl::TestBaseSerializationL()
hgs
parents: 41
diff changeset
  2710
    {
hgs
parents: 41
diff changeset
  2711
    TInt ret( KErrNone );
hgs
parents: 41
diff changeset
  2712
    TInt err( KErrNone );
hgs
parents: 41
diff changeset
  2713
hgs
parents: 41
diff changeset
  2714
    /*** One container *************************************************************/
hgs
parents: 41
diff changeset
  2715
    CAccPolAudioStreamFormatCon* container1 =
hgs
parents: 41
diff changeset
  2716
        CAccPolAudioStreamFormatCon::NewLC();
hgs
parents: 41
diff changeset
  2717
    CAccPolAudioStreamFormatCon* container2 =
hgs
parents: 41
diff changeset
  2718
        CAccPolAudioStreamFormatCon::NewLC();
hgs
parents: 41
diff changeset
  2719
hgs
parents: 41
diff changeset
  2720
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  2721
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  2722
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  2723
hgs
parents: 41
diff changeset
  2724
    //Externalize to buf
hgs
parents: 41
diff changeset
  2725
    RBufWriteStream wStrm;
hgs
parents: 41
diff changeset
  2726
    ( void )wStrm.Open( *buf );
hgs
parents: 41
diff changeset
  2727
    wStrm.PushL();
hgs
parents: 41
diff changeset
  2728
    container1->ExternalizeL( wStrm );
hgs
parents: 41
diff changeset
  2729
    wStrm.CommitL();
hgs
parents: 41
diff changeset
  2730
    wStrm.Close();
hgs
parents: 41
diff changeset
  2731
    wStrm.Pop();
hgs
parents: 41
diff changeset
  2732
hgs
parents: 41
diff changeset
  2733
    //Internalize from buf
hgs
parents: 41
diff changeset
  2734
    RBufReadStream rStrm;
hgs
parents: 41
diff changeset
  2735
    ( void )rStrm.Open( *buf );
hgs
parents: 41
diff changeset
  2736
    rStrm.PushL();
hgs
parents: 41
diff changeset
  2737
    container2->InternalizeL( rStrm );
hgs
parents: 41
diff changeset
  2738
    rStrm.Close();
hgs
parents: 41
diff changeset
  2739
    rStrm.Pop();
hgs
parents: 41
diff changeset
  2740
hgs
parents: 41
diff changeset
  2741
    //container1 content must equal to container2 content
hgs
parents: 41
diff changeset
  2742
    err = ( 0 == memcompare( reinterpret_cast<TUint8*> ( container1 ),
hgs
parents: 41
diff changeset
  2743
        sizeof(CAccPolObjectCon),
hgs
parents: 41
diff changeset
  2744
        reinterpret_cast<TUint8*> ( container2 ),
hgs
parents: 41
diff changeset
  2745
        sizeof(CAccPolObjectCon) ) ) ? KErrNone : KErrGeneral;
hgs
parents: 41
diff changeset
  2746
    User::LeaveIfError( err );
hgs
parents: 41
diff changeset
  2747
hgs
parents: 41
diff changeset
  2748
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  2749
    CleanupStack::PopAndDestroy( container2 );
hgs
parents: 41
diff changeset
  2750
    CleanupStack::PopAndDestroy( container1 );
hgs
parents: 41
diff changeset
  2751
    container2 = NULL;
hgs
parents: 41
diff changeset
  2752
    container1 = NULL;
hgs
parents: 41
diff changeset
  2753
    /* end *************************************************************************/
hgs
parents: 41
diff changeset
  2754
hgs
parents: 41
diff changeset
  2755
    //Make test again!
hgs
parents: 41
diff changeset
  2756
hgs
parents: 41
diff changeset
  2757
    CAccPolAudioStreamFormat* audioStream1 =
hgs
parents: 41
diff changeset
  2758
        CAccPolAudioStreamFormat::NewLC( EAccPolAudioInputStreamObject,
hgs
parents: 41
diff changeset
  2759
            15,
hgs
parents: 41
diff changeset
  2760
            KUidFormatMP3,
hgs
parents: 41
diff changeset
  2761
            CAccPolAudioStreamFormat::EStereo,
hgs
parents: 41
diff changeset
  2762
            CAccPolAudioStreamFormat::EBitsPerSample24,
hgs
parents: 41
diff changeset
  2763
            11 );
hgs
parents: 41
diff changeset
  2764
hgs
parents: 41
diff changeset
  2765
    buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  2766
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  2767
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  2768
hgs
parents: 41
diff changeset
  2769
    //Externalize to buf        
hgs
parents: 41
diff changeset
  2770
    ( void )wStrm.Open( *buf );
hgs
parents: 41
diff changeset
  2771
    wStrm.PushL();
hgs
parents: 41
diff changeset
  2772
    audioStream1->ExternalizeL( wStrm );
hgs
parents: 41
diff changeset
  2773
    wStrm.CommitL();
hgs
parents: 41
diff changeset
  2774
    wStrm.Close();
hgs
parents: 41
diff changeset
  2775
    wStrm.Pop();
hgs
parents: 41
diff changeset
  2776
hgs
parents: 41
diff changeset
  2777
    //Internalize from buf
hgs
parents: 41
diff changeset
  2778
    ( void )rStrm.Open( *buf );
hgs
parents: 41
diff changeset
  2779
    rStrm.PushL();
hgs
parents: 41
diff changeset
  2780
hgs
parents: 41
diff changeset
  2781
    TInt objectid = rStrm.ReadUint8L();
hgs
parents: 41
diff changeset
  2782
hgs
parents: 41
diff changeset
  2783
    if( ( TStreamConObjectType )objectid == EAccPolAudioInputStreamObject )
hgs
parents: 41
diff changeset
  2784
        {
hgs
parents: 41
diff changeset
  2785
        CAccPolAudioStreamFormat* audioStream2 =
hgs
parents: 41
diff changeset
  2786
            CAccPolAudioStreamFormat::NewLC( EAccPolAudioInputStreamObject );
hgs
parents: 41
diff changeset
  2787
hgs
parents: 41
diff changeset
  2788
        audioStream2->InternalizeL( rStrm );
hgs
parents: 41
diff changeset
  2789
hgs
parents: 41
diff changeset
  2790
        //audioStream1 content must equal to audioStream2 content
hgs
parents: 41
diff changeset
  2791
        err = ( 0 == memcompare( reinterpret_cast<TUint8*> ( audioStream1 ),
hgs
parents: 41
diff changeset
  2792
            sizeof(CAccPolAudioStreamFormat),
hgs
parents: 41
diff changeset
  2793
            reinterpret_cast<TUint8*> ( audioStream2 ),
hgs
parents: 41
diff changeset
  2794
            sizeof(CAccPolAudioStreamFormat) ) ) ? KErrNone : KErrGeneral;
hgs
parents: 41
diff changeset
  2795
hgs
parents: 41
diff changeset
  2796
        User::LeaveIfError( err );
hgs
parents: 41
diff changeset
  2797
hgs
parents: 41
diff changeset
  2798
        CleanupStack::PopAndDestroy( audioStream2 );
hgs
parents: 41
diff changeset
  2799
hgs
parents: 41
diff changeset
  2800
        rStrm.Close();
hgs
parents: 41
diff changeset
  2801
        rStrm.Pop();
hgs
parents: 41
diff changeset
  2802
hgs
parents: 41
diff changeset
  2803
        }
hgs
parents: 41
diff changeset
  2804
    else
hgs
parents: 41
diff changeset
  2805
        {
hgs
parents: 41
diff changeset
  2806
        User::LeaveIfError( KErrGeneral );
hgs
parents: 41
diff changeset
  2807
        }
hgs
parents: 41
diff changeset
  2808
hgs
parents: 41
diff changeset
  2809
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  2810
    CleanupStack::PopAndDestroy( audioStream1 );
hgs
parents: 41
diff changeset
  2811
    audioStream1 = NULL;
hgs
parents: 41
diff changeset
  2812
    /* end *************************************************************************/
hgs
parents: 41
diff changeset
  2813
hgs
parents: 41
diff changeset
  2814
    return ret;
hgs
parents: 41
diff changeset
  2815
    }
hgs
parents: 41
diff changeset
  2816
hgs
parents: 41
diff changeset
  2817
//
hgs
parents: 41
diff changeset
  2818
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  2819
// CTFAccessoryTestControl::PublishAndSubscribeL()
hgs
parents: 41
diff changeset
  2820
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
  2821
//
hgs
parents: 41
diff changeset
  2822
void CTFAccessoryTestControl::PublishAndSubscribeL( TTFAccessoryTestCaseStateControl& aParameter )
hgs
parents: 41
diff changeset
  2823
    {
hgs
parents: 41
diff changeset
  2824
    TPckgBuf<TTFAccessoryPublishAndSubscribe> buf;
hgs
parents: 41
diff changeset
  2825
hgs
parents: 41
diff changeset
  2826
    buf().iTestCaseID = aParameter.iTestCaseID;
hgs
parents: 41
diff changeset
  2827
    buf().iMethod = aParameter.iMethod;
hgs
parents: 41
diff changeset
  2828
    buf().iParam1 = aParameter.iArg1;
hgs
parents: 41
diff changeset
  2829
    buf().iTimeMs = aParameter.iArg4;
hgs
parents: 41
diff changeset
  2830
    buf().iGenericID = iGenericId[aParameter.iGid];
hgs
parents: 41
diff changeset
  2831
hgs
parents: 41
diff changeset
  2832
    // Send capability to stub(s).
hgs
parents: 41
diff changeset
  2833
hgs
parents: 41
diff changeset
  2834
    // if( aParameter.iArg3 )
hgs
parents: 41
diff changeset
  2835
    // {
hgs
parents: 41
diff changeset
  2836
    buf().iParam2 = aParameter.iArg3;
hgs
parents: 41
diff changeset
  2837
    // }
hgs
parents: 41
diff changeset
  2838
hgs
parents: 41
diff changeset
  2839
    /*
hgs
parents: 41
diff changeset
  2840
     if( aParameter.iArg3->Compare( KNullDesC ) )
hgs
parents: 41
diff changeset
  2841
     {
hgs
parents: 41
diff changeset
  2842
     buf().iParam2.Copy( *aParameter.iArg3 );    
hgs
parents: 41
diff changeset
  2843
     }
hgs
parents: 41
diff changeset
  2844
hgs
parents: 41
diff changeset
  2845
     */
hgs
parents: 41
diff changeset
  2846
    User::LeaveIfError( iSubscribe.Set( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
  2847
        KTFAccessoryMethod,
hgs
parents: 41
diff changeset
  2848
        buf ) );
hgs
parents: 41
diff changeset
  2849
    }
hgs
parents: 41
diff changeset
  2850
hgs
parents: 41
diff changeset
  2851
//
hgs
parents: 41
diff changeset
  2852
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  2853
// CTFAccessoryTestControl::CreateHdmiObjectsToPubSubL()
hgs
parents: 41
diff changeset
  2854
// ----------------------------------------------------------------------------------   
hgs
parents: 41
diff changeset
  2855
//
hgs
parents: 41
diff changeset
  2856
void CTFAccessoryTestControl::CreateHdmiObjectsToPubSubL(
hgs
parents: 41
diff changeset
  2857
    TTFAccessoryTestCaseStateControl& aParameter )
hgs
parents: 41
diff changeset
  2858
    {
hgs
parents: 41
diff changeset
  2859
    // Define property just in case
hgs
parents: 41
diff changeset
  2860
    RProperty::Define( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
  2861
        KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
  2862
        RProperty::EByteArray );
hgs
parents: 41
diff changeset
  2863
    
hgs
parents: 41
diff changeset
  2864
    // Create HDMI container
hgs
parents: 41
diff changeset
  2865
    CAccPolHdmiObjectCon* con = CAccPolHdmiObjectCon::NewLC();
hgs
parents: 41
diff changeset
  2866
    switch( aParameter.iArg3 )
hgs
parents: 41
diff changeset
  2867
        {
hgs
parents: 41
diff changeset
  2868
        case KAccVideoHdmiAttributes:
hgs
parents: 41
diff changeset
  2869
            {
hgs
parents: 41
diff changeset
  2870
            // Create audio format object
hgs
parents: 41
diff changeset
  2871
            CreateHdmiObjectL( *con, EAccPolHdmiAudioFormatObject );
hgs
parents: 41
diff changeset
  2872
            
hgs
parents: 41
diff changeset
  2873
            // Create latency object
hgs
parents: 41
diff changeset
  2874
            CreateHdmiObjectL( *con, EAccPolHdmiLatencyObject );
hgs
parents: 41
diff changeset
  2875
            
hgs
parents: 41
diff changeset
  2876
            // Create sink object
hgs
parents: 41
diff changeset
  2877
            CreateHdmiObjectL( *con, EAccPolHdmiSinkObject );
hgs
parents: 41
diff changeset
  2878
            
hgs
parents: 41
diff changeset
  2879
            // Create speaker allocation object
hgs
parents: 41
diff changeset
  2880
            CreateHdmiObjectL( *con, EAccPolHdmiSpeakerAllocationObject );
hgs
parents: 41
diff changeset
  2881
            
hgs
parents: 41
diff changeset
  2882
            // Create video format object
hgs
parents: 41
diff changeset
  2883
            CreateHdmiObjectL( *con, EAccPolHdmiVideoFormatObject );
hgs
parents: 41
diff changeset
  2884
            break;
hgs
parents: 41
diff changeset
  2885
            }
hgs
parents: 41
diff changeset
  2886
        case KAccVideoFormat:
hgs
parents: 41
diff changeset
  2887
            {
hgs
parents: 41
diff changeset
  2888
            // Create video format object
hgs
parents: 41
diff changeset
  2889
            CreateHdmiObjectL( *con, EAccPolHdmiVideoFormatObject );
hgs
parents: 41
diff changeset
  2890
            break;
hgs
parents: 41
diff changeset
  2891
            }
hgs
parents: 41
diff changeset
  2892
        default:
hgs
parents: 41
diff changeset
  2893
            {
hgs
parents: 41
diff changeset
  2894
            break;
hgs
parents: 41
diff changeset
  2895
            }
hgs
parents: 41
diff changeset
  2896
        }
hgs
parents: 41
diff changeset
  2897
    // Stream HDMI container to P&S
hgs
parents: 41
diff changeset
  2898
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  2899
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  2900
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  2901
hgs
parents: 41
diff changeset
  2902
    RBufWriteStream writeStream( *buf );
hgs
parents: 41
diff changeset
  2903
    writeStream.PushL();
hgs
parents: 41
diff changeset
  2904
    con->ExternalizeL( writeStream );
hgs
parents: 41
diff changeset
  2905
    writeStream.CommitL();
hgs
parents: 41
diff changeset
  2906
    CleanupStack::PopAndDestroy( &writeStream );
hgs
parents: 41
diff changeset
  2907
    
hgs
parents: 41
diff changeset
  2908
    TPtr8 bufPtr( buf->Ptr( 0 ) );
hgs
parents: 41
diff changeset
  2909
    TInt err = RProperty::Set( KTFAccessoryTestProperty,
hgs
parents: 41
diff changeset
  2910
        KTFAccessoryObjectMethod,
hgs
parents: 41
diff changeset
  2911
        bufPtr );
hgs
parents: 41
diff changeset
  2912
    User::LeaveIfError( err );
hgs
parents: 41
diff changeset
  2913
    
hgs
parents: 41
diff changeset
  2914
    // Check if ASY stub needs to be informed
hgs
parents: 41
diff changeset
  2915
    if( aParameter.iArg2 )
hgs
parents: 41
diff changeset
  2916
        {
hgs
parents: 41
diff changeset
  2917
        PublishAndSubscribeL( aParameter );
hgs
parents: 41
diff changeset
  2918
        }
hgs
parents: 41
diff changeset
  2919
    
hgs
parents: 41
diff changeset
  2920
    // Cleanup
hgs
parents: 41
diff changeset
  2921
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  2922
    CleanupStack::PopAndDestroy( con );
hgs
parents: 41
diff changeset
  2923
    }
hgs
parents: 41
diff changeset
  2924
hgs
parents: 41
diff changeset
  2925
//
hgs
parents: 41
diff changeset
  2926
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  2927
// CTFAccessoryTestControl::CheckHdmiContainerObjectL
hgs
parents: 41
diff changeset
  2928
// ----------------------------------------------------------------------------------   
hgs
parents: 41
diff changeset
  2929
TInt CTFAccessoryTestControl::CheckHdmiContainerObjectL()
hgs
parents: 41
diff changeset
  2930
    {
hgs
parents: 41
diff changeset
  2931
    TInt err = KErrNone;
hgs
parents: 41
diff changeset
  2932
    CAccPolHdmiObjectCon* con1 = NULL;
hgs
parents: 41
diff changeset
  2933
    CAccPolHdmiObjectCon* con2 = NULL;
hgs
parents: 41
diff changeset
  2934
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  2935
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  2936
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  2937
    
hgs
parents: 41
diff changeset
  2938
    // NewL
hgs
parents: 41
diff changeset
  2939
    con1 = CAccPolHdmiObjectCon::NewL();
hgs
parents: 41
diff changeset
  2940
    CleanupStack::PushL( con1 );
hgs
parents: 41
diff changeset
  2941
    CleanupStack::PopAndDestroy( con1 );
hgs
parents: 41
diff changeset
  2942
    
hgs
parents: 41
diff changeset
  2943
    // NewLC
hgs
parents: 41
diff changeset
  2944
    con1 = CAccPolHdmiObjectCon::NewLC();
hgs
parents: 41
diff changeset
  2945
    CleanupStack::PopAndDestroy( con1 );
hgs
parents: 41
diff changeset
  2946
    
hgs
parents: 41
diff changeset
  2947
    // Internalize & Externalize
hgs
parents: 41
diff changeset
  2948
    con1 = CAccPolHdmiObjectCon::NewLC();
hgs
parents: 41
diff changeset
  2949
    CreateHdmiObjectL( *con1, EAccPolHdmiAudioFormatObject );
hgs
parents: 41
diff changeset
  2950
    CreateHdmiObjectL( *con1, EAccPolHdmiLatencyObject );
hgs
parents: 41
diff changeset
  2951
    CreateHdmiObjectL( *con1, EAccPolHdmiSinkObject );
hgs
parents: 41
diff changeset
  2952
    CreateHdmiObjectL( *con1, EAccPolHdmiSpeakerAllocationObject );
hgs
parents: 41
diff changeset
  2953
    CreateHdmiObjectL( *con1, EAccPolHdmiVideoFormatObject );
hgs
parents: 41
diff changeset
  2954
    RBufWriteStream writeStream;
hgs
parents: 41
diff changeset
  2955
    writeStream.Open( *buf );
hgs
parents: 41
diff changeset
  2956
    writeStream.PushL();
hgs
parents: 41
diff changeset
  2957
    con1->ExternalizeL( writeStream );
hgs
parents: 41
diff changeset
  2958
    writeStream.CommitL();
hgs
parents: 41
diff changeset
  2959
    CleanupStack::PopAndDestroy( &writeStream );
hgs
parents: 41
diff changeset
  2960
    
hgs
parents: 41
diff changeset
  2961
    con2 = CAccPolHdmiObjectCon::NewLC();
hgs
parents: 41
diff changeset
  2962
    RBufReadStream readStream;
hgs
parents: 41
diff changeset
  2963
    readStream.Open( *buf );
hgs
parents: 41
diff changeset
  2964
    readStream.PushL();
hgs
parents: 41
diff changeset
  2965
    con2->InternalizeL( readStream );
hgs
parents: 41
diff changeset
  2966
    if( con1->Count() == con2->Count() )
hgs
parents: 41
diff changeset
  2967
        {
hgs
parents: 41
diff changeset
  2968
        TInt count = con1->Count();
hgs
parents: 41
diff changeset
  2969
        CAccPolObjectBase* objBase1 = NULL;
hgs
parents: 41
diff changeset
  2970
        CAccPolObjectBase* objBase2 = NULL;
hgs
parents: 41
diff changeset
  2971
        for( TInt i = 0; i < count; i++ )
hgs
parents: 41
diff changeset
  2972
            {
hgs
parents: 41
diff changeset
  2973
            objBase1 = con1->AtL( i );
hgs
parents: 41
diff changeset
  2974
            objBase2 = con2->AtL( i );
hgs
parents: 41
diff changeset
  2975
            if( objBase1->ObjectType() != objBase2->ObjectType() )
hgs
parents: 41
diff changeset
  2976
                {
hgs
parents: 41
diff changeset
  2977
                err = KErrArgument;
hgs
parents: 41
diff changeset
  2978
                }
hgs
parents: 41
diff changeset
  2979
            }
hgs
parents: 41
diff changeset
  2980
        }
hgs
parents: 41
diff changeset
  2981
    else
hgs
parents: 41
diff changeset
  2982
        {
hgs
parents: 41
diff changeset
  2983
        err = KErrArgument;
hgs
parents: 41
diff changeset
  2984
        }
hgs
parents: 41
diff changeset
  2985
    CleanupStack::PopAndDestroy( &readStream );
hgs
parents: 41
diff changeset
  2986
    CleanupStack::PopAndDestroy( con2 );
hgs
parents: 41
diff changeset
  2987
    CleanupStack::PopAndDestroy( con1 );
hgs
parents: 41
diff changeset
  2988
    
hgs
parents: 41
diff changeset
  2989
    // DuplicateLC
hgs
parents: 41
diff changeset
  2990
    con1 = CAccPolHdmiObjectCon::NewLC();
hgs
parents: 41
diff changeset
  2991
    CreateHdmiObjectL( *con1, EAccPolHdmiAudioFormatObject );
hgs
parents: 41
diff changeset
  2992
    CreateHdmiObjectL( *con1, EAccPolHdmiLatencyObject );
hgs
parents: 41
diff changeset
  2993
    CreateHdmiObjectL( *con1, EAccPolHdmiSinkObject );
hgs
parents: 41
diff changeset
  2994
    CreateHdmiObjectL( *con1, EAccPolHdmiSpeakerAllocationObject );
hgs
parents: 41
diff changeset
  2995
    CreateHdmiObjectL( *con1, EAccPolHdmiVideoFormatObject );
hgs
parents: 41
diff changeset
  2996
    con2 = static_cast<CAccPolHdmiObjectCon*>( con1->DuplicateLC() );
hgs
parents: 41
diff changeset
  2997
    if( con1->Count() == con2->Count() )
hgs
parents: 41
diff changeset
  2998
        {
hgs
parents: 41
diff changeset
  2999
        TInt count = con1->Count();
hgs
parents: 41
diff changeset
  3000
        CAccPolObjectBase* objBase1 = NULL;
hgs
parents: 41
diff changeset
  3001
        CAccPolObjectBase* objBase2 = NULL;
hgs
parents: 41
diff changeset
  3002
        for( TInt i = 0; i < count; i++ )
hgs
parents: 41
diff changeset
  3003
            {
hgs
parents: 41
diff changeset
  3004
            objBase1 = con1->AtL( i );
hgs
parents: 41
diff changeset
  3005
            objBase2 = con2->AtL( i );
hgs
parents: 41
diff changeset
  3006
            if( objBase1->ObjectType() != objBase2->ObjectType() )
hgs
parents: 41
diff changeset
  3007
                {
hgs
parents: 41
diff changeset
  3008
                err = KErrArgument;
hgs
parents: 41
diff changeset
  3009
                }
hgs
parents: 41
diff changeset
  3010
            }
hgs
parents: 41
diff changeset
  3011
        }
hgs
parents: 41
diff changeset
  3012
    else
hgs
parents: 41
diff changeset
  3013
        {
hgs
parents: 41
diff changeset
  3014
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3015
        }
hgs
parents: 41
diff changeset
  3016
    CleanupStack::PopAndDestroy( con2 );
hgs
parents: 41
diff changeset
  3017
    CleanupStack::PopAndDestroy( con1 );
hgs
parents: 41
diff changeset
  3018
    
hgs
parents: 41
diff changeset
  3019
    // Rest of the API
hgs
parents: 41
diff changeset
  3020
    con1 = CAccPolHdmiObjectCon::NewLC();
hgs
parents: 41
diff changeset
  3021
    THdmiConObjectType objectType = EAccPolHdmiObjectCon;
hgs
parents: 41
diff changeset
  3022
    TBool exit = EFalse;
hgs
parents: 41
diff changeset
  3023
    TInt index = 0;
hgs
parents: 41
diff changeset
  3024
    TInt count = 0;
hgs
parents: 41
diff changeset
  3025
    do
hgs
parents: 41
diff changeset
  3026
        {
hgs
parents: 41
diff changeset
  3027
        index++;
hgs
parents: 41
diff changeset
  3028
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3029
        objectType = ( THdmiConObjectType )( index );
hgs
parents: 41
diff changeset
  3030
        CreateHdmiObjectL( *con1, objectType );
hgs
parents: 41
diff changeset
  3031
        count = con1->Count();
hgs
parents: 41
diff changeset
  3032
        CAccPolObjectBase* obj = NULL;
hgs
parents: 41
diff changeset
  3033
        if( con1->Count() != index )
hgs
parents: 41
diff changeset
  3034
            {
hgs
parents: 41
diff changeset
  3035
            err = KErrArgument;
hgs
parents: 41
diff changeset
  3036
            break;
hgs
parents: 41
diff changeset
  3037
            }
hgs
parents: 41
diff changeset
  3038
        for( TInt ii = 0; ii < count; ii++ )
hgs
parents: 41
diff changeset
  3039
            {
hgs
parents: 41
diff changeset
  3040
            obj = con1->AtL( ii );
hgs
parents: 41
diff changeset
  3041
            if( obj->ObjectType() == objectType )
hgs
parents: 41
diff changeset
  3042
                {
hgs
parents: 41
diff changeset
  3043
                err = KErrNone;
hgs
parents: 41
diff changeset
  3044
                break;
hgs
parents: 41
diff changeset
  3045
                }
hgs
parents: 41
diff changeset
  3046
            }
hgs
parents: 41
diff changeset
  3047
        if( objectType == EAccPolHdmiVideoFormatObject )
hgs
parents: 41
diff changeset
  3048
            {
hgs
parents: 41
diff changeset
  3049
            // Last object
hgs
parents: 41
diff changeset
  3050
            exit = ETrue;
hgs
parents: 41
diff changeset
  3051
            }
hgs
parents: 41
diff changeset
  3052
        }
hgs
parents: 41
diff changeset
  3053
    while( !exit && ( err == KErrNone ) );
hgs
parents: 41
diff changeset
  3054
    CleanupStack::PopAndDestroy( con1 );
hgs
parents: 41
diff changeset
  3055
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  3056
    
hgs
parents: 41
diff changeset
  3057
    return err;
hgs
parents: 41
diff changeset
  3058
    }
hgs
parents: 41
diff changeset
  3059
hgs
parents: 41
diff changeset
  3060
//
hgs
parents: 41
diff changeset
  3061
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  3062
// CTFAccessoryTestControl::CheckHdmiSinkObjectL
hgs
parents: 41
diff changeset
  3063
// ----------------------------------------------------------------------------------   
hgs
parents: 41
diff changeset
  3064
TInt CTFAccessoryTestControl::CheckHdmiSinkObjectL()
hgs
parents: 41
diff changeset
  3065
    {
hgs
parents: 41
diff changeset
  3066
    TInt err = KErrNone;
hgs
parents: 41
diff changeset
  3067
    CAccPolHdmiSink* obj = NULL;
hgs
parents: 41
diff changeset
  3068
    CAccPolHdmiSink* objDuplicate = NULL;
hgs
parents: 41
diff changeset
  3069
    TUint8 objectType = 0;
hgs
parents: 41
diff changeset
  3070
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  3071
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  3072
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  3073
    
hgs
parents: 41
diff changeset
  3074
    // NewL
hgs
parents: 41
diff changeset
  3075
    obj = CAccPolHdmiSink::NewL();
hgs
parents: 41
diff changeset
  3076
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3077
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3078
hgs
parents: 41
diff changeset
  3079
    // NewL - with params
hgs
parents: 41
diff changeset
  3080
    obj = CAccPolHdmiSink::NewL( ETrue, ETrue );
hgs
parents: 41
diff changeset
  3081
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3082
    if( !obj->BasicAudioSupport() )
hgs
parents: 41
diff changeset
  3083
        {
hgs
parents: 41
diff changeset
  3084
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3085
        }
hgs
parents: 41
diff changeset
  3086
    if( !obj->HdcpSupport() )
hgs
parents: 41
diff changeset
  3087
        {
hgs
parents: 41
diff changeset
  3088
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3089
        }
hgs
parents: 41
diff changeset
  3090
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3091
    
hgs
parents: 41
diff changeset
  3092
    // NewLC
hgs
parents: 41
diff changeset
  3093
    obj = CAccPolHdmiSink::NewLC();
hgs
parents: 41
diff changeset
  3094
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3095
hgs
parents: 41
diff changeset
  3096
    // NewLC - with params
hgs
parents: 41
diff changeset
  3097
    obj = CAccPolHdmiSink::NewLC( ETrue, ETrue );
hgs
parents: 41
diff changeset
  3098
    if( !obj->BasicAudioSupport() )
hgs
parents: 41
diff changeset
  3099
        {
hgs
parents: 41
diff changeset
  3100
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3101
        }
hgs
parents: 41
diff changeset
  3102
    if( !obj->HdcpSupport() )
hgs
parents: 41
diff changeset
  3103
        {
hgs
parents: 41
diff changeset
  3104
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3105
        }
hgs
parents: 41
diff changeset
  3106
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3107
    
hgs
parents: 41
diff changeset
  3108
    // Internalize & Externalize
hgs
parents: 41
diff changeset
  3109
    obj = CAccPolHdmiSink::NewLC( ETrue, ETrue );
hgs
parents: 41
diff changeset
  3110
    
hgs
parents: 41
diff changeset
  3111
    RBufWriteStream writeStream;
hgs
parents: 41
diff changeset
  3112
    writeStream.Open( *buf );
hgs
parents: 41
diff changeset
  3113
    writeStream.PushL();
hgs
parents: 41
diff changeset
  3114
    obj->ExternalizeL( writeStream );
hgs
parents: 41
diff changeset
  3115
    writeStream.CommitL();
hgs
parents: 41
diff changeset
  3116
    CleanupStack::PopAndDestroy( &writeStream );
hgs
parents: 41
diff changeset
  3117
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3118
    
hgs
parents: 41
diff changeset
  3119
    obj = CAccPolHdmiSink::NewLC();
hgs
parents: 41
diff changeset
  3120
    RBufReadStream readStream;
hgs
parents: 41
diff changeset
  3121
    readStream.Open( *buf );
hgs
parents: 41
diff changeset
  3122
    readStream.PushL();
hgs
parents: 41
diff changeset
  3123
    objectType = readStream.ReadUint8L();
hgs
parents: 41
diff changeset
  3124
    obj->InternalizeL( readStream );
hgs
parents: 41
diff changeset
  3125
    if( objectType != EAccPolHdmiSinkObject )
hgs
parents: 41
diff changeset
  3126
        {
hgs
parents: 41
diff changeset
  3127
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3128
        }
hgs
parents: 41
diff changeset
  3129
    if( !obj->BasicAudioSupport() )
hgs
parents: 41
diff changeset
  3130
        {
hgs
parents: 41
diff changeset
  3131
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3132
        }
hgs
parents: 41
diff changeset
  3133
    if( !obj->HdcpSupport() )
hgs
parents: 41
diff changeset
  3134
        {
hgs
parents: 41
diff changeset
  3135
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3136
        }
hgs
parents: 41
diff changeset
  3137
    CleanupStack::PopAndDestroy( &readStream );
hgs
parents: 41
diff changeset
  3138
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3139
hgs
parents: 41
diff changeset
  3140
    // DuplicateLC - mem compare can be used since the object does not contain
hgs
parents: 41
diff changeset
  3141
    // any ponters as memebers
hgs
parents: 41
diff changeset
  3142
    obj = CAccPolHdmiSink::NewLC( ETrue, ETrue );
hgs
parents: 41
diff changeset
  3143
    objDuplicate = static_cast<CAccPolHdmiSink*>( obj->DuplicateLC() );
hgs
parents: 41
diff changeset
  3144
    TUint8* left = reinterpret_cast<TUint8*>( obj );
hgs
parents: 41
diff changeset
  3145
    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
hgs
parents: 41
diff changeset
  3146
    TInt size = sizeof( CAccPolHdmiSink );
hgs
parents: 41
diff changeset
  3147
    if( Mem::Compare( left, size, right, size ) != KErrNone )
hgs
parents: 41
diff changeset
  3148
        {
hgs
parents: 41
diff changeset
  3149
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3150
        }
hgs
parents: 41
diff changeset
  3151
    CleanupStack::PopAndDestroy( objDuplicate );
hgs
parents: 41
diff changeset
  3152
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3153
hgs
parents: 41
diff changeset
  3154
    // Rest of the API
hgs
parents: 41
diff changeset
  3155
    obj = CAccPolHdmiSink::NewLC();
hgs
parents: 41
diff changeset
  3156
    obj->SetBasicAudioSupport( ETrue );
hgs
parents: 41
diff changeset
  3157
    if( !obj->BasicAudioSupport() )
hgs
parents: 41
diff changeset
  3158
        {
hgs
parents: 41
diff changeset
  3159
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3160
        }
hgs
parents: 41
diff changeset
  3161
    obj->SetHdcpSupport( ETrue );
hgs
parents: 41
diff changeset
  3162
    if( !obj->HdcpSupport() )
hgs
parents: 41
diff changeset
  3163
        {
hgs
parents: 41
diff changeset
  3164
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3165
        }
hgs
parents: 41
diff changeset
  3166
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3167
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  3168
    return err;
hgs
parents: 41
diff changeset
  3169
    }
hgs
parents: 41
diff changeset
  3170
hgs
parents: 41
diff changeset
  3171
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  3172
// CTFAccessoryTestControl::CheckHdmiAudioFormatObjectL
hgs
parents: 41
diff changeset
  3173
// ----------------------------------------------------------------------------------   
hgs
parents: 41
diff changeset
  3174
TInt CTFAccessoryTestControl::CheckHdmiAudioFormatObjectL()
hgs
parents: 41
diff changeset
  3175
    {
hgs
parents: 41
diff changeset
  3176
    TInt err = KErrNone;
hgs
parents: 41
diff changeset
  3177
    CAccPolHdmiAudioFormat* obj = NULL;
hgs
parents: 41
diff changeset
  3178
    CAccPolHdmiAudioFormat* objDuplicate = NULL;
hgs
parents: 41
diff changeset
  3179
    TUint8 objectType = 0;
hgs
parents: 41
diff changeset
  3180
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  3181
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  3182
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  3183
    
hgs
parents: 41
diff changeset
  3184
    // NewL
hgs
parents: 41
diff changeset
  3185
    obj = CAccPolHdmiAudioFormat::NewL();
hgs
parents: 41
diff changeset
  3186
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3187
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3188
    
hgs
parents: 41
diff changeset
  3189
    // NewL - with params
hgs
parents: 41
diff changeset
  3190
    obj = CAccPolHdmiAudioFormat::NewL( HdmiAudioFormat::KUidFormatPCM16,
hgs
parents: 41
diff changeset
  3191
        1,
hgs
parents: 41
diff changeset
  3192
        1,
hgs
parents: 41
diff changeset
  3193
        1,
hgs
parents: 41
diff changeset
  3194
        1,
hgs
parents: 41
diff changeset
  3195
        1 );
hgs
parents: 41
diff changeset
  3196
    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatPCM16 )
hgs
parents: 41
diff changeset
  3197
        {
hgs
parents: 41
diff changeset
  3198
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3199
        }
hgs
parents: 41
diff changeset
  3200
    if( obj->ChannelCount() != 1 )
hgs
parents: 41
diff changeset
  3201
        {
hgs
parents: 41
diff changeset
  3202
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3203
        }
hgs
parents: 41
diff changeset
  3204
    if( obj->BitResolution() != 1 )
hgs
parents: 41
diff changeset
  3205
        {
hgs
parents: 41
diff changeset
  3206
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3207
        }
hgs
parents: 41
diff changeset
  3208
    if( obj->MaxBitResolution() != 1 )
hgs
parents: 41
diff changeset
  3209
        {
hgs
parents: 41
diff changeset
  3210
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3211
        }
hgs
parents: 41
diff changeset
  3212
    if( obj->SamFreq() != 1 )
hgs
parents: 41
diff changeset
  3213
        {
hgs
parents: 41
diff changeset
  3214
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3215
        }
hgs
parents: 41
diff changeset
  3216
    if( obj->FormatDependentValue() != 1 )
hgs
parents: 41
diff changeset
  3217
        {
hgs
parents: 41
diff changeset
  3218
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3219
        }
hgs
parents: 41
diff changeset
  3220
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3221
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3222
    
hgs
parents: 41
diff changeset
  3223
    // NewLC
hgs
parents: 41
diff changeset
  3224
    obj = CAccPolHdmiAudioFormat::NewLC();
hgs
parents: 41
diff changeset
  3225
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3226
    
hgs
parents: 41
diff changeset
  3227
    // NewLC - with params
hgs
parents: 41
diff changeset
  3228
    obj = CAccPolHdmiAudioFormat::NewLC( HdmiAudioFormat::KUidFormatPCM16,
hgs
parents: 41
diff changeset
  3229
        1,
hgs
parents: 41
diff changeset
  3230
        1,
hgs
parents: 41
diff changeset
  3231
        1,
hgs
parents: 41
diff changeset
  3232
        1,
hgs
parents: 41
diff changeset
  3233
        1 );
hgs
parents: 41
diff changeset
  3234
    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatPCM16 )
hgs
parents: 41
diff changeset
  3235
        {
hgs
parents: 41
diff changeset
  3236
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3237
        }
hgs
parents: 41
diff changeset
  3238
    if( obj->ChannelCount() != 1 )
hgs
parents: 41
diff changeset
  3239
        {
hgs
parents: 41
diff changeset
  3240
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3241
        }
hgs
parents: 41
diff changeset
  3242
    if( obj->BitResolution() != 1 )
hgs
parents: 41
diff changeset
  3243
        {
hgs
parents: 41
diff changeset
  3244
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3245
        }
hgs
parents: 41
diff changeset
  3246
    if( obj->MaxBitResolution() != 1 )
hgs
parents: 41
diff changeset
  3247
        {
hgs
parents: 41
diff changeset
  3248
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3249
        }
hgs
parents: 41
diff changeset
  3250
    if( obj->SamFreq() != 1 )
hgs
parents: 41
diff changeset
  3251
        {
hgs
parents: 41
diff changeset
  3252
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3253
        }
hgs
parents: 41
diff changeset
  3254
    if( obj->FormatDependentValue() != 1 )
hgs
parents: 41
diff changeset
  3255
        {
hgs
parents: 41
diff changeset
  3256
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3257
        }
hgs
parents: 41
diff changeset
  3258
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3259
    
hgs
parents: 41
diff changeset
  3260
    // Internalize & Externalize
hgs
parents: 41
diff changeset
  3261
    obj = CAccPolHdmiAudioFormat::NewLC( HdmiAudioFormat::KUidFormatPCM16,
hgs
parents: 41
diff changeset
  3262
        1,
hgs
parents: 41
diff changeset
  3263
        1,
hgs
parents: 41
diff changeset
  3264
        1,
hgs
parents: 41
diff changeset
  3265
        1,
hgs
parents: 41
diff changeset
  3266
        1 );
hgs
parents: 41
diff changeset
  3267
    RBufWriteStream writeStream;
hgs
parents: 41
diff changeset
  3268
    writeStream.Open( *buf );
hgs
parents: 41
diff changeset
  3269
    writeStream.PushL();
hgs
parents: 41
diff changeset
  3270
    obj->ExternalizeL( writeStream );
hgs
parents: 41
diff changeset
  3271
    writeStream.CommitL();
hgs
parents: 41
diff changeset
  3272
    CleanupStack::PopAndDestroy( &writeStream );
hgs
parents: 41
diff changeset
  3273
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3274
    
hgs
parents: 41
diff changeset
  3275
    obj = CAccPolHdmiAudioFormat::NewLC();
hgs
parents: 41
diff changeset
  3276
    RBufReadStream readStream;
hgs
parents: 41
diff changeset
  3277
    readStream.Open( *buf );
hgs
parents: 41
diff changeset
  3278
    readStream.PushL();
hgs
parents: 41
diff changeset
  3279
    objectType = readStream.ReadUint8L();
hgs
parents: 41
diff changeset
  3280
    obj->InternalizeL( readStream );
hgs
parents: 41
diff changeset
  3281
    if( objectType != EAccPolHdmiAudioFormatObject )
hgs
parents: 41
diff changeset
  3282
        {
hgs
parents: 41
diff changeset
  3283
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3284
        }
hgs
parents: 41
diff changeset
  3285
    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatPCM16 )
hgs
parents: 41
diff changeset
  3286
        {
hgs
parents: 41
diff changeset
  3287
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3288
        }
hgs
parents: 41
diff changeset
  3289
    if( obj->ChannelCount() != 1 )
hgs
parents: 41
diff changeset
  3290
        {
hgs
parents: 41
diff changeset
  3291
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3292
        }
hgs
parents: 41
diff changeset
  3293
    if( obj->BitResolution() != 1 )
hgs
parents: 41
diff changeset
  3294
        {
hgs
parents: 41
diff changeset
  3295
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3296
        }
hgs
parents: 41
diff changeset
  3297
    if( obj->MaxBitResolution() != 1 )
hgs
parents: 41
diff changeset
  3298
        {
hgs
parents: 41
diff changeset
  3299
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3300
        }
hgs
parents: 41
diff changeset
  3301
    if( obj->SamFreq() != 1 )
hgs
parents: 41
diff changeset
  3302
        {
hgs
parents: 41
diff changeset
  3303
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3304
        }
hgs
parents: 41
diff changeset
  3305
    if( obj->FormatDependentValue() != 1 )
hgs
parents: 41
diff changeset
  3306
        {
hgs
parents: 41
diff changeset
  3307
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3308
        }
hgs
parents: 41
diff changeset
  3309
    CleanupStack::PopAndDestroy( &readStream );
hgs
parents: 41
diff changeset
  3310
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3311
    
hgs
parents: 41
diff changeset
  3312
    // DuplicateLC - mem compare can be used since the object does not contain
hgs
parents: 41
diff changeset
  3313
    // any ponters as memebers
hgs
parents: 41
diff changeset
  3314
    obj = CAccPolHdmiAudioFormat::NewLC( HdmiAudioFormat::KUidFormatPCM16,
hgs
parents: 41
diff changeset
  3315
        1,
hgs
parents: 41
diff changeset
  3316
        1,
hgs
parents: 41
diff changeset
  3317
        1,
hgs
parents: 41
diff changeset
  3318
        1,
hgs
parents: 41
diff changeset
  3319
        1 );
hgs
parents: 41
diff changeset
  3320
    objDuplicate = static_cast<CAccPolHdmiAudioFormat*>( obj->DuplicateLC() );
hgs
parents: 41
diff changeset
  3321
    TUint8* left = reinterpret_cast<TUint8*>( obj );
hgs
parents: 41
diff changeset
  3322
    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
hgs
parents: 41
diff changeset
  3323
    TInt size = sizeof( CAccPolHdmiSink );
hgs
parents: 41
diff changeset
  3324
    if( Mem::Compare( left, size, right, size ) != KErrNone )
hgs
parents: 41
diff changeset
  3325
        {
hgs
parents: 41
diff changeset
  3326
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3327
        }
hgs
parents: 41
diff changeset
  3328
    CleanupStack::PopAndDestroy( objDuplicate );
hgs
parents: 41
diff changeset
  3329
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3330
hgs
parents: 41
diff changeset
  3331
    // Rest of the API
hgs
parents: 41
diff changeset
  3332
    obj = CAccPolHdmiAudioFormat::NewLC();
hgs
parents: 41
diff changeset
  3333
    obj->SetAudioFormat( HdmiAudioFormat::KUidFormatEAC3 );
hgs
parents: 41
diff changeset
  3334
    if( obj->AudioFormat() != HdmiAudioFormat::KUidFormatEAC3 )
hgs
parents: 41
diff changeset
  3335
        {
hgs
parents: 41
diff changeset
  3336
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3337
        }
hgs
parents: 41
diff changeset
  3338
    obj->SetChannelCount( 2 );
hgs
parents: 41
diff changeset
  3339
    if( obj->ChannelCount() != 2 )
hgs
parents: 41
diff changeset
  3340
        {
hgs
parents: 41
diff changeset
  3341
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3342
        }
hgs
parents: 41
diff changeset
  3343
    obj->SetBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample20 );
hgs
parents: 41
diff changeset
  3344
    if( !( obj->BitResolution() & CAccPolHdmiAudioFormat::EBitsPerSample20 ) )
hgs
parents: 41
diff changeset
  3345
        {
hgs
parents: 41
diff changeset
  3346
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3347
        }
hgs
parents: 41
diff changeset
  3348
    obj->SetMaxBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample24 );
hgs
parents: 41
diff changeset
  3349
    if( obj->MaxBitResolution() != CAccPolHdmiAudioFormat::EBitsPerSample24 )
hgs
parents: 41
diff changeset
  3350
        {
hgs
parents: 41
diff changeset
  3351
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3352
        }
hgs
parents: 41
diff changeset
  3353
    obj->SetSamFreq( CAccPolHdmiAudioFormat::ESamplingFreq192KHz );
hgs
parents: 41
diff changeset
  3354
    if( !( obj->SamFreq() & CAccPolHdmiAudioFormat::ESamplingFreq192KHz ) )
hgs
parents: 41
diff changeset
  3355
        {
hgs
parents: 41
diff changeset
  3356
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3357
        }
hgs
parents: 41
diff changeset
  3358
    obj->SetFormatDependentValue( CAccPolHdmiAudioFormat::EBitsPerSample16 );
hgs
parents: 41
diff changeset
  3359
    if( !( obj->FormatDependentValue() & CAccPolHdmiAudioFormat::EBitsPerSample16 ) )
hgs
parents: 41
diff changeset
  3360
        {
hgs
parents: 41
diff changeset
  3361
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3362
        }
hgs
parents: 41
diff changeset
  3363
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3364
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  3365
    
hgs
parents: 41
diff changeset
  3366
    return err;
hgs
parents: 41
diff changeset
  3367
    }
hgs
parents: 41
diff changeset
  3368
hgs
parents: 41
diff changeset
  3369
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  3370
// CTFAccessoryTestControl::CheckHdmiLatencyObjectL
hgs
parents: 41
diff changeset
  3371
// ----------------------------------------------------------------------------------   
hgs
parents: 41
diff changeset
  3372
TInt CTFAccessoryTestControl::CheckHdmiLatencyObjectL()
hgs
parents: 41
diff changeset
  3373
    {
hgs
parents: 41
diff changeset
  3374
    TInt err = KErrNone;
hgs
parents: 41
diff changeset
  3375
    CAccPolHdmiLatency* obj = NULL;
hgs
parents: 41
diff changeset
  3376
    CAccPolHdmiLatency* objDuplicate = NULL;
hgs
parents: 41
diff changeset
  3377
    TUint8 objectType = 0;
hgs
parents: 41
diff changeset
  3378
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  3379
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  3380
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  3381
    
hgs
parents: 41
diff changeset
  3382
    // NewL
hgs
parents: 41
diff changeset
  3383
    obj = CAccPolHdmiLatency::NewL();
hgs
parents: 41
diff changeset
  3384
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3385
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3386
    
hgs
parents: 41
diff changeset
  3387
    // NewL - with params
hgs
parents: 41
diff changeset
  3388
    obj = CAccPolHdmiLatency::NewL( HdmiLatency::KUidLatency, 100, 200 );
hgs
parents: 41
diff changeset
  3389
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3390
    if( obj->LatencyType() != HdmiLatency::KUidLatency )
hgs
parents: 41
diff changeset
  3391
        {
hgs
parents: 41
diff changeset
  3392
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3393
        }
hgs
parents: 41
diff changeset
  3394
    if( obj->AudioLatency() != 100 )
hgs
parents: 41
diff changeset
  3395
        {
hgs
parents: 41
diff changeset
  3396
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3397
        }
hgs
parents: 41
diff changeset
  3398
    if( obj->VideoLatency() != 200 )
hgs
parents: 41
diff changeset
  3399
        {
hgs
parents: 41
diff changeset
  3400
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3401
        }
hgs
parents: 41
diff changeset
  3402
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3403
    
hgs
parents: 41
diff changeset
  3404
    // NewLC
hgs
parents: 41
diff changeset
  3405
    obj = CAccPolHdmiLatency::NewLC();
hgs
parents: 41
diff changeset
  3406
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3407
    
hgs
parents: 41
diff changeset
  3408
    // NewLC - with params
hgs
parents: 41
diff changeset
  3409
    obj = CAccPolHdmiLatency::NewLC( HdmiLatency::KUidLatency, 100, 200 );
hgs
parents: 41
diff changeset
  3410
    if( obj->LatencyType() != HdmiLatency::KUidLatency )
hgs
parents: 41
diff changeset
  3411
        {
hgs
parents: 41
diff changeset
  3412
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3413
        }
hgs
parents: 41
diff changeset
  3414
    if( obj->AudioLatency() != 100 )
hgs
parents: 41
diff changeset
  3415
        {
hgs
parents: 41
diff changeset
  3416
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3417
        }
hgs
parents: 41
diff changeset
  3418
    if( obj->VideoLatency() != 200 )
hgs
parents: 41
diff changeset
  3419
        {
hgs
parents: 41
diff changeset
  3420
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3421
        }
hgs
parents: 41
diff changeset
  3422
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3423
    
hgs
parents: 41
diff changeset
  3424
    // Internalize & Externalize
hgs
parents: 41
diff changeset
  3425
    obj = CAccPolHdmiLatency::NewLC( HdmiLatency::KUidLatency, 100, 200 );
hgs
parents: 41
diff changeset
  3426
    RBufWriteStream writeStream;
hgs
parents: 41
diff changeset
  3427
    writeStream.Open( *buf );
hgs
parents: 41
diff changeset
  3428
    writeStream.PushL();
hgs
parents: 41
diff changeset
  3429
    obj->ExternalizeL( writeStream );
hgs
parents: 41
diff changeset
  3430
    writeStream.CommitL();
hgs
parents: 41
diff changeset
  3431
    CleanupStack::PopAndDestroy( &writeStream );
hgs
parents: 41
diff changeset
  3432
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3433
    
hgs
parents: 41
diff changeset
  3434
    obj = CAccPolHdmiLatency::NewLC();
hgs
parents: 41
diff changeset
  3435
    RBufReadStream readStream;
hgs
parents: 41
diff changeset
  3436
    readStream.Open( *buf );
hgs
parents: 41
diff changeset
  3437
    readStream.PushL();
hgs
parents: 41
diff changeset
  3438
    objectType = readStream.ReadUint8L();
hgs
parents: 41
diff changeset
  3439
    obj->InternalizeL( readStream );
hgs
parents: 41
diff changeset
  3440
    if( objectType != EAccPolHdmiLatencyObject )
hgs
parents: 41
diff changeset
  3441
        {
hgs
parents: 41
diff changeset
  3442
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3443
        }
hgs
parents: 41
diff changeset
  3444
    if( obj->LatencyType() != HdmiLatency::KUidLatency )
hgs
parents: 41
diff changeset
  3445
        {
hgs
parents: 41
diff changeset
  3446
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3447
        }
hgs
parents: 41
diff changeset
  3448
    if( obj->AudioLatency() != 100 )
hgs
parents: 41
diff changeset
  3449
        {
hgs
parents: 41
diff changeset
  3450
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3451
        }
hgs
parents: 41
diff changeset
  3452
    if( obj->VideoLatency() != 200 )
hgs
parents: 41
diff changeset
  3453
        {
hgs
parents: 41
diff changeset
  3454
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3455
        }
hgs
parents: 41
diff changeset
  3456
    CleanupStack::PopAndDestroy( &readStream );
hgs
parents: 41
diff changeset
  3457
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3458
    
hgs
parents: 41
diff changeset
  3459
    // DuplicateLC - mem compare can be used since the object does not contain
hgs
parents: 41
diff changeset
  3460
    // any ponters as memebers
hgs
parents: 41
diff changeset
  3461
    obj = CAccPolHdmiLatency::NewLC( HdmiLatency::KUidLatency, 100, 200 );
hgs
parents: 41
diff changeset
  3462
    objDuplicate = static_cast<CAccPolHdmiLatency*>( obj->DuplicateLC() );
hgs
parents: 41
diff changeset
  3463
    TUint8* left = reinterpret_cast<TUint8*>( obj );
hgs
parents: 41
diff changeset
  3464
    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
hgs
parents: 41
diff changeset
  3465
    TInt size = sizeof( CAccPolHdmiLatency );
hgs
parents: 41
diff changeset
  3466
    if( Mem::Compare( left, size, right, size ) != KErrNone )
hgs
parents: 41
diff changeset
  3467
        {
hgs
parents: 41
diff changeset
  3468
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3469
        }
hgs
parents: 41
diff changeset
  3470
    CleanupStack::PopAndDestroy( objDuplicate );
hgs
parents: 41
diff changeset
  3471
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3472
hgs
parents: 41
diff changeset
  3473
    // Rest of the API
hgs
parents: 41
diff changeset
  3474
    obj = CAccPolHdmiLatency::NewLC();
hgs
parents: 41
diff changeset
  3475
    obj->SetLatencyType( HdmiLatency::KUidLatency );
hgs
parents: 41
diff changeset
  3476
    if( obj->LatencyType() != HdmiLatency::KUidLatency )
hgs
parents: 41
diff changeset
  3477
        {
hgs
parents: 41
diff changeset
  3478
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3479
        }
hgs
parents: 41
diff changeset
  3480
    obj->SetAudioLatency( 100 );
hgs
parents: 41
diff changeset
  3481
    if( obj->AudioLatency() != 100 )
hgs
parents: 41
diff changeset
  3482
        {
hgs
parents: 41
diff changeset
  3483
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3484
        }
hgs
parents: 41
diff changeset
  3485
    obj->SetVideoLatency( 200 );
hgs
parents: 41
diff changeset
  3486
    if( obj->VideoLatency() != 200 )
hgs
parents: 41
diff changeset
  3487
        {
hgs
parents: 41
diff changeset
  3488
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3489
        }
hgs
parents: 41
diff changeset
  3490
    CleanupStack::PopAndDestroy( obj );    
hgs
parents: 41
diff changeset
  3491
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  3492
    
hgs
parents: 41
diff changeset
  3493
    return err;
hgs
parents: 41
diff changeset
  3494
    }
hgs
parents: 41
diff changeset
  3495
hgs
parents: 41
diff changeset
  3496
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  3497
// CTFAccessoryTestControl::CheckHdmiSpeakerAllocationObjectL
hgs
parents: 41
diff changeset
  3498
// ----------------------------------------------------------------------------------   
hgs
parents: 41
diff changeset
  3499
TInt CTFAccessoryTestControl::CheckHdmiSpeakerAllocationObjectL()
hgs
parents: 41
diff changeset
  3500
    {
hgs
parents: 41
diff changeset
  3501
    TInt err = KErrNone;
hgs
parents: 41
diff changeset
  3502
    CAccPolHdmiSpeakerAllocation* obj = NULL;
hgs
parents: 41
diff changeset
  3503
    CAccPolHdmiSpeakerAllocation* objDuplicate = NULL;
hgs
parents: 41
diff changeset
  3504
    TUint8 objectType = 0;
hgs
parents: 41
diff changeset
  3505
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  3506
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  3507
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  3508
    TUint32 bits = 0x0;
hgs
parents: 41
diff changeset
  3509
    
hgs
parents: 41
diff changeset
  3510
    // NewL
hgs
parents: 41
diff changeset
  3511
    obj = CAccPolHdmiSpeakerAllocation::NewL();
hgs
parents: 41
diff changeset
  3512
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3513
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3514
    
hgs
parents: 41
diff changeset
  3515
    // NewLC
hgs
parents: 41
diff changeset
  3516
    obj = CAccPolHdmiSpeakerAllocation::NewLC();
hgs
parents: 41
diff changeset
  3517
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3518
    
hgs
parents: 41
diff changeset
  3519
    // NewL - with params
hgs
parents: 41
diff changeset
  3520
    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
hgs
parents: 41
diff changeset
  3521
        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
hgs
parents: 41
diff changeset
  3522
    obj = CAccPolHdmiSpeakerAllocation::NewL( bits );
hgs
parents: 41
diff changeset
  3523
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3524
    if( !obj->FrontCenter() )
hgs
parents: 41
diff changeset
  3525
        {
hgs
parents: 41
diff changeset
  3526
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3527
        }
hgs
parents: 41
diff changeset
  3528
    if( !obj->RearCenter() )
hgs
parents: 41
diff changeset
  3529
        {
hgs
parents: 41
diff changeset
  3530
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3531
        }
hgs
parents: 41
diff changeset
  3532
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
hgs
parents: 41
diff changeset
  3533
        {
hgs
parents: 41
diff changeset
  3534
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3535
        }
hgs
parents: 41
diff changeset
  3536
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
hgs
parents: 41
diff changeset
  3537
        {
hgs
parents: 41
diff changeset
  3538
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3539
        }
hgs
parents: 41
diff changeset
  3540
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3541
hgs
parents: 41
diff changeset
  3542
    obj = CAccPolHdmiSpeakerAllocation::NewL( EFalse,
hgs
parents: 41
diff changeset
  3543
        EFalse,
hgs
parents: 41
diff changeset
  3544
        EFalse,
hgs
parents: 41
diff changeset
  3545
        ETrue,
hgs
parents: 41
diff changeset
  3546
        EFalse,
hgs
parents: 41
diff changeset
  3547
        EFalse,
hgs
parents: 41
diff changeset
  3548
        ETrue,
hgs
parents: 41
diff changeset
  3549
        EFalse,
hgs
parents: 41
diff changeset
  3550
        EFalse,
hgs
parents: 41
diff changeset
  3551
        EFalse,
hgs
parents: 41
diff changeset
  3552
        EFalse );
hgs
parents: 41
diff changeset
  3553
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3554
    if( !obj->FrontCenter() )
hgs
parents: 41
diff changeset
  3555
        {
hgs
parents: 41
diff changeset
  3556
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3557
        }
hgs
parents: 41
diff changeset
  3558
    if( !obj->RearCenter() )
hgs
parents: 41
diff changeset
  3559
        {
hgs
parents: 41
diff changeset
  3560
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3561
        }
hgs
parents: 41
diff changeset
  3562
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
hgs
parents: 41
diff changeset
  3563
        {
hgs
parents: 41
diff changeset
  3564
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3565
        }
hgs
parents: 41
diff changeset
  3566
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
hgs
parents: 41
diff changeset
  3567
        {
hgs
parents: 41
diff changeset
  3568
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3569
        }
hgs
parents: 41
diff changeset
  3570
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3571
hgs
parents: 41
diff changeset
  3572
    // NewLC - with params
hgs
parents: 41
diff changeset
  3573
    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
hgs
parents: 41
diff changeset
  3574
        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
hgs
parents: 41
diff changeset
  3575
    obj = CAccPolHdmiSpeakerAllocation::NewLC( bits );
hgs
parents: 41
diff changeset
  3576
    if( !obj->FrontCenter() )
hgs
parents: 41
diff changeset
  3577
        {
hgs
parents: 41
diff changeset
  3578
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3579
        }
hgs
parents: 41
diff changeset
  3580
    if( !obj->RearCenter() )
hgs
parents: 41
diff changeset
  3581
        {
hgs
parents: 41
diff changeset
  3582
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3583
        }
hgs
parents: 41
diff changeset
  3584
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
hgs
parents: 41
diff changeset
  3585
        {
hgs
parents: 41
diff changeset
  3586
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3587
        }
hgs
parents: 41
diff changeset
  3588
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
hgs
parents: 41
diff changeset
  3589
        {
hgs
parents: 41
diff changeset
  3590
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3591
        }
hgs
parents: 41
diff changeset
  3592
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3593
hgs
parents: 41
diff changeset
  3594
    obj = CAccPolHdmiSpeakerAllocation::NewLC( EFalse,
hgs
parents: 41
diff changeset
  3595
        EFalse,
hgs
parents: 41
diff changeset
  3596
        EFalse,
hgs
parents: 41
diff changeset
  3597
        ETrue,
hgs
parents: 41
diff changeset
  3598
        EFalse,
hgs
parents: 41
diff changeset
  3599
        EFalse,
hgs
parents: 41
diff changeset
  3600
        ETrue,
hgs
parents: 41
diff changeset
  3601
        EFalse,
hgs
parents: 41
diff changeset
  3602
        EFalse,
hgs
parents: 41
diff changeset
  3603
        EFalse,
hgs
parents: 41
diff changeset
  3604
        EFalse );
hgs
parents: 41
diff changeset
  3605
    if( !obj->FrontCenter() )
hgs
parents: 41
diff changeset
  3606
        {
hgs
parents: 41
diff changeset
  3607
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3608
        }
hgs
parents: 41
diff changeset
  3609
    if( !obj->RearCenter() )
hgs
parents: 41
diff changeset
  3610
        {
hgs
parents: 41
diff changeset
  3611
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3612
        }
hgs
parents: 41
diff changeset
  3613
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
hgs
parents: 41
diff changeset
  3614
        {
hgs
parents: 41
diff changeset
  3615
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3616
        }
hgs
parents: 41
diff changeset
  3617
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
hgs
parents: 41
diff changeset
  3618
        {
hgs
parents: 41
diff changeset
  3619
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3620
        }
hgs
parents: 41
diff changeset
  3621
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3622
    
hgs
parents: 41
diff changeset
  3623
    // Internalize & Externalize
hgs
parents: 41
diff changeset
  3624
    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
hgs
parents: 41
diff changeset
  3625
        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
hgs
parents: 41
diff changeset
  3626
    obj = CAccPolHdmiSpeakerAllocation::NewLC( bits );
hgs
parents: 41
diff changeset
  3627
    RBufWriteStream writeStream;
hgs
parents: 41
diff changeset
  3628
    writeStream.Open( *buf );
hgs
parents: 41
diff changeset
  3629
    writeStream.PushL();
hgs
parents: 41
diff changeset
  3630
    obj->ExternalizeL( writeStream );
hgs
parents: 41
diff changeset
  3631
    writeStream.CommitL();
hgs
parents: 41
diff changeset
  3632
    CleanupStack::PopAndDestroy( &writeStream );
hgs
parents: 41
diff changeset
  3633
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3634
    
hgs
parents: 41
diff changeset
  3635
    obj = CAccPolHdmiSpeakerAllocation::NewLC();
hgs
parents: 41
diff changeset
  3636
    RBufReadStream readStream;
hgs
parents: 41
diff changeset
  3637
    readStream.Open( *buf );
hgs
parents: 41
diff changeset
  3638
    readStream.PushL();
hgs
parents: 41
diff changeset
  3639
    objectType = readStream.ReadUint8L();
hgs
parents: 41
diff changeset
  3640
    obj->InternalizeL( readStream );
hgs
parents: 41
diff changeset
  3641
    if( objectType != EAccPolHdmiSpeakerAllocationObject )
hgs
parents: 41
diff changeset
  3642
        {
hgs
parents: 41
diff changeset
  3643
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3644
        }
hgs
parents: 41
diff changeset
  3645
    if( !obj->FrontCenter() )
hgs
parents: 41
diff changeset
  3646
        {
hgs
parents: 41
diff changeset
  3647
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3648
        }
hgs
parents: 41
diff changeset
  3649
    if( !obj->RearCenter() )
hgs
parents: 41
diff changeset
  3650
        {
hgs
parents: 41
diff changeset
  3651
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3652
        }
hgs
parents: 41
diff changeset
  3653
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
hgs
parents: 41
diff changeset
  3654
        {
hgs
parents: 41
diff changeset
  3655
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3656
        }
hgs
parents: 41
diff changeset
  3657
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
hgs
parents: 41
diff changeset
  3658
        {
hgs
parents: 41
diff changeset
  3659
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3660
        }
hgs
parents: 41
diff changeset
  3661
    CleanupStack::PopAndDestroy( &readStream );
hgs
parents: 41
diff changeset
  3662
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3663
    
hgs
parents: 41
diff changeset
  3664
    // DuplicateLC - mem compare can be used since the object does not contain
hgs
parents: 41
diff changeset
  3665
    // any ponters as memebers
hgs
parents: 41
diff changeset
  3666
    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
hgs
parents: 41
diff changeset
  3667
        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter;
hgs
parents: 41
diff changeset
  3668
    obj = CAccPolHdmiSpeakerAllocation::NewLC( bits );
hgs
parents: 41
diff changeset
  3669
    objDuplicate = static_cast<CAccPolHdmiSpeakerAllocation*>( obj->DuplicateLC() );
hgs
parents: 41
diff changeset
  3670
    TUint8* left = reinterpret_cast<TUint8*>( obj );
hgs
parents: 41
diff changeset
  3671
    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
hgs
parents: 41
diff changeset
  3672
    TInt size = sizeof( CAccPolHdmiSpeakerAllocation );
hgs
parents: 41
diff changeset
  3673
    if( Mem::Compare( left, size, right, size ) != KErrNone )
hgs
parents: 41
diff changeset
  3674
        {
hgs
parents: 41
diff changeset
  3675
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3676
        }
hgs
parents: 41
diff changeset
  3677
    CleanupStack::PopAndDestroy( objDuplicate );
hgs
parents: 41
diff changeset
  3678
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3679
hgs
parents: 41
diff changeset
  3680
    // Rest of the API
hgs
parents: 41
diff changeset
  3681
    bits = CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter |
hgs
parents: 41
diff changeset
  3682
        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter |
hgs
parents: 41
diff changeset
  3683
        CAccPolHdmiSpeakerAllocation::EHdmiSpeakerTopCenter;
hgs
parents: 41
diff changeset
  3684
    obj = CAccPolHdmiSpeakerAllocation::NewLC();
hgs
parents: 41
diff changeset
  3685
    obj->SetSpeakerAllocation( bits );
hgs
parents: 41
diff changeset
  3686
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerFrontCenter ) )
hgs
parents: 41
diff changeset
  3687
        {
hgs
parents: 41
diff changeset
  3688
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3689
        }
hgs
parents: 41
diff changeset
  3690
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerRearCenter ) )
hgs
parents: 41
diff changeset
  3691
        {
hgs
parents: 41
diff changeset
  3692
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3693
        }
hgs
parents: 41
diff changeset
  3694
    if( !( obj->SpeakerAllocation() & CAccPolHdmiSpeakerAllocation::EHdmiSpeakerTopCenter ) )
hgs
parents: 41
diff changeset
  3695
        {
hgs
parents: 41
diff changeset
  3696
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3697
        }
hgs
parents: 41
diff changeset
  3698
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3699
hgs
parents: 41
diff changeset
  3700
    obj = CAccPolHdmiSpeakerAllocation::NewLC();
hgs
parents: 41
diff changeset
  3701
    obj->SetFrontSpeakers( ETrue );
hgs
parents: 41
diff changeset
  3702
    if( !obj->FrontSpeakers() || obj->SpeakerCount() != 2 )
hgs
parents: 41
diff changeset
  3703
        {
hgs
parents: 41
diff changeset
  3704
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3705
        }
hgs
parents: 41
diff changeset
  3706
    obj->SetFrontSpeakers( EFalse );
hgs
parents: 41
diff changeset
  3707
    if( obj->FrontSpeakers() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3708
        {
hgs
parents: 41
diff changeset
  3709
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3710
        }
hgs
parents: 41
diff changeset
  3711
    obj->SetRearSpeakers( ETrue );
hgs
parents: 41
diff changeset
  3712
    if( !obj->RearSpeakers() || obj->SpeakerCount() != 2 )
hgs
parents: 41
diff changeset
  3713
        {
hgs
parents: 41
diff changeset
  3714
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3715
        }
hgs
parents: 41
diff changeset
  3716
    obj->SetRearSpeakers( EFalse );
hgs
parents: 41
diff changeset
  3717
    if( obj->RearSpeakers() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3718
        {
hgs
parents: 41
diff changeset
  3719
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3720
        }
hgs
parents: 41
diff changeset
  3721
    obj->SetLowFrequencyEffect( ETrue );
hgs
parents: 41
diff changeset
  3722
    if( !obj->LowFrequencyEffect() || obj->SpeakerCount() != 1 )
hgs
parents: 41
diff changeset
  3723
        {
hgs
parents: 41
diff changeset
  3724
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3725
        }
hgs
parents: 41
diff changeset
  3726
    obj->SetLowFrequencyEffect( EFalse );
hgs
parents: 41
diff changeset
  3727
    if( obj->LowFrequencyEffect() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3728
        {
hgs
parents: 41
diff changeset
  3729
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3730
        }
hgs
parents: 41
diff changeset
  3731
    obj->SetFrontCenter( ETrue );
hgs
parents: 41
diff changeset
  3732
    if( !obj->FrontCenter() || obj->SpeakerCount() != 1 )
hgs
parents: 41
diff changeset
  3733
        {
hgs
parents: 41
diff changeset
  3734
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3735
        }
hgs
parents: 41
diff changeset
  3736
    obj->SetFrontCenter( EFalse );
hgs
parents: 41
diff changeset
  3737
    if( obj->FrontCenter() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3738
        {
hgs
parents: 41
diff changeset
  3739
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3740
        }
hgs
parents: 41
diff changeset
  3741
    obj->SetFrontCenterHigh( ETrue );
hgs
parents: 41
diff changeset
  3742
    if( !obj->FrontCenterHigh() || obj->SpeakerCount() != 1 )
hgs
parents: 41
diff changeset
  3743
        {
hgs
parents: 41
diff changeset
  3744
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3745
        }
hgs
parents: 41
diff changeset
  3746
    obj->SetFrontCenterHigh( EFalse );
hgs
parents: 41
diff changeset
  3747
    if( obj->FrontCenterHigh() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3748
        {
hgs
parents: 41
diff changeset
  3749
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3750
        }
hgs
parents: 41
diff changeset
  3751
    obj->SetTopCenter( ETrue );
hgs
parents: 41
diff changeset
  3752
    if( !obj->TopCenter() || obj->SpeakerCount() != 1 )
hgs
parents: 41
diff changeset
  3753
        {
hgs
parents: 41
diff changeset
  3754
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3755
        }
hgs
parents: 41
diff changeset
  3756
    obj->SetTopCenter( EFalse );
hgs
parents: 41
diff changeset
  3757
    if( obj->TopCenter() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3758
        {
hgs
parents: 41
diff changeset
  3759
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3760
        }
hgs
parents: 41
diff changeset
  3761
    obj->SetRearCenter( ETrue );
hgs
parents: 41
diff changeset
  3762
    if( !obj->RearCenter() || obj->SpeakerCount() != 1 )
hgs
parents: 41
diff changeset
  3763
        {
hgs
parents: 41
diff changeset
  3764
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3765
        }
hgs
parents: 41
diff changeset
  3766
    obj->SetRearCenter( EFalse );
hgs
parents: 41
diff changeset
  3767
    if( obj->RearCenter() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3768
        {
hgs
parents: 41
diff changeset
  3769
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3770
        }
hgs
parents: 41
diff changeset
  3771
    obj->SetFrontLeftRightCenter( ETrue );
hgs
parents: 41
diff changeset
  3772
    if( !obj->FrontLeftRightCenter() || obj->SpeakerCount() != 2 )
hgs
parents: 41
diff changeset
  3773
        {
hgs
parents: 41
diff changeset
  3774
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3775
        }
hgs
parents: 41
diff changeset
  3776
    obj->SetFrontLeftRightCenter( EFalse );
hgs
parents: 41
diff changeset
  3777
    if( obj->FrontLeftRightCenter() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3778
        {
hgs
parents: 41
diff changeset
  3779
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3780
        }
hgs
parents: 41
diff changeset
  3781
    obj->SetRearLeftRightCenter( ETrue );
hgs
parents: 41
diff changeset
  3782
    if( !obj->RearLeftRightCenter() || obj->SpeakerCount() != 2 )
hgs
parents: 41
diff changeset
  3783
        {
hgs
parents: 41
diff changeset
  3784
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3785
        }
hgs
parents: 41
diff changeset
  3786
    obj->SetRearLeftRightCenter( EFalse );
hgs
parents: 41
diff changeset
  3787
    if( obj->RearLeftRightCenter() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3788
        {
hgs
parents: 41
diff changeset
  3789
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3790
        }
hgs
parents: 41
diff changeset
  3791
    obj->SetFrontWideSpeakers( ETrue );
hgs
parents: 41
diff changeset
  3792
    if( !obj->FrontWideSpeakers() || obj->SpeakerCount() != 2 )
hgs
parents: 41
diff changeset
  3793
        {
hgs
parents: 41
diff changeset
  3794
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3795
        }
hgs
parents: 41
diff changeset
  3796
    obj->SetFrontWideSpeakers( EFalse );
hgs
parents: 41
diff changeset
  3797
    if( obj->FrontWideSpeakers() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3798
        {
hgs
parents: 41
diff changeset
  3799
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3800
        }
hgs
parents: 41
diff changeset
  3801
    obj->SetFrontHighSpeakers( ETrue );
hgs
parents: 41
diff changeset
  3802
    if( !obj->FrontHighSpeakers() || obj->SpeakerCount() != 2 )
hgs
parents: 41
diff changeset
  3803
        {
hgs
parents: 41
diff changeset
  3804
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3805
        }
hgs
parents: 41
diff changeset
  3806
    obj->SetFrontHighSpeakers( EFalse );
hgs
parents: 41
diff changeset
  3807
    if( obj->FrontHighSpeakers() || obj->SpeakerCount() != 0 )
hgs
parents: 41
diff changeset
  3808
        {
hgs
parents: 41
diff changeset
  3809
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3810
        }
hgs
parents: 41
diff changeset
  3811
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3812
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  3813
    
hgs
parents: 41
diff changeset
  3814
    return err;
hgs
parents: 41
diff changeset
  3815
    }
hgs
parents: 41
diff changeset
  3816
hgs
parents: 41
diff changeset
  3817
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  3818
// CTFAccessoryTestControl::CheckHdmiVideoFormatObjectL
hgs
parents: 41
diff changeset
  3819
// ----------------------------------------------------------------------------------   
hgs
parents: 41
diff changeset
  3820
TInt CTFAccessoryTestControl::CheckHdmiVideoFormatObjectL()
hgs
parents: 41
diff changeset
  3821
    {
hgs
parents: 41
diff changeset
  3822
    TInt err = KErrNone;
hgs
parents: 41
diff changeset
  3823
    CAccPolHdmiVideoFormat* obj = NULL;
hgs
parents: 41
diff changeset
  3824
    CAccPolHdmiVideoFormat* objDuplicate = NULL;
hgs
parents: 41
diff changeset
  3825
    TUint8 objectType = 0;
hgs
parents: 41
diff changeset
  3826
    CBufFlat* buf = CBufFlat::NewL( KAccSrvObjectBaseStreamBufGranularity );
hgs
parents: 41
diff changeset
  3827
    CleanupStack::PushL( buf );
hgs
parents: 41
diff changeset
  3828
    buf->ResizeL( KAccSrvObjectBaseStreamBufMaxSize );
hgs
parents: 41
diff changeset
  3829
    
hgs
parents: 41
diff changeset
  3830
    // NewL
hgs
parents: 41
diff changeset
  3831
    obj = CAccPolHdmiVideoFormat::NewL();
hgs
parents: 41
diff changeset
  3832
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3833
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3834
    
hgs
parents: 41
diff changeset
  3835
    // NewLC
hgs
parents: 41
diff changeset
  3836
    obj = CAccPolHdmiVideoFormat::NewLC();
hgs
parents: 41
diff changeset
  3837
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3838
    
hgs
parents: 41
diff changeset
  3839
    // NewL - with params
hgs
parents: 41
diff changeset
  3840
    obj = CAccPolHdmiVideoFormat::NewL( E640x480p59_94d60Hz4d3,
hgs
parents: 41
diff changeset
  3841
        E640x350p85HzRB,
hgs
parents: 41
diff changeset
  3842
        1,
hgs
parents: 41
diff changeset
  3843
        ETrue );
hgs
parents: 41
diff changeset
  3844
    CleanupStack::PushL( obj );
hgs
parents: 41
diff changeset
  3845
    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
hgs
parents: 41
diff changeset
  3846
        {
hgs
parents: 41
diff changeset
  3847
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3848
        }
hgs
parents: 41
diff changeset
  3849
    if( obj->DmtFixedMode() != E640x350p85HzRB )
hgs
parents: 41
diff changeset
  3850
        {
hgs
parents: 41
diff changeset
  3851
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3852
        }
hgs
parents: 41
diff changeset
  3853
    if( obj->PixelRepeat() != 1 )
hgs
parents: 41
diff changeset
  3854
        {
hgs
parents: 41
diff changeset
  3855
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3856
        }
hgs
parents: 41
diff changeset
  3857
    if( !obj->Interlaced() )
hgs
parents: 41
diff changeset
  3858
        {
hgs
parents: 41
diff changeset
  3859
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3860
        }
hgs
parents: 41
diff changeset
  3861
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3862
    
hgs
parents: 41
diff changeset
  3863
    // NewLC - with params
hgs
parents: 41
diff changeset
  3864
    obj = CAccPolHdmiVideoFormat::NewLC( E640x480p59_94d60Hz4d3,
hgs
parents: 41
diff changeset
  3865
        E640x350p85HzRB,
hgs
parents: 41
diff changeset
  3866
        1,
hgs
parents: 41
diff changeset
  3867
        ETrue );
hgs
parents: 41
diff changeset
  3868
    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
hgs
parents: 41
diff changeset
  3869
        {
hgs
parents: 41
diff changeset
  3870
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3871
        }
hgs
parents: 41
diff changeset
  3872
    if( obj->DmtFixedMode() != E640x350p85HzRB )
hgs
parents: 41
diff changeset
  3873
        {
hgs
parents: 41
diff changeset
  3874
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3875
        }
hgs
parents: 41
diff changeset
  3876
    if( obj->PixelRepeat() != 1 )
hgs
parents: 41
diff changeset
  3877
        {
hgs
parents: 41
diff changeset
  3878
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3879
        }
hgs
parents: 41
diff changeset
  3880
    if( !obj->Interlaced() )
hgs
parents: 41
diff changeset
  3881
        {
hgs
parents: 41
diff changeset
  3882
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3883
        }
hgs
parents: 41
diff changeset
  3884
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3885
    
hgs
parents: 41
diff changeset
  3886
    // Internalize & Externalize
hgs
parents: 41
diff changeset
  3887
    obj = CAccPolHdmiVideoFormat::NewLC( E640x480p59_94d60Hz4d3,
hgs
parents: 41
diff changeset
  3888
        E640x350p85HzRB,
hgs
parents: 41
diff changeset
  3889
        1,
hgs
parents: 41
diff changeset
  3890
        ETrue );
hgs
parents: 41
diff changeset
  3891
    RBufWriteStream writeStream;
hgs
parents: 41
diff changeset
  3892
    writeStream.Open( *buf );
hgs
parents: 41
diff changeset
  3893
    writeStream.PushL();
hgs
parents: 41
diff changeset
  3894
    obj->ExternalizeL( writeStream );
hgs
parents: 41
diff changeset
  3895
    writeStream.CommitL();
hgs
parents: 41
diff changeset
  3896
    CleanupStack::PopAndDestroy( &writeStream );
hgs
parents: 41
diff changeset
  3897
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3898
    
hgs
parents: 41
diff changeset
  3899
    obj = CAccPolHdmiVideoFormat::NewLC();
hgs
parents: 41
diff changeset
  3900
    RBufReadStream readStream;
hgs
parents: 41
diff changeset
  3901
    readStream.Open( *buf );
hgs
parents: 41
diff changeset
  3902
    readStream.PushL();
hgs
parents: 41
diff changeset
  3903
    objectType = readStream.ReadUint8L();
hgs
parents: 41
diff changeset
  3904
    obj->InternalizeL( readStream );
hgs
parents: 41
diff changeset
  3905
    if( objectType != EAccPolHdmiVideoFormatObject )
hgs
parents: 41
diff changeset
  3906
        {
hgs
parents: 41
diff changeset
  3907
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3908
        }
hgs
parents: 41
diff changeset
  3909
    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
hgs
parents: 41
diff changeset
  3910
        {
hgs
parents: 41
diff changeset
  3911
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3912
        }
hgs
parents: 41
diff changeset
  3913
    if( obj->DmtFixedMode() != E640x350p85HzRB )
hgs
parents: 41
diff changeset
  3914
        {
hgs
parents: 41
diff changeset
  3915
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3916
        }
hgs
parents: 41
diff changeset
  3917
    if( obj->PixelRepeat() != 1 )
hgs
parents: 41
diff changeset
  3918
        {
hgs
parents: 41
diff changeset
  3919
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3920
        }
hgs
parents: 41
diff changeset
  3921
    if( !obj->Interlaced() )
hgs
parents: 41
diff changeset
  3922
        {
hgs
parents: 41
diff changeset
  3923
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3924
        }
hgs
parents: 41
diff changeset
  3925
    CleanupStack::PopAndDestroy( &readStream );
hgs
parents: 41
diff changeset
  3926
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3927
    
hgs
parents: 41
diff changeset
  3928
    // DuplicateLC - mem compare can be used since the object does not contain
hgs
parents: 41
diff changeset
  3929
    // any ponters as memebers
hgs
parents: 41
diff changeset
  3930
    obj = CAccPolHdmiVideoFormat::NewLC( E640x480p59_94d60Hz4d3,
hgs
parents: 41
diff changeset
  3931
        E640x350p85HzRB,
hgs
parents: 41
diff changeset
  3932
        1,
hgs
parents: 41
diff changeset
  3933
        ETrue );
hgs
parents: 41
diff changeset
  3934
    objDuplicate = static_cast<CAccPolHdmiVideoFormat*>( obj->DuplicateLC() );
hgs
parents: 41
diff changeset
  3935
    TUint8* left = reinterpret_cast<TUint8*>( obj );
hgs
parents: 41
diff changeset
  3936
    TUint8* right = reinterpret_cast<TUint8*>( objDuplicate );
hgs
parents: 41
diff changeset
  3937
    TInt size = sizeof( CAccPolHdmiVideoFormat );
hgs
parents: 41
diff changeset
  3938
    if( Mem::Compare( left, size, right, size ) != KErrNone )
hgs
parents: 41
diff changeset
  3939
        {
hgs
parents: 41
diff changeset
  3940
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3941
        }
hgs
parents: 41
diff changeset
  3942
    CleanupStack::PopAndDestroy( objDuplicate );
hgs
parents: 41
diff changeset
  3943
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3944
hgs
parents: 41
diff changeset
  3945
    // Rest of the API
hgs
parents: 41
diff changeset
  3946
    obj = CAccPolHdmiVideoFormat::NewLC();
hgs
parents: 41
diff changeset
  3947
    obj->SetCeaFixedMode( E640x480p59_94d60Hz4d3 );
hgs
parents: 41
diff changeset
  3948
    if( obj->CeaFixedMode() != E640x480p59_94d60Hz4d3 )
hgs
parents: 41
diff changeset
  3949
        {
hgs
parents: 41
diff changeset
  3950
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3951
        }
hgs
parents: 41
diff changeset
  3952
    obj->SetDmtFixedMode( E640x350p85HzRB );
hgs
parents: 41
diff changeset
  3953
    if( obj->DmtFixedMode() != E640x350p85HzRB )
hgs
parents: 41
diff changeset
  3954
        {
hgs
parents: 41
diff changeset
  3955
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3956
        }
hgs
parents: 41
diff changeset
  3957
    obj->SetPixelRepeat( 4 );
hgs
parents: 41
diff changeset
  3958
    if( obj->PixelRepeat() != 4 )
hgs
parents: 41
diff changeset
  3959
        {
hgs
parents: 41
diff changeset
  3960
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3961
        }
hgs
parents: 41
diff changeset
  3962
    obj->SetInterlaced( ETrue );
hgs
parents: 41
diff changeset
  3963
    if( !obj->Interlaced() )
hgs
parents: 41
diff changeset
  3964
        {
hgs
parents: 41
diff changeset
  3965
        err = KErrArgument;
hgs
parents: 41
diff changeset
  3966
        }
hgs
parents: 41
diff changeset
  3967
    CleanupStack::PopAndDestroy( obj );
hgs
parents: 41
diff changeset
  3968
    CleanupStack::PopAndDestroy( buf );
hgs
parents: 41
diff changeset
  3969
    
hgs
parents: 41
diff changeset
  3970
    return err;
hgs
parents: 41
diff changeset
  3971
    }
hgs
parents: 41
diff changeset
  3972
hgs
parents: 41
diff changeset
  3973
//
hgs
parents: 41
diff changeset
  3974
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  3975
// CTFTestControlObserver* CTFAccessoryTestControl::CreateObserver()
hgs
parents: 41
diff changeset
  3976
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
  3977
CTFTestControlObserver* CTFAccessoryTestControl::CreateObserver()
hgs
parents: 41
diff changeset
  3978
    {
hgs
parents: 41
diff changeset
  3979
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CreateObserver()" ) ) );
hgs
parents: 41
diff changeset
  3980
    iStack.AddFirst/*AddLast*/( *CTFTestControlObserver::NewL( *this ) );
hgs
parents: 41
diff changeset
  3981
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::CreateObserver() return" ) ) );
hgs
parents: 41
diff changeset
  3982
    return iStack.First/*Last*/();
hgs
parents: 41
diff changeset
  3983
    }
hgs
parents: 41
diff changeset
  3984
hgs
parents: 41
diff changeset
  3985
// Not used at this point.
hgs
parents: 41
diff changeset
  3986
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  3987
// CTFAccessoryTestControl::ProcessMessageAndCompleteL
hgs
parents: 41
diff changeset
  3988
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
  3989
void CTFAccessoryTestControl::ProcessMessageAndCompleteL( const RMessage2& aMessage )
hgs
parents: 41
diff changeset
  3990
    {
hgs
parents: 41
diff changeset
  3991
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ProcessMessageAndCompleteL enter" ) ) );
hgs
parents: 41
diff changeset
  3992
    aMessage.Complete( KErrNone );
hgs
parents: 41
diff changeset
  3993
    COMPONENT_TRACE( ( _L( "ACCESSORYTESTCONTROL - CTFAccessoryTestControl::ProcessMessageAndCompleteL return" ) ) );
hgs
parents: 41
diff changeset
  3994
    }
hgs
parents: 41
diff changeset
  3995
//
hgs
parents: 41
diff changeset
  3996
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  3997
// CTFAccessoryTestControl::MessageCompleteL
hgs
parents: 41
diff changeset
  3998
// ----------------------------------------------------------------------------------	
hgs
parents: 41
diff changeset
  3999
void CTFAccessoryTestControl::MessageCompleteL( TInt /*aResult*/)
hgs
parents: 41
diff changeset
  4000
    {
hgs
parents: 41
diff changeset
  4001
hgs
parents: 41
diff changeset
  4002
    }
hgs
parents: 41
diff changeset
  4003
hgs
parents: 41
diff changeset
  4004
//
hgs
parents: 41
diff changeset
  4005
// ----------------------------------------------------------------------------------
hgs
parents: 41
diff changeset
  4006
// CTFAccessoryTestControl::CreateHdmiObjectL
hgs
parents: 41
diff changeset
  4007
// ----------------------------------------------------------------------------------   
hgs
parents: 41
diff changeset
  4008
void CTFAccessoryTestControl::CreateHdmiObjectL( CAccPolObjectCon& aCon,
hgs
parents: 41
diff changeset
  4009
    THdmiConObjectType aType )
hgs
parents: 41
diff changeset
  4010
    {
hgs
parents: 41
diff changeset
  4011
    switch( aType )
hgs
parents: 41
diff changeset
  4012
        {
hgs
parents: 41
diff changeset
  4013
        case EAccPolHdmiSinkObject:
hgs
parents: 41
diff changeset
  4014
            {
hgs
parents: 41
diff changeset
  4015
            CAccPolHdmiSink* sink = CAccPolHdmiSink::NewLC();
hgs
parents: 41
diff changeset
  4016
            sink->SetBasicAudioSupport( ETrue );
hgs
parents: 41
diff changeset
  4017
            sink->SetHdcpSupport( ETrue );
hgs
parents: 41
diff changeset
  4018
            aCon.AddL( *sink );
hgs
parents: 41
diff changeset
  4019
            CleanupStack::PopAndDestroy( sink );
hgs
parents: 41
diff changeset
  4020
            break;
hgs
parents: 41
diff changeset
  4021
            }
hgs
parents: 41
diff changeset
  4022
        case EAccPolHdmiAudioFormatObject:
hgs
parents: 41
diff changeset
  4023
            {
hgs
parents: 41
diff changeset
  4024
            CAccPolHdmiAudioFormat* audioFormat = CAccPolHdmiAudioFormat::NewLC();
hgs
parents: 41
diff changeset
  4025
            audioFormat->SetAudioFormat( HdmiAudioFormat::KUidFormatPCM16 );
hgs
parents: 41
diff changeset
  4026
            audioFormat->SetChannelCount( 2 );
hgs
parents: 41
diff changeset
  4027
            audioFormat->SetBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample16 );
hgs
parents: 41
diff changeset
  4028
            audioFormat->SetMaxBitResolution( CAccPolHdmiAudioFormat::EBitsPerSample16 );
hgs
parents: 41
diff changeset
  4029
            audioFormat->SetFormatDependentValue( CAccPolHdmiAudioFormat::EBitsPerSample16 );
hgs
parents: 41
diff changeset
  4030
            audioFormat->SamFreq( CAccPolHdmiAudioFormat::ESamplingFreq32KHz );
hgs
parents: 41
diff changeset
  4031
            aCon.AddL( *audioFormat );
hgs
parents: 41
diff changeset
  4032
            CleanupStack::PopAndDestroy( audioFormat );
hgs
parents: 41
diff changeset
  4033
            break;
hgs
parents: 41
diff changeset
  4034
            }
hgs
parents: 41
diff changeset
  4035
        case EAccPolHdmiLatencyObject:
hgs
parents: 41
diff changeset
  4036
            {
hgs
parents: 41
diff changeset
  4037
            CAccPolHdmiLatency* latency = CAccPolHdmiLatency::NewLC();
hgs
parents: 41
diff changeset
  4038
            latency->SetLatencyType( HdmiLatency::KUidLatency );
hgs
parents: 41
diff changeset
  4039
            latency->SetAudioLatency( 100 );
hgs
parents: 41
diff changeset
  4040
            latency->SetVideoLatency( 200 );
hgs
parents: 41
diff changeset
  4041
            aCon.AddL( *latency );
hgs
parents: 41
diff changeset
  4042
            CleanupStack::PopAndDestroy( latency );
hgs
parents: 41
diff changeset
  4043
            break;
hgs
parents: 41
diff changeset
  4044
            }
hgs
parents: 41
diff changeset
  4045
        case EAccPolHdmiSpeakerAllocationObject:
hgs
parents: 41
diff changeset
  4046
            {
hgs
parents: 41
diff changeset
  4047
            CAccPolHdmiSpeakerAllocation* speakerAllocation =
hgs
parents: 41
diff changeset
  4048
                CAccPolHdmiSpeakerAllocation::NewLC();
hgs
parents: 41
diff changeset
  4049
            speakerAllocation->SetFrontSpeakers( ETrue );
hgs
parents: 41
diff changeset
  4050
            speakerAllocation->SetRearSpeakers( ETrue );
hgs
parents: 41
diff changeset
  4051
            speakerAllocation->SetLowFrequencyEffect( ETrue );
hgs
parents: 41
diff changeset
  4052
            speakerAllocation->SetFrontCenter( ETrue );
hgs
parents: 41
diff changeset
  4053
            speakerAllocation->SetFrontCenterHigh( ETrue );
hgs
parents: 41
diff changeset
  4054
            speakerAllocation->SetTopCenter( ETrue );
hgs
parents: 41
diff changeset
  4055
            speakerAllocation->SetRearCenter( ETrue );
hgs
parents: 41
diff changeset
  4056
            speakerAllocation->SetFrontLeftRightCenter( ETrue );
hgs
parents: 41
diff changeset
  4057
            speakerAllocation->SetRearLeftRightCenter( ETrue );
hgs
parents: 41
diff changeset
  4058
            speakerAllocation->SetFrontWideSpeakers( ETrue );
hgs
parents: 41
diff changeset
  4059
            speakerAllocation->SetFrontHighSpeakers( ETrue );
hgs
parents: 41
diff changeset
  4060
            aCon.AddL( *speakerAllocation );
hgs
parents: 41
diff changeset
  4061
            CleanupStack::PopAndDestroy( speakerAllocation );
hgs
parents: 41
diff changeset
  4062
            break;
hgs
parents: 41
diff changeset
  4063
            }
hgs
parents: 41
diff changeset
  4064
        case EAccPolHdmiVideoFormatObject:
hgs
parents: 41
diff changeset
  4065
            {
hgs
parents: 41
diff changeset
  4066
            CAccPolHdmiVideoFormat* videoFormat = CAccPolHdmiVideoFormat::NewLC();
hgs
parents: 41
diff changeset
  4067
            videoFormat->SetCeaFixedMode( E640x480p59_94d60Hz4d3 );
hgs
parents: 41
diff changeset
  4068
            videoFormat->SetDmtFixedMode( E640x480p85HzRB );
hgs
parents: 41
diff changeset
  4069
            videoFormat->SetInterlaced( EFalse );
hgs
parents: 41
diff changeset
  4070
            aCon.AddL( *videoFormat );
hgs
parents: 41
diff changeset
  4071
            CleanupStack::PopAndDestroy( videoFormat );
hgs
parents: 41
diff changeset
  4072
            break;
hgs
parents: 41
diff changeset
  4073
            }
hgs
parents: 41
diff changeset
  4074
        default:
hgs
parents: 41
diff changeset
  4075
            {
hgs
parents: 41
diff changeset
  4076
            break;
hgs
parents: 41
diff changeset
  4077
            }
hgs
parents: 41
diff changeset
  4078
        }
hgs
parents: 41
diff changeset
  4079
    }
hgs
parents: 41
diff changeset
  4080
    
hgs
parents: 41
diff changeset
  4081
hgs
parents: 41
diff changeset
  4082
void CTFAccessoryTestControl::AccessoryConnectionOpenClose(TTFAccessoryFunction aCase, TInt* aRetval)
hgs
parents: 41
diff changeset
  4083
    {
hgs
parents: 41
diff changeset
  4084
    switch(aCase)
hgs
parents: 41
diff changeset
  4085
        {
hgs
parents: 41
diff changeset
  4086
        case ETFAccessoryConnection_Open:
hgs
parents: 41
diff changeset
  4087
            {
hgs
parents: 41
diff changeset
  4088
            if ( iAccessoryConnection == NULL )
hgs
parents: 41
diff changeset
  4089
                {
hgs
parents: 41
diff changeset
  4090
                    iAccessoryConnection = new ( ELeave ) RAccessoryConnection;
hgs
parents: 41
diff changeset
  4091
                    *aRetval = iAccessoryConnection->CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  4092
                    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL(TTFAccessoryTestCaseStateControl& aParameter) - ETFAccessoryConnection_Open - Sub session created - (%d)" ), *aRetval ) );
hgs
parents: 41
diff changeset
  4093
                 }
hgs
parents: 41
diff changeset
  4094
           else
hgs
parents: 41
diff changeset
  4095
                 {
hgs
parents: 41
diff changeset
  4096
                    *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4097
                    COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL(TTFAccessoryTestCaseStateControl& aParameter) - ETFAccessoryConnection_Open - Sub session not created - (%d)" ), *aRetval ) );
hgs
parents: 41
diff changeset
  4098
                 }
hgs
parents: 41
diff changeset
  4099
            }
hgs
parents: 41
diff changeset
  4100
            break;
hgs
parents: 41
diff changeset
  4101
        
hgs
parents: 41
diff changeset
  4102
        case ETFAccessoryConnection_Close:
hgs
parents: 41
diff changeset
  4103
            {
hgs
parents: 41
diff changeset
  4104
            TRACE_ASSERT( iAccessoryConnection != NULL );
hgs
parents: 41
diff changeset
  4105
                                
hgs
parents: 41
diff changeset
  4106
            if ( iAccessoryConnection != NULL )
hgs
parents: 41
diff changeset
  4107
                {
hgs
parents: 41
diff changeset
  4108
                     iAccessoryConnection->CloseSubSession();
hgs
parents: 41
diff changeset
  4109
                     delete iAccessoryConnection;
hgs
parents: 41
diff changeset
  4110
                     iAccessoryConnection = NULL;
hgs
parents: 41
diff changeset
  4111
                     COMPONENT_TRACE( ( _L( "CTFAccessoryTestControl::CallAccessoryFunctionL(TTFAccessoryTestCaseStateControl& aParameter) - ETFAccessoryConnection_Close - Sub session closed" ) ) );
hgs
parents: 41
diff changeset
  4112
                 }                               
hgs
parents: 41
diff changeset
  4113
             *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4114
            }
hgs
parents: 41
diff changeset
  4115
            break;
hgs
parents: 41
diff changeset
  4116
            
hgs
parents: 41
diff changeset
  4117
        default:
hgs
parents: 41
diff changeset
  4118
            break;
hgs
parents: 41
diff changeset
  4119
        }
hgs
parents: 41
diff changeset
  4120
      
hgs
parents: 41
diff changeset
  4121
    }
hgs
parents: 41
diff changeset
  4122
hgs
parents: 41
diff changeset
  4123
void CTFAccessoryTestControl::FindAndCheckRequestL( TInt* aRetval, TTFAccessoryTestCaseStateControl& aParameter )
hgs
parents: 41
diff changeset
  4124
    {
hgs
parents: 41
diff changeset
  4125
    CTFAccessoryTestCaseControl* testCase = STATIC_CAST( CTFAccessoryTestCaseControl*, CurrentTestCase());          
hgs
parents: 41
diff changeset
  4126
    TInt errVal = 0;
hgs
parents: 41
diff changeset
  4127
                
hgs
parents: 41
diff changeset
  4128
    TRACE_ASSERT( testCase != NULL );
hgs
parents: 41
diff changeset
  4129
    if ( testCase != NULL )
hgs
parents: 41
diff changeset
  4130
        {
hgs
parents: 41
diff changeset
  4131
           TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::FindAndCheckRequest() - inside if ( testCase != NULL )" ) ) );
hgs
parents: 41
diff changeset
  4132
           if(!iStack.IsEmpty())
hgs
parents: 41
diff changeset
  4133
              {
hgs
parents: 41
diff changeset
  4134
                 iStackIter.SetToFirst(); 
hgs
parents: 41
diff changeset
  4135
            
hgs
parents: 41
diff changeset
  4136
              while ( ( iObserverItem = iStackIter++ ) != NULL )
hgs
parents: 41
diff changeset
  4137
                 {
hgs
parents: 41
diff changeset
  4138
                     if(iObserverItem->FindRequest(aParameter.iRequestType))
hgs
parents: 41
diff changeset
  4139
                        {
hgs
parents: 41
diff changeset
  4140
                           testCase->CheckRequest( iObserverItem->iStatus, 
hgs
parents: 41
diff changeset
  4141
                                                   iObserverItem->iValue, 
hgs
parents: 41
diff changeset
  4142
                                                   iObserverItem->iCapabilityName,
hgs
parents: 41
diff changeset
  4143
                                                   &errVal );  
hgs
parents: 41
diff changeset
  4144
                                        
hgs
parents: 41
diff changeset
  4145
                            if(errVal == KTFDontDeleteObserver)
hgs
parents: 41
diff changeset
  4146
                                {
hgs
parents: 41
diff changeset
  4147
                                aParameter.iArg1 = KTFDontDeleteObserver;
hgs
parents: 41
diff changeset
  4148
                                }
hgs
parents: 41
diff changeset
  4149
                                
hgs
parents: 41
diff changeset
  4150
                                        
hgs
parents: 41
diff changeset
  4151
                            if ( !iStack.IsEmpty() ) // Check if observes are already deleted by CheckRequest()
hgs
parents: 41
diff changeset
  4152
                                {
hgs
parents: 41
diff changeset
  4153
                                   if( KTFDontDeleteObserver != aParameter.iArg1 )
hgs
parents: 41
diff changeset
  4154
                                      {
hgs
parents: 41
diff changeset
  4155
                                         if (iObserverItem->iStatus == KRequestPending )
hgs
parents: 41
diff changeset
  4156
                                             {
hgs
parents: 41
diff changeset
  4157
                                             User::WaitForRequest(iObserverItem->iStatus);
hgs
parents: 41
diff changeset
  4158
                                             }
hgs
parents: 41
diff changeset
  4159
                                         iStack.Remove( *iObserverItem );
hgs
parents: 41
diff changeset
  4160
                                         delete iObserverItem;
hgs
parents: 41
diff changeset
  4161
                                      }
hgs
parents: 41
diff changeset
  4162
                                   else
hgs
parents: 41
diff changeset
  4163
                                       {
hgs
parents: 41
diff changeset
  4164
                                          User::Leave( KTFDontDeleteObserver );
hgs
parents: 41
diff changeset
  4165
                                       }
hgs
parents: 41
diff changeset
  4166
                                 }
hgs
parents: 41
diff changeset
  4167
                            else
hgs
parents: 41
diff changeset
  4168
                                 {
hgs
parents: 41
diff changeset
  4169
                                     *aRetval = KErrGeneral;
hgs
parents: 41
diff changeset
  4170
                                 }
hgs
parents: 41
diff changeset
  4171
                          }                               
hgs
parents: 41
diff changeset
  4172
                  }
hgs
parents: 41
diff changeset
  4173
        }
hgs
parents: 41
diff changeset
  4174
    else
hgs
parents: 41
diff changeset
  4175
        {
hgs
parents: 41
diff changeset
  4176
            *aRetval = KErrGeneral;
hgs
parents: 41
diff changeset
  4177
        }
hgs
parents: 41
diff changeset
  4178
    }
hgs
parents: 41
diff changeset
  4179
          
hgs
parents: 41
diff changeset
  4180
    TEST_CASE_TRACE( ( _L( "CTFAccessoryTestControl::FindAndCheckRequest() returning and setting *aRetval = KErrNone )" ) ) );
hgs
parents: 41
diff changeset
  4181
   *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4182
    }
hgs
parents: 41
diff changeset
  4183
hgs
parents: 41
diff changeset
  4184
hgs
parents: 41
diff changeset
  4185
void CTFAccessoryTestControl::AccessorySettingsOpenClose( TTFAccessoryFunction aCase, TInt* aRetval )
hgs
parents: 41
diff changeset
  4186
    {
hgs
parents: 41
diff changeset
  4187
        switch(aCase)
hgs
parents: 41
diff changeset
  4188
            {
hgs
parents: 41
diff changeset
  4189
            case ETFAccessorySettings_Open:
hgs
parents: 41
diff changeset
  4190
                {
hgs
parents: 41
diff changeset
  4191
                if ( iAccessorySettings == NULL )
hgs
parents: 41
diff changeset
  4192
                    {
hgs
parents: 41
diff changeset
  4193
                         iAccessorySettings = new ( ELeave ) RAccessorySettings;
hgs
parents: 41
diff changeset
  4194
                         *aRetval = iAccessorySettings->CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  4195
                     }
hgs
parents: 41
diff changeset
  4196
                else
hgs
parents: 41
diff changeset
  4197
                         *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4198
                }
hgs
parents: 41
diff changeset
  4199
                break;
hgs
parents: 41
diff changeset
  4200
                
hgs
parents: 41
diff changeset
  4201
            case ETFAccessorySettings_Close:
hgs
parents: 41
diff changeset
  4202
                {
hgs
parents: 41
diff changeset
  4203
                    TRACE_ASSERT( iAccessorySettings != NULL );
hgs
parents: 41
diff changeset
  4204
                            
hgs
parents: 41
diff changeset
  4205
                    if ( iAccessorySettings != NULL )
hgs
parents: 41
diff changeset
  4206
                        {
hgs
parents: 41
diff changeset
  4207
                            iAccessorySettings->CloseSubSession();
hgs
parents: 41
diff changeset
  4208
                            delete iAccessorySettings;
hgs
parents: 41
diff changeset
  4209
                            iAccessorySettings = NULL;
hgs
parents: 41
diff changeset
  4210
                        }                                
hgs
parents: 41
diff changeset
  4211
                    *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4212
                }
hgs
parents: 41
diff changeset
  4213
                break;
hgs
parents: 41
diff changeset
  4214
                
hgs
parents: 41
diff changeset
  4215
            default:
hgs
parents: 41
diff changeset
  4216
                break;
hgs
parents: 41
diff changeset
  4217
            
hgs
parents: 41
diff changeset
  4218
            }
hgs
parents: 41
diff changeset
  4219
    }
hgs
parents: 41
diff changeset
  4220
hgs
parents: 41
diff changeset
  4221
void CTFAccessoryTestControl::SetSeveralAccessoryModeSetting( TInt* aRetval )
hgs
parents: 41
diff changeset
  4222
    {
hgs
parents: 41
diff changeset
  4223
        TAccModeSetting accModeSettingIn;
hgs
parents: 41
diff changeset
  4224
        TAccMode tAccMode = EAccModeWirelessHeadset;
hgs
parents: 41
diff changeset
  4225
        TBuf< KMaxAccModeSetting > aDesIn; 
hgs
parents: 41
diff changeset
  4226
        // Set
hgs
parents: 41
diff changeset
  4227
        // setting 1
hgs
parents: 41
diff changeset
  4228
        accModeSettingIn.SetId( 11 ); // unknown TInt
hgs
parents: 41
diff changeset
  4229
        accModeSettingIn.SetTInt( 1 );
hgs
parents: 41
diff changeset
  4230
        TAccModeSettingArray arrayIn;
hgs
parents: 41
diff changeset
  4231
        arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  4232
                
hgs
parents: 41
diff changeset
  4233
        // setting 2
hgs
parents: 41
diff changeset
  4234
        accModeSettingIn.SetId( 12 );   // unknown Des
hgs
parents: 41
diff changeset
  4235
        _LIT( KAccSetting2, "012345678901234567890" );
hgs
parents: 41
diff changeset
  4236
        aDesIn.Copy( KAccSetting2 );
hgs
parents: 41
diff changeset
  4237
        accModeSettingIn.SetTDes( aDesIn );
hgs
parents: 41
diff changeset
  4238
        arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  4239
                
hgs
parents: 41
diff changeset
  4240
        // setting 3
hgs
parents: 41
diff changeset
  4241
        accModeSettingIn.SetId( 13 ); // unknown TBool
hgs
parents: 41
diff changeset
  4242
        accModeSettingIn.SetTBool( ETrue );
hgs
parents: 41
diff changeset
  4243
        arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  4244
        
hgs
parents: 41
diff changeset
  4245
        *aRetval = iAccessorySettings->SetAccessoryModeSettingsL( tAccMode, arrayIn );
hgs
parents: 41
diff changeset
  4246
    }
hgs
parents: 41
diff changeset
  4247
hgs
parents: 41
diff changeset
  4248
void CTFAccessoryTestControl::GetSeveralAccessoryModeSetting( TInt* aRetval )
hgs
parents: 41
diff changeset
  4249
    {
hgs
parents: 41
diff changeset
  4250
    TAccModeSetting accModeSettingOut;
hgs
parents: 41
diff changeset
  4251
    TAccMode tAccMode = EAccModeWirelessHeadset;
hgs
parents: 41
diff changeset
  4252
    TBuf< KMaxAccModeSetting > aDesOut; 
hgs
parents: 41
diff changeset
  4253
    TAccModeSettingArray arrayOut;
hgs
parents: 41
diff changeset
  4254
    TInt intOut( 0 );
hgs
parents: 41
diff changeset
  4255
    // set input parameters for GetAccessoryModeSettings()
hgs
parents: 41
diff changeset
  4256
    // setting 11
hgs
parents: 41
diff changeset
  4257
    accModeSettingOut.SetId( 11 );
hgs
parents: 41
diff changeset
  4258
    arrayOut.AddSetting( accModeSettingOut );
hgs
parents: 41
diff changeset
  4259
hgs
parents: 41
diff changeset
  4260
    // setting 12
hgs
parents: 41
diff changeset
  4261
    accModeSettingOut.SetId( 12 );
hgs
parents: 41
diff changeset
  4262
    arrayOut.AddSetting( accModeSettingOut );
hgs
parents: 41
diff changeset
  4263
hgs
parents: 41
diff changeset
  4264
    // setting 13
hgs
parents: 41
diff changeset
  4265
    accModeSettingOut.SetId( 13 );
hgs
parents: 41
diff changeset
  4266
    arrayOut.AddSetting( accModeSettingOut );
hgs
parents: 41
diff changeset
  4267
                
hgs
parents: 41
diff changeset
  4268
    *aRetval = iAccessorySettings->GetAccessoryModeSettings( tAccMode, arrayOut );
hgs
parents: 41
diff changeset
  4269
                
hgs
parents: 41
diff changeset
  4270
    // Check that got settings are right
hgs
parents: 41
diff changeset
  4271
                
hgs
parents: 41
diff changeset
  4272
    TInt count = arrayOut.GetArraySize();
hgs
parents: 41
diff changeset
  4273
    TInt foundCount(0);
hgs
parents: 41
diff changeset
  4274
                
hgs
parents: 41
diff changeset
  4275
    for( TInt index = 0; index < count; index++ )
hgs
parents: 41
diff changeset
  4276
        {
hgs
parents: 41
diff changeset
  4277
            arrayOut.GetSetting( index, accModeSettingOut );
hgs
parents: 41
diff changeset
  4278
                        
hgs
parents: 41
diff changeset
  4279
            if( 11 == accModeSettingOut.Id() ) 
hgs
parents: 41
diff changeset
  4280
                {
hgs
parents: 41
diff changeset
  4281
                            
hgs
parents: 41
diff changeset
  4282
                accModeSettingOut.GetTInt( intOut);
hgs
parents: 41
diff changeset
  4283
                            
hgs
parents: 41
diff changeset
  4284
                if( 1 == intOut )
hgs
parents: 41
diff changeset
  4285
                    {
hgs
parents: 41
diff changeset
  4286
                        foundCount++;    
hgs
parents: 41
diff changeset
  4287
                    }
hgs
parents: 41
diff changeset
  4288
                 }
hgs
parents: 41
diff changeset
  4289
                            
hgs
parents: 41
diff changeset
  4290
                            
hgs
parents: 41
diff changeset
  4291
             if( 12 == accModeSettingOut.Id() ) 
hgs
parents: 41
diff changeset
  4292
                 {
hgs
parents: 41
diff changeset
  4293
                     accModeSettingOut.GetTDes( aDesOut );
hgs
parents: 41
diff changeset
  4294
                
hgs
parents: 41
diff changeset
  4295
                     if( KErrNone == aDesOut.Compare( _L("012345678901234567890") ) )
hgs
parents: 41
diff changeset
  4296
                     {
hgs
parents: 41
diff changeset
  4297
                         foundCount++;
hgs
parents: 41
diff changeset
  4298
                      }
hgs
parents: 41
diff changeset
  4299
                            
hgs
parents: 41
diff changeset
  4300
                  }
hgs
parents: 41
diff changeset
  4301
                            
hgs
parents: 41
diff changeset
  4302
              if( 13 == accModeSettingOut.Id() ) 
hgs
parents: 41
diff changeset
  4303
                  {
hgs
parents: 41
diff changeset
  4304
                            
hgs
parents: 41
diff changeset
  4305
                      accModeSettingOut.GetTBool( intOut );
hgs
parents: 41
diff changeset
  4306
                            
hgs
parents: 41
diff changeset
  4307
                      if( intOut )
hgs
parents: 41
diff changeset
  4308
                          {
hgs
parents: 41
diff changeset
  4309
                              foundCount++;    
hgs
parents: 41
diff changeset
  4310
                          }
hgs
parents: 41
diff changeset
  4311
                  } 
hgs
parents: 41
diff changeset
  4312
        }
hgs
parents: 41
diff changeset
  4313
hgs
parents: 41
diff changeset
  4314
        if(foundCount != 3)
hgs
parents: 41
diff changeset
  4315
            {
hgs
parents: 41
diff changeset
  4316
                *aRetval = KErrNotFound;
hgs
parents: 41
diff changeset
  4317
            }
hgs
parents: 41
diff changeset
  4318
                       
hgs
parents: 41
diff changeset
  4319
        //
hgs
parents: 41
diff changeset
  4320
        // Reset Settings
hgs
parents: 41
diff changeset
  4321
        //
hgs
parents: 41
diff changeset
  4322
        TAccModeSetting accModeSettingIn;
hgs
parents: 41
diff changeset
  4323
        TBuf< KMaxAccModeSetting > aDesIn; 
hgs
parents: 41
diff changeset
  4324
        // Set
hgs
parents: 41
diff changeset
  4325
        // setting 1
hgs
parents: 41
diff changeset
  4326
        accModeSettingIn.SetId( 11 ); // unknown TInt
hgs
parents: 41
diff changeset
  4327
        accModeSettingIn.SetTInt( 0 );
hgs
parents: 41
diff changeset
  4328
        TAccModeSettingArray arrayIn;
hgs
parents: 41
diff changeset
  4329
        arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  4330
                    
hgs
parents: 41
diff changeset
  4331
        // setting 2
hgs
parents: 41
diff changeset
  4332
        accModeSettingIn.SetId( 12 );   // unknown Des
hgs
parents: 41
diff changeset
  4333
        _LIT( KAccSetting2, "" );
hgs
parents: 41
diff changeset
  4334
        aDesIn.Copy( KAccSetting2 );
hgs
parents: 41
diff changeset
  4335
        accModeSettingIn.SetTDes( aDesIn );
hgs
parents: 41
diff changeset
  4336
        arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  4337
                    
hgs
parents: 41
diff changeset
  4338
        // setting 3
hgs
parents: 41
diff changeset
  4339
        accModeSettingIn.SetId( 13 ); // unknown TBool
hgs
parents: 41
diff changeset
  4340
        accModeSettingIn.SetTBool( EFalse );
hgs
parents: 41
diff changeset
  4341
        arrayIn.AddSetting( accModeSettingIn );
hgs
parents: 41
diff changeset
  4342
                    
hgs
parents: 41
diff changeset
  4343
        iAccessorySettings->SetAccessoryModeSettingsL( tAccMode, arrayIn );
hgs
parents: 41
diff changeset
  4344
    
hgs
parents: 41
diff changeset
  4345
    }
hgs
parents: 41
diff changeset
  4346
hgs
parents: 41
diff changeset
  4347
void CTFAccessoryTestControl::SetIntValue( TTFAccessoryTestCaseStateControl& aParameter, TInt *aRetval )
hgs
parents: 41
diff changeset
  4348
    {
hgs
parents: 41
diff changeset
  4349
        switch( aParameter.iArg3 )
hgs
parents: 41
diff changeset
  4350
               {
hgs
parents: 41
diff changeset
  4351
               case KAccSetVolumeLevel:
hgs
parents: 41
diff changeset
  4352
                   {
hgs
parents: 41
diff changeset
  4353
                   //AccPolCommonNameValuePairs.h contains following example code  
hgs
parents: 41
diff changeset
  4354
                   RAccessoryControl accessoryControl;
hgs
parents: 41
diff changeset
  4355
                   accessoryControl.CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  4356
                            
hgs
parents: 41
diff changeset
  4357
                   CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();  
hgs
parents: 41
diff changeset
  4358
                   CleanupStack::PushL( nameArray );      
hgs
parents: 41
diff changeset
  4359
                   accessoryControl.GetSubblockNameArrayL( iGenericId[aParameter.iGid], *nameArray );
hgs
parents: 41
diff changeset
  4360
            
hgs
parents: 41
diff changeset
  4361
                   TAccPolNameRecord nameRecord;
hgs
parents: 41
diff changeset
  4362
                   nameRecord.SetNameL( KAccSetVolumeLevel );                      
hgs
parents: 41
diff changeset
  4363
                   TAccValueTypeTInt value;
hgs
parents: 41
diff changeset
  4364
                        
hgs
parents: 41
diff changeset
  4365
                   if( nameArray->HasName( KAccSetVolumeLevel ) )
hgs
parents: 41
diff changeset
  4366
                       {
hgs
parents: 41
diff changeset
  4367
                       accessoryControl.GetValueL( iGenericId[aParameter.iGid], nameRecord, value );                                               
hgs
parents: 41
diff changeset
  4368
                       value.iValue = value.iValue | aParameter.iArg1;                
hgs
parents: 41
diff changeset
  4369
                       accessoryControl.AccessoryValueChangedNotifyL( iGenericId[aParameter.iGid], nameRecord, value );
hgs
parents: 41
diff changeset
  4370
                   }
hgs
parents: 41
diff changeset
  4371
                                
hgs
parents: 41
diff changeset
  4372
                   CleanupStack::PopAndDestroy( nameArray );
hgs
parents: 41
diff changeset
  4373
                   accessoryControl.CloseSubSession();
hgs
parents: 41
diff changeset
  4374
                   *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4375
                   }
hgs
parents: 41
diff changeset
  4376
                   break;
hgs
parents: 41
diff changeset
  4377
            
hgs
parents: 41
diff changeset
  4378
               default:
hgs
parents: 41
diff changeset
  4379
                   {
hgs
parents: 41
diff changeset
  4380
                   TAccPolNameRecord aNameRecord;
hgs
parents: 41
diff changeset
  4381
                   aNameRecord.SetNameL( aParameter.iArg3 );                       
hgs
parents: 41
diff changeset
  4382
                   TAccValueTypeTInt aIntValue;         
hgs
parents: 41
diff changeset
  4383
                   aIntValue.iValue = aParameter.iArg1;
hgs
parents: 41
diff changeset
  4384
                   *aRetval = iAccessoryControl->SetValueL( iGenericId[aParameter.iGid], aNameRecord, aIntValue );
hgs
parents: 41
diff changeset
  4385
                   }
hgs
parents: 41
diff changeset
  4386
                   break;
hgs
parents: 41
diff changeset
  4387
               }
hgs
parents: 41
diff changeset
  4388
    
hgs
parents: 41
diff changeset
  4389
    }
hgs
parents: 41
diff changeset
  4390
hgs
parents: 41
diff changeset
  4391
void CTFAccessoryTestControl::SelectionDialog( TTFAccessoryFunction aCase, TInt* aRetval )
hgs
parents: 41
diff changeset
  4392
    {
hgs
parents: 41
diff changeset
  4393
        switch(aCase)
hgs
parents: 41
diff changeset
  4394
            {
hgs
parents: 41
diff changeset
  4395
            case ETFSelectionDialogText:
hgs
parents: 41
diff changeset
  4396
                {
hgs
parents: 41
diff changeset
  4397
                    const TUid KAccFwUiDialogNotifierUid = { 0x10205062 };
hgs
parents: 41
diff changeset
  4398
                        
hgs
parents: 41
diff changeset
  4399
                    RNotifier notifier;
hgs
parents: 41
diff changeset
  4400
                    notifier.Connect();
hgs
parents: 41
diff changeset
  4401
                    
hgs
parents: 41
diff changeset
  4402
                    TInt selectionListBitmask = 255;
hgs
parents: 41
diff changeset
  4403
                    TInt reply = 0;
hgs
parents: 41
diff changeset
  4404
                    
hgs
parents: 41
diff changeset
  4405
                    TPckg<TInt> replyPck( reply);
hgs
parents: 41
diff changeset
  4406
                    TPckg<TUint32> selectionBitmaskPackage( selectionListBitmask);
hgs
parents: 41
diff changeset
  4407
        
hgs
parents: 41
diff changeset
  4408
                    //activate active object
hgs
parents: 41
diff changeset
  4409
                    TRequestStatus status;
hgs
parents: 41
diff changeset
  4410
                    status = KRequestPending;
hgs
parents: 41
diff changeset
  4411
                    
hgs
parents: 41
diff changeset
  4412
                    //open ui
hgs
parents: 41
diff changeset
  4413
                    notifier.StartNotifierAndGetResponse( status, KAccFwUiDialogNotifierUid, selectionBitmaskPackage, replyPck);
hgs
parents: 41
diff changeset
  4414
                    
hgs
parents: 41
diff changeset
  4415
                    User::WaitForRequest( status);
hgs
parents: 41
diff changeset
  4416
                    
hgs
parents: 41
diff changeset
  4417
                    
hgs
parents: 41
diff changeset
  4418
                    notifier.Close();
hgs
parents: 41
diff changeset
  4419
                    
hgs
parents: 41
diff changeset
  4420
                    *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4421
                }
hgs
parents: 41
diff changeset
  4422
 
hgs
parents: 41
diff changeset
  4423
            case ETFSelectionDialogCancel:
hgs
parents: 41
diff changeset
  4424
                {
hgs
parents: 41
diff changeset
  4425
                    const TUid KAccFwUiDialogNotifierUid = { 0x10205062 };
hgs
parents: 41
diff changeset
  4426
                            
hgs
parents: 41
diff changeset
  4427
                    RNotifier notifier;
hgs
parents: 41
diff changeset
  4428
                    notifier.Connect();
hgs
parents: 41
diff changeset
  4429
                    
hgs
parents: 41
diff changeset
  4430
                    TInt selectionListBitmask = 7;
hgs
parents: 41
diff changeset
  4431
                    TInt reply = 0;
hgs
parents: 41
diff changeset
  4432
                    
hgs
parents: 41
diff changeset
  4433
                    TPckg<TInt> replyPck( reply);
hgs
parents: 41
diff changeset
  4434
                    TPckg<TUint32> selectionBitmaskPackage( selectionListBitmask);
hgs
parents: 41
diff changeset
  4435
        
hgs
parents: 41
diff changeset
  4436
                    //activate active object
hgs
parents: 41
diff changeset
  4437
                    TRequestStatus status;
hgs
parents: 41
diff changeset
  4438
                    
hgs
parents: 41
diff changeset
  4439
                    //open ui
hgs
parents: 41
diff changeset
  4440
                    notifier.StartNotifierAndGetResponse( status, KAccFwUiDialogNotifierUid, selectionBitmaskPackage, replyPck);
hgs
parents: 41
diff changeset
  4441
                    User::After( 2500000);
hgs
parents: 41
diff changeset
  4442
                    notifier.CancelNotifier( KAccFwUiDialogNotifierUid);
hgs
parents: 41
diff changeset
  4443
                    
hgs
parents: 41
diff changeset
  4444
                    // Implementation of the dialog is changed. Request is completed every time
hgs
parents: 41
diff changeset
  4445
                    User::WaitForRequest( status );
hgs
parents: 41
diff changeset
  4446
                    
hgs
parents: 41
diff changeset
  4447
                    notifier.Close();
hgs
parents: 41
diff changeset
  4448
                    
hgs
parents: 41
diff changeset
  4449
                    *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4450
                }
hgs
parents: 41
diff changeset
  4451
            
hgs
parents: 41
diff changeset
  4452
            default:
hgs
parents: 41
diff changeset
  4453
                break;
hgs
parents: 41
diff changeset
  4454
                
hgs
parents: 41
diff changeset
  4455
            }
hgs
parents: 41
diff changeset
  4456
    
hgs
parents: 41
diff changeset
  4457
    }
hgs
parents: 41
diff changeset
  4458
hgs
parents: 41
diff changeset
  4459
void CTFAccessoryTestControl::CheckConnectedAccessory( TInt* aRetval )
hgs
parents: 41
diff changeset
  4460
    {
hgs
parents: 41
diff changeset
  4461
        *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4462
                    
hgs
parents: 41
diff changeset
  4463
        TAccPolGenericID            genID;                                  // TGeneric ID that should be connected
hgs
parents: 41
diff changeset
  4464
        TAccPolGenericID            genIDConnected;                         // TGeneric ID that is connected
hgs
parents: 41
diff changeset
  4465
        TAccPolGIDHeader            iGenericIDHeader;                       // Header of the GID that should be connected
hgs
parents: 41
diff changeset
  4466
        TAccPolGIDHeader            iGenericIDHeaderConnected;              // Header of the connected GID
hgs
parents: 41
diff changeset
  4467
        TAccPolGenericIDArray       genericIdArray;                         // Array of connected generic ID's
hgs
parents: 41
diff changeset
  4468
        CAccConGenericID*           aGenericID = CAccConGenericID::NewL();  // This might be needed for capabilities 
hgs
parents: 41
diff changeset
  4469
        
hgs
parents: 41
diff changeset
  4470
        CleanupStack::PushL( aGenericID );                        
hgs
parents: 41
diff changeset
  4471
        CAccPolSubblockNameArray*   nameArrayConnected = CAccPolSubblockNameArray::NewL();
hgs
parents: 41
diff changeset
  4472
        
hgs
parents: 41
diff changeset
  4473
        CleanupStack::PushL( nameArrayConnected );
hgs
parents: 41
diff changeset
  4474
        
hgs
parents: 41
diff changeset
  4475
        TAccPolGenericID genericID = aGenericID->GenericID();
hgs
parents: 41
diff changeset
  4476
hgs
parents: 41
diff changeset
  4477
        TBuf<KHWModelIDMaxLength>      hwModelID(_L("headset"));
hgs
parents: 41
diff changeset
  4478
        // Set GenericID header
hgs
parents: 41
diff changeset
  4479
        iGenericIDHeader.iAccessoryDeviceType   = KDTHeadset;
hgs
parents: 41
diff changeset
  4480
        iGenericIDHeader.iPhysicalConnection    = KPCWired;
hgs
parents: 41
diff changeset
  4481
        iGenericIDHeader.iApplicationProtocol   = 0x0;
hgs
parents: 41
diff changeset
  4482
    
hgs
parents: 41
diff changeset
  4483
        iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;   
hgs
parents: 41
diff changeset
  4484
    
hgs
parents: 41
diff changeset
  4485
        iGenericIDHeader.iHWModelID             = hwModelID;
hgs
parents: 41
diff changeset
  4486
        iGenericIDHeader.iHWDeviceID            = 0x0;
hgs
parents: 41
diff changeset
  4487
        iGenericIDHeader.iDBID                    = 0x0;
hgs
parents: 41
diff changeset
  4488
                                           
hgs
parents: 41
diff changeset
  4489
        RAccessoryConnection* accessoryConnection = new ( ELeave ) RAccessoryConnection();
hgs
parents: 41
diff changeset
  4490
        CleanupStack::PushL( accessoryConnection );
hgs
parents: 41
diff changeset
  4491
        accessoryConnection->CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  4492
        accessoryConnection->GetAccessoryConnectionStatus( genericIdArray );
hgs
parents: 41
diff changeset
  4493
        CleanupStack::PopAndDestroy( accessoryConnection );
hgs
parents: 41
diff changeset
  4494
        
hgs
parents: 41
diff changeset
  4495
        genIDConnected = genericIdArray.GetGenericIDL( 0 );
hgs
parents: 41
diff changeset
  4496
        
hgs
parents: 41
diff changeset
  4497
        RAccessorySingleConnection singleConnect;// = new ( ELeave ) RAccessoryConnectionBase();
hgs
parents: 41
diff changeset
  4498
        singleConnect.CreateSubSession( iAccessoryServer );
hgs
parents: 41
diff changeset
  4499
        singleConnect.GetSubblockNameArrayL( genIDConnected, *nameArrayConnected );
hgs
parents: 41
diff changeset
  4500
        
hgs
parents: 41
diff changeset
  4501
        singleConnect.CloseSubSession();
hgs
parents: 41
diff changeset
  4502
        
hgs
parents: 41
diff changeset
  4503
        iGenericIDHeaderConnected.iAccessoryDeviceType = genIDConnected.DeviceTypeCaps();
hgs
parents: 41
diff changeset
  4504
        iGenericIDHeaderConnected.iPhysicalConnection = genIDConnected.PhysicalConnectionCaps();
hgs
parents: 41
diff changeset
  4505
        iGenericIDHeaderConnected.iApplicationProtocol = genIDConnected.ApplicationProtocolCaps();
hgs
parents: 41
diff changeset
  4506
        iGenericIDHeaderConnected.iCapabilitiesSubblocks = genIDConnected.SubblockCaps();
hgs
parents: 41
diff changeset
  4507
        iGenericIDHeaderConnected.iHWModelID = genIDConnected.HWModelID();
hgs
parents: 41
diff changeset
  4508
        iGenericIDHeaderConnected.iHWDeviceID = genIDConnected.HWDeviceID();
hgs
parents: 41
diff changeset
  4509
        iGenericIDHeaderConnected.iDBID = 0x0;
hgs
parents: 41
diff changeset
  4510
hgs
parents: 41
diff changeset
  4511
        //Check GenericID header
hgs
parents: 41
diff changeset
  4512
        if( iGenericIDHeader.iAccessoryDeviceType != iGenericIDHeaderConnected.iAccessoryDeviceType )
hgs
parents: 41
diff changeset
  4513
        {
hgs
parents: 41
diff changeset
  4514
            *aRetval = EFalse;
hgs
parents: 41
diff changeset
  4515
        }
hgs
parents: 41
diff changeset
  4516
        if( iGenericIDHeader.iPhysicalConnection != iGenericIDHeaderConnected.iPhysicalConnection )
hgs
parents: 41
diff changeset
  4517
        {
hgs
parents: 41
diff changeset
  4518
            *aRetval = EFalse;
hgs
parents: 41
diff changeset
  4519
        }
hgs
parents: 41
diff changeset
  4520
        if( iGenericIDHeader.iApplicationProtocol != iGenericIDHeaderConnected.iApplicationProtocol )
hgs
parents: 41
diff changeset
  4521
        {
hgs
parents: 41
diff changeset
  4522
            *aRetval = EFalse;
hgs
parents: 41
diff changeset
  4523
        }
hgs
parents: 41
diff changeset
  4524
        if( iGenericIDHeader.iCapabilitiesSubblocks != iGenericIDHeaderConnected.iCapabilitiesSubblocks )
hgs
parents: 41
diff changeset
  4525
        {
hgs
parents: 41
diff changeset
  4526
            *aRetval = EFalse;
hgs
parents: 41
diff changeset
  4527
        }
hgs
parents: 41
diff changeset
  4528
        if( iGenericIDHeader.iHWModelID != iGenericIDHeaderConnected.iHWModelID )
hgs
parents: 41
diff changeset
  4529
        {
hgs
parents: 41
diff changeset
  4530
            *aRetval = EFalse;
hgs
parents: 41
diff changeset
  4531
        }
hgs
parents: 41
diff changeset
  4532
        if( iGenericIDHeader.iHWDeviceID != iGenericIDHeaderConnected.iHWDeviceID )
hgs
parents: 41
diff changeset
  4533
        {
hgs
parents: 41
diff changeset
  4534
            *aRetval = EFalse;
hgs
parents: 41
diff changeset
  4535
        }
hgs
parents: 41
diff changeset
  4536
        if( !( nameArrayConnected->HasName( KAccStereoAudio ) ) )
hgs
parents: 41
diff changeset
  4537
        {
hgs
parents: 41
diff changeset
  4538
            *aRetval = EFalse;
hgs
parents: 41
diff changeset
  4539
        }
hgs
parents: 41
diff changeset
  4540
hgs
parents: 41
diff changeset
  4541
        if( !( nameArrayConnected->HasName( KAccAudioOutConnector ) ) )
hgs
parents: 41
diff changeset
  4542
        {
hgs
parents: 41
diff changeset
  4543
            *aRetval = EFalse;
hgs
parents: 41
diff changeset
  4544
        }
hgs
parents: 41
diff changeset
  4545
hgs
parents: 41
diff changeset
  4546
        if( !( nameArrayConnected->HasName( KAccAudioOutputType ) ) )
hgs
parents: 41
diff changeset
  4547
        {
hgs
parents: 41
diff changeset
  4548
            *aRetval = EFalse;
hgs
parents: 41
diff changeset
  4549
        }
hgs
parents: 41
diff changeset
  4550
        //CleanupStack::PopAndDestroy( nameValueArray );
hgs
parents: 41
diff changeset
  4551
        CleanupStack::PopAndDestroy( nameArrayConnected );
hgs
parents: 41
diff changeset
  4552
        CleanupStack::PopAndDestroy( aGenericID );
hgs
parents: 41
diff changeset
  4553
hgs
parents: 41
diff changeset
  4554
    }
hgs
parents: 41
diff changeset
  4555
hgs
parents: 41
diff changeset
  4556
hgs
parents: 41
diff changeset
  4557
void CTFAccessoryTestControl::CallTClassMethods( TInt* aRetval )
hgs
parents: 41
diff changeset
  4558
    {
hgs
parents: 41
diff changeset
  4559
     //   Settings();
hgs
parents: 41
diff changeset
  4560
        Policy();
hgs
parents: 41
diff changeset
  4561
      *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4562
    }
hgs
parents: 41
diff changeset
  4563
hgs
parents: 41
diff changeset
  4564
void CTFAccessoryTestControl::Settings()
hgs
parents: 41
diff changeset
  4565
    {
hgs
parents: 41
diff changeset
  4566
    TAccModeSettingArray array;
hgs
parents: 41
diff changeset
  4567
    array.Reset();
hgs
parents: 41
diff changeset
  4568
    TInt ret = array.GetMaxArraySize();
hgs
parents: 41
diff changeset
  4569
    TAccModeSetting setting;
hgs
parents: 41
diff changeset
  4570
    TUint32 settingId( 1 );
hgs
parents: 41
diff changeset
  4571
    setting.SetId( settingId );
hgs
parents: 41
diff changeset
  4572
    array.AddSetting( setting );
hgs
parents: 41
diff changeset
  4573
    TAccModeSetting setting2;
hgs
parents: 41
diff changeset
  4574
    ret = array.GetSetting( 0, setting2 );
hgs
parents: 41
diff changeset
  4575
    ret = array.GetArraySize();
hgs
parents: 41
diff changeset
  4576
    }
hgs
parents: 41
diff changeset
  4577
hgs
parents: 41
diff changeset
  4578
void CTFAccessoryTestControl::Policy()
hgs
parents: 41
diff changeset
  4579
    {
hgs
parents: 41
diff changeset
  4580
    TInt valueInt( 1 );
hgs
parents: 41
diff changeset
  4581
    TUint32 valueUInt( 1 );
hgs
parents: 41
diff changeset
  4582
    TDesC8 des( _L8( "timo" ) );
hgs
parents: 41
diff changeset
  4583
    //TDes8 valueDesc = des;
hgs
parents: 41
diff changeset
  4584
    TAccPolNameRecord nameRecord;
hgs
parents: 41
diff changeset
  4585
    TAccPolValueRecord valRec( des, EAPVPolicy );
hgs
parents: 41
diff changeset
  4586
    TAccPolNameValueRecord nameValRec;
hgs
parents: 41
diff changeset
  4587
    TAccPolNameValueRecord nameValRec1( nameRecord, valRec );
hgs
parents: 41
diff changeset
  4588
    TAccPolNameValueRecord nameValRec2( valueUInt, valueInt, EAPVInt, EAPVPolicy );
hgs
parents: 41
diff changeset
  4589
    TAccPolNameValueRecord nameValRec3( valueUInt, des, EAPVPolicy );
hgs
parents: 41
diff changeset
  4590
    TAccPolNameValueRecord nameValRec4( valueUInt );
hgs
parents: 41
diff changeset
  4591
    //TDesC8 valueToGet;
hgs
parents: 41
diff changeset
  4592
    valRec.GetValueL( des );
hgs
parents: 41
diff changeset
  4593
    valRec.SetValue( des );
hgs
parents: 41
diff changeset
  4594
    //valRec.SetValue( valueToGet );
hgs
parents: 41
diff changeset
  4595
    TAccPolValueRecord valRec1( valueInt, EAPVInt, EAPVPolicy );
hgs
parents: 41
diff changeset
  4596
    valRec1.SetValue( valueInt );
hgs
parents: 41
diff changeset
  4597
    valRec1.SetLocation( EAPVPolicy );
hgs
parents: 41
diff changeset
  4598
    valRec1.SetL( valueInt, EAPVInt, EAPVPolicy );
hgs
parents: 41
diff changeset
  4599
    }
hgs
parents: 41
diff changeset
  4600
hgs
parents: 41
diff changeset
  4601
void CTFAccessoryTestControl::GetBoolAccessoryModeSetting( TTFAccessoryTestCaseStateControl& aParameter, TInt* aRetval )
hgs
parents: 41
diff changeset
  4602
    {
hgs
parents: 41
diff changeset
  4603
        TBool aSettingsValueBool;
hgs
parents: 41
diff changeset
  4604
                    
hgs
parents: 41
diff changeset
  4605
        TAccMode aAccMode = (TAccMode)aParameter.iArg1;
hgs
parents: 41
diff changeset
  4606
        TAccModeSetting aSetting;
hgs
parents: 41
diff changeset
  4607
        aSetting.SetId(aParameter.iArg2);
hgs
parents: 41
diff changeset
  4608
        
hgs
parents: 41
diff changeset
  4609
        *aRetval = iAccessorySettings->GetAccessoryModeSetting(aAccMode, aSetting);
hgs
parents: 41
diff changeset
  4610
        
hgs
parents: 41
diff changeset
  4611
        if( aSetting.Type() == EAccModeSettingBool) 
hgs
parents: 41
diff changeset
  4612
            {
hgs
parents: 41
diff changeset
  4613
                *aRetval = aSetting.GetTBool(aSettingsValueBool);
hgs
parents: 41
diff changeset
  4614
                
hgs
parents: 41
diff changeset
  4615
                if(*aRetval != KErrNotFound)
hgs
parents: 41
diff changeset
  4616
                {
hgs
parents: 41
diff changeset
  4617
                    if(aSettingsValueBool == (TBool)aParameter.iArg4)  
hgs
parents: 41
diff changeset
  4618
                    {
hgs
parents: 41
diff changeset
  4619
                        *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4620
                    }
hgs
parents: 41
diff changeset
  4621
                    else
hgs
parents: 41
diff changeset
  4622
                    {
hgs
parents: 41
diff changeset
  4623
                        *aRetval = KErrArgument;
hgs
parents: 41
diff changeset
  4624
                    }
hgs
parents: 41
diff changeset
  4625
                }
hgs
parents: 41
diff changeset
  4626
            }
hgs
parents: 41
diff changeset
  4627
            else
hgs
parents: 41
diff changeset
  4628
            {
hgs
parents: 41
diff changeset
  4629
                *aRetval = KErrNotFound;
hgs
parents: 41
diff changeset
  4630
            }
hgs
parents: 41
diff changeset
  4631
    }
hgs
parents: 41
diff changeset
  4632
hgs
parents: 41
diff changeset
  4633
void CTFAccessoryTestControl::GetIntAccessoryModeSetting( TTFAccessoryTestCaseStateControl& aParameter, TInt* aRetval )
hgs
parents: 41
diff changeset
  4634
    {
hgs
parents: 41
diff changeset
  4635
        TInt aSettingsValueInt;
hgs
parents: 41
diff changeset
  4636
                    
hgs
parents: 41
diff changeset
  4637
        TAccMode aAccMode = (TAccMode)aParameter.iArg1;
hgs
parents: 41
diff changeset
  4638
        TAccModeSetting aSetting;
hgs
parents: 41
diff changeset
  4639
        aSetting.SetId(aParameter.iArg2);
hgs
parents: 41
diff changeset
  4640
        
hgs
parents: 41
diff changeset
  4641
        *aRetval = iAccessorySettings->GetAccessoryModeSetting(aAccMode, aSetting);
hgs
parents: 41
diff changeset
  4642
        
hgs
parents: 41
diff changeset
  4643
        if(aSetting.Type() == EAccModeSettingInt)  
hgs
parents: 41
diff changeset
  4644
            {
hgs
parents: 41
diff changeset
  4645
                *aRetval = aSetting.GetTInt(aSettingsValueInt);
hgs
parents: 41
diff changeset
  4646
                
hgs
parents: 41
diff changeset
  4647
                if(*aRetval != KErrNotFound)
hgs
parents: 41
diff changeset
  4648
                {
hgs
parents: 41
diff changeset
  4649
                    if( aSettingsValueInt == aParameter.iArg4 )  
hgs
parents: 41
diff changeset
  4650
                    {
hgs
parents: 41
diff changeset
  4651
                        *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4652
                    }
hgs
parents: 41
diff changeset
  4653
                    else
hgs
parents: 41
diff changeset
  4654
                    {
hgs
parents: 41
diff changeset
  4655
                        *aRetval = KErrArgument;
hgs
parents: 41
diff changeset
  4656
                    }
hgs
parents: 41
diff changeset
  4657
                }
hgs
parents: 41
diff changeset
  4658
            }
hgs
parents: 41
diff changeset
  4659
            else
hgs
parents: 41
diff changeset
  4660
            {
hgs
parents: 41
diff changeset
  4661
                *aRetval = KErrNotFound;
hgs
parents: 41
diff changeset
  4662
            }
hgs
parents: 41
diff changeset
  4663
    }
hgs
parents: 41
diff changeset
  4664
hgs
parents: 41
diff changeset
  4665
void CTFAccessoryTestControl::GetDesAccessoryModeSetting( TTFAccessoryTestCaseStateControl& aParameter, TInt* aRetval )
hgs
parents: 41
diff changeset
  4666
    {
hgs
parents: 41
diff changeset
  4667
        TBuf<KMaxAccModeSetting> aSettingsValueDes;
hgs
parents: 41
diff changeset
  4668
                    
hgs
parents: 41
diff changeset
  4669
        TAccMode aAccMode = (TAccMode)aParameter.iArg1;
hgs
parents: 41
diff changeset
  4670
        TAccModeSetting aSetting;
hgs
parents: 41
diff changeset
  4671
        aSetting.SetId( aParameter.iArg2 );
hgs
parents: 41
diff changeset
  4672
        
hgs
parents: 41
diff changeset
  4673
        *aRetval = iAccessorySettings->GetAccessoryModeSetting( aAccMode, aSetting );
hgs
parents: 41
diff changeset
  4674
        
hgs
parents: 41
diff changeset
  4675
        if( aSetting.Type() == EAccModeSettingDes ) 
hgs
parents: 41
diff changeset
  4676
            {
hgs
parents: 41
diff changeset
  4677
                *aRetval = aSetting.GetTDes( aSettingsValueDes );
hgs
parents: 41
diff changeset
  4678
                
hgs
parents: 41
diff changeset
  4679
                if(*aRetval != KErrNotFound)
hgs
parents: 41
diff changeset
  4680
                {
hgs
parents: 41
diff changeset
  4681
                    TBuf<KMaxAccModeSetting> buffer;
hgs
parents: 41
diff changeset
  4682
                    buffer.Num( aParameter.iArg3 );
hgs
parents: 41
diff changeset
  4683
                    if( KErrNone == aSettingsValueDes.Compare( buffer ) )  
hgs
parents: 41
diff changeset
  4684
                    {
hgs
parents: 41
diff changeset
  4685
                        *aRetval = KErrNone;
hgs
parents: 41
diff changeset
  4686
                    }
hgs
parents: 41
diff changeset
  4687
                    else
hgs
parents: 41
diff changeset
  4688
                    {
hgs
parents: 41
diff changeset
  4689
                        *aRetval = KErrArgument;
hgs
parents: 41
diff changeset
  4690
                    }
hgs
parents: 41
diff changeset
  4691
                }
hgs
parents: 41
diff changeset
  4692
            }
hgs
parents: 41
diff changeset
  4693
            else
hgs
parents: 41
diff changeset
  4694
            {
hgs
parents: 41
diff changeset
  4695
                *aRetval = KErrNotFound;
hgs
parents: 41
diff changeset
  4696
            }
hgs
parents: 41
diff changeset
  4697
    }    
hgs
parents: 41
diff changeset
  4698
hgs
parents: 41
diff changeset
  4699
// End of file