mmshplugins/mmshaoplugin/inc/musvoipcallmonitor.h
branchRCL_3
changeset 22 73a1feb507fb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmshplugins/mmshaoplugin/inc/musvoipcallmonitor.h	Tue Aug 31 15:12:07 2010 +0300
@@ -0,0 +1,155 @@
+/*
+* Copyright (c) 2005-2007 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:  Monitors the VOIP calls.
+*
+*/
+
+
+#ifndef MUSVOIPCALLMONITOR_H_
+#define MUSVOIPCALLMONITOR_H_
+
+#include <e32base.h>
+
+#include <ccallinformation.h>
+#include <mcall.h>
+#include <ccallinfoiter.h>
+
+#include "mussesseioninformationapi.h"
+#include "musunittesting.h"
+#include "mmuscallstateobserver.h"
+
+/**
+ * Monitors the Internet telephony calls ( VOIP )  
+ * Same condition of CS call criteria applies here to
+ * for Mush. 
+ * @lib musaoplugin.dll
+ */
+class CMusVoipCallMonitor : public CActive
+    {
+
+    public: // constructors and destructor
+        /**
+         * Symbian two-phased constructor.
+         */
+        static CMusVoipCallMonitor* NewL( TName& aCallName, 
+											MMusCallStateObserver& aCallStateObserver );
+        
+        /**
+         * Symbian two-phased constructor.
+         */
+        static CMusVoipCallMonitor* NewLC( TName& aCallName );
+
+        /**
+         * Destructor.
+         */
+        ~CMusVoipCallMonitor();
+        
+    private: // functions from base class CActive
+        
+        void RunL();
+
+        void DoCancel();
+
+        TInt RunError( TInt aError );
+        
+    private:
+
+        /**
+         * C++ constructor.
+         */
+        CMusVoipCallMonitor( TName& aCallName, MMusCallStateObserver& aCallStateObserver );
+
+        /**
+         * Symbian 2nd-phase constructor.
+         */
+        void ConstructL( );
+    
+    public:
+        
+        /**
+         * Compares the call names (aName == iCallName) 
+         * 
+         * @return ETrue if matches else EFalse
+         */
+        TBool IsEqual(TName& aName);
+
+        /**
+         * Sets the call state PS Key value.
+         * 
+         * @aVal one of the call event types
+         */
+        void SetStateL(NMusSessionInformationApi::TMusCallEvent aVal);        
+        
+        /**
+         * Checks from voip call monitor if required data is ready.
+         */
+         TBool IsDataReadyL();
+
+    private:
+        
+        /**
+         * Sets the call Information like call direction and remote address
+         */
+        void SetCallInfoL();   
+
+        /**
+         * Sets the call Provider Information (CallProvider Name is PS Key)
+         */
+        void SetCallProviderInfoL( TUint32 aServiceId );   
+        
+        TBool RemoteInfoExistsL();
+        
+        void MonitorForRemoteInfoL();
+        
+        void StopRemoteInfoMonitoring();
+        
+        void ReportStateChangeL( NMusSessionInformationApi::TMusCallEvent aVal );
+        
+        static TInt GuardTimerExpired( TAny* aPtr );
+        
+        /**
+         * Returns current connected call Service ID.
+         * @return Current connected call service ID, if there is at least one
+         * call in connected state, otherwise KErrNotFound
+         */
+        TUint32 CallServiceIdL(); 
+        
+        void AddDomainFromOwnUsernameL( TUint32 aServiceId, TDes16& aUri );
+        
+        // Resets the Call Provider Information.
+        void ResetCallProviderName();
+        
+        
+    private:
+        /*
+         * Name of the call.
+         */
+        TName& iCallName ; 
+        
+        RProperty iPropertyEvent;
+        
+        /*
+         * Reference of callstate observer not owned
+         */
+        MMusCallStateObserver& iCallStateObserver;
+        
+        CDeltaTimer* iGuardTimer;
+        TCallBack iGuardTimerCallBack;
+        TDeltaTimerEntry iGuardTimerEntry;
+        
+        MUS_UNITTEST( UT_CMusVoipCallMonitor )
+
+    };
+
+#endif /* MUSVOIPCALLMONITOR_H_ */