--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiview/src/phoneringingtonesrv.cpp Wed Sep 01 12:30:10 2010 +0100
@@ -0,0 +1,404 @@
+/*
+* 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: Ringing tone server.
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <e32svr.h>
+
+#include "phoneringingtonesrv.h"
+#include "phoneringingtonesrvsession.h"
+#include "phoneringingtonesrvplayerao.h"
+#include "phoneuiviewtrace.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::CPhoneRingingToneServer
+// -----------------------------------------------------------------------------
+//
+CPhoneRingingToneServer::CPhoneRingingToneServer()
+ : CServer2( EPriorityHigh )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::~CPhoneRingingToneServer
+// -----------------------------------------------------------------------------
+//
+CPhoneRingingToneServer::~CPhoneRingingToneServer()
+ {
+ delete iPlayer;
+ iPlayer = 0;
+ iFs.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::NewLC
+// -----------------------------------------------------------------------------
+//
+CPhoneRingingToneServer* CPhoneRingingToneServer::NewLC()
+ {
+ CPhoneRingingToneServer* self = new (ELeave) CPhoneRingingToneServer;
+
+ CleanupStack::PushL(self);
+ self->ConstructL();
+
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::ConstructL()
+ {
+ User::LeaveIfError( iFs.Connect() );
+
+ // Allocate player
+ iPlayer = CPhoneRingingToneSrvPlayerAO::NewL( iFs );
+
+ // Try to start the server
+ StartL( KRingingToneServerName );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::NewSessionL
+// -----------------------------------------------------------------------------
+//
+CSession2* CPhoneRingingToneServer::NewSessionL( const TVersion& /*aVersion*/, const RMessage2& /*aMessage*/ ) const
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServerSession::NewSessionL" );
+
+ return CPhoneRingingToneServerSession::NewL( *const_cast<CPhoneRingingToneServer*>(this) );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::StartSession
+// -----------------------------------------------------------------------------
+//
+TInt CPhoneRingingToneServer::StartSession()
+ {
+ TInt err( KErrNone );
+
+ if( !iSessionInUse )
+ {
+ iSessionInUse = ETrue;
+ }
+ else
+ {
+ err = KErrAccessDenied;
+ }
+ PHONEUIVIEW_PRINTF( "CPhoneRingingToneServer::StartSession err %d", err );
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::CloseSession
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::CloseSession()
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::CloseSession()" );
+
+ CActiveScheduler::Stop();
+ iSessionInUse = EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::ThreadEntryFunc
+// -----------------------------------------------------------------------------
+//
+TInt CPhoneRingingToneServer::ThreadEntryFunc( TAny* /*aPtr*/ )
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::ThreadEntryFunc <" );
+ // Allocate cleanup stack, active scheduler and server
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ CActiveScheduler* scheduler = new CActiveScheduler;
+
+ // Check that all allocations were ok
+ if ( !cleanup || !scheduler )
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::ThreadEntryFunc: OOM" );
+ // Out of memory
+ delete scheduler;
+ delete cleanup;
+
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::ThreadEntryFunc >" );
+ return KErrNoMemory;
+ }
+
+ // Install active scheduler
+ CActiveScheduler::Install( scheduler );
+
+ // Run the server
+ TRAPD( err, CPhoneRingingToneServer::RunServerL() );
+
+ PHONEUIVIEW_PRINTF( "CPhoneRingingToneServer::ThreadEntryFunc: RunServerL err %d", err );
+
+ // Uninstall active scheduler
+ CActiveScheduler::Install( NULL );
+
+ // Cleanup
+ delete scheduler;
+ delete cleanup;
+
+ return err;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::RunServerL
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::RunServerL()
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::RunServerL <" );
+
+ // Allocate server
+ CPhoneRingingToneServer* server = CPhoneRingingToneServer::NewLC();
+
+ // Notify that we're running
+ RThread::Rendezvous( KErrNone );
+
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::RunServerL: server is running!" );
+
+ // Start active scheduler
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(); // server
+
+ // Won't stop until all sessions to the server are closed (last one calls CActiveScheduler::Stop)
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::RunServerL >" );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::SetExtendedSecurityNeeded
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::SetExtendedSecurityNeeded( TBool aNeeded )
+ {
+ iPlayer->SetExtendedSecurityNeeded( aNeeded );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::SetToneFileSizeLimit
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::SetToneFileSizeLimit( TInt aLimit )
+ {
+ iPlayer->SetToneFileSizeLimit( aLimit );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::SetRingingToneL
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::SetRingingToneL( const RMessage2& aMessage )
+ {
+ // Read filename from the message
+ TFileName filename;
+ TInt len = aMessage.GetDesLength( 0 );
+
+ aMessage.ReadL( 0, filename );
+
+ PHONEUIVIEW_PRINTF( "CPhoneRingingToneServer::SetRingingToneL: %S", &filename );
+
+ // Give the ringing tone to the player
+ iPlayer->SetRingingToneL( filename );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::SetDefaultRingingToneL
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::SetDefaultRingingToneL( const RMessage2& aMessage )
+ {
+ // Read filename from the message
+ TFileName filename;
+ TInt len = aMessage.GetDesLength( 0 );
+
+ aMessage.ReadL( 0, filename );
+
+ PHONEUIVIEW_PRINTF( "CPhoneRingingToneServer::SetDefaultRingingToneL: %S", &filename );
+
+ // Give the default tone to the player
+ iPlayer->SetDefaultRingingToneL( filename );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::PlayAudioRingTone
+// -----------------------------------------------------------------------------
+//
+TBool CPhoneRingingToneServer::PlayAudioRingTone( const RMessage2& aMessage )
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayAudioRingTone <" );
+
+ // Read the parameters
+ TInt volume = aMessage.Int0();
+ TProfileRingingType ringingType = (TProfileRingingType)aMessage.Int1();
+
+ PHONEUIVIEW_PRINTF2(
+ "CPhoneRingingToneServer::PlayAudioRingTone: volume=%d, ringingType=%d",
+ volume, ringingType);
+
+ TBool ret = iPlayer->PlayAudioRingTone( volume, ringingType, aMessage );
+
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayAudioRingTone >" );
+
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::PlayTtsTone
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::PlayTtsTone( const RMessage2& aMessage )
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayTtsTone <" );
+
+ // Read the parameters
+ TInt volume = aMessage.Int1();
+ TProfileRingingType ringingType = (TProfileRingingType)aMessage.Int2();
+
+ TInt ttsLen = aMessage.GetDesLength( 0 );
+
+ if( ttsLen <= 0 )
+ {
+ PHONEUIVIEW_PRINTF("CPhoneRingingToneServer::PlayTtsTone: TTS length error: %d!", ttsLen);
+ PHONEUIVIEW_PRINT("CPhoneRingingToneServer::PlayTtsTone >");
+ return;
+ }
+
+ HBufC* textToSay = HBufC::New( ttsLen );
+ if ( !textToSay )
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayTtsTone: OOM!" );
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayTtsTone >" );
+ return;
+ }
+
+ TPtr ptr( textToSay->Des() );
+
+ TInt err = aMessage.Read( 0, ptr );
+ if ( err != KErrNone )
+ {
+ PHONEUIVIEW_PRINTF( "CPhoneRingingToneServer::PlayTtsTone: read err %d", err );
+ delete textToSay;
+ return;
+ }
+
+ PHONEUIVIEW_PRINTF3(
+ "CPhoneRingingToneServer::PlayTtsTone: text=%S, volume=%d, ringingType=%d",
+ &(*textToSay), volume, ringingType );
+
+ iPlayer->PlayTtsTone( *textToSay, volume, ringingType );
+
+ // Cleanup
+ delete textToSay;
+
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayTtsTone >" );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::PlayDefaultTone
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::PlayDefaultTone( const RMessage2& aMessage )
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayDefaultTone <" );
+
+ // Read the parameters
+ TInt volume = aMessage.Int0();
+ TProfileRingingType ringingType = (TProfileRingingType)aMessage.Int1();
+
+ PHONEUIVIEW_PRINTF2(
+ "CPhoneRingingToneServer::PlayDefaultTone: volume=%d, ringingType=%d",
+ volume, ringingType );
+
+ iPlayer->PlayDefaultTone( volume, ringingType );
+
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayDefaultTone >" );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::PlayBackupTone
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::PlayBackupTone( const RMessage2& aMessage )
+ {
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayBackupTone <" );
+
+ // Read the parameters
+ TInt volume = aMessage.Int0();
+ TProfileRingingType ringingType = (TProfileRingingType)aMessage.Int1();
+
+ PHONEUIVIEW_PRINTF2(
+ "CPhoneRingingToneServer::PlayBackupTone: volume=%d, ringingType=%d",
+ volume, ringingType );
+
+ iPlayer->PlayBackupTone( volume, ringingType );
+
+ PHONEUIVIEW_PRINT( "CPhoneRingingToneServer::PlayBackupTone >" );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::PlaySilentTone
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::PlaySilentTone()
+ {
+ iPlayer->PlaySilentTone();
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::BeepOnce
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::BeepOnce( const RMessage2& aMessage )
+ {
+ iPlayer->BeepOnce( aMessage.Int0() );
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::PlayUnsecureVoIPTone
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::PlayUnsecureVoIPTone()
+ {
+ iPlayer->PlayUnsecureVoIPTone();
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::MuteRingingTone
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::MuteRingingTone()
+ {
+ iPlayer->MuteRingingTone();
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneRingingToneServer::StopPlaying
+// -----------------------------------------------------------------------------
+//
+void CPhoneRingingToneServer::StopPlaying()
+ {
+ iPlayer->StopPlaying();
+ }
+