vtengines/videoteleng/Src/Base/cvtengmdtrmessagelistener.cpp
changeset 18 d9b6a8729acd
parent 4 6dc066157ed4
child 23 c378a0498b84
child 27 dcbddbbaf8fd
--- a/vtengines/videoteleng/Src/Base/cvtengmdtrmessagelistener.cpp	Tue Jan 26 12:01:21 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,321 +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:  Mediator event listener implementation
-*
-*/
-
-
-
-// INCLUDE FILES
-#include    "cvtengmdtrmessagelistener.h"
-#include    "VtEngUtils.h"
-#include    "CVtEngSettings.h"
-#include    "CVtEngEventManager.h"
-#include    "cvtengmediatorservice.h"
-
-#include    <cvtlogger.h>
-#include    <videotelcontrolmediatorapi.h>
-#include    <mediatorcommandresponder.h>
-#include    <mediatordomainuids.h>
-#include    <mediatoreventsfromtelephonyapi.h>
-#include    <vtinternalmediatorapi.h>
-
-// CONSTANTS
-
-// mediator command timeout
-static const TInt KVtEngMdtrCmdTimeout = 500000;
-
-// array granularity is 2 (enable mic, disable mic commands)
-static const TInt KVtEngMdtrCmdArrayGranularity = 2;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CVtEngMdtrMessageListener::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CVtEngMdtrMessageListener* CVtEngMdtrMessageListener::NewL(
-    CVtEngUtility& aUtils )
-    {
-    __VTPRINTENTER( "CVtEngMdtrMessageListener.NewL" )
-    CVtEngMdtrMessageListener* self = new( ELeave ) 
-        CVtEngMdtrMessageListener( aUtils );
-    CleanupStack::PushL( self );
-    self->ConstructL( );
-    CleanupStack::Pop();
-    __VTPRINTEXIT( "CVtEngMdtrMessageListener.NewL" )
-    return self;
-    }
-
-// Destructor
-CVtEngMdtrMessageListener::~CVtEngMdtrMessageListener()
-    {
-    // ignore error in unregistering
-    if ( iMediatorResponder )
-        {
-        iMediatorResponder->UnregisterCommand( 
-                KMediatorVideoTelephonyDomain,
-                KCatPhoneToVideotelCommands,
-                iCommandList );
-        iCommandList.Close();
-        iMediatorResponder->UnregisterCommand(
-                KMediatorVideoTelephonyDomain,
-                KCatVideotelInternalCommands,
-                EVtMediatorReleaseDataport );
-                
-        delete iMediatorResponder;
-        }
-    
-             
-    // ignore error in unregistering
-    if ( iMediatorEvents )
-        {
-        iMediatorEvents->UnsubscribeEvent( KMediatorVideoTelephonyDomain,
-                KCatVideotelInternalEvents,
-                EVtMediatorEventVideoCallInformation );
-        delete iMediatorEvents;
-        }
-    
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngMdtrMessageListener::MediatorCommandL
-// Receives mediator command and passes it to service object
-// -----------------------------------------------------------------------------
-//
-void CVtEngMdtrMessageListener::MediatorCommandL( 
-    TUid /*aDomain*/,
-    TUid aCategory, 
-    TInt aCommandId, 
-    TVersion /*aVersion*/,
-    const TDesC8& /*aData*/ )
-    {
-    __VTPRINTENTER( "CVtEngMdtrMessageListener.MediatorCommandL" )
-    // service object destroys itself after sending command response
-    CVtEngMediatorService::StartLD( *iMediatorResponder, iUtils, aCategory, aCommandId );    
-    __VTPRINTEXIT( "CVtEngMdtrMessageListener.MediatorCommandL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngMdtrMessageListener::CancelMediatorCommand
-// Cancallation of mediator command. no-op, just returns response.
-// -----------------------------------------------------------------------------
-//
-void CVtEngMdtrMessageListener::CancelMediatorCommand( 
-    TUid /*aDomain*/,
-    TUid /*aCategory*/, 
-    TInt /*aCommandId*/ )
-    {
-    __VTPRINTENTER( "CVtEngMdtrMessageListener.CancelMediatorCommand" )
-    // No-op    
-    __VTPRINTEXIT( "CVtEngMdtrMessageListener.CancelMediatorCommand" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngMdtrEventListener::MediatorEventL
-// Receives mediator event from VT Mediator Plugin. The event
-// contains CLI and/or Dataport name.
-// -----------------------------------------------------------------------------
-//
-void CVtEngMdtrMessageListener::MediatorEventL( TUid /*aDomain*/,
-    TUid aCategory, 
-    TInt aEventId, 
-    const TDesC8& aData )
-    {
-    __VTPRINTENTER( "CVtEngMdtrMessageListener.MediatorEventL" )
-    if  ( aCategory == KCatVideotelInternalEvents && 
-        aEventId == EVtMediatorEventVideoCallInformation )
-        {        
-        TVtMediatorInfoPackage package;
-        package.Copy( aData );
-        TVtVideoTelephonyCallInformation data = package();
-        __VTPRINT2( DEBUG_GEN, " VT call info data validity value=%d", 
-            data.iEventDataValidity)
-        // if message contains dataport name save it
-        CVtEngSettings& settings = iUtils.Settings();
-        if ( data.iEventDataValidity & 
-            TVtVideoTelephonyCallInformation::EDataportValid )
-            {
-            //__VTPRINT(DEBUG_GEN, " Dataport is ready")
-            settings.SetDataportInfoL( data.iDataport );
-            }                                       
-        // if message contains CLI info handle it (save and notify if state 
-        // allows)
-        if ( data.iEventDataValidity & 
-            TVtVideoTelephonyCallInformation::EDisplayTextValid )
-            {            
-            MVtEngSessionInfo::TCLI cli;
-            cli.iCallId = data.iCallId;
-            cli.iName = data.iDisplayText.Left( cli.iName.MaxLength() );
-            cli.iVoiceCallPossible = data.iVoiceCallPossible;
-            settings.SetCLI( cli );
-            
-            // ready == call is answered (allows setting app to foreground)
-            if ( IsReadyForCLIEvent() )
-                {
-                // send event about CLI availability
-                CVtEngEventManager::NotifyEvent( KVtEngCLIAvailable );                
-                }
-            else
-                {
-                // Wait until connected state is reached (see HandleVtEventL)
-                __VTPRINT( DEBUG_GEN, 
-                    "CVtEngMdtrMessageListener defer CLI event" )
-                iUtils.EventManager().AddObserverL( this );
-                }
-            }
-        }
-    __VTPRINTEXIT( "CVtEngMdtrMessageListener.MediatorEventL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngMdtrMessageListener::HandleVtEventL
-//
-// Handles defered CLI event dispatching (to UI). CLI event was defered because
-// engine state was not suitable in MediatorEventL which then started observing
-// state changes.
-// -----------------------------------------------------------------------------
-//
-void CVtEngMdtrMessageListener::HandleVtEventL( TInt aEvent )
-    {
-    __VTPRINTENTER( "CVtEngMdtrMessageListener.HandleVtEventL" )
-    if ( aEvent == KVtEngSessionStateChanged &&
-         IsReadyForCLIEvent() ) // <- ready == call is answered
-        {
-        iUtils.EventManager().RemoveObserver( this );
-        __VTPRINT( DEBUG_GEN, 
-            "CVtEngMdtrMessageListener dispatch defered CLI event" )
-        CVtEngEventManager::NotifyEvent( KVtEngCLIAvailable );
-        }
-    
-    __VTPRINTEXIT( "CVtEngMdtrMessageListener.HandleVtEventL" )
-    }
-
-        
-// -----------------------------------------------------------------------------
-// CVtEngMdtrMessageListener::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CVtEngMdtrMessageListener::ConstructL()
-    {
-    __VTPRINTENTER( "CVtEngMdtrMessageListener.ConstructL" )
-    
-    // for sending command responses
-    iMediatorResponder = CMediatorCommandResponder::NewL( this );
-    
-    // for receiving events from VT Mediator Plugin (dataport/CLI info)
-    iMediatorEvents = CMediatorEventConsumer::NewL( this );
-    
-    TCapabilitySet capSet;
-    capSet.SetEmpty();
-    // for audio control
-    capSet.AddCapability( ECapabilityWriteDeviceData ); 
-    
-    // define common attributes for all commands that engine is responsible for
-    MediatorService::TCommand command;
-    command.iCaps = capSet;
-    command.iVersion = TVersion( 
-        KPhoneToVideotelCmdVersionMajor, 
-        KPhoneToVideotelCmdVersionMinor,
-        KPhoneToVideotelCmdVersionBuild );
-    command.iTimeout = KVtEngMdtrCmdTimeout;
-    
-    // enable microphone command
-    command.iCommandId = EVtCmdUnmute;
-    iCommandList.Append( command );
-    
-    // disable microphone command
-    command.iCommandId = EVtCmdMute;
-    iCommandList.Append( command );
-        
-    // register VT events that are raised by VT Mediator Plugin. 
-    // !!! Note !!!!
-    // event subscription must be done before command registration because
-    // command registration triggers raising the event in the plugin. Different 
-    // order would cause the engine to miss the event.
-    const TVersion commandVersion( 
-            KVideotelMdtrCommandsVersionMajor,
-            KVideotelMdtrCommandsVersionMinor,
-            KVideotelMdtrCommandsVersionBuild );
-    //capSet.SetEmpty();
-    //capSet.AddCapability( ECapabilityPowerMgmt );
-        
-    iMediatorResponder->RegisterCommand( 
-                KMediatorVideoTelephonyDomain,
-                KCatVideotelInternalCommands,
-                EVtMediatorReleaseDataport,
-                commandVersion,
-                capSet,
-                KVtEngMdtrCmdTimeout );
-    
-    const TVersion eventVersion( 
-                KTelephonyEventsVersionMajor,
-                KTelephonyEventsVersionMinor,
-                KTelephonyEventsVersionBuild );
-    
-    TInt res = iMediatorEvents->SubscribeEvent( KMediatorVideoTelephonyDomain,
-            KCatVideotelInternalEvents,
-            EVtMediatorEventVideoCallInformation, 
-            eventVersion );
-    
-    if ( res == KErrNone )
-        {
-        // register Mediator commands that we handle
-        res = iMediatorResponder->RegisterCommand( 
-            KMediatorVideoTelephonyDomain,
-            KCatPhoneToVideotelCommands,
-            iCommandList );
-        
-        }
-    __VTPRINTEXITR( "CVtEngMdtrMessageListener.ConstructL res=%d",res )
-    // registering must not fail
-    User::LeaveIfError( res );
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngMdtrMessageListener::CVtEngMdtrMessageListener
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CVtEngMdtrMessageListener::CVtEngMdtrMessageListener( CVtEngUtility& aUtils)
- : iUtils( aUtils ), iCommandList( KVtEngMdtrCmdArrayGranularity )
-    {    
-    __VTPRINTENTER( "CVtEngMdtrMessageListener.CVtEngMdtrMessageListener" )
-    __VTPRINTEXIT( "CVtEngMdtrMessageListener.CVtEngMdtrMessageListener" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngMdtrMessageListener::IsReadyForCLIEvent
-// Checks if engine state is appropriate to send CLI event.
-// -----------------------------------------------------------------------------
-//
-TBool CVtEngMdtrMessageListener::IsReadyForCLIEvent() const
-    {
-    __VTPRINTENTER( "CVtEngMdtrMessageListener.IsReadyForCLIEvent" )
-    const MVtEngSessionInfo::TSessionState state = 
-        iUtils.StateManager()->SessionState();
-    const TBool isReady =
-       ( state == MVtEngSessionInfo::EConnected || 
-         state == MVtEngSessionInfo::ENegotiating ||
-         state == MVtEngSessionInfo::EOpen );    
-    __VTPRINTEXITR( "CVtEngMdtrMessageListener.IsReadyForCLIEvent %d>", 
-        isReady )
-    return isReady;
-    }
-
-//  End of File
-