diff -r cfea66083b62 -r baacf668fe89 phoneapp/phoneringingtoneplayer/src/cphonetoneserversession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneringingtoneplayer/src/cphonetoneserversession.cpp Fri Oct 15 12:58:46 2010 +0300 @@ -0,0 +1,135 @@ +/* +* Copyright (c) 2010 - 2010 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: Phone ringing tone server session. +* +*/ + + +// INCLUDE FILES +#include +#include + +#include "phoneconstants.h" +#include "mphonetoneserver.h" +#include "cphonetoneserver.h" +#include "phoneringingtonetrace.h" +#include "cphonetoneserversession.h" +#include "cphonetoneserverplaybackcontroller.h" + + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CPhoneToneServerSession::CPhoneToneServerSession +// ----------------------------------------------------------------------------- +// +CPhoneToneServerSession::CPhoneToneServerSession( const MPhoneToneServer& aServer ) + : iServer( aServer ) + { + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::CPhoneToneServerSession <"); + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::CPhoneToneServerSession >"); + } + + +// ----------------------------------------------------------------------------- +// CPhoneToneServerSession::~CPhoneToneServerSession +// ----------------------------------------------------------------------------- +// +CPhoneToneServerSession::~CPhoneToneServerSession() + { + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::~CPhoneToneServerSession <"); + delete iController; + iServer.RunDown(); + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::~CPhoneToneServerSession >"); + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServerSession::NewL +// ----------------------------------------------------------------------------- +// +CPhoneToneServerSession* CPhoneToneServerSession::NewL( const MPhoneToneServer& aServer ) + { + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::NewL <"); + CPhoneToneServerSession* self = new( ELeave )CPhoneToneServerSession( aServer ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::NewL >"); + return self; + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServerSession::ConstructL +// ----------------------------------------------------------------------------- +// +void CPhoneToneServerSession::ConstructL() + { + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::ConstructL <"); + iController = CPhoneToneServerPlaybackController::NewL(); + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::ConstructL >"); + } + +// ----------------------------------------------------------------------------- +// CPhoneToneServerSession::ServiceL +// ----------------------------------------------------------------------------- +// +void CPhoneToneServerSession::ServiceL( const RMessage2& aMessage ) + { + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::ServiceL <"); + TInt volume = aMessage.Int1(); + TProfileRingingType ringingType = ( TProfileRingingType )aMessage.Int2(); + + switch ( aMessage.Function() ) + { + + //S^4 onwards supported types are + //EProfileRingingTypeRinging and EProfileRingingTypeSilent + case EPlayAudioRingTone: + { + if ( EProfileRingingTypeSilent == ringingType ) + { + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::ServiceL - EProfileRingingTypeSilent"); + iController->PlaySilentTone(); + } + else + { + TFileName filename; + if ( aMessage.GetDesLength( 0 ) < filename.MaxLength() ) + { + // Ignore error. + // Handling is done in audio playing sequence. + aMessage.Read( 0, filename ); + } + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::ServiceL - playNormalTone"); + iController->PlayNormalToneL( filename, volume, ringingType ); + } + } + break; + + case EStopPlaying: + { + iController->StopTone(); + } + break; + + default: + break; + } + + aMessage.Complete( KErrNone ); + PHONERINGINGTONE_PRINT("CPhoneToneServerSession::ServiceL >"); + } + +// End of file