diff -r ebdbd102c78a -r 2eacb6118286 phoneapp/phonemediatorcenter/src/cphonemediatorsender.cpp --- a/phoneapp/phonemediatorcenter/src/cphonemediatorsender.cpp Fri May 14 15:51:57 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,486 +0,0 @@ -/* -* Copyright (c) 2008 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: Implementation of CPhoneMediatorSender class. -* -*/ - - -// INCLUDE FILES -#include -#include -#include "phoneui.hrh" -#include "cphonemediatorsender.h" -#include "phonelogger.h" -#include "phoneconstants.h" -#include "phonemediatorpackagetypes.h" -#include "phoneui.pan" -#include "tphonecmdparamcallheaderdata.h" -#include "tphonecmdparamboolean.h" -#include "mphoneenginemessagesender.h" -#include "pevirtualengine.h" -#include "mphoneshutdowncommand.h" - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// CPhoneMediatorSender::Instance -// Initializes the singleton object -// (other items were commented in a header). -// --------------------------------------------------------- -// -EXPORT_C CPhoneMediatorSender* CPhoneMediatorSender::Instance() - { - CPhoneMediatorSender* instance = static_cast - ( CCoeEnv::Static ( KUidMediatorSenderSingleton ) ); - - if ( !instance ) - { - TRAPD( err, instance = CPhoneMediatorSender::NewL() ); - if ( err ) - { - Panic( EPhoneMediatorCenterCouldNotCreateSingleton ); - } - } - return instance; - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::CPhoneMediatorSender -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CPhoneMediatorSender::CPhoneMediatorSender() : - CCoeStatic( KUidMediatorSenderSingleton ) - { - } - -// Destructor -CPhoneMediatorSender::~CPhoneMediatorSender() - { - delete iCommandInitiator; - iEvents.Close(); - iGenericEvents.Close(); - delete iEventSender; - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CPhoneMediatorSender::ConstructL() - { - __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorSender::ConstructL( ) "); - iCommandInitiator = CMediatorCommandInitiator::NewL( this ); - iEventSender = CMediatorEventProvider::NewL(); - ResetCommandBuffer(); - - RegisterGenericEvents(); - } - -// ----------------------------------------------------------- -// CPhoneMediatorSender::NewL() -// Constructor -// (other items were commented in a header). -// ----------------------------------------------------------- -// -CPhoneMediatorSender* CPhoneMediatorSender::NewL() - { - __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorSender::NewL( ) "); - - CPhoneMediatorSender* self = new ( ELeave ) CPhoneMediatorSender; - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - return self; - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::RegisterGenericEvents -// ----------------------------------------------------------------------------- -// -void CPhoneMediatorSender::RegisterGenericEvents() - { - __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorSender::RegisterGenericEvents( ) "); - TCapabilitySet caps; - caps.SetEmpty(); - - MediatorService::TEvent newEvent; - newEvent.iEventId = EPhoneEventCallData; - newEvent.iVersion = TVersion( KTelephonyEventsVersionMajor, - KTelephonyEventsVersionMinor, - KTelephonyEventsVersionBuild ); - newEvent.iCaps = caps; - - TRAPD( errorCode, iGenericEvents.AppendL( newEvent )); - if( errorCode == ECCPErrorNone ) - { - TInt res = iEventSender->RegisterEvent( KMediatorTelephonyDomain, - KCatEventsFromTelephony, - iGenericEvents ); - __ASSERT_DEBUG( !res, Panic( EPhoneMediatorCenterRegistrationFailed ) ); - } - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::SendEvent -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPhoneMediatorSender::SendEvent( - const TPhoneViewCommandId /*aCommandId*/ ) const - { - // No one yet intereseted this event. - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::SendEvent -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPhoneMediatorSender::SendEvent( const TPhoneViewCommandId aCommandId, - const TInt aCallId ) const - { - switch( aCommandId ) - { - case EPhoneViewRemoveCallHeader: - { - __PHONELOG1( EBasic, EPhoneMediatorCenter, - "CPhoneMediatorSender::SendEvent - EPhoneEventCallData iCallId:%d" ,aCallId ); - TTelephonyCallDataParam callDataParam; - callDataParam.iCallId = aCallId; - callDataParam.iCallState = ECallStateIdle; - TTelephonyCallDataParamPackage callDataParamPackage( callDataParam ); - iEventSender->RaiseEvent( KMediatorTelephonyDomain, - KCatEventsFromTelephony, - EPhoneEventCallData, - TVersion( KTelephonyEventsVersionMajor, - KTelephonyEventsVersionMinor, - KTelephonyEventsVersionBuild ), - callDataParamPackage ); - } - break; - - default: - break; - } - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::SendEvent -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPhoneMediatorSender::SendEvent( const TPhoneViewCommandId aCommandId, - TPhoneCommandParam& aCommandParam ) - { - switch( aCommandId ) - { - case EPhoneViewActivateMuteUIChanges: - { - TPhoneCmdParamBoolean& booleanParam = static_cast( aCommandParam ); - const TBool audioMute( booleanParam.Boolean() ); - TInt response = KErrNone; - - TInt command = -1; - if( audioMute ) - { - __PHONELOG( EBasic, EPhoneMediatorCenter, - "CPhoneMediatorSender::SendEvent - transformed to Mediator Command EVtCmdMute" ); - command = EVtCmdMute; - response = IssueCommand( KMediatorVideoTelephonyDomain, - KCatPhoneToVideotelCommands, - command, - TVersion( KPhoneToVideotelCmdVersionMajor, - KPhoneToVideotelCmdVersionMinor, - KPhoneToVideotelCmdVersionBuild ), - KNullDesC8 ); - } - else - { - __PHONELOG( EBasic, EPhoneMediatorCenter, - "CPhoneMediatorSender::SendEvent - transformed to Mediator Command EVtCmdUnmute" ); - command = EVtCmdUnmute; - response = IssueCommand( KMediatorVideoTelephonyDomain, - KCatPhoneToVideotelCommands, - command, - TVersion( KPhoneToVideotelCmdVersionMajor, - KPhoneToVideotelCmdVersionMinor, - KPhoneToVideotelCmdVersionBuild ), - KNullDesC8 ); - } - - if( ( response == KErrInUse ) && ( iCommandBuffer.iCommandId == KErrNotFound ) ) - { - // Previous command wasn't handled yet so buffer the last unhandled command. - // This command will be sent after we get response to the previous command - iCommandBuffer.iCommandId = command; - iCommandBuffer.iDomainUid = KMediatorVideoTelephonyDomain; - iCommandBuffer.iCategoryUid = KCatPhoneToVideotelCommands; - iCommandBuffer.iVersion = TVersion( KPhoneToVideotelCmdVersionMajor, - KPhoneToVideotelCmdVersionMinor, - KPhoneToVideotelCmdVersionBuild ); - } - } - break; - - default: - break; - } - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::SendEvent -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPhoneMediatorSender::SendEvent( const TPhoneViewCommandId aCommandId, - const TInt aCallId, TPhoneCommandParam& aCommandParam ) const - { - switch( aCommandId ) - { - case EPhoneViewCreateCallHeader: - { - TPhoneCmdParamCallHeaderData& callHeaderParam = static_cast( aCommandParam ); - __PHONELOG2( EBasic, EPhoneMediatorCenter, - "CPhoneMediatorSender::SendEvent - EPhoneEventCallData iCallId:%d iCLIText:%S", - aCallId, &callHeaderParam.CLIText() ); - TTelephonyCallDataParam callDataParam; - callDataParam.iCallId = aCallId; - callDataParam.iCLIText = callHeaderParam.CLIText(); - callDataParam.iCallState = MapCallState( callHeaderParam.CallState() ); - callDataParam.iRemotePhoneNumber = callHeaderParam.RemotePhoneNumber(); - callDataParam.iCallType = MapCallType( callHeaderParam.CallType() ); - TTelephonyCallDataParamPackage callDataParamPackage( callDataParam ); - iEventSender->RaiseEvent( KMediatorTelephonyDomain, - KCatEventsFromTelephony, - EPhoneEventCallData, - TVersion( KTelephonyEventsVersionMajor, - KTelephonyEventsVersionMinor, - KTelephonyEventsVersionBuild ), - callDataParamPackage ); - } - break; - - default: - break; - } - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::SendEvent -// ----------------------------------------------------------------------------- -// -EXPORT_C void CPhoneMediatorSender::SendEvent( - const TPhoneViewCommandId /*aCommandId*/, - const TInt /*aCallId*/, const TDesC* /*aMessage*/ ) const - { - // No one interested yet from these events. - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::IssueCommand -// ----------------------------------------------------------------------------- -// -EXPORT_C TInt CPhoneMediatorSender::IssueCommand( const TUid aDomain, const TUid aCategory, - const TInt aCommandId, const TVersion aVersion, const TDesC8& aData, - MPhoneShutdownCommand* aShutdownCommand ) - { - __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorSender::IssueCommand( ) "); - __PHONELOG3( EBasic, EPhoneMediatorCenter, - "aCommandId = %d, aDomain = %d, aCategory = %d", aCommandId, aDomain, aCategory ); - if( aShutdownCommand ) - { - iShutdownCommand = aShutdownCommand; - } - - return iCommandInitiator->IssueCommand( - aDomain, - aCategory, - aCommandId, - aVersion, - aData ); - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::CommandResponseL -// ----------------------------------------------------------------------------- -// -void CPhoneMediatorSender::CommandResponseL( TUid aDomain, TUid aCategory, - TInt aCommandId, TInt /*aStatus*/, const TDesC8& /*aData*/ ) - { - // First check for buffered command - if( iCommandBuffer.iCommandId != KErrNotFound ) - { - // We have a buffered command waiting - __PHONELOG( EBasic, EPhoneMediatorCenter, - "CPhoneMediatorSender::VideoTelephonyCommandResponse - Buffered Command waiting" ); - if( iCommandBuffer.iCommandId != aCommandId ) - { - // And it's not identical to the command which response we now received - // so it's necessary to re-send it - __PHONELOG1( EBasic, EPhoneMediatorCenter, - "CPhoneMediatorSender::VideoTelephonyCommandResponse - Resending command %d", iCommandBuffer.iCommandId ); - IssueCommand( iCommandBuffer.iDomainUid, - iCommandBuffer.iCategoryUid, - iCommandBuffer.iCommandId, - iCommandBuffer.iVersion, - KNullDesC8 ); - - ResetCommandBuffer(); - } - } - - if( ( aDomain == KMediatorVideoTelephonyDomain ) && - ( aCategory == KCatPhoneToVideotelCommands ) ) - { - VideoTelephonyCommandResponse( aCommandId ); - } - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::VideoTelephonyCommandResponse -// ----------------------------------------------------------------------------- -// -void CPhoneMediatorSender::VideoTelephonyCommandResponse( TInt aCommandId ) - { - __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorSender::VideoTelephonyCommandResponse( ) "); - __PHONELOG1( EBasic, EPhoneMediatorCenter, - "VideoTelephonyCommandResponse aCommandId = %d", aCommandId ); - - switch( aCommandId ) - { - case EVtCmdReleaseDataport: - __ASSERT_DEBUG( iShutdownCommand, Panic( EPhoneMediatorCenterParameterNotInitialized ) ); - TRAP_IGNORE( iShutdownCommand->ExecuteLD()); - break; - - default: - break; - } - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::MapCallState -// ----------------------------------------------------------------------------- -// -TCallState CPhoneMediatorSender::MapCallState( const TInt aCallState ) const - { - __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorSender::MapCallState( ) "); - TCallState callState( ECallStateUnknown ); - - switch( aCallState ) - { - case EPEStateUnknown: - callState = ECallStateUnknown; - break; - - case EPEStateIdle: - callState = ECallStateIdle; - break; - - case EPEStateDialing: - callState = ECallStateDialling; - break; - - case EPEStateEmergencyDialing: - callState = ECallStateEmergencyDialling; - break; - - case EPEStateRinging: - callState = ECallStateRinging; - break; - - case EPEStateConnecting: - callState = ECallStateConnecting; - break; - - case EPEStateConnected: - callState = ECallStateConnected; - break; - - case EPEStateHangingUp: - callState = ECallStateHangingUp; - break; - - case EPEStateHeld: - callState = ECallStateHeld; - break; - - case EPEStateAnswering: - callState = ECallStateAnswering; - break; - - case EPEStateRejecting: - callState = ECallStateRejecting; - break; - - case EPEStateDisconnecting: - callState = ECallStateDisconnecting; - break; - - default: - break; - } - - return callState; - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::MapCallType -// ----------------------------------------------------------------------------- -// -TCallType CPhoneMediatorSender::MapCallType( const TInt aCallType ) const - { - __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorSender::MapCallType( ) "); - TCallType callType( ECallTypeUninitialized ); - - switch( aCallType ) - { - case EPECallTypeUninitialized: - callType = ECallTypeUninitialized; - break; - - case EPECallTypeCSVoice: - callType = ECallTypeCSVoice; - break; - - case EPECallTypeVideo: - callType = ECallTypeVideo; - break; - - case EPECallTypeVoIP: - callType = ECallTypeVoIP; - break; - - default: - break; - } - - return callType; - } - -// ----------------------------------------------------------------------------- -// CPhoneMediatorSender::ResetCommandBuffer -// ----------------------------------------------------------------------------- -// -void CPhoneMediatorSender::ResetCommandBuffer() - { - __LOGMETHODSTARTEND( EPhoneMediatorCenter, "CPhoneMediatorSender::ResetCommandBuffer( ) "); - TUid nullUid = TUid::Null(); - iCommandBuffer.iCommandId = KErrNotFound; - iCommandBuffer.iDomainUid = nullUid; - iCommandBuffer.iCategoryUid = nullUid; - iCommandBuffer.iVersion = TVersion( KErrNotFound, KErrNotFound, KErrNotFound ); - } - -// End of File