diff -r 000000000000 -r 3553901f7fa8 cellularsrvapitest/telephonydevsoundhaitest/devsound/src/T_CAudioOutputData.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cellularsrvapitest/telephonydevsoundhaitest/devsound/src/T_CAudioOutputData.cpp Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,343 @@ +/* +* Copyright (c) 2005-2009 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: +* +*/ + +#include "T_CAudioOutputData.h" + +/*@{*/ +// Output options Id's +const TUid OUTPUT_NOPREFERENCE = TUid::Uid(0x00); +const TUid OUTPUT_ALL = TUid::Uid(0x01); +const TUid OUTPUT_NOOUTPUT = TUid::Uid(0x02); +const TUid OUTPUT_PRIVATE = TUid::Uid(0x03); +const TUid OUTPUT_PUBLIC = TUid::Uid(0x04); +/*@}*/ + + +/*@{*/ +//Section name literals +_LIT(KDevSoundKey, "DevSoundInstanceName"); +_LIT(KAudioOutputPar, "AudioOutput"); +_LIT(KSecureOutputPar, "SecureOutput"); +/*@}*/ + +/*@{*/ +//Command literals +_LIT(KCmdNewL, "NewL"); +_LIT(KCmdDestructor, "~"); +_LIT(KCmdAudioOutput, "AudioOutput"); +_LIT(KCmdDefaultAudioOutput, "DefaultAudioOutput"); +_LIT(KCmdRegisterObserver, "RegisterObserver"); +_LIT(KCmdSecureOutput, "SecureOutput"); +_LIT(KCmdSetAudioOutput, "SetAudioOutput"); +_LIT(KCmdSetSecureOutput, "SetSecureOutput"); +_LIT(KCmdUnregisterObserver, "UnregisterObserver"); +/*@}*/ + + +/*@{*/ +// Output options literal +_LIT(KOutput_NoPreference, "Output_NoPreference"); +_LIT(KOutput_All, "Output_All"); +_LIT(KOutput_NoOutput, "Output_NoOutput"); +_LIT(KOutput_Private, "Output_Private"); +_LIT(KOutput_Public, "Output_Public"); +/*@}*/ + +const CDataWrapperBase::TEnumEntryTable CT_CAudioOutputData::iEnumOutputOptions[] = + { + { KOutput_NoPreference, OUTPUT_NOPREFERENCE.iUid }, + { KOutput_All, OUTPUT_ALL.iUid }, + { KOutput_NoOutput, OUTPUT_NOOUTPUT.iUid }, + { KOutput_Private, OUTPUT_PRIVATE.iUid }, + { KOutput_Public, OUTPUT_PUBLIC.iUid } + }; + + + +/** + * Two phase constructor + * + * @leave system wide error + */ +CT_CAudioOutputData* CT_CAudioOutputData::NewL() + { + CT_CAudioOutputData* ret = new (ELeave) CT_CAudioOutputData(); + return ret; + } + +/** + * Private constructor. First phase construction + */ +CT_CAudioOutputData::CT_CAudioOutputData() + : + iAudioOutput(NULL), + iSecureOutput(EFalse) + { + } + + +/** + * Return a pointer to the object that the data wraps + * + * @return pointer to the object that the data wraps + */ +TAny* CT_CAudioOutputData::GetObject() + { + return iAudioOutput; + } + +/** + * Helper method for DoCmdDestructor + */ +void CT_CAudioOutputData::DestroyData() + { + if (iAudioOutput) + { + delete iAudioOutput; + iAudioOutput = NULL; + } + } + + +/** + * Process a command read from the Ini file + * @param aCommand - The command to process + * @param aSection - The section get from the *.ini file of the project T_Wlan + * @param aAsyncErrorIndex - Command index dor async calls to returns errors to + * @return TBool - ETrue if the command is process + * @leave - system wide error + */ +TBool CT_CAudioOutputData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt /*aAsyncErrorIndex*/) + { + TBool ret = ETrue; + + if (aCommand == KCmdNewL) + { + DoCmdNewL(aSection); + } + else if (aCommand == KCmdDestructor) + { + DoCmdDestructor(); + } + else if (aCommand == KCmdAudioOutput) + { + DoCmdAudioOutput(); + } + else if (aCommand == KCmdDefaultAudioOutput) + { + DoCmdDefaultAudioOutput(); + } + else if (aCommand == KCmdRegisterObserver) + { + DoCmdRegisterObserverL(); + } + else if (aCommand == KCmdSecureOutput) + { + DoCmdSecureOutput(); + } + else if (aCommand == KCmdSetAudioOutput) + { + DoCmdSetAudioOutputL(aSection); + } + else if (aCommand == KCmdSetSecureOutput) + { + DoCmdSetSecureOutputL(aSection); + } + else if (aCommand == KCmdUnregisterObserver) + { + DoCmdUnregisterObserver(); + } + else + { + ERR_PRINTF1(_L("Unknown command.")); + ret=EFalse; + } + return ret; + } + +/** + * Create an instance of CAudioOutput + * @param aSection - Section to read param from the ini file + * @return none + */ +void CT_CAudioOutputData::DoCmdNewL(const TTEFSectionName& aSection) //quite return + { + DestroyData(); + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DoCmdNewL")); + TPtrC devSoundObject; + if( !GetStringFromConfig(aSection, KDevSoundKey, devSoundObject) ) + { + ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KDevSoundKey); + SetBlockResult(EFail); + } + else + { + CMMFDevSound* DevSoundObject = static_cast(GetDataObjectL(devSoundObject)); + iAudioOutput = (CAudioOutput*)DevSoundObject->CustomInterface(KUidAudioOutput); + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DoCmdNewL")); + } + } + +/** + * Destroy an instance of CAudioOutput + * @param none + * @return none + */ +void CT_CAudioOutputData::DoCmdDestructor() + { + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DoCmdDestroyData")); + DestroyData(); + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DoCmdDestroyData")); + } + +/** + * Get the audio Output pref + * @param none + * @return none + */ +void CT_CAudioOutputData::DoCmdAudioOutput() + { + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DoCmdAudioOutput")); + audioOutputPref = iAudioOutput->AudioOutput(); + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DoCmdAudioOutput")); + } + +/** + * Get the default audio output pref + * @param none + * @return none + */ +void CT_CAudioOutputData::DoCmdDefaultAudioOutput() + { + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DoCmdDefaultAudioOutput")); + audioOutputPref = iAudioOutput->DefaultAudioOutput(); + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DoCmdDefaultAudioOutput")); + } + +/** + * Register the observer + * @param none + * @return none + */ +void CT_CAudioOutputData::DoCmdRegisterObserverL() //quite return + { + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DoCmdRegisterObserverL")); + TRAPD( error, iAudioOutput->RegisterObserverL(*this) ); + if( error != KErrNone ) + { + ERR_PRINTF2(_L("Register observer failed with error %d"), error); + SetError(error); + } + else + { + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DoCmdRegisterObserverL")); + } + } + +/** + * Secure the output + * @param none + * @return none + */ +void CT_CAudioOutputData::DoCmdSecureOutput() + { + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DoCmdSecureOutput")); + iSecureOutput = iAudioOutput->SecureOutput(); + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DoCmdSecureOutput")); + } + +/** + * Set the audio Output + * @param aSection - Section to read param from the ini file + * @return none + */ +void CT_CAudioOutputData::DoCmdSetAudioOutputL(const TTEFSectionName& aSection) + { + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DoCmdSetAudioOutputL")); + TInt parAudioOutput; + if(!GetEnumFromConfig(aSection, KAudioOutputPar, iEnumOutputOptions, parAudioOutput)) + { + ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KAudioOutputPar); + SetBlockResult(EFail); + } + else{ + TRAPD(error, iAudioOutput->SetAudioOutputL((CAudioOutput::TAudioOutputPreference)parAudioOutput)); + if( error != KErrNone ) + { + ERR_PRINTF2(_L("Setting Audio output failed with error %d"), error); + SetError(error); + } + else + { + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DoCmdSetAudioOutputL")); + } + } + } + +/** + * Set the secure output + * @param aSection - Section to read param from the ini file + * @return none + */ +void CT_CAudioOutputData::DoCmdSetSecureOutputL(const TTEFSectionName& aSection) + { + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DoCmdSetSecureOutputL")); + TBool parSecureOutput; + if(!GetBoolFromConfig(aSection, KSecureOutputPar, parSecureOutput)) + { + ERR_PRINTF2(_L("Error in getting parameter %S from INI file"), &KSecureOutputPar); + SetBlockResult(EFail); + + } + else + { + TRAPD( error, iAudioOutput->SetSecureOutputL(parSecureOutput) ); + if( error != KErrNone ) + { + ERR_PRINTF2(_L("Setting secure output failed with error %d"), error); + SetError(error); + } + else + { + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DoCmdSetSecureOutputL")); + } + } + } + +/** + * Unregister the observer + * @param none + * @return none + */ +void CT_CAudioOutputData::DoCmdUnregisterObserver() + { + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DoCmdUnregisterObserver")); + iAudioOutput->UnregisterObserver(*this); + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DoCmdUnregisterObserver")); + } + +/** + * Shows that the audio output was change + * @param aAudioOutput + * @param aNewDefault - The new default value + */ +void CT_CAudioOutputData::DefaultAudioOutputChanged(CAudioOutput& /*aAudioOutput*/, CAudioOutput::TAudioOutputPreference aNewDefault) + { + INFO_PRINTF1(_L("*START*CT_CAudioOutputData::DefaultAudioOutputChanged")); + INFO_PRINTF2(_L("Audio Output changed to %d"), aNewDefault); + INFO_PRINTF1(_L("*END*CT_CAudioOutputData::DefaultAudioOutputChanged")); + }