accessoryservices/accessorymonitor/tsrc/public/basic/stubs/AsyStub/src/AsyStubService.cpp
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/accessoryservices/accessorymonitor/tsrc/public/basic/stubs/AsyStub/src/AsyStubService.cpp	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,742 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Used to emulate accessory connections in emulator.
+*
+*/
+
+
+// INCLUDE FILES
+#include <AccConGenericID.h>
+#include <AccPolProprietaryNameValuePairs.h>
+#include "siftrace.h"
+#include "ASYStubObserver.h"
+#include "AccMonitorCapMapper.h"
+
+// ----------------------------------------------------------------------------------
+// CASYStubService::CASYStubService() 
+// ---------------------------------------------------------------------------------- 
+CASYStubService::CASYStubService() 
+    {           
+    }
+  
+// ----------------------------------------------------------------------------------
+// CASYStubService::ConstructL() 
+// ---------------------------------------------------------------------------------- 
+void CASYStubService::ConstructL() 
+    {           
+    
+    TInt err(KErrNone);
+    
+    err = iAccessoryServer.Connect();                
+    if ( err != KErrNone )
+        {
+        COMPONENT_TRACE( _L("ASYSTUB - CASYStubService::ConstructL() - failed to connect AccServer") );
+        User::Leave( err );
+        }
+    err = iAccessoryControl.CreateSubSession( iAccessoryServer );
+    if ( err != KErrNone )
+        {
+        COMPONENT_TRACE( _L("ASYSTUB - CASYStubService::ConstructL() - failed to connect RAccessoryControl") );
+        User::Leave( err );
+        }
+    
+    COMPONENT_TRACE( ( _L( "ASYSTUB - CASYParameterResolver::ConstructL() - return" ) ) );
+    } 
+//
+// ----------------------------------------------------------------------------------
+// CASYStubService::~CASYStubService()
+// ---------------------------------------------------------------------------------- 
+CASYStubService::~CASYStubService()
+    {       
+    COMPONENT_TRACE( ( _L( "ASYSTUB - CTFTestControlObserver::~CTFTestControlObserver - Enter" ) ) );    
+    iAccessoryControl.CloseSubSession();
+    iAccessoryServer.Close();
+    COMPONENT_TRACE( ( _L( "ASYSTUB - CTFTestControlObserver::~CTFTestControlObserver - succesful" ) ) );    
+    }
+//
+// ----------------------------------------------------------------------------------
+// CASYStubService::Service()
+// ----------------------------------------------------------------------------------
+void CASYStubService::Service(
+    TTFASYReference aMethod,
+    TInt64 aParam1,
+    RArray<TUint32> aCapabilityArray )
+    {
+    
+    switch( aMethod )
+        {
+        case ETFAsyConn:
+            {
+            // Connection that is made is based on the database
+            // Generic ID is mapped from HW Device ID
+            TRequestStatus status;                
+            CAccConfigFileParser* accConfigFileParser =
+                CAccConfigFileParser::NewL( _L( "Configuration file" ) ); 
+            CleanupStack::PushL( accConfigFileParser );
+            TBuf< 12 > HWModelID;
+            HWModelID.Num( aParam1 );
+            
+            CAccConGenericID* genericID = CAccConGenericID::NewL();   
+            CleanupStack::PushL( genericID ); 
+            
+            accConfigFileParser->FindL( genericID, aParam1, HWModelID );
+            iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
+            
+            User::WaitForRequest( status );
+            TInt retval = status.Int();         
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Connect status %d" ), retval) );
+            
+            iGenericId = genericID->GenericID();
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }
+            break;
+        
+        case ETFAsyConnOpenCable:
+        case ETFAsyConnectOpenCable3Poles:
+            {
+            // Connection is made by giving capabilities from adaptation side
+            TRequestStatus status;                
+            CAccConfigFileParser* accConfigFileParser 
+                = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
+            CleanupStack::PushL( accConfigFileParser );
+            CAccConGenericID* genericID = CAccConGenericID::NewL();
+            CleanupStack::PushL( genericID );
+            
+            RArray<TAccPolNameValueRecord> nameValueArray;  
+            CleanupClosePushL( nameValueArray );      
+            TBuf< KHWModelIDMaxLength > hwModelID( _L( "opencable" ) );
+            TAccPolNameRecord nameRecord;
+            TAccPolValueRecord valueRecord;
+            
+            // Set GenericID header
+            iGenericIDHeader.iAccessoryDeviceType = KDTAVDevice;
+            iGenericIDHeader.iPhysicalConnection = KPCWired;
+            iGenericIDHeader.iApplicationProtocol = 0x0;
+            
+            if ( aMethod == ETFAsyConnectOpenCable3Poles )
+                {
+                iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;                 
+                }
+            else
+                {
+                iGenericIDHeader.iCapabilitiesSubblocks = KSBVideoSubblock | KSBAudioSubblock;  
+                }
+            
+            iGenericIDHeader.iHWModelID = hwModelID;
+            iGenericIDHeader.iHWDeviceID = 0x0;
+            iGenericIDHeader.iDBID = 0x0;
+            
+            accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
+            nameValueArray.Close();
+                                                   
+            iAccessoryControl.ConnectAccessory( status, genericID, ETrue );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+            
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Connect status %d" ), retval ) );
+            
+            iGenericId = genericID->GenericID();                    
+      
+            CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }
+        break;        
+        
+        case ETFAsyUpdateTVOut:
+            {
+            // Connection is made by giving capabilities from adaptation side
+            TRequestStatus status;
+            CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L("Configuration file"));
+            CleanupStack::PushL( accConfigFileParser );
+            CAccConGenericID* genericID = CAccConGenericID::NewL();
+            CleanupStack::PushL( genericID );
+            
+            RArray<TAccPolNameValueRecord> nameValueArray;  
+            CleanupClosePushL( nameValueArray );      
+            TBuf< KHWModelIDMaxLength > hwModelID( _L( "opencable" ) );
+            TAccPolNameRecord nameRecord;
+            TAccPolValueRecord valueRecord;
+
+            //Set GenericID header
+            iGenericIDHeader.iAccessoryDeviceType = KDTAVDevice;
+            iGenericIDHeader.iPhysicalConnection = KPCWired;
+            iGenericIDHeader.iApplicationProtocol = 0x0;
+            iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock | KSBVideoSubblock;
+            iGenericIDHeader.iHWModelID = hwModelID;
+            iGenericIDHeader.iHWDeviceID = 0x0;
+            
+            iGenericIDHeader.iDBID = iGenericId.UniqueID();
+            
+            //Set "Audio Output Type" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
+                                                                  EAccAudioOutPutTypePublic,
+                                                                  EAPVInt,
+                                                                  EAPVPolicy );
+
+            nameValueArray.Append( nameValueRecordAudioOutputType );
+      
+
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
+                                                                  EAccAudioOutPutTypePublic,
+                                                                  EAPVInt,
+                                                                  EAPVPolicy );
+            
+            nameValueArray.Append( nameValueRecordAudioStereo );
+            //Set "Line out Type" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOut( KAccAudioOut,
+                                                                  TAccAudioOutLineout,
+                                                                  EAPVInt,
+                                                                  EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioOut );
+            //Set "Video Output Type" capability
+            TAccPolNameValueRecord  nameValueRecordVideoOut( KAccVideoOut,
+                                                                  EAccVideoOutCVideo,
+                                                                  EAPVInt,
+                                                                  EAPVPolicy );
+            nameValueArray.Append( nameValueRecordVideoOut );
+            accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
+            nameValueArray.Close();
+            
+            iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+            
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
+            
+            iGenericId = genericID->GenericID();                    
+            
+            CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }
+        break;     
+        
+        case ETFAsyUpdateHeadset:
+            {
+            // Connection is made by giving capabilities from adaptation side
+            TRequestStatus status;                
+            CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
+            CleanupStack::PushL( accConfigFileParser );
+            CAccConGenericID* genericID = CAccConGenericID::NewL();
+            CleanupStack::PushL( genericID );
+            
+            RArray<TAccPolNameValueRecord> nameValueArray;    
+            CleanupClosePushL( nameValueArray );    
+            TBuf< KHWModelIDMaxLength > hwModelID( _L( "headset" ) );
+            TAccPolNameRecord nameRecord;
+            TAccPolValueRecord valueRecord;
+            
+            //Set GenericID header
+            iGenericIDHeader.iAccessoryDeviceType = KDTHeadset;
+            iGenericIDHeader.iPhysicalConnection = KPCWired;
+            iGenericIDHeader.iApplicationProtocol = 0x0;
+            iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;
+            iGenericIDHeader.iHWModelID = hwModelID;
+            iGenericIDHeader.iHWDeviceID = 0x0;
+            iGenericIDHeader.iDBID = iGenericId.UniqueID();
+            
+            //Set "Audio Output Type" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
+                                                                  EAccAudioOutPutTypePublic,
+                                                                  EAPVInt,
+                                                                  EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioOutputType );
+      
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
+                                                                  EAccAudioOutPutTypePublic,
+                                                                  EAPVInt,
+                                                                  EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioStereo );
+            accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
+            nameValueArray.Close();
+                                                   
+            iAccessoryControl.ConnectAccessory( status, genericID, ETrue );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+        
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
+      
+            iGenericId = genericID->GenericID();                    
+      
+            CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }
+        break;           
+  
+        case ETFAsyConnectHeadset:
+            {
+            // Connection is made by giving capabilities from adaptation side
+            TRequestStatus status;                
+            CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
+            CleanupStack::PushL( accConfigFileParser );
+            CAccConGenericID* genericID = CAccConGenericID::NewL();
+            CleanupStack::PushL( genericID );
+            RArray<TAccPolNameValueRecord> nameValueArray;    
+            CleanupClosePushL( nameValueArray );    
+            TBuf<KHWModelIDMaxLength>      hwModelID( _L( "headset" ) );
+            TAccPolNameRecord              nameRecord;
+            TAccPolValueRecord             valueRecord;
+          
+            //Set GenericID header
+            iGenericIDHeader.iAccessoryDeviceType   = KDTHeadset;
+            iGenericIDHeader.iPhysicalConnection    = KPCWired;
+            iGenericIDHeader.iApplicationProtocol   = 0x0;
+            iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;
+            iGenericIDHeader.iHWModelID             = hwModelID;
+            iGenericIDHeader.iHWDeviceID            = 0x0;
+            
+            //Set "Audio Output Type" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
+                                                                    EAccAudioOutPutTypePublic,
+                                                                    EAPVInt,
+                                                                    EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioOutputType );
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio );
+            nameValueArray.Append( nameValueRecordAudioStereo );
+            accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
+            nameValueArray.Close();
+            iAccessoryControl.ConnectAccessory( status, genericID, ETrue );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
+            
+            iGenericId = genericID->GenericID();                    
+            
+            CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }       
+        break;
+        
+  
+          
+        case ETFAsyConnectECIAccessory:
+            {
+            // Connection is made by giving capabilities from adaptation side
+            TRequestStatus status;                
+            CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
+            CleanupStack::PushL( accConfigFileParser );
+            CAccConGenericID* genericID = CAccConGenericID::NewL();
+            CleanupStack::PushL( genericID );
+            
+            RArray< TAccPolNameValueRecord > nameValueArray;    
+            CleanupClosePushL( nameValueArray );    
+            TBuf< KHWModelIDMaxLength >      hwModelID( _L( "headset" ) );
+            TAccPolNameRecord              nameRecord;
+            TAccPolValueRecord             valueRecord;
+            
+            //Set GenericID header
+            iGenericIDHeader.iAccessoryDeviceType   = KDTHeadset;
+            iGenericIDHeader.iPhysicalConnection    = KPCWired;
+            iGenericIDHeader.iApplicationProtocol   = 0x0;
+            iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;
+            iGenericIDHeader.iHWModelID             = hwModelID;
+            iGenericIDHeader.iHWDeviceID            = 0x0;
+
+            //Set "ECI audio block" capability
+            TBuf8<30> eciData(_L8("ECIAudioBlockData"));
+            TAccPolNameValueRecord  eciAudioBlock(  KAccECIAudioBlock, eciData, EAPVPolicy );
+            nameValueArray.Append( eciAudioBlock );
+            //Set "Audio Output Type" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
+                                                                  EAccAudioOutPutTypePublic,
+                                                                  EAPVInt,
+                                                                  EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioOutputType );
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
+                                                                  EAccAudioOutPutTypePublic,
+                                                                  EAPVInt,
+                                                                  EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioStereo );
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOutconnector( KAccAudioOutConnector,
+                                                                    1,
+                                                                    EAPVBool,
+                                                                    EAPVAccessory );
+            nameValueArray.Append( nameValueRecordAudioOutconnector );
+            accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
+            nameValueArray.Close();
+                                                   
+            iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+            
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
+            iGenericId = genericID->GenericID();                    
+            CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }
+        break;           
+                      
+        case ETFAsyConnectECITVOut:
+            {
+            // Connection is made by giving capabilities from adaptation side
+            TRequestStatus status;                
+            CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
+            CleanupStack::PushL( accConfigFileParser );
+            CAccConGenericID* genericID = CAccConGenericID::NewL();
+            CleanupStack::PushL( genericID );
+            RArray<TAccPolNameValueRecord> nameValueArray;    
+            CleanupClosePushL( nameValueArray );    
+            TBuf<KHWModelIDMaxLength>      hwModelID( _L( "TVOut" ) );
+            TAccPolNameRecord              nameRecord;
+            TAccPolValueRecord             valueRecord;
+            
+            //Set GenericID header
+            iGenericIDHeader.iAccessoryDeviceType   = KDTAVDevice;
+            iGenericIDHeader.iPhysicalConnection    = KPCWired;
+            iGenericIDHeader.iApplicationProtocol   = 0x0;
+            iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock|KSBVideoSubblock;
+            iGenericIDHeader.iHWModelID             = hwModelID;
+            iGenericIDHeader.iHWDeviceID            = 0x0;
+            
+            //Set "ECI audio block" capability
+            TBuf8<30> eciData(_L8("ECIAudioBlockData"));
+            TAccPolNameValueRecord  eciAudioBlock(  KAccECIAudioBlock, eciData, EAPVPolicy );
+            nameValueArray.Append( eciAudioBlock);
+            //Set "Audio Output Type" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
+                                                                    EAccAudioOutPutTypePublic,
+                                                                    EAPVInt,
+                                                                    EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioOutputType );
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
+                                                                EAccAudioOutPutTypePublic,
+                                                                EAPVInt,
+                                                                EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioStereo );
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOutconnector( KAccAudioOutConnector,
+                                                                      1,
+                                                                      EAPVBool,
+                                                                      EAPVAccessory );
+            nameValueArray.Append( nameValueRecordAudioOutconnector );
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordVideoOut( KAccVideoOut,
+                                                             EAccVideoOutCVideo,
+                                                             EAPVInt,
+                                                             EAPVPolicy );
+            nameValueArray.Append( nameValueRecordVideoOut );
+            accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
+            nameValueArray.Close();
+            iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+            
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
+            
+            iGenericId = genericID->GenericID();                    
+            CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }
+        break;
+        
+        case ETFAsyConnectECIMusicStand:
+            {
+            // Connection is made by giving capabilities from adaptation side
+            TRequestStatus status;                
+            CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
+            CleanupStack::PushL( accConfigFileParser );
+            CAccConGenericID* genericID = CAccConGenericID::NewL();
+            CleanupStack::PushL( genericID );
+            RArray< TAccPolNameValueRecord > nameValueArray;    
+            CleanupClosePushL( nameValueArray );    
+            TBuf< KHWModelIDMaxLength >      hwModelID( _L( "MusicStand" ) );
+            TAccPolNameRecord              nameRecord;
+            TAccPolValueRecord             valueRecord;
+            
+            //Set GenericID header
+            iGenericIDHeader.iAccessoryDeviceType   = KDTOffice;
+            iGenericIDHeader.iPhysicalConnection    = KPCWired;
+            iGenericIDHeader.iApplicationProtocol   = 0x0;
+            iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock;
+            iGenericIDHeader.iHWModelID             = hwModelID;
+            iGenericIDHeader.iHWDeviceID            = 0x0;
+            
+            //Set "ECI audio block" capability
+            TBuf8< 30 > eciData( _L8( "ECIAudioBlockData" ) );
+            TAccPolNameValueRecord  eciAudioBlock(  KAccECIAudioBlock, eciData, EAPVPolicy );
+            nameValueArray.Append( eciAudioBlock );
+            //Set "Audio Output Type" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
+                                                                    EAccAudioOutPutTypePublic,
+                                                                    EAPVInt,
+                                                                    EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioOutputType );
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
+                                                                EAccAudioOutPutTypePublic,
+                                                                EAPVInt,
+                                                                EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioStereo );
+            
+            accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
+            nameValueArray.Close();
+                                                   
+            iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+            
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
+            
+            iGenericId = genericID->GenericID();                    
+      
+            CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }
+        break;
+        
+        case ETFAsyConnectECICarKit:
+            {
+            // Connection is made by giving capabilities from adaptation side
+            TRequestStatus status;                
+            CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
+            CleanupStack::PushL( accConfigFileParser );
+            CAccConGenericID* genericID = CAccConGenericID::NewL();
+            CleanupStack::PushL( genericID );
+            
+            RArray< TAccPolNameValueRecord > nameValueArray;    
+            CleanupClosePushL( nameValueArray );    
+            TBuf< KHWModelIDMaxLength >      hwModelID( _L( "MusicStand" ) );
+            TAccPolNameRecord              nameRecord;
+            TAccPolValueRecord             valueRecord;
+            
+            //Set GenericID header
+            iGenericIDHeader.iAccessoryDeviceType   = KDTCarKit;
+            iGenericIDHeader.iPhysicalConnection    = KPCWired;
+            iGenericIDHeader.iApplicationProtocol   = 0x0;
+            iGenericIDHeader.iCapabilitiesSubblocks = KSBAudioSubblock|KDTCharger|KSBCarKitSubblock;
+            iGenericIDHeader.iHWModelID             = hwModelID;
+            iGenericIDHeader.iHWDeviceID            = 0x0;
+            
+            //Set "ECI audio block" capability
+            TBuf8< 30 > eciData( _L8( "ECIAudioBlockData" ) );
+            TAccPolNameValueRecord  eciAudioBlock(  KAccECIAudioBlock, eciData, EAPVPolicy );
+            nameValueArray.Append( eciAudioBlock);
+            //Set "Audio Output Type" capability
+            TAccPolNameValueRecord  nameValueRecordAudioOutputType( KAccAudioOutputType,
+                                                                    EAccAudioOutPutTypePublic,
+                                                                    EAPVInt,
+                                                                    EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioOutputType );
+            //Set "Audio stereo" capability
+            TAccPolNameValueRecord  nameValueRecordAudioStereo( KAccStereoAudio,
+                                                                EAccAudioOutPutTypePublic,
+                                                                EAPVInt,
+                                                                EAPVPolicy );
+            nameValueArray.Append( nameValueRecordAudioStereo );
+            //Set "Car Radio Mute" capability
+            TAccPolNameValueRecord nameValueRecordCarRadioMute( KAccCarRadioMute,
+                                                                1,
+                                                                EAPVBool,
+                                                                EAPVAccessory );
+            nameValueArray.Append( nameValueRecordCarRadioMute );
+            //Set "External power supply" capability
+            TAccPolNameValueRecord nameValueRecordPowerExtOut( KAccExtPowerSupply,
+                                                               1,
+                                                               EAPVBool,
+                                                               EAPVAccessory );
+            nameValueArray.Append( nameValueRecordPowerExtOut );
+            accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
+            nameValueArray.Close();
+                                                   
+            iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+        
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
+      
+            iGenericId = genericID->GenericID();                    
+      
+            CleanupStack::PopAndDestroy( &nameValueArray );//nameValueArray.Close() is called;
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }
+        break;
+        
+        case ETFAsyConnectArrayOfCapabilities:
+            {
+            // Connection is made by giving capabilities from adaptation side
+            TRequestStatus status;                
+            CAccConfigFileParser* accConfigFileParser = CAccConfigFileParser::NewL( _L( "Configuration file" ) );
+            CleanupStack::PushL( accConfigFileParser );
+            CAccConGenericID* genericID = CAccConGenericID::NewL();
+            CleanupStack::PushL( genericID );
+            RArray< TAccPolNameValueRecord > nameValueArray;    
+            CleanupClosePushL( nameValueArray );    
+            TBuf< KHWModelIDMaxLength > hwModelID( _L( "Some Device" ) );
+            TAccPolNameRecord nameRecord;
+            TAccPolValueRecord valueRecord;
+            CAccMonitorCapMapper* mapper = CAccMonitorCapMapper::NewL();
+            CleanupStack::PushL( mapper );
+            TUint32 subblocks( 0x0 );
+            TUint32 capa( 0 );
+            
+            for( TInt i = 0; i != aCapabilityArray.Count(); i++ )
+                {
+                COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - In array capability: %d" ), aCapabilityArray[ i ] ) );
+                }
+            
+            // Go through capabilities and create name values
+            for( TInt i = 0; i != aCapabilityArray.Count(); i++ )
+                {
+                TAccMonCapability capability = aCapabilityArray[ i ];
+                if( capability < 17 )
+                    {
+                    TUint32 luku = mapper->GetHeaderCapabilityFromDefinitionL( capability );
+                    COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Header Device type capability: %d" ), luku ) );
+                    iGenericIDHeader.iAccessoryDeviceType = luku;
+                    if( luku == 1 )
+                        {
+                        //iGenericIDHeader.iDeviceAddress = KBTAddrHeadsetHSPAndHFP;
+                        }
+                    }
+                if( ( capability > 16 ) && ( capability < 31 ) )
+                    {
+                    TUint32 luku = mapper->GetHeaderCapabilityFromDefinitionL( capability );
+                    COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Header Physical connection capability: %d" ), luku ) );
+                    iGenericIDHeader.iPhysicalConnection = 0x01;
+                    }
+                if( ( capability > 80 ) && ( capability < 97 ) )
+                    {
+                    subblocks = subblocks|KSBAudioSubblock;
+                    capa = mapper->GetCapabilityFromDefinitionL( capability );
+                    COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Audio capability: %d" ), capa ) );
+                    if( capa == KAccAudioOutputType )
+                        {
+                        TAccPolNameValueRecord  nameValue( 
+                                           capa,
+                                           EAccAudioOutPutTypePublic,
+                                           EAPVInt,
+                                           EAPVPolicy );
+                        nameValueArray.Append( nameValue );
+                        }
+                    else
+                        {
+                        TAccPolNameValueRecord  nameValue( capa );
+                        nameValueArray.Append( nameValue );
+                        }
+                    }
+                if( ( capability > 96 ) && ( capability < 113 ) )
+                    {
+                    COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - BT capa, not supported" ) ) );
+                    
+                    /*subblocks = subblocks|KSBBluetoothSubblock;
+                    capa = mapper->GetCapabilityFromDefinitionL( capability );
+                    TAccPolNameValueRecord  nameValue( capa );
+                    nameValueArray.Append( nameValue );*/
+                    }
+                if( ( capability > 112 ) && ( capability < 129 ) )
+                    {
+                    subblocks = subblocks|KSBVideoSubblock;
+                    capa = mapper->GetCapabilityFromDefinitionL( capability );
+                    COMPONENT_TRACE( ( _L( "[CConnectionEmulator] CASYStubService::Service() - Video capability: %d" ), capa ) );
+                    TAccPolNameValueRecord  nameValue( capa );
+                    nameValueArray.Append( nameValue );
+                    }
+                }
+            CleanupStack::Pop( mapper );
+            //Set GenericID header
+            iGenericIDHeader.iApplicationProtocol   = 0x0;
+            COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Accessory to be connected" ) ) );
+            COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Device type: %d" ), iGenericIDHeader.iAccessoryDeviceType ) );
+            COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Physical connection: %d" ), iGenericIDHeader.iPhysicalConnection ) );
+            COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Application protocol: %d" ), iGenericIDHeader.iApplicationProtocol ) );
+            iGenericIDHeader.iCapabilitiesSubblocks = subblocks;
+            COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Capability subblocks: %d" ), iGenericIDHeader.iCapabilitiesSubblocks ) );
+            iGenericIDHeader.iHWModelID             = hwModelID;
+            iGenericIDHeader.iHWDeviceID            = 0x0;
+            COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - HW device id: %d" ), iGenericIDHeader.iHWDeviceID ) );
+            accConfigFileParser->ParseGenericIDL( genericID, iGenericIDHeader, nameValueArray );
+            nameValueArray.Close();
+            iAccessoryControl.ConnectAccessory( status, genericID, EFalse );
+            COMPONENT_TRACE( ( _L( "[ASYSTUB] CASYStubService::Service() - Don't evaluate connection rules" ) ) );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+            
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Update status %d" ), retval ) );    
+            
+            iGenericId = genericID->GenericID();                    
+            
+            CleanupStack::PopAndDestroy( &nameValueArray );
+            CleanupStack::PopAndDestroy( genericID );
+            CleanupStack::PopAndDestroy( accConfigFileParser );
+            }
+            break;
+    
+        case ETFAsyDisc:
+            {
+            // Just a disconnect
+            TRequestStatus status;                
+            iAccessoryControl.DisconnectAccessory( status, iGenericId );
+            User::WaitForRequest( status ); 
+            TInt retval = status.Int();           
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Diconnect status %d" ), retval ) );    
+            }
+        break;
+        
+        default:
+            {
+            COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::Service - Subscribe destination is WIRELESS ASY" ) ) );    
+            break;
+            }
+        }
+    }    
+//
+// ----------------------------------------------------------------------------------
+// CASYStubService::GetTestCaseID()
+// ----------------------------------------------------------------------------------
+TInt CASYStubService::GetTestCaseID()
+    {
+    COMPONENT_TRACE( ( _L( "ASYSTUB - CTFTestControlObserver::GetTestCaseID" ) ) );    
+    return iTestCaseID;
+    }
+
+//
+// ----------------------------------------------------------------------------------
+// CASYStubService::GetTestCaseID()
+// ----------------------------------------------------------------------------------
+ TTFCapability CASYStubService::GetAndRemoveCapability()
+    {
+    TTFCapability aCapabilityS;
+    COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::GetAndRemoveCapability - This does nothing" ) ) ); 
+    if( iCapabilityArray.Count() != 0 )
+        {
+        /*aCapabilityS.iCapability = iCapabilityArray[0].iCapability;
+        aCapabilityS.iValue  = iCapabilityArray[0].iValue;
+        aCapabilityS.iTimeMs = iCapabilityArray[0].iTimeMs;
+        iCapabilityArray.Remove(0);    */
+        }
+    else
+        {
+        /*aCapabilityS.iCapability = 0;
+        aCapabilityS.iValue = 0;
+        aCapabilityS.iTimeMs = 0;*/
+        }
+    COMPONENT_TRACE( ( _L( "ASYSTUB - CASYStubService::GetAndRemoveCapability - return" ) ) );
+    return aCapabilityS;     
+    }
+
+// End of File