diff -r 000000000000 -r 4e1aa6a622a0 accessoryservices/accessoryserver/src/accpolaudiodevicetopology/accpolaudiounitbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/accessoryservices/accessoryserver/src/accpolaudiodevicetopology/accpolaudiounitbase.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,586 @@ +/* +* 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: Implementation for audio feature unit object. +* +*/ + +#include +#include +#include +#include +#include +#include "acc_debug.h" + +// ----------------------------------------------------------------------------- +// CAccPolAudioUnitBase::CAccPolAudioUnitBase +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CAccPolAudioUnitBase::CAccPolAudioUnitBase( + const TTopologyConObjectType aObjecType, + CAccPolObjectCon* aObject ) : + CAccPolObjectBase( aObjecType, aObject ) + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::CAccPolAudioUnitBase() -Enter" ); + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::CAccPolAudioUnitBase() - Return" ); + } + +// ----------------------------------------------------------------------------- +// CAccPolAudioUnitBase::CAccPolAudioUnitBase +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CAccPolAudioUnitBase::CAccPolAudioUnitBase( const TUint8 aUnitId, + const TTopologyConObjectType aObjecType ) : + CAccPolObjectBase( aObjecType ) + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::CAccPolAudioUnitBase() - Enter" ); + iUnitId = aUnitId; + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::CAccPolAudioUnitBase() - Return" ); + } + +// ----------------------------------------------------------------------------- +// CAccPolAudioUnitBase::CAccPolAudioUnitBase +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CAccPolAudioUnitBase::CAccPolAudioUnitBase( const TUint8 aUnitId, + const TUint8 aSourceId, + const TTopologyConObjectType aObjecType ) : + CAccPolObjectBase( aObjecType ) + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::CAccPolAudioUnitBase() -Enter" ); + iUnitId = aUnitId; + iSourceId.Append( aSourceId ); + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::CAccPolAudioUnitBase() - Return" ); + } + +// Destructor +EXPORT_C CAccPolAudioUnitBase::~CAccPolAudioUnitBase() + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::~CAccPolAudioUnitBase() - Enter" ); + iSourceId.Close(); + TInt count = iAudioControls.Count(); + if( count > 0 ) + { + for( TInt i = 0; i < count; i++ ) + { + delete iAudioControls.operator[]( i ); + } + } + iAudioControls.Close(); + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::~CAccPolAudioUnitBase() - Return" ); + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::operator() +// --------------------------------------------------------------------------- +// +EXPORT_C CAccPolAudioUnitBase& CAccPolAudioUnitBase::operator=( + const CAccPolAudioUnitBase& aAudioUnitBaseObject ) + { + TRAP_IGNORE ( CopyL ( aAudioUnitBaseObject ) ); + + return ( *this ); + } + +void CAccPolAudioUnitBase::CopyL ( const CAccPolAudioUnitBase& aAudioUnitBaseObject ) + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::operator() - Enter" ); + // Copy base + CAccPolObjectBase::operator=( ( CAccPolObjectBase& )aAudioUnitBaseObject ); + + //Copy Unit id + iUnitId = aAudioUnitBaseObject.UnitId(); + RArray sourceIds; + CleanupClosePushL( sourceIds ); + + //Copy source Ids + aAudioUnitBaseObject.GetSourceIds( sourceIds ); + + for( TInt i = 0; i < sourceIds.Count(); i++ ) + { + iSourceId.AppendL( sourceIds.operator[]( i ) ); + } + + //Copy previous unit id + iPreUnitId = aAudioUnitBaseObject.PreviousUnitId(); + + //Copy audio controls. + RPointerArray audioControls; + CleanupClosePushL( audioControls ); + + aAudioUnitBaseObject.GetAudioControlsL( audioControls ); + + for( TInt j = 0; j < audioControls.Count(); j++ ) + { + TUint8 objectType; + objectType = audioControls.operator[]( j )->ObjectType(); + + switch( objectType ) + { + case EAccPolAudioVolumeControlObject: + { + CAccPolVolumeControl *volumeControl = + CAccPolVolumeControl::NewL(); + CleanupStack::PushL( volumeControl ); + *volumeControl + = *( CAccPolVolumeControl* )audioControls.operator[]( j ); + iAudioControls.AppendL( volumeControl ); + CleanupStack::Pop(); + } + break; + + case EAccPolAudioMuteControlObject: + { + CAccPolMuteControl *muteControl = CAccPolMuteControl::NewL(); + CleanupStack::PushL( muteControl ); + *muteControl + = *( CAccPolMuteControl* )audioControls.operator[]( j ); + iAudioControls.AppendL( muteControl ); + CleanupStack::Pop(); + } + break; + + case EAccPolAudioInputControlObject: + { + CAccPolInputControl *inputControl = CAccPolInputControl::NewL(); + CleanupStack::PushL( inputControl ); + *inputControl + = *( CAccPolInputControl* )audioControls.operator[]( j ); + iAudioControls.AppendL( inputControl ); + CleanupStack::Pop(); + } + break; + + default: + { + User::Leave( KErrNotSupported ); + } + break; + } + } + + CleanupStack::PopAndDestroy (); //audioControls...dont use ResetAndDestroy on this! + CleanupStack::PopAndDestroy (); //sourceIds + + + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::operator() - Return" ); + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::PreviousUnitId +// --------------------------------------------------------------------------- +// +TUint8 CAccPolAudioUnitBase::PreviousUnitId() const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::PreviousUnitId() - Enter" ); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::PreviousUnitId() - Return %d", iPreUnitId ); + return iPreUnitId; + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::SetPreviousUnitId +// --------------------------------------------------------------------------- +// +void CAccPolAudioUnitBase::SetPreviousUnitId( TUint8 aPreUnitId ) + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::SetPreviousUnitId() - Enter" ); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::SetPreviousUnitId() - PreUnit Id %d", aPreUnitId ); + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::SetPreviousUnitId() - Return" ); + iPreUnitId = aPreUnitId; + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::UnitId +// --------------------------------------------------------------------------- +// +EXPORT_C TUint8 CAccPolAudioUnitBase::UnitId() const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::UnitId() - Enter" ); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::UnitId() - Return %d", iUnitId ); + return iUnitId; + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::SourceId +// --------------------------------------------------------------------------- +// +EXPORT_C TUint8 CAccPolAudioUnitBase::SourceId() const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::SourceId() - Enter" ); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::SourceId() - Return %d", iSourceId.operator[]( 0 ) ); + return ( TUint8 )iSourceId.operator[]( 0 ); + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::GetSourceIds +// --------------------------------------------------------------------------- +// +EXPORT_C void CAccPolAudioUnitBase::GetSourceIds( RArray& aSourceIds ) const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::SourceIds() - Enter" ); + TInt count = iSourceId.Count(); + for( TInt i = 0; i < count; i++ ) + { + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::SourceIds() Return SourceId=%d", iSourceId.operator[]( i ) ); + aSourceIds.Append( ( TInt )iSourceId.operator[]( i ) ); + } + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::SourceIdCount +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CAccPolAudioUnitBase::SourceIdCount() const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::SourceIdCount() -Enter" ); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::SourceIdCount() return count=%d", iSourceId.Count() ); + return iSourceId.Count(); + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::AddSourceIdL +// --------------------------------------------------------------------------- +// +EXPORT_C void CAccPolAudioUnitBase::AddSourceIdL( TUint8 aSourceId ) + { + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::AddSourceIdL() Enter - Source Id=%d", aSourceId ); + iSourceId.AppendL( aSourceId ); + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::AddSourceIdL() - Return" ); + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::GetAudioControlL +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CAccPolAudioUnitBase::GetAudioControlL( + TTopologyConObjectType aObjectType, + TUint32 aChannel, + CAccPolAudioControlBase*& aAudioControl ) const + { + API_TRACE_2( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioControlL() - Object type=%d, Channel number=%d", aObjectType, aChannel ); + TBool bFound( EFalse ); + aAudioControl = NULL; + if( aObjectType == EAccPolAudioVolumeControlObject || aObjectType + == EAccPolAudioMuteControlObject ) + { + TInt count = iAudioControls.Count(); + for( TInt i = 0; i < count; i++ ) + { + if( iAudioControls.operator[]( i )->ObjectType() == aObjectType + && iAudioControls.operator[]( i )->Channel() == aChannel ) + { + aAudioControl = iAudioControls.operator[]( i ); + bFound = ETrue; + break; + } + } + } + else + { + User::Leave( KErrGeneral ); + } + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioControlL() - Return=%d", bFound ); + return bFound; + } +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::GetAudioControlsL +// --------------------------------------------------------------------------- +// +EXPORT_C void CAccPolAudioUnitBase::GetAudioControlsL( TUint32 aChannel, + RPointerArray& aAudioControls ) const + { + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioControlsL() - Channel number=%d", aChannel ); + TInt count = iAudioControls.Count(); + API_TRACE_1( "[AccFW: ACCPOLICY] CAccPolAudioUnitBase::GetAudioControlsL() - count=%d", count ); + for( TInt i = 0; i < count; i++ ) + { + if( iAudioControls.operator[]( i )->Channel() == aChannel ) + { + aAudioControls.AppendL( iAudioControls.operator[]( i ) ); + } + } + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioControlL() Return" ); + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::GetAudioControlsL +// --------------------------------------------------------------------------- +// +EXPORT_C void CAccPolAudioUnitBase::GetAudioControlsL( + RPointerArray& aAudioControls ) const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioControlsL() -Enter" ); + TInt count = iAudioControls.Count(); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioControlsL() - count=%d", count ); + for( TInt i = 0; i < count; i++ ) + { + aAudioControls.AppendL( iAudioControls.operator[]( i ) ); + } + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioControlsL() - Return" ); + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::GetAudioControlsL +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CAccPolAudioUnitBase::GetNextAudioUnitL( + CAccPolAudioUnitBase*& aAudioUnit ) const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetNextAudioUnitL() - Enter" ); + RPointerArray audioUnits; + TBool bFound = EFalse; + + reinterpret_cast ( iObjectContainer )->GetAudioUnitsL( + audioUnits ); + + TInt count = audioUnits.Count(); + + aAudioUnit = NULL; + for( TInt i = 0; i < count; i++ ) + { + + if( iSourceId.Count() != 0 ) //JNI + { + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] SourceId - count=%d", iSourceId.Count() ); + TInt sourceid = iSourceId.operator[]( 0 ); + if( iSourceId.operator[]( 0 ) + == audioUnits.operator[]( i )->UnitId() ) + { + aAudioUnit = audioUnits.operator[]( i ); + aAudioUnit->SetPreviousUnitId( UnitId() ); + bFound = ETrue; + break; + } + } + } + + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetNextAudioUnitL() - Return=%d", bFound ); + return bFound; + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::GetAudioControlsL +// --------------------------------------------------------------------------- +// +EXPORT_C TBool CAccPolAudioUnitBase::GetPreviousAudioUnitL( + CAccPolAudioUnitBase*& aAudioUnit ) const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetPreviousAudioUnitL() - Enter" ); + TBool bFound = EFalse; + RPointerArray audioUnits; + + reinterpret_cast ( iObjectContainer )->GetAudioUnitsL( + audioUnits ); + TInt count = audioUnits.Count(); + + aAudioUnit = NULL; + for( TInt i = 0; i < count; i++ ) + { + if( PreviousUnitId() == audioUnits.operator[]( i )->UnitId() ) + { + aAudioUnit = audioUnits.operator[]( i ); + bFound = ETrue; + break; + } + } + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetPreviousAudioUnitL() - Return=%d", bFound ); + return bFound; + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::GetAudioControlsL +// --------------------------------------------------------------------------- +// +EXPORT_C void CAccPolAudioUnitBase::GetAudioUnitListL( + RPointerArray& aAudioUnits ) const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioUnitListL() - Enter" ); + RPointerArray audioUnits; + + reinterpret_cast ( iObjectContainer )->GetAudioUnitsL( + audioUnits ); + TInt audioUnitCount = audioUnits.Count(); + TInt sourceIdCount = iSourceId.Count(); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioUnitListL() - Source id count=%d", sourceIdCount ); + for( TInt i = 0; i < sourceIdCount; i++ ) + { + for( TInt j = 0; j < audioUnitCount; j++ ) + { + if( iSourceId.operator[]( i ) + == audioUnits.operator[]( j )->UnitId() ) + { + aAudioUnits.AppendL( audioUnits.operator[]( j ) ); + audioUnits.operator[]( j )->SetPreviousUnitId( UnitId() ); //JNI + } + } + } + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::GetAudioUnitListL() - Return" ); + } + +// --------------------------------------------------------------------------- +// CAccPolAudioUnitBase::AddControlL +// --------------------------------------------------------------------------- +// +EXPORT_C void CAccPolAudioUnitBase::AddControlL( + CAccPolAudioControlBase& aAudioControl ) + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::AddControlL() - Enter" ); + aAudioControl.SetUnitId( iUnitId ); + + TUint8 objectType; + objectType = aAudioControl.ObjectType(); + + switch( objectType ) + { + case EAccPolAudioVolumeControlObject: + { + CAccPolVolumeControl *volumeControl = CAccPolVolumeControl::NewL(); + CleanupStack::PushL( volumeControl ); + *volumeControl = ( CAccPolVolumeControl& )aAudioControl; + iAudioControls.AppendL( volumeControl ); + CleanupStack::Pop(); + } + break; + + case EAccPolAudioMuteControlObject: + { + CAccPolMuteControl *muteControl = CAccPolMuteControl::NewL(); + CleanupStack::PushL( muteControl ); + *muteControl = ( CAccPolMuteControl& )aAudioControl; + iAudioControls.AppendL( muteControl ); + CleanupStack::Pop(); + } + break; + + case EAccPolAudioInputControlObject: + { + CAccPolInputControl *inputControl = CAccPolInputControl::NewL(); + CleanupStack::PushL( inputControl ); + *inputControl = ( CAccPolInputControl& )aAudioControl; + iAudioControls.AppendL( inputControl ); + CleanupStack::Pop(); + } + break; + + default: + { + User::Leave( KErrNotSupported ); + } + break; + } + + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::AddControlL() - Return" ); + } +// --------------------------------------------------------------------------- +// CAccPolObjectBase::ExternalizeBaseLd +// --------------------------------------------------------------------------- +// +EXPORT_C void CAccPolAudioUnitBase::ExternalizeAudioUnitBaseL( + RWriteStream& aStream ) const + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::ExternalizeAudioUnitBaseL() - Enter" ); + TInt count( KErrNone ); + //Add data + aStream.WriteUint8L( iUnitId ); + count = iSourceId.Count(); + aStream.WriteInt8L( iSourceId.Count() ); + for( TInt i = 0; i < count; i++ ) + { + aStream.WriteUint8L( ( TUint8 )iSourceId.operator[]( i ) ); + } + count = iAudioControls.Count(); + aStream.WriteInt8L( count ); + + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::ExternalizeAudioUnitBaseL - Unit id = %d", iUnitId ); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::ExternalizeAudioUnitBaseL - Source id count = %d", iSourceId.Count() ); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::ExternalizeAudioUnitBaseL - Audio controls count = %d", iAudioControls.Count() ); + + for( TInt i = 0; i < iAudioControls.Count(); i++ ) + { + iAudioControls[i]->ExternalizeL( aStream ); + } + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::ExternalizeBaseL - Return" ); + } + +// --------------------------------------------------------------------------- +// CAccPolObjectBase::InternalizeBaseL +// --------------------------------------------------------------------------- +// +EXPORT_C void CAccPolAudioUnitBase::InternalizeAudioUnitBaseL( + RReadStream& aStream ) + { + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::InternalizeAudioUnitBaseL() - Enter" ); + TInt count( KErrNone ); + iUnitId = aStream.ReadUint8L(); + count = aStream.ReadInt8L(); + for( TInt i = 0; i < count; i++ ) + { + iSourceId.Append( ( TInt )aStream.ReadUint8L() ); + } + + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::InternalizeAudioUnitBaseL - Unit id = %d", iUnitId ); + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::InternalizeAudioUnitBaseL - Source id count = %d", iSourceId.Count() ); + + count = aStream.ReadInt8L(); + for( TInt i = 0; i < count; i++ ) + { + //Object type + TUint8 objectType = aStream.ReadUint8L(); + switch( objectType ) + { + case EAccPolAudioVolumeControlObject: + { + CAccPolVolumeControl *volumeControl = + CAccPolVolumeControl::NewLC(); + volumeControl->InternalizeL( aStream ); + this->AddControlL( *volumeControl ); + CleanupStack::PopAndDestroy( volumeControl ); + } + break; + + case EAccPolAudioMuteControlObject: + { + CAccPolMuteControl *muteControl = CAccPolMuteControl::NewLC(); + muteControl->InternalizeL( aStream ); + this->AddControlL( *muteControl ); + CleanupStack::PopAndDestroy( muteControl ); + } + break; + + case EAccPolAudioInputControlObject: + { + CAccPolInputControl *inputControl = + CAccPolInputControl::NewLC(); + inputControl->InternalizeL( aStream ); + this->AddControlL( *inputControl ); + CleanupStack::PopAndDestroy( inputControl ); + } + break; + + default: + { + User::Leave( KErrNotSupported ); + } + break; + } + } + API_TRACE_1( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::InternalizeAudioUnitBaseL - Audio controls count = %d", iAudioControls.Count() ); + + API_TRACE_( "[AccFW: ACCPOLAUDIODEVICETOPOLOGY] CAccPolAudioUnitBase::InternalizeAudioUnitBaseL - Return" ); + }