mmsharing/mmshengine/src/musengtelephoneutils.cpp
changeset 15 ccd8e69b5392
parent 2 b31261fd4e04
child 20 e8be2c2e049d
child 22 496ad160a278
--- a/mmsharing/mmshengine/src/musengtelephoneutils.cpp	Tue Feb 02 00:09:07 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,441 +0,0 @@
-/*
-* Copyright (c) 2005 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: 
-*
-*/
-
-
-// USER
-#include "musengtelephoneutils.h"
-#include "musengaudioroutingobserver.h"
-#include "musengmcesession.h"
-#include "muslogger.h"
-
-// SYSTEM
-#include <centralrepository.h>
-#include <telephonydomaincrkeys.h>
-#include <e32property.h>
-#include <telephonydomainpskeys.h>
-#include <CPhCltCommandHandler.h> // for CPhCltCommandHandler
-
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngTelephoneUtils* CMusEngTelephoneUtils::NewL()
-    {
-    CMusEngTelephoneUtils* self = new( ELeave ) CMusEngTelephoneUtils();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngTelephoneUtils::~CMusEngTelephoneUtils()
-    {
-    MUS_LOG( "mus: [ENGINE]  -> CMusEngTelephoneUtils::~CMusEngTelephoneUtils()" )
-    
-    Cancel();
-
-    delete iPhoneCommandHandler;
-    
-    if( iTelephonyAudioRouting ) // If 2nd phase construction has succeeded 
-        {
-        CTelephonyAudioRouting::TAudioOutput currentMode =
-                                            iTelephonyAudioRouting->Output();
-        if( currentMode != iAudioOutputAtStartup )
-            {
-            // As going down, let audiorouting api to show notification
-            iTelephonyAudioRouting->SetShowNote( ETrue );
-            TRAPD( err, DoSetOutputL( iAudioOutputAtStartup ) );
-            MUS_LOG1( "mus: [ENGINE]    final route change completed: %d", err )
-            err++;
-        	}
-        }
-
-    delete iRepository;
-    delete iTelephonyAudioRouting;
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::~CMusEngTelephoneUtils()" )
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngTelephoneUtils::AudioRoutingCanBeChanged()
-    {
-    MUS_LOG( "mus: [ENGINE]  -> CMusEngTelephoneUtils::AudioRoutingCanBeChanged" )
-    
-    TBool retValue = ( iTelephonyAudioRouting->Output() !=
-                       CTelephonyAudioRouting::EWiredAudioAccessory &&
-                       iTelephonyAudioRouting->Output() !=
-                       CTelephonyAudioRouting::EBTAudioAccessory &&
-                       iTelephonyAudioRouting->Output() !=
-                       CTelephonyAudioRouting::ETTY );
-    
-    MUS_LOG1( "mus: [ENGINE]  <- CMusEngTelephoneUtils::AudioRoutingCanBeChanged: %d",
-              retValue )
-              
-    return retValue;
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::LoudspeakerL( TBool aEnable, TBool aShowDialog )
-    {
-    MUS_LOG1( "mus: [ENGINE]  -> CMusEngTelephoneUtils::LoudspeakerL(%d)",
-              aEnable )
-    
-    if ( aEnable )
-        {
-        if ( iTelephonyAudioRouting->Output() == 
-             CTelephonyAudioRouting::EHandset )
-            {
-            // Disable note shown by audiorouting api as it causes
-            // application going to background for a while. Instead, display
-            // note by ourselves once setting output completes. This mechanism
-            // is needed only for loudspeaker enabling as going to background
-            // causes problems only at beginning of sharing session.
-            if ( aShowDialog )
-                {   
-                iTelephonyAudioRouting->SetShowNote( EFalse );
-                
-                iShowDialog = aShowDialog;
-                }
-    
-            DoSetOutputL( CTelephonyAudioRouting::ELoudspeaker );
-            }
-        }
-    else
-        {
-        iTelephonyAudioRouting->SetShowNote( aShowDialog );
-        
-        if ( iAudioOutputAtStartup == CTelephonyAudioRouting::ELoudspeaker )
-            {
-            DoSetOutputL( CTelephonyAudioRouting::EHandset );
-            }
-        else
-            {
-            DoSetOutputL( iAudioOutputAtStartup );
-            }
-        }
-
-    
-                                
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::LoudspeakerL(...)" )
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngTelephoneUtils::IsLoudSpeakerEnabled() const
-    {
-    return ( iTelephonyAudioRouting->Output() ==
-             CTelephonyAudioRouting::ELoudspeaker );
-    }
-
-
-// -----------------------------------------------------------------------------
-// Gets the CS call volume level.
-// Leaves if error occurs when accessing central repository.
-// -----------------------------------------------------------------------------
-//
-TInt CMusEngTelephoneUtils::GetVolumeL() const
-    {
-    TInt currentVolume = 0;
-    if ( IsLoudSpeakerEnabled() )
-        {
-        User::LeaveIfError( iRepository->Get( KTelIncallLoudspeakerVolume,
-                                              currentVolume ) );
-        }
-    else
-        {
-        User::LeaveIfError( iRepository->Get( KTelIncallEarVolume,
-                                              currentVolume ) );
-        }
-
-    return ValidateVolume( currentVolume );
-    }
-
-
-// -----------------------------------------------------------------------------
-// Sets the CS call volume level.
-// Leaves if error occurs when accessing central repository.
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::SetVolumeL( TInt aVolume )
-    {
-    TInt newVolume = ValidateVolume( aVolume );
-
-    if ( GetVolumeL() != newVolume )
-        {
-        if ( IsLoudSpeakerEnabled() )
-            {
-            User::LeaveIfError( iRepository->Set( KTelIncallLoudspeakerVolume,
-                                                  newVolume ) );
-            }
-        else
-            {
-            User::LeaveIfError( iRepository->Set( KTelIncallEarVolume, 
-                                                  newVolume ) );
-            }
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::MuteMicL( TBool aMute )
-    {
-    MUS_LOG1( "mus: [ENGINE]  -> CMusEngTelephoneUtils::MuteMicL(%d)", aMute )
-    
-    if ( IsActive() )
-        {
-        MUS_LOG( "mus: [ENGINE]     Cancel pending request" )
-        Cancel();
-        }
-    
-    iPhoneCommandHandler->MuteMicrophone( iStatus, aMute );
-    SetActive();
-    
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::MuteMicL()" )
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusEngTelephoneUtils::IsMicMutedL()
-    {
-    MUS_LOG( "mus: [ENGINE]  -> CMusEngTelephoneUtils::IsMicMutedL()" )
-    
-    TInt psVal;
-    User::LeaveIfError( RProperty::Get( KPSUidTelMicrophoneMuteStatus,
-                                        KTelMicrophoneMuteState,
-                                        psVal ) );
-                                        
-    MUS_LOG1( "mus: [ENGINE]     Mute status in PS is (%d)", psVal )
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::IsMicMutedL()" )
-
-    return ( psVal == EPSTelMicMuteOn );
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::SetAudioRoutingObserver( 
-                                    MMusEngAudioRoutingObserver* aObserver )
-    {
-    iAudioRoutingObserver = aObserver;
-    }
-    
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::RunL()
-    {
-    MUS_LOG( "mus: [ENGINE]  -> CMusEngTelephoneUtils::RunL()" )
-
-    // NOP, since we really cannot do anything but log the result
-    MUS_LOG1( "mus: [ENGINE]    Asynchronous call completed with code %d",
-             iStatus.Int() )
-
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::RunL()" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::DoCancel()
-    {
-    MUS_LOG( "mus: [ENGINE]  -> CMusEngTelephoneUtils::DoCancel()" )
-    
-    if ( iPhoneCommandHandler )
-        {
-        iPhoneCommandHandler->CancelAsyncRequest( EPhCltCommandMuteMic );
-        }
-        
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::DoCancel()" )
-    }
-    
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::AvailableOutputsChanged( 
-                        CTelephonyAudioRouting& /*aTelephonyAudioRouting*/ )
-    {
-    // NOP
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::OutputChanged( 
-                CTelephonyAudioRouting& aTelephonyAudioRouting )
-    {
-    MUS_LOG( "mus: [ENGINE]  -> CMusEngTelephoneUtils::OutputChanged()" )
-
-    // Some other application has changed audio output routing. We consider
-    // this as a last will of a user and return to this state after sharing
-    
-    iAudioOutputAtStartup = aTelephonyAudioRouting.Output();
-    
-    MUS_LOG1( "mus: [ENGINE]     New audio routing is %d", iAudioOutputAtStartup )
-    
-    if ( iAudioRoutingObserver )
-        {
-        iAudioRoutingObserver->AudioRoutingChanged( EFalse );
-        }
-        
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::OutputChanged()" )
-    }
-    
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::SetOutputComplete( 
-                    CTelephonyAudioRouting& /*aTelephonyAudioRouting*/,
-                    TInt aError )
-    {
-    MUS_LOG( "mus: [ENGINE]  -> CMusEngTelephoneUtils::SetOutputComplete()" )
-
-    if ( aError == KErrNone && iAudioRoutingObserver )
-        {
-        // If audio routing api didn't shown note and show dialog mode is on,
-        // we know that this completion is for such setoutput call for which
-        // we need to show the note. Show note mode is turned off only in that
-        // case.
-        TBool dialogShownByUs( EFalse );
-        TBool dialogShownByAudioRouting( EFalse );     
-        aError = iTelephonyAudioRouting->GetShowNote( dialogShownByAudioRouting );
-        if ( aError == KErrNone && !dialogShownByAudioRouting && iShowDialog )
-            {
-            dialogShownByUs = iShowDialog;
-            iShowDialog = EFalse;
-            }
-
-        iAudioRoutingObserver->AudioRoutingChanged( dialogShownByUs );
-        }
-    
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::SetOutputComplete()" )
-    }
-                            
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CMusEngTelephoneUtils::CMusEngTelephoneUtils() 
-	: CActive( CActive::EPriorityStandard )
-    {
-    iAudioOutputAtStartup = CTelephonyAudioRouting::ENotActive;
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::ConstructL()
-    {
-    MUS_LOG( "mus: [ENGINE]  -> CMusEngTelephoneUtils::ConstructL()" )
-
-    // Volume control
-    iRepository = CRepository::NewL( KCRUidInCallVolume );
-
-    // Audio routing control
-    iTelephonyAudioRouting = CTelephonyAudioRouting::NewL( *this );
-
-    iAudioOutputAtStartup = iTelephonyAudioRouting->Output();
-    
-    // Phone
-    MUS_LOG( "mus: [ENGINE]     Use static DLL" )
-    iPhoneCommandHandler = CPhCltCommandHandler::NewL();
-        
-    CActiveScheduler::Add( this );
-
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::ConstructL()" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// Validates that requested volume level is valid (between 1-10) and if it is
-// not, modifies requested volume level to be valid.  Returns validated volume.
-// -----------------------------------------------------------------------------
-//
-TInt CMusEngTelephoneUtils::ValidateVolume( const TInt aVolume ) const
-    {
-    if ( aVolume < KMusEngMinVolume )
-        {
-        return KMusEngMinVolume;
-        }
-    else if ( aVolume > KMusEngMaxVolume )
-        {
-        return KMusEngMaxVolume;
-        }
-    else
-        {
-        // NOP, to keep PC-Lint happy
-        }
-        
-    return aVolume;
-    }
-
-
-// -----------------------------------------------------------------------------
-// Set output if setting is currently allowed.
-// -----------------------------------------------------------------------------
-//
-void CMusEngTelephoneUtils::DoSetOutputL( 
-    CTelephonyAudioRouting::TAudioOutput aAudioOutput )
-    {
-    MUS_LOG( "mus: [ENGINE]  -> CMusEngTelephoneUtils::DoSetOutputL()" )
-    if ( iAudioRoutingObserver && !iAudioRoutingObserver->AudioRouteChangeAllowed() )
-        {
-        MUS_LOG( "mus: [ENGINE]     change not allowed!" )
-        User::Leave( KErrAccessDenied );
-        }
-    iTelephonyAudioRouting->SetOutputL( aAudioOutput );
-    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::DoSetOutputL()" )
-    }
-
-