accessoryservices/accessorymonitor/tsrc/public/basic/stubs/AsyStub/src/AsyStubService.cpp
changeset 0 4e1aa6a622a0
equal deleted inserted replaced
-1:000000000000 0:4e1aa6a622a0
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Used to emulate accessory connections in emulator.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include <AccConGenericID.h>
       
    21 #include <AccPolProprietaryNameValuePairs.h>
       
    22 #include "siftrace.h"
       
    23 #include "ASYStubObserver.h"
       
    24 #include "AccMonitorCapMapper.h"
       
    25 
       
    26 // ----------------------------------------------------------------------------------
       
    27 // CASYStubService::CASYStubService() 
       
    28 // ---------------------------------------------------------------------------------- 
       
    29 CASYStubService::CASYStubService() 
       
    30     {           
       
    31     }
       
    32   
       
    33 // ----------------------------------------------------------------------------------
       
    34 // CASYStubService::ConstructL() 
       
    35 // ---------------------------------------------------------------------------------- 
       
    36 void CASYStubService::ConstructL() 
       
    37     {           
       
    38     
       
    39     TInt err(KErrNone);
       
    40     
       
    41     err = iAccessoryServer.Connect();                
       
    42     if ( err != KErrNone )
       
    43         {
       
    44         COMPONENT_TRACE( _L("ASYSTUB - CASYStubService::ConstructL() - failed to connect AccServer") );
       
    45         User::Leave( err );
       
    46         }
       
    47     err = iAccessoryControl.CreateSubSession( iAccessoryServer );
       
    48     if ( err != KErrNone )
       
    49         {
       
    50         COMPONENT_TRACE( _L("ASYSTUB - CASYStubService::ConstructL() - failed to connect RAccessoryControl") );
       
    51         User::Leave( err );
       
    52         }
       
    53     
       
    54     COMPONENT_TRACE( ( _L( "ASYSTUB - CASYParameterResolver::ConstructL() - return" ) ) );
       
    55     } 
       
    56 //
       
    57 // ----------------------------------------------------------------------------------
       
    58 // CASYStubService::~CASYStubService()
       
    59 // ---------------------------------------------------------------------------------- 
       
    60 CASYStubService::~CASYStubService()
       
    61     {       
       
    62     COMPONENT_TRACE( ( _L( "ASYSTUB - CTFTestControlObserver::~CTFTestControlObserver - Enter" ) ) );    
       
    63     iAccessoryControl.CloseSubSession();
       
    64     iAccessoryServer.Close();
       
    65     COMPONENT_TRACE( ( _L( "ASYSTUB - CTFTestControlObserver::~CTFTestControlObserver - succesful" ) ) );    
       
    66     }
       
    67 //
       
    68 // ----------------------------------------------------------------------------------
       
    69 // CASYStubService::Service()
       
    70 // ----------------------------------------------------------------------------------
       
    71 void CASYStubService::Service(
       
    72     TTFASYReference aMethod,
       
    73     TInt64 aParam1,
       
    74     RArray<TUint32> aCapabilityArray )
       
    75     {
       
    76     
       
    77     switch( aMethod )
       
    78         {
       
    79         case ETFAsyConn:
       
    80             {
       
    81             // Connection that is made is based on the database
       
    82             // Generic ID is mapped from HW Device ID
       
    83             TRequestStatus status;                
       
    84             CAccConfigFileParser* accConfigFileParser =
       
    85                 CAccConfigFileParser::NewL( _L( "Configuration file" ) ); 
       
    86             CleanupStack::PushL( accConfigFileParser );
       
    87             TBuf< 12 > HWModelID;
       
    88             HWModelID.Num( aParam1 );
       
    89             
       
    90             CAccConGenericID* genericID = CAccConGenericID::NewL();   
       
    91             CleanupStack::PushL( genericID ); 
       
    92             
       
    93             accConfigFileParser->FindL( genericID, aParam1, HWModelID );
       
    94             iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
       
    95             
       
    96             User::WaitForRequest( status );
       
    97             TInt retval = status.Int();         
       
    98             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Connect status %d" ), retval) );
       
    99             
       
   100             iGenericId = genericID->GenericID();
       
   101             CleanupStack::PopAndDestroy( genericID );
       
   102             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   103             }
       
   104             break;
       
   105         
       
   106         case ETFAsyConnOpenCable:
       
   107         case ETFAsyConnectOpenCable3Poles:
       
   108             {
       
   109             // Connection is made by giving capabilities from adaptation side
       
   110             TRequestStatus status;                
       
   111             CAccConfigFileParser* accConfigFileParser 
       
   112                 = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
       
   113             CleanupStack::PushL( accConfigFileParser );
       
   114             CAccConGenericID* genericID = CAccConGenericID::NewL();
       
   115             CleanupStack::PushL( genericID );
       
   116             
       
   117             RArray<TAccPolNameValueRecord> nameValueArray;  
       
   118             CleanupClosePushL( nameValueArray );      
       
   119             TBuf< KHWModelIDMaxLength > hwModelID( _L( "opencable" ) );
       
   120             TAccPolNameRecord nameRecord;
       
   121             TAccPolValueRecord valueRecord;
       
   122             
       
   123             // Set GenericID header
       
   124             iGenericIDHeader.iAccessoryDeviceType = KDTAVDevice;
       
   125             iGenericIDHeader.iPhysicalConnection = KPCWired;
       
   126             iGenericIDHeader.iApplicationProtocol = 0x0;
       
   127             
       
   128             if ( aMethod == ETFAsyConnectOpenCable3Poles )
       
   129                 {
       
   130                 iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;                 
       
   131                 }
       
   132             else
       
   133                 {
       
   134                 iGenericIDHeader.iCapabilitiesSubblocks = KSBVideoSubblock | KSBAudioSubblock;  
       
   135                 }
       
   136             
       
   137             iGenericIDHeader.iHWModelID = hwModelID;
       
   138             iGenericIDHeader.iHWDeviceID = 0x0;
       
   139             iGenericIDHeader.iDBID = 0x0;
       
   140             
       
   141             accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
       
   142             nameValueArray.Close();
       
   143                                                    
       
   144             iAccessoryControl.ConnectAccessory( status, genericID, ETrue );
       
   145             User::WaitForRequest( status ); 
       
   146             TInt retval = status.Int();           
       
   147             
       
   148             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Connect status %d" ), retval ) );
       
   149             
       
   150             iGenericId = genericID->GenericID();                    
       
   151       
       
   152             CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
       
   153             CleanupStack::PopAndDestroy( genericID );
       
   154             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   155             }
       
   156         break;        
       
   157         
       
   158         case ETFAsyUpdateTVOut:
       
   159             {
       
   160             // Connection is made by giving capabilities from adaptation side
       
   161             TRequestStatus status;
       
   162             CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L("Configuration file"));
       
   163             CleanupStack::PushL( accConfigFileParser );
       
   164             CAccConGenericID* genericID = CAccConGenericID::NewL();
       
   165             CleanupStack::PushL( genericID );
       
   166             
       
   167             RArray<TAccPolNameValueRecord> nameValueArray;  
       
   168             CleanupClosePushL( nameValueArray );      
       
   169             TBuf< KHWModelIDMaxLength > hwModelID( _L( "opencable" ) );
       
   170             TAccPolNameRecord nameRecord;
       
   171             TAccPolValueRecord valueRecord;
       
   172 
       
   173             //Set GenericID header
       
   174             iGenericIDHeader.iAccessoryDeviceType = KDTAVDevice;
       
   175             iGenericIDHeader.iPhysicalConnection = KPCWired;
       
   176             iGenericIDHeader.iApplicationProtocol = 0x0;
       
   177             iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock | KSBVideoSubblock;
       
   178             iGenericIDHeader.iHWModelID = hwModelID;
       
   179             iGenericIDHeader.iHWDeviceID = 0x0;
       
   180             
       
   181             iGenericIDHeader.iDBID = iGenericId.UniqueID();
       
   182             
       
   183             //Set "Audio Output Type" capability
       
   184             TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
       
   185                                                                   EAccAudioOutPutTypePublic,
       
   186                                                                   EAPVInt,
       
   187                                                                   EAPVPolicy );
       
   188 
       
   189             nameValueArray.Append( nameValueRecordAudioOutputType );
       
   190       
       
   191 
       
   192             //Set "Audio stereo" capability
       
   193             TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
       
   194                                                                   EAccAudioOutPutTypePublic,
       
   195                                                                   EAPVInt,
       
   196                                                                   EAPVPolicy );
       
   197             
       
   198             nameValueArray.Append( nameValueRecordAudioStereo );
       
   199             //Set "Line out Type" capability
       
   200             TAccPolNameValueRecord  nameValueRecordAudioOut( KAccAudioOut,
       
   201                                                                   TAccAudioOutLineout,
       
   202                                                                   EAPVInt,
       
   203                                                                   EAPVPolicy );
       
   204             nameValueArray.Append( nameValueRecordAudioOut );
       
   205             //Set "Video Output Type" capability
       
   206             TAccPolNameValueRecord  nameValueRecordVideoOut( KAccVideoOut,
       
   207                                                                   EAccVideoOutCVideo,
       
   208                                                                   EAPVInt,
       
   209                                                                   EAPVPolicy );
       
   210             nameValueArray.Append( nameValueRecordVideoOut );
       
   211             accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
       
   212             nameValueArray.Close();
       
   213             
       
   214             iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
       
   215             User::WaitForRequest( status ); 
       
   216             TInt retval = status.Int();           
       
   217             
       
   218             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
       
   219             
       
   220             iGenericId = genericID->GenericID();                    
       
   221             
       
   222             CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
       
   223             CleanupStack::PopAndDestroy( genericID );
       
   224             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   225             }
       
   226         break;     
       
   227         
       
   228         case ETFAsyUpdateHeadset:
       
   229             {
       
   230             // Connection is made by giving capabilities from adaptation side
       
   231             TRequestStatus status;                
       
   232             CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
       
   233             CleanupStack::PushL( accConfigFileParser );
       
   234             CAccConGenericID* genericID = CAccConGenericID::NewL();
       
   235             CleanupStack::PushL( genericID );
       
   236             
       
   237             RArray<TAccPolNameValueRecord> nameValueArray;    
       
   238             CleanupClosePushL( nameValueArray );    
       
   239             TBuf< KHWModelIDMaxLength > hwModelID( _L( "headset" ) );
       
   240             TAccPolNameRecord nameRecord;
       
   241             TAccPolValueRecord valueRecord;
       
   242             
       
   243             //Set GenericID header
       
   244             iGenericIDHeader.iAccessoryDeviceType = KDTHeadset;
       
   245             iGenericIDHeader.iPhysicalConnection = KPCWired;
       
   246             iGenericIDHeader.iApplicationProtocol = 0x0;
       
   247             iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;
       
   248             iGenericIDHeader.iHWModelID = hwModelID;
       
   249             iGenericIDHeader.iHWDeviceID = 0x0;
       
   250             iGenericIDHeader.iDBID = iGenericId.UniqueID();
       
   251             
       
   252             //Set "Audio Output Type" capability
       
   253             TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
       
   254                                                                   EAccAudioOutPutTypePublic,
       
   255                                                                   EAPVInt,
       
   256                                                                   EAPVPolicy );
       
   257             nameValueArray.Append( nameValueRecordAudioOutputType );
       
   258       
       
   259             //Set "Audio stereo" capability
       
   260             TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
       
   261                                                                   EAccAudioOutPutTypePublic,
       
   262                                                                   EAPVInt,
       
   263                                                                   EAPVPolicy );
       
   264             nameValueArray.Append( nameValueRecordAudioStereo );
       
   265             accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
       
   266             nameValueArray.Close();
       
   267                                                    
       
   268             iAccessoryControl.ConnectAccessory( status, genericID, ETrue );
       
   269             User::WaitForRequest( status ); 
       
   270             TInt retval = status.Int();           
       
   271         
       
   272             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
       
   273       
       
   274             iGenericId = genericID->GenericID();                    
       
   275       
       
   276             CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
       
   277             CleanupStack::PopAndDestroy( genericID );
       
   278             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   279             }
       
   280         break;           
       
   281   
       
   282         case ETFAsyConnectHeadset:
       
   283             {
       
   284             // Connection is made by giving capabilities from adaptation side
       
   285             TRequestStatus status;                
       
   286             CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
       
   287             CleanupStack::PushL( accConfigFileParser );
       
   288             CAccConGenericID* genericID = CAccConGenericID::NewL();
       
   289             CleanupStack::PushL( genericID );
       
   290             RArray<TAccPolNameValueRecord> nameValueArray;    
       
   291             CleanupClosePushL( nameValueArray );    
       
   292             TBuf<KHWModelIDMaxLength>      hwModelID( _L( "headset" ) );
       
   293             TAccPolNameRecord              nameRecord;
       
   294             TAccPolValueRecord             valueRecord;
       
   295           
       
   296             //Set GenericID header
       
   297             iGenericIDHeader.iAccessoryDeviceType   = KDTHeadset;
       
   298             iGenericIDHeader.iPhysicalConnection    = KPCWired;
       
   299             iGenericIDHeader.iApplicationProtocol   = 0x0;
       
   300             iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;
       
   301             iGenericIDHeader.iHWModelID             = hwModelID;
       
   302             iGenericIDHeader.iHWDeviceID            = 0x0;
       
   303             
       
   304             //Set "Audio Output Type" capability
       
   305             TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
       
   306                                                                     EAccAudioOutPutTypePublic,
       
   307                                                                     EAPVInt,
       
   308                                                                     EAPVPolicy );
       
   309             nameValueArray.Append( nameValueRecordAudioOutputType );
       
   310             //Set "Audio stereo" capability
       
   311             TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio );
       
   312             nameValueArray.Append( nameValueRecordAudioStereo );
       
   313             accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
       
   314             nameValueArray.Close();
       
   315             iAccessoryControl.ConnectAccessory( status, genericID, ETrue );
       
   316             User::WaitForRequest( status ); 
       
   317             TInt retval = status.Int();           
       
   318             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
       
   319             
       
   320             iGenericId = genericID->GenericID();                    
       
   321             
       
   322             CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
       
   323             CleanupStack::PopAndDestroy( genericID );
       
   324             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   325             }       
       
   326         break;
       
   327         
       
   328   
       
   329           
       
   330         case ETFAsyConnectECIAccessory:
       
   331             {
       
   332             // Connection is made by giving capabilities from adaptation side
       
   333             TRequestStatus status;                
       
   334             CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
       
   335             CleanupStack::PushL( accConfigFileParser );
       
   336             CAccConGenericID* genericID = CAccConGenericID::NewL();
       
   337             CleanupStack::PushL( genericID );
       
   338             
       
   339             RArray< TAccPolNameValueRecord > nameValueArray;    
       
   340             CleanupClosePushL( nameValueArray );    
       
   341             TBuf< KHWModelIDMaxLength >      hwModelID( _L( "headset" ) );
       
   342             TAccPolNameRecord              nameRecord;
       
   343             TAccPolValueRecord             valueRecord;
       
   344             
       
   345             //Set GenericID header
       
   346             iGenericIDHeader.iAccessoryDeviceType   = KDTHeadset;
       
   347             iGenericIDHeader.iPhysicalConnection    = KPCWired;
       
   348             iGenericIDHeader.iApplicationProtocol   = 0x0;
       
   349             iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;
       
   350             iGenericIDHeader.iHWModelID             = hwModelID;
       
   351             iGenericIDHeader.iHWDeviceID            = 0x0;
       
   352 
       
   353             //Set "ECI audio block" capability
       
   354             TBuf8<30> eciData(_L8("ECIAudioBlockData"));
       
   355             TAccPolNameValueRecord  eciAudioBlock(  KAccECIAudioBlock, eciData, EAPVPolicy );
       
   356             nameValueArray.Append( eciAudioBlock );
       
   357             //Set "Audio Output Type" capability
       
   358             TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
       
   359                                                                   EAccAudioOutPutTypePublic,
       
   360                                                                   EAPVInt,
       
   361                                                                   EAPVPolicy );
       
   362             nameValueArray.Append( nameValueRecordAudioOutputType );
       
   363             //Set "Audio stereo" capability
       
   364             TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
       
   365                                                                   EAccAudioOutPutTypePublic,
       
   366                                                                   EAPVInt,
       
   367                                                                   EAPVPolicy );
       
   368             nameValueArray.Append( nameValueRecordAudioStereo );
       
   369             //Set "Audio stereo" capability
       
   370             TAccPolNameValueRecord  nameValueRecordAudioOutconnector( KAccAudioOutConnector,
       
   371                                                                     1,
       
   372                                                                     EAPVBool,
       
   373                                                                     EAPVAccessory );
       
   374             nameValueArray.Append( nameValueRecordAudioOutconnector );
       
   375             accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
       
   376             nameValueArray.Close();
       
   377                                                    
       
   378             iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
       
   379             User::WaitForRequest( status ); 
       
   380             TInt retval = status.Int();           
       
   381             
       
   382             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
       
   383             iGenericId = genericID->GenericID();                    
       
   384             CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
       
   385             CleanupStack::PopAndDestroy( genericID );
       
   386             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   387             }
       
   388         break;           
       
   389                       
       
   390         case ETFAsyConnectECITVOut:
       
   391             {
       
   392             // Connection is made by giving capabilities from adaptation side
       
   393             TRequestStatus status;                
       
   394             CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
       
   395             CleanupStack::PushL( accConfigFileParser );
       
   396             CAccConGenericID* genericID = CAccConGenericID::NewL();
       
   397             CleanupStack::PushL( genericID );
       
   398             RArray<TAccPolNameValueRecord> nameValueArray;    
       
   399             CleanupClosePushL( nameValueArray );    
       
   400             TBuf<KHWModelIDMaxLength>      hwModelID( _L( "TVOut" ) );
       
   401             TAccPolNameRecord              nameRecord;
       
   402             TAccPolValueRecord             valueRecord;
       
   403             
       
   404             //Set GenericID header
       
   405             iGenericIDHeader.iAccessoryDeviceType   = KDTAVDevice;
       
   406             iGenericIDHeader.iPhysicalConnection    = KPCWired;
       
   407             iGenericIDHeader.iApplicationProtocol   = 0x0;
       
   408             iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock|KSBVideoSubblock;
       
   409             iGenericIDHeader.iHWModelID             = hwModelID;
       
   410             iGenericIDHeader.iHWDeviceID            = 0x0;
       
   411             
       
   412             //Set "ECI audio block" capability
       
   413             TBuf8<30> eciData(_L8("ECIAudioBlockData"));
       
   414             TAccPolNameValueRecord  eciAudioBlock(  KAccECIAudioBlock, eciData, EAPVPolicy );
       
   415             nameValueArray.Append( eciAudioBlock);
       
   416             //Set "Audio Output Type" capability
       
   417             TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
       
   418                                                                     EAccAudioOutPutTypePublic,
       
   419                                                                     EAPVInt,
       
   420                                                                     EAPVPolicy );
       
   421             nameValueArray.Append( nameValueRecordAudioOutputType );
       
   422             //Set "Audio stereo" capability
       
   423             TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
       
   424                                                                 EAccAudioOutPutTypePublic,
       
   425                                                                 EAPVInt,
       
   426                                                                 EAPVPolicy );
       
   427             nameValueArray.Append( nameValueRecordAudioStereo );
       
   428             //Set "Audio stereo" capability
       
   429             TAccPolNameValueRecord  nameValueRecordAudioOutconnector( KAccAudioOutConnector,
       
   430                                                                       1,
       
   431                                                                       EAPVBool,
       
   432                                                                       EAPVAccessory );
       
   433             nameValueArray.Append( nameValueRecordAudioOutconnector );
       
   434             //Set "Audio stereo" capability
       
   435             TAccPolNameValueRecord  nameValueRecordVideoOut( KAccVideoOut,
       
   436                                                              EAccVideoOutCVideo,
       
   437                                                              EAPVInt,
       
   438                                                              EAPVPolicy );
       
   439             nameValueArray.Append( nameValueRecordVideoOut );
       
   440             accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
       
   441             nameValueArray.Close();
       
   442             iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
       
   443             User::WaitForRequest( status ); 
       
   444             TInt retval = status.Int();           
       
   445             
       
   446             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
       
   447             
       
   448             iGenericId = genericID->GenericID();                    
       
   449             CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
       
   450             CleanupStack::PopAndDestroy( genericID );
       
   451             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   452             }
       
   453         break;
       
   454         
       
   455         case ETFAsyConnectECIMusicStand:
       
   456             {
       
   457             // Connection is made by giving capabilities from adaptation side
       
   458             TRequestStatus status;                
       
   459             CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
       
   460             CleanupStack::PushL( accConfigFileParser );
       
   461             CAccConGenericID* genericID = CAccConGenericID::NewL();
       
   462             CleanupStack::PushL( genericID );
       
   463             RArray< TAccPolNameValueRecord > nameValueArray;    
       
   464             CleanupClosePushL( nameValueArray );    
       
   465             TBuf< KHWModelIDMaxLength >      hwModelID( _L( "MusicStand" ) );
       
   466             TAccPolNameRecord              nameRecord;
       
   467             TAccPolValueRecord             valueRecord;
       
   468             
       
   469             //Set GenericID header
       
   470             iGenericIDHeader.iAccessoryDeviceType   = KDTOffice;
       
   471             iGenericIDHeader.iPhysicalConnection    = KPCWired;
       
   472             iGenericIDHeader.iApplicationProtocol   = 0x0;
       
   473             iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;
       
   474             iGenericIDHeader.iHWModelID             = hwModelID;
       
   475             iGenericIDHeader.iHWDeviceID            = 0x0;
       
   476             
       
   477             //Set "ECI audio block" capability
       
   478             TBuf8< 30 > eciData( _L8( "ECIAudioBlockData" ) );
       
   479             TAccPolNameValueRecord  eciAudioBlock(  KAccECIAudioBlock, eciData, EAPVPolicy );
       
   480             nameValueArray.Append( eciAudioBlock );
       
   481             //Set "Audio Output Type" capability
       
   482             TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
       
   483                                                                     EAccAudioOutPutTypePublic,
       
   484                                                                     EAPVInt,
       
   485                                                                     EAPVPolicy );
       
   486             nameValueArray.Append( nameValueRecordAudioOutputType );
       
   487             //Set "Audio stereo" capability
       
   488             TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
       
   489                                                                 EAccAudioOutPutTypePublic,
       
   490                                                                 EAPVInt,
       
   491                                                                 EAPVPolicy );
       
   492             nameValueArray.Append( nameValueRecordAudioStereo );
       
   493             
       
   494             accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
       
   495             nameValueArray.Close();
       
   496                                                    
       
   497             iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
       
   498             User::WaitForRequest( status ); 
       
   499             TInt retval = status.Int();           
       
   500             
       
   501             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
       
   502             
       
   503             iGenericId = genericID->GenericID();                    
       
   504       
       
   505             CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
       
   506             CleanupStack::PopAndDestroy( genericID );
       
   507             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   508             }
       
   509         break;
       
   510         
       
   511         case ETFAsyConnectECICarKit:
       
   512             {
       
   513             // Connection is made by giving capabilities from adaptation side
       
   514             TRequestStatus status;                
       
   515             CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
       
   516             CleanupStack::PushL( accConfigFileParser );
       
   517             CAccConGenericID* genericID = CAccConGenericID::NewL();
       
   518             CleanupStack::PushL( genericID );
       
   519             
       
   520             RArray< TAccPolNameValueRecord > nameValueArray;    
       
   521             CleanupClosePushL( nameValueArray );    
       
   522             TBuf< KHWModelIDMaxLength >      hwModelID( _L( "MusicStand" ) );
       
   523             TAccPolNameRecord              nameRecord;
       
   524             TAccPolValueRecord             valueRecord;
       
   525             
       
   526             //Set GenericID header
       
   527             iGenericIDHeader.iAccessoryDeviceType   = KDTCarKit;
       
   528             iGenericIDHeader.iPhysicalConnection    = KPCWired;
       
   529             iGenericIDHeader.iApplicationProtocol   = 0x0;
       
   530             iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock|KDTCharger|KSBCarKitSubblock;
       
   531             iGenericIDHeader.iHWModelID             = hwModelID;
       
   532             iGenericIDHeader.iHWDeviceID            = 0x0;
       
   533             
       
   534             //Set "ECI audio block" capability
       
   535             TBuf8< 30 > eciData( _L8( "ECIAudioBlockData" ) );
       
   536             TAccPolNameValueRecord  eciAudioBlock(  KAccECIAudioBlock, eciData, EAPVPolicy );
       
   537             nameValueArray.Append( eciAudioBlock);
       
   538             //Set "Audio Output Type" capability
       
   539             TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
       
   540                                                                     EAccAudioOutPutTypePublic,
       
   541                                                                     EAPVInt,
       
   542                                                                     EAPVPolicy );
       
   543             nameValueArray.Append( nameValueRecordAudioOutputType );
       
   544             //Set "Audio stereo" capability
       
   545             TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
       
   546                                                                 EAccAudioOutPutTypePublic,
       
   547                                                                 EAPVInt,
       
   548                                                                 EAPVPolicy );
       
   549             nameValueArray.Append( nameValueRecordAudioStereo );
       
   550             //Set "Car Radio Mute" capability
       
   551             TAccPolNameValueRecord nameValueRecordCarRadioMute( KAccCarRadioMute,
       
   552                                                                 1,
       
   553                                                                 EAPVBool,
       
   554                                                                 EAPVAccessory );
       
   555             nameValueArray.Append( nameValueRecordCarRadioMute );
       
   556             //Set "External power supply" capability
       
   557             TAccPolNameValueRecord nameValueRecordPowerExtOut( KAccExtPowerSupply,
       
   558                                                                1,
       
   559                                                                EAPVBool,
       
   560                                                                EAPVAccessory );
       
   561             nameValueArray.Append( nameValueRecordPowerExtOut );
       
   562             accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
       
   563             nameValueArray.Close();
       
   564                                                    
       
   565             iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
       
   566             User::WaitForRequest( status ); 
       
   567             TInt retval = status.Int();           
       
   568         
       
   569             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
       
   570       
       
   571             iGenericId = genericID->GenericID();                    
       
   572       
       
   573             CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
       
   574             CleanupStack::PopAndDestroy( genericID );
       
   575             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   576             }
       
   577         break;
       
   578         
       
   579         case ETFAsyConnectArrayOfCapabilities:
       
   580             {
       
   581             // Connection is made by giving capabilities from adaptation side
       
   582             TRequestStatus status;                
       
   583             CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
       
   584             CleanupStack::PushL( accConfigFileParser );
       
   585             CAccConGenericID* genericID = CAccConGenericID::NewL();
       
   586             CleanupStack::PushL( genericID );
       
   587             RArray< TAccPolNameValueRecord > nameValueArray;    
       
   588             CleanupClosePushL( nameValueArray );    
       
   589             TBuf< KHWModelIDMaxLength > hwModelID( _L( "Some Device" ) );
       
   590             TAccPolNameRecord nameRecord;
       
   591             TAccPolValueRecord valueRecord;
       
   592             CAccMonitorCapMapper* mapper = CAccMonitorCapMapper::NewL();
       
   593             CleanupStack::PushL( mapper );
       
   594             TUint32 subblocks( 0x0 );
       
   595             TUint32 capa( 0 );
       
   596             
       
   597             for( TInt i = 0; i != aCapabilityArray.Count(); i++ )
       
   598                 {
       
   599                 COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - In array capability: %d" ), aCapabilityArray[ i ] ) );
       
   600                 }
       
   601             
       
   602             // Go through capabilities and create name values
       
   603             for( TInt i = 0; i != aCapabilityArray.Count(); i++ )
       
   604                 {
       
   605                 TAccMonCapability capability = aCapabilityArray[ i ];
       
   606                 if( capability < 17 )
       
   607                     {
       
   608                     TUint32 luku = mapper->GetHeaderCapabilityFromDefinitionL( capability );
       
   609                     COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Header Device type capability: %d" ), luku ) );
       
   610                     iGenericIDHeader.iAccessoryDeviceType = luku;
       
   611                     if( luku == 1 )
       
   612                         {
       
   613                         //iGenericIDHeader.iDeviceAddress = KBTAddrHeadsetHSPAndHFP;
       
   614                         }
       
   615                     }
       
   616                 if( ( capability > 16 ) && ( capability < 31 ) )
       
   617                     {
       
   618                     TUint32 luku = mapper->GetHeaderCapabilityFromDefinitionL( capability );
       
   619                     COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Header Physical connection capability: %d" ), luku ) );
       
   620                     iGenericIDHeader.iPhysicalConnection = 0x01;
       
   621                     }
       
   622                 if( ( capability > 80 ) && ( capability < 97 ) )
       
   623                     {
       
   624                     subblocks = subblocks|KSBAudioSubblock;
       
   625                     capa = mapper->GetCapabilityFromDefinitionL( capability );
       
   626                     COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Audio capability: %d" ), capa ) );
       
   627                     if( capa == KAccAudioOutputType )
       
   628                         {
       
   629                         TAccPolNameValueRecord  nameValue( 
       
   630                                            capa,
       
   631                                            EAccAudioOutPutTypePublic,
       
   632                                            EAPVInt,
       
   633                                            EAPVPolicy );
       
   634                         nameValueArray.Append( nameValue );
       
   635                         }
       
   636                     else
       
   637                         {
       
   638                         TAccPolNameValueRecord  nameValue( capa );
       
   639                         nameValueArray.Append( nameValue );
       
   640                         }
       
   641                     }
       
   642                 if( ( capability > 96 ) && ( capability < 113 ) )
       
   643                     {
       
   644                     COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - BT capa, not supported" ) ) );
       
   645                     
       
   646                     /*subblocks = subblocks|KSBBluetoothSubblock;
       
   647                     capa = mapper->GetCapabilityFromDefinitionL( capability );
       
   648                     TAccPolNameValueRecord  nameValue( capa );
       
   649                     nameValueArray.Append( nameValue );*/
       
   650                     }
       
   651                 if( ( capability > 112 ) && ( capability < 129 ) )
       
   652                     {
       
   653                     subblocks = subblocks|KSBVideoSubblock;
       
   654                     capa = mapper->GetCapabilityFromDefinitionL( capability );
       
   655                     COMPONENT_TRACE( ( _L( "[CConnectionEmulator] CASYStubService::Service() - Video capability: %d" ), capa ) );
       
   656                     TAccPolNameValueRecord  nameValue( capa );
       
   657                     nameValueArray.Append( nameValue );
       
   658                     }
       
   659                 }
       
   660             CleanupStack::Pop( mapper );
       
   661             //Set GenericID header
       
   662             iGenericIDHeader.iApplicationProtocol   = 0x0;
       
   663             COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Accessory to be connected" ) ) );
       
   664             COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Device type: %d" ), iGenericIDHeader.iAccessoryDeviceType ) );
       
   665             COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Physical connection: %d" ), iGenericIDHeader.iPhysicalConnection ) );
       
   666             COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Application protocol: %d" ), iGenericIDHeader.iApplicationProtocol ) );
       
   667             iGenericIDHeader.iCapabilitiesSubblocks = subblocks;
       
   668             COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Capability subblocks: %d" ), iGenericIDHeader.iCapabilitiesSubblocks ) );
       
   669             iGenericIDHeader.iHWModelID             = hwModelID;
       
   670             iGenericIDHeader.iHWDeviceID            = 0x0;
       
   671             COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - HW device id: %d" ), iGenericIDHeader.iHWDeviceID ) );
       
   672             accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
       
   673             nameValueArray.Close();
       
   674             iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
       
   675             COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Don't evaluate connection rules" ) ) );
       
   676             User::WaitForRequest( status ); 
       
   677             TInt retval = status.Int();           
       
   678             
       
   679             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
       
   680             
       
   681             iGenericId = genericID->GenericID();                    
       
   682             
       
   683             CleanupStack::PopAndDestroy( &nameValueArray );
       
   684             CleanupStack::PopAndDestroy( genericID );
       
   685             CleanupStack::PopAndDestroy( accConfigFileParser );
       
   686             }
       
   687             break;
       
   688     
       
   689         case ETFAsyDisc:
       
   690             {
       
   691             // Just a disconnect
       
   692             TRequestStatus status;                
       
   693             iAccessoryControl.DisconnectAccessory( status, iGenericId );
       
   694             User::WaitForRequest( status ); 
       
   695             TInt retval = status.Int();           
       
   696             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Diconnect status %d" ), retval ) );    
       
   697             }
       
   698         break;
       
   699         
       
   700         default:
       
   701             {
       
   702             COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Subscribe destination is WIRELESS ASY" ) ) );    
       
   703             break;
       
   704             }
       
   705         }
       
   706     }    
       
   707 //
       
   708 // ----------------------------------------------------------------------------------
       
   709 // CASYStubService::GetTestCaseID()
       
   710 // ----------------------------------------------------------------------------------
       
   711 TInt CASYStubService::GetTestCaseID()
       
   712     {
       
   713     COMPONENT_TRACE( ( _L( "ASYSTUB - CTFTestControlObserver::GetTestCaseID" ) ) );    
       
   714     return iTestCaseID;
       
   715     }
       
   716 
       
   717 //
       
   718 // ----------------------------------------------------------------------------------
       
   719 // CASYStubService::GetTestCaseID()
       
   720 // ----------------------------------------------------------------------------------
       
   721  TTFCapability CASYStubService::GetAndRemoveCapability()
       
   722     {
       
   723     TTFCapability aCapabilityS;
       
   724     COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::GetAndRemoveCapability - This does nothing" ) ) ); 
       
   725     if( iCapabilityArray.Count() != 0 )
       
   726         {
       
   727         /*aCapabilityS.iCapability = iCapabilityArray[0].iCapability;
       
   728         aCapabilityS.iValue  = iCapabilityArray[0].iValue;
       
   729         aCapabilityS.iTimeMs = iCapabilityArray[0].iTimeMs;
       
   730         iCapabilityArray.Remove(0);    */
       
   731         }
       
   732     else
       
   733         {
       
   734         /*aCapabilityS.iCapability = 0;
       
   735         aCapabilityS.iValue = 0;
       
   736         aCapabilityS.iTimeMs = 0;*/
       
   737         }
       
   738     COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::GetAndRemoveCapability - return" ) ) );
       
   739     return aCapabilityS;     
       
   740     }
       
   741 
       
   742 // End of File