author | hgs |
Thu, 07 Oct 2010 22:34:12 +0100 | |
changeset 0 | b8ed18f6c07b |
child 2 | 5c1df44f2eed |
permissions | -rw-r--r-- |
/* * 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: This is the implementation of the CRestrictedAudioOutputMessageHandler class. * */ // INCLUDE FILES #include "RestrictedAudioOutput.h" #include "RestrictedAudioOutputMessageHandler.h" #include "RestrictedAudioOutputMessageTypes.h" // ================= MEMBER FUNCTIONS ======================= // C++ default constructor can NOT contain any code, that // might leave. // CRestrictedAudioOutputMessageHandler::CRestrictedAudioOutputMessageHandler(CRestrictedAudioOutput* aAudioOutput) : CMMFObject(KUidRestrictedAudioOutput) { iAudioOutput = aAudioOutput; } // Two-phased constructor. EXPORT_C CRestrictedAudioOutputMessageHandler* CRestrictedAudioOutputMessageHandler::NewL(TAny* aCustomInterface) { CRestrictedAudioOutput* audioOutput = (CRestrictedAudioOutput*)aCustomInterface; CRestrictedAudioOutputMessageHandler* self = new (ELeave) CRestrictedAudioOutputMessageHandler(audioOutput); self->ConstructL(); return self; } // ----------------------------------------------------------------------------- // CRestrictedAudioOutputMessageHandler::ConstructL // Symbian 2nd phase constructor can leave. // ----------------------------------------------------------------------------- // void CRestrictedAudioOutputMessageHandler::ConstructL() { } // Destructor CRestrictedAudioOutputMessageHandler::~CRestrictedAudioOutputMessageHandler() { delete iAudioOutput; } // --------------------------------------------------------- // CRestrictedAudioOutputMessageHandler::AudioOutputL // ?implementation_description // (other items were commented in a header). // --------------------------------------------------------- // EXPORT_C TUid CRestrictedAudioOutputMessageHandler::Uid() { return KUidRestrictedAudioOutput; } // --------------------------------------------------------- // CRestrictedAudioOutputMessageHandler::SetAudioOutputL // ?implementation_description // (other items were commented in a header). // --------------------------------------------------------- // void CRestrictedAudioOutputMessageHandler::HandleRequest(TMMFMessage& aMessage) { ASSERT(aMessage.Destination().InterfaceId() == KUidRestrictedAudioOutput); TRAPD(error,DoHandleRequestL(aMessage)); if(error) { aMessage.Complete(error); } } // --------------------------------------------------------- // CRestrictedAudioOutputMessageHandler::DoHandleRequestL // ?implementation_description // (other items were commented in a header). // --------------------------------------------------------- // void CRestrictedAudioOutputMessageHandler::DoHandleRequestL(TMMFMessage& aMessage) { switch(aMessage.Function()) { case ERaofCommit: { DoCommitL(aMessage); break; } default: { aMessage.Complete(KErrNotSupported); } } } // --------------------------------------------------------- // CRestrictedAudioOutputMessageHandler::DoCommitL // ?implementation_description // (other items were commented in a header). // --------------------------------------------------------- // void CRestrictedAudioOutputMessageHandler::DoCommitL(TMMFMessage& aMessage) { #ifdef _DEBUG RDebug::Print(_L("CRestrictedAudioOutputMessageHandler::DoCommitL")); #endif TPckgBuf<TInt> countPckg; aMessage.ReadData1FromClient(countPckg); TInt count = countPckg(); #ifdef _DEBUG RDebug::Print(_L("CRestrictedAudioOutputMessageHandler::DoCommitL Count: %d"),count); #endif CArrayFixFlat<CRestrictedAudioOutput::TAllowedOutputPreference>* outputArray = new(ELeave) CArrayFixFlat<CRestrictedAudioOutput::TAllowedOutputPreference>(4); CleanupStack::PushL(outputArray); outputArray->ResizeL(count); TInt length = count * outputArray->Length(); TPtr8 arrayPtr((TUint8*)&(*outputArray)[0],length, length); aMessage.ReadData2FromClient(arrayPtr); CRestrictedAudioOutput::TAllowedOutputPreference pref; TInt err = iAudioOutput->Reset(); for (TInt i = 0; i < count; i++) { pref = (outputArray->Array())[i]; #ifdef _DEBUG RDebug::Print(_L("DoCommitL Calling Append for: %d"),pref); #endif TInt err = iAudioOutput->AppendAllowedOutput(pref); } #ifdef _DEBUG RDebug::Print(_L("CRestrictedAudioOutputMessageHandler::DoCommitL Calling Commit...")); #endif iAudioOutput->Commit(); CleanupStack::PopAndDestroy(); //outputArray aMessage.Complete(KErrNone); } // End of File