sl@0: /* sl@0: * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: Implementation of the DistanceAttenuation effect class sl@0: * sl@0: */ sl@0: sl@0: sl@0: sl@0: sl@0: // INCLUDE FILES sl@0: sl@0: #ifdef _DEBUG sl@0: #include sl@0: #endif sl@0: sl@0: #include sl@0: #include sl@0: #include "DistanceAttenuationProxy.h" sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #ifdef _DEBUG sl@0: #define DEBPRN0 RDebug::Printf( "%s", __PRETTY_FUNCTION__); sl@0: #define DEBPRN1(str) RDebug::Printf( "%s %s", __PRETTY_FUNCTION__, str ); sl@0: #else sl@0: #define DEBPRN0 sl@0: #define DEBPRN1(str) sl@0: #endif sl@0: sl@0: // ============================ MEMBER FUNCTIONS =============================== sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::CDistanceAttenuation sl@0: // C++ default constructor can NOT contain any code, that sl@0: // might leave. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation::CDistanceAttenuation() sl@0: : iDistanceAttenuationData(0, 0, EFalse, 0,0), sl@0: iDataPckgTo(iDistanceAttenuationData) sl@0: { sl@0: } sl@0: sl@0: // Destructor sl@0: EXPORT_C CDistanceAttenuation::~CDistanceAttenuation() sl@0: { sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL(CMdaAudioConvertUtility& aUtility) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility); sl@0: CleanupStack::PushL(customInterface); sl@0: sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)customInterface->CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if ( !distanceAttenuationProxy ) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: CleanupStack::Pop(customInterface); sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CMdaAudioInputStream& aUtility ) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)aUtility.CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if (distanceAttenuationProxy == NULL) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CMdaAudioOutputStream& aUtility) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)aUtility.CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if (distanceAttenuationProxy == NULL) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CMdaAudioPlayerUtility& aUtility ) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility); sl@0: CleanupStack::PushL(customInterface); sl@0: sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)customInterface->CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if ( !distanceAttenuationProxy ) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: CleanupStack::Pop(customInterface); sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CMdaAudioRecorderUtility& aUtility, TBool aRecordStream) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility, aRecordStream); sl@0: CleanupStack::PushL(customInterface); sl@0: sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)customInterface->CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if ( !distanceAttenuationProxy ) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: CleanupStack::Pop(customInterface); sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CMdaAudioToneUtility& aUtility) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)aUtility.CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if (distanceAttenuationProxy == NULL) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CMMFDevSound& aDevSound ) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)aDevSound.CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if (distanceAttenuationProxy == NULL) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CCustomCommandUtility* aUtility) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility); sl@0: CleanupStack::PushL(customInterface); sl@0: sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)customInterface->CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if ( !distanceAttenuationProxy ) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: CleanupStack::Pop(customInterface); sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: MCustomInterface& aCustomInterface ) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)aCustomInterface.CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if ( !distanceAttenuationProxy ) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CMidiClientUtility& aUtility ) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility); sl@0: CleanupStack::PushL(customInterface); sl@0: sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)customInterface->CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if ( !distanceAttenuationProxy ) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: CleanupStack::Pop(customInterface); sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CDrmPlayerUtility& aUtility ) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility); sl@0: CleanupStack::PushL(customInterface); sl@0: sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)customInterface->CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if ( !distanceAttenuationProxy ) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: CleanupStack::Pop(customInterface); sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::NewL sl@0: // Static function for creating an instance of the DistanceAttenuation object. sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C CDistanceAttenuation* CDistanceAttenuation::NewL( sl@0: CVideoPlayerUtility& aUtility ) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility); sl@0: CleanupStack::PushL(customInterface); sl@0: sl@0: CDistanceAttenuationProxy* distanceAttenuationProxy = (CDistanceAttenuationProxy*)customInterface->CustomInterface(KUidDistanceAttenuationEffect); sl@0: sl@0: if ( !distanceAttenuationProxy ) sl@0: { sl@0: DEBPRN1("No Adaptation Support - leaving"); sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: sl@0: CleanupStack::Pop(customInterface); sl@0: sl@0: return distanceAttenuationProxy; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::DistanceAttenuation sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: EXPORT_C void CDistanceAttenuation::DistanceAttenuation( sl@0: TInt32& aRMin, TInt32& aRMax, TBool& aMuteAfterMax, sl@0: TUint32& aRollOffFactor, TUint32& aRoomRollOffFactor) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: aRMin = iDistanceAttenuationData.iRMin; sl@0: aRMax = iDistanceAttenuationData.iRMax; sl@0: aMuteAfterMax = iDistanceAttenuationData.iMuteAfterMax; sl@0: aRollOffFactor = iDistanceAttenuationData.iRollOffFactor; sl@0: aRoomRollOffFactor = iDistanceAttenuationData.iRoomRollOffFactor; sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::RollOffFactorMax sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C void CDistanceAttenuation::RollOffFactorMax(TUint32& aRollOfFactorMax) sl@0: { sl@0: aRollOfFactorMax = iDistanceAttenuationData.iRollOffFactorMax; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::RoomRollOffFactorMax sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C void CDistanceAttenuation::RoomRollOffFactorMax( TUint32& aRoomRollOfFactorMax ) sl@0: { sl@0: aRoomRollOfFactorMax = iDistanceAttenuationData.iRoomRollOffFactorMax; sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::SetDistanceAttenuationL sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: sl@0: EXPORT_C void CDistanceAttenuation::SetDistanceAttenuationL( sl@0: TInt32 aRMin, TInt32 aRMax, TBool aMuteAfterMax, sl@0: TUint32 aRollOffFactor, TUint32 aRoomRollOffFactor ) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: iDistanceAttenuationData.iRMin = aRMin; sl@0: iDistanceAttenuationData.iRMax = aRMax; sl@0: iDistanceAttenuationData.iMuteAfterMax = aMuteAfterMax; sl@0: sl@0: if(aRollOffFactor <= iDistanceAttenuationData.iRollOffFactorMax) sl@0: iDistanceAttenuationData.iRollOffFactor = aRollOffFactor; sl@0: else sl@0: User::Leave(KErrArgument); sl@0: sl@0: if(aRoomRollOffFactor <= iDistanceAttenuationData.iRoomRollOffFactorMax) sl@0: iDistanceAttenuationData.iRoomRollOffFactor = aRoomRollOffFactor; sl@0: else sl@0: User::Leave(KErrArgument); sl@0: sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::Uid sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C TUid CDistanceAttenuation::Uid() const sl@0: { sl@0: return KUidDistanceAttenuationEffect; sl@0: } sl@0: sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::DoEffectData sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C const TDesC8& CDistanceAttenuation::DoEffectData() sl@0: { sl@0: sl@0: DEBPRN0; sl@0: iDataPckgTo = iDistanceAttenuationData; sl@0: return iDataPckgTo; sl@0: } sl@0: sl@0: // ----------------------------------------------------------------------------- sl@0: // CDistanceAttenuation::SetEffectData sl@0: // ----------------------------------------------------------------------------- sl@0: // sl@0: EXPORT_C void CDistanceAttenuation::SetEffectData( sl@0: const TDesC8& aEffectDataBuffer ) sl@0: { sl@0: sl@0: DEBPRN0; sl@0: TEfDistanceAttenuationDataPckg dataPckg; sl@0: dataPckg.Copy(aEffectDataBuffer); sl@0: iDistanceAttenuationData = dataPckg(); sl@0: iEnabled = iDistanceAttenuationData.iEnabled; sl@0: iEnforced = iDistanceAttenuationData.iEnforced; sl@0: iHaveUpdateRights = iDistanceAttenuationData.iHaveUpdateRights; sl@0: } sl@0: sl@0: sl@0: // ========================== OTHER EXPORTED FUNCTIONS ========================= sl@0: