--- 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
-