--- /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