diff -r 24062c24fe38 -r 2a26698d78ba phoneapp/phoneuiview/src/phoneringingtoneclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/src/phoneringingtoneclient.cpp Mon Mar 15 12:40:24 2010 +0200 @@ -0,0 +1,253 @@ +/* +* Copyright (c) 2002-2005,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: Client interface of the phone ringing tone server. +* +*/ + + +// INCLUDE FILES +#include +#include +#include + +#include "phoneringingtoneclient.h" +#include "phoneringingtonesrv.h" +#include "phoneringingtonesrv.hrh" +#include "phoneuiviewtrace.h" + +// LOCAL FUNCTION PROTOTYPES +static TInt StartServer(); + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::RPhoneRingingTonePlayer +// ----------------------------------------------------------------------------- +// +RPhoneRingingTonePlayer::RPhoneRingingTonePlayer() : RSessionBase() + { + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::~RPhoneRingingTonePlayer +// ----------------------------------------------------------------------------- +// +RPhoneRingingTonePlayer::~RPhoneRingingTonePlayer() + { + Close(); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::Connect +// ----------------------------------------------------------------------------- +// +TInt RPhoneRingingTonePlayer::Connect() + { + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer::Connect <"); + TInt retries = 3; + TInt err = KErrNone; + + while(retries--) + { + err = CreateSession( KRingingToneServerName, + TVersion( KRingingToneSrvVersionMajor,KRingingToneSrvVersionMinor,KRingingToneSrvVersionBuild ) ); + + PHONEUIVIEW_PRINTF("RPhoneRingingTonePlayer::Connect: CreateSession err %d", err); + if ( ( err != KErrNotFound ) && ( err != KErrServerTerminated ) ) + { + break; + } + + err = StartServer(); + + PHONEUIVIEW_PRINTF("RPhoneRingingTonePlayer::Connect: StartServer err %d", err); + if ( ( err != KErrNone ) && ( err != KErrAlreadyExists ) ) + { + break; + } + } + + PHONEUIVIEW_PRINTF("RPhoneRingingTonePlayer::Connect, ret %d >", err); + return err; + } + + +// ----------------------------------------------------------------------------- +// StartServer +// ----------------------------------------------------------------------------- +// +TInt StartServer() +{ + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer - StartServer <"); + + // Form thread name + TTime time; + time.UniversalTime(); + + TFullName threadName; + threadName.Format( _L("PhoneRingingToneThread%Ld"), time.Int64() ); + + // Create thread + RThread thread; + TInt err = thread.Create( threadName, CPhoneRingingToneServer::ThreadEntryFunc, 0x8000, NULL, NULL ); + if ( err != KErrNone ) + { + return err; + } + + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer - StartServer: thread created"); + + // Bump thread priority + thread.SetPriority( EPriorityAbsoluteHigh ); + + // Rendezvous with the thread + TRequestStatus status; + thread.Rendezvous( status ); + if ( status != KRequestPending ) + { + thread.Kill( 0 ); + } + else + { + thread.Resume(); + } + + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer - StartServer: waiting for rendezvous"); + + // Wait for thread start or death + User::WaitForRequest( status ); + thread.Close(); + + PHONEUIVIEW_PRINTF("RPhoneRingingTonePlayer - StartServer: rendezvous: %d", status.Int()); + + PHONEUIVIEW_PRINT("RPhoneRingingTonePlayer - StartServer >"); + return status.Int(); +} + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::SetExtendedSecurityNeeded +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::SetExtendedSecurityNeeded( TBool aNeeded ) + { + SendReceive( ESetExtendedSecurityNeeded, TIpcArgs( aNeeded ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::SetToneFileSizeLimit +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::SetToneFileSizeLimit( TInt aLimit ) + { + SendReceive( ESetToneFileSizeLimit, TIpcArgs( aLimit ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::SetRingingToneL +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::SetRingingToneL( const TDesC& aFilename ) + { + User::LeaveIfError( SendReceive( ESetAudioRingingTone, TIpcArgs( &aFilename ) ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::SetDefaultRingingToneL +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::SetDefaultRingingToneL( const TDesC& aFilename ) + { + User::LeaveIfError( SendReceive( ESetDefaultRingingTone, TIpcArgs( &aFilename ) ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayAudioRingTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayAudioRingTone( TInt aVolume, TProfileRingingType aRingingType ) + { + SendReceive( EPlayAudioRingTone, TIpcArgs( aVolume, aRingingType ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayTtsTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayTtsTone( const TDesC& aTextToSay, TInt aVolume, TProfileRingingType aRingingType ) + { + SendReceive( EPlayTtsTone, TIpcArgs( &aTextToSay, aVolume, aRingingType ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayDefaultTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayDefaultTone( TInt aVolume, TProfileRingingType aRingingType ) + { + SendReceive( EPlayDefaultTone, TIpcArgs( aVolume, aRingingType ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayBackupTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayBackupTone( TInt aVolume, TProfileRingingType aRingingType ) + { + SendReceive( EPlayBackupTone, TIpcArgs( aVolume, aRingingType ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlaySilentTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlaySilentTone() + { + SendReceive( EPlaySilentTone ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::BeepOnce +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::BeepOnce( TInt aVolume ) + { + SendReceive( EBeepOnce, TIpcArgs( aVolume ) ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::PlayUnsecureVoIPTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::PlayUnsecureVoIPTone() + { + SendReceive( EPlayUnsecureVoIPTone ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::MuteRingingTone +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::MuteRingingTone() + { + SendReceive( EMuteRingingTone ); + } + +// ----------------------------------------------------------------------------- +// RPhoneRingingTonePlayer::StopPlaying +// ----------------------------------------------------------------------------- +// +void RPhoneRingingTonePlayer::StopPlaying() + { + SendReceive( EStopPlaying ); + }