cellularsrvapitest/telephonydevsoundhaitest/devsound/src/T_CAudioOutputData.cpp
changeset 0 3553901f7fa8
--- /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<CMMFDevSound*>(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"));
+	}