diff -r cfea66083b62 -r baacf668fe89 phoneapp/phoneringingtoneplayer/src/rphonetoneclient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneringingtoneplayer/src/rphonetoneclient.cpp Fri Oct 15 12:58:46 2010 +0300 @@ -0,0 +1,162 @@ +/* +* 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 "rphonetoneclient.h" +#include "cphonetoneserver.h" +#include "tphonecmdparamringtone.h" +#include "phoneringingtonetrace.h" + +// LOCAL FUNCTION PROTOTYPES +static TInt StartServer(); + +// ----------------------------------------------------------------------------- +// RPhoneToneClient::RPhoneToneClient +// ----------------------------------------------------------------------------- +// +EXPORT_C RPhoneToneClient::RPhoneToneClient() : RSessionBase() + { + } + +// ----------------------------------------------------------------------------- +// RPhoneToneClient::~RPhoneToneClient +// ----------------------------------------------------------------------------- +// +EXPORT_C RPhoneToneClient::~RPhoneToneClient() + { + Close(); + } + +// ----------------------------------------------------------------------------- +// RPhoneToneClient::Connect +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt RPhoneToneClient::Connect() + { + PHONERINGINGTONE_PRINT("RPhoneToneClient::Connect <"); + + TBool reConnect( EFalse ); + + TInt err = CreateSession( KRingingToneServerName, + TVersion( KRingingToneSrvVersionMajor, + KRingingToneSrvVersionMinor, + KRingingToneSrvVersionBuild ) ); + + if ( KErrNotFound == err ) + { + err = StartServer(); + + if ( !err ) + { + reConnect = ETrue; + } + } + + if ( reConnect ) + { + err = CreateSession( KRingingToneServerName, + TVersion( KRingingToneSrvVersionMajor, + KRingingToneSrvVersionMinor, + KRingingToneSrvVersionBuild ) ); + } + + PHONERINGINGTONE_PRINTF("RPhoneToneClient::Connect - err(%d)", err); + PHONERINGINGTONE_PRINT("RPhoneToneClient::Connect >"); + return err; + + } + +// ----------------------------------------------------------------------------- +// StartServer +// ----------------------------------------------------------------------------- +// +TInt StartServer() + { + PHONERINGINGTONE_PRINT("RPhoneToneClient - 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, + CPhoneToneServer::ThreadEntryFunc, + 0x8000, + NULL, + NULL ); + + PHONERINGINGTONE_PRINTF("RPhoneToneClient - StartServer - err(%d)", err); + if ( err ) + { + thread.Close(); + return err; + } + + thread.SetPriority( EPriorityAbsoluteHigh ); + TRequestStatus status; + thread.Rendezvous( status ); + + thread.Resume(); + + // Wait for thread start or death + User::WaitForRequest( status ); + thread.Close(); + PHONERINGINGTONE_PRINT("RPhoneToneClient - StartServer >"); + return status.Int(); + } + +// ----------------------------------------------------------------------------- +// RPhoneToneClient::PlayRingingToneL +// ----------------------------------------------------------------------------- +// +EXPORT_C void RPhoneToneClient::PlayRingingToneL( TPhoneCommandParam *aCommandParam ) + { + PHONERINGINGTONE_PRINT("RPhoneToneClient::PlayRingingToneL <"); + + if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdRingTone ) + { + TPhoneCmdParamRingTone* ringToneParam = + static_cast( aCommandParam ); + + TIpcArgs args( &( ringToneParam->RingTone() ), + ringToneParam->Volume(), + ringToneParam->RingingType() ); + User::LeaveIfError( SendReceive( EPlayAudioRingTone, args ) ); + } + PHONERINGINGTONE_PRINT("RPhoneToneClient::PlayRingingToneL >"); + } + +// ----------------------------------------------------------------------------- +// RPhoneToneClient::StopPlaying +// ----------------------------------------------------------------------------- +// +EXPORT_C void RPhoneToneClient::StopPlayingL() + { + PHONERINGINGTONE_PRINT("RPhoneToneClient::StopPlayingL <"); + User::LeaveIfError( SendReceive( EStopPlaying ) ); + PHONERINGINGTONE_PRINT("RPhoneToneClient::StopPlayingL >"); + } + +// End of file