diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccinterface/src/mmccevent.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmccinterface/src/mmccevent.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,314 @@ +/* +* Copyright (c) 2002-2004 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: Mcc EventHandler +* +*/ + + + + +// INCLUDE FILES +#include "mmccevent.h" +#include "mmccinterface.h" +#include "mmccevents.h" + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// ============================= LOCAL FUNCTIONS =============================== + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CMccEvent::CMccEvent +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CMccEvent::CMccEvent( RMMFController& aController, MMccCtrlObserver& aCallback ) + : CActive( EPriorityStandard ), + iController( aController ), + iEventCallBack( aCallback ), + iMessageDest( KMccControllerUidInterface ) + { + CActiveScheduler::Add( this ); + } + +// ----------------------------------------------------------------------------- +// CMccEvent::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CMccEvent::ConstructL() + { + } + +// ----------------------------------------------------------------------------- +// CMccEvent::NewL +// Static constructor. +// ----------------------------------------------------------------------------- +// +CMccEvent* CMccEvent::NewL( RMMFController& aController, + MMccCtrlObserver& aObserver ) + { + CMccEvent* self = new (ELeave) CMccEvent( aController, aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CMccEvent::~CMccEvent +// Destructor +// ----------------------------------------------------------------------------- +// +CMccEvent::~CMccEvent() + { + if( IsActive() ) + { + Cancel(); + } + } + +// ----------------------------------------------------------------------------- +// CMccEvent::RequestEventNotification +// Requests for event from Controller plugin and starts event listening loop. +// ----------------------------------------------------------------------------- +// +void CMccEvent::RequestEventNotification() + { + if ( !IsActive() ) + { + iController.CustomCommandAsync( iMessageDest, + ERequestEventNotification, + KNullDesC8, + KNullDesC8, + iPackage, + iStatus); + + SetActive(); + } + else + { + // Something is very wrong here + } + } + +// ----------------------------------------------------------------------------- +// CMccEvent::DoCancel +// From CActive Implements cancellation of an outstanding request. +// ----------------------------------------------------------------------------- +// +void CMccEvent::DoCancel() + { + iController.CustomCommandSync( iMessageDest, EMccCancel, + KNullDesC8, KNullDesC8 ); + } + +// ----------------------------------------------------------------------------- +// CMccEvent::RunL +// From CActive Handles an active object’s request completion event. +// ----------------------------------------------------------------------------- +// +void CMccEvent::RunL() + { + if ( KErrNone == iStatus.Int() ) + { + TMccEvent event = iPackage(); + + switch( event.iEventType ) + { + //HandleMccMediaEvent + case KMccRtcpReceived: + case KMccDtmfReceived: + case KMccDtmfControl: + case KMccStreamPlaying: + case KMccStreamBuffering: + case KMccStreamIdle: + case KMccLinkCreated: + case KMccMediaQualityStatus: + case KMccResourceNotAvailable: + case KMccTranscodeCancelled: + case KMccTranscodeInProgress: + case KMccTranscodeCompleted: + case KMccMasterKeyStaled: + HandleMccMediaEvent( event ); + break; + + //HandleMccErrorEvent + case KMccStreamError: + case KMccStreamMMFEvent: + HandleMccErrorEvent( event ); + break; + + //HandleMccStateChangeEvent + case KMccStreamPrepared: + case KMccStreamStarted: + case KMccStreamPaused: + case KMccStreamResumed: + case KMccStreamStopped: + case KMccStreamClosed: + HandleMccStateChangeEvent( event ); + break; + + //HandleMccInactivityEvent + case KMccInactivityEvent: + HandleMccInactivityEvent( event ); + break; + + //HandleMccActivityEvent + case KMccActivityEvent: + HandleMccActivityEvent( event ); + break; + + case KMccUnknownMediaReceived: + HandleMccUnknownMediaEvent( event ); + break; + + default: + break; + } + + RequestEventNotification(); + } + else + { + User::Leave( iStatus.Int() ); + } + } + +// ----------------------------------------------------------------------------- +// CMccEvent::RunError +// From CActive Handles +// ----------------------------------------------------------------------------- +// +TInt CMccEvent::RunError( TInt /*aError*/ ) + { + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CMccEvent::HandleMccMediaEvent +// +// ----------------------------------------------------------------------------- +// +void CMccEvent::HandleMccMediaEvent( const TMccEvent& aEvent ) + { + iEventCallBack.MccEventReceived( aEvent ); + } + +// ----------------------------------------------------------------------------- +// CMccEvent::HandleMccStateChangeEvent +// +// ----------------------------------------------------------------------------- +// +void CMccEvent::HandleMccStateChangeEvent( const TMccEvent& aEvent ) + { + if ( aEvent.iErrorCode ) + { + HandleMccErrorEvent( aEvent ); + return; + } + switch ( aEvent.iEventType ) + { + case KMccStreamPrepared: + iEventCallBack.MccMediaPrepared( aEvent.iSessionId, aEvent.iLinkId, + aEvent.iStreamId, aEvent.iEndpointId ); + break; + case KMccStreamStarted: + iEventCallBack.MccMediaStarted( aEvent.iSessionId, aEvent.iLinkId, + aEvent.iStreamId, aEvent.iEndpointId ); + break; + case KMccStreamPaused: + iEventCallBack.MccMediaPaused( aEvent.iSessionId, aEvent.iLinkId, + aEvent.iStreamId, aEvent.iEndpointId ); + break; + case KMccStreamResumed: + iEventCallBack.MccMediaResumed( aEvent.iSessionId, aEvent.iLinkId, + aEvent.iStreamId, aEvent.iEndpointId ); + break; + case KMccStreamStopped: + iEventCallBack.MccMediaStopped( aEvent.iSessionId, aEvent.iLinkId, + aEvent.iStreamId, aEvent.iEndpointId ); + break; + default: + break; + } + } + +// ----------------------------------------------------------------------------- +// CMccEvent::HandleMccInactivityEvent +// +// ----------------------------------------------------------------------------- +// +void CMccEvent::HandleMccInactivityEvent( const TMccEvent& aEvent ) + { + iEventCallBack.MccMediaInactive( aEvent.iSessionId, + aEvent.iLinkId, + aEvent.iStreamId, + aEvent.iEndpointId ); + } + +// ----------------------------------------------------------------------------- +// CMccEvent::HandleMccActivityEvent +// +// ----------------------------------------------------------------------------- +// +void CMccEvent::HandleMccActivityEvent( const TMccEvent& aEvent ) + { + iEventCallBack.MccMediaActive( aEvent.iSessionId, + aEvent.iLinkId, + aEvent.iStreamId, + aEvent.iEndpointId ); + } + +// ----------------------------------------------------------------------------- +// CMccEvent::HandleMccErrorEvent +// +// ----------------------------------------------------------------------------- +// +void CMccEvent::HandleMccErrorEvent( const TMccEvent& aEvent ) + { + iEventCallBack.MccCtrlError( aEvent.iErrorCode, + aEvent.iSessionId, + aEvent.iLinkId, + aEvent.iStreamId, + aEvent.iEndpointId ); + } + +// ----------------------------------------------------------------------------- +// CMccEvent::HandleMccUnknownMediaEvent +// +// ----------------------------------------------------------------------------- +// +void CMccEvent::HandleMccUnknownMediaEvent( const TMccEvent& aEvent ) + { + iEventCallBack.UnknownMediaReceived( aEvent.iSessionId, aEvent.iLinkId, + aEvent.iStreamId, aEvent.iEndpointId, TUint8( aEvent.iErrorCode ) ); + }