telephonyserverplugins/common_tsy/commontsy/src/mmutility/CMmPrivateUtility.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/commontsy/src/mmutility/CMmPrivateUtility.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,349 @@
+// Copyright (c) 2006-2009 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:
+//
+
+
+
+//  INCLUDE FILES
+#include "CMmPrivateUtility.h"
+#include "MmTsy_conf.h"
+#include "CMmCommonStaticUtility.h"
+#include "cmmphonetsy.h"
+#include "cmmcalltsy.h"
+#include "Cmmpacketcontexttsy.h"
+#include <f32file.h>
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// MmTsyPanic
+// Panic method for MM TSY. NOTE! TRAP's can't handle this but Panic goes 
+// through them. Use this method only when Panic is absolutely necessary.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void MmTsyPanic( TMmTsyError aError ) 
+    {
+    _LIT( KPanicCategory, "MM TSY PANIC" );
+    User::Panic( KPanicCategory, aError );
+    }
+
+// ---------------------------------------------------------------------------
+// MmTsyPanic
+// Leave method for MM TSY. TRAP's will handle these cases.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void MmTsyLeaveL( TMmTsyError aError )
+    {
+    User::Leave( aError );
+    }
+    
+// ======== MEMBER FUNCTIONS ========
+
+
+CNetNetworkAvailableInfo::CNetNetworkAvailableInfo() : CBase()
+    {
+    }
+
+CNetNetworkAvailableInfo::~CNetNetworkAvailableInfo()
+    {
+    }
+
+CListReadAllAttempt* CListReadAllAttempt::NewL(
+    RMobilePhone::TClientId* aId )
+    {
+    CListReadAllAttempt* read = new ( ELeave ) CListReadAllAttempt( aId );
+    CleanupStack::PushL( read );
+    read->ConstructL();
+    CleanupStack::Pop();
+    return read;
+    }
+
+CListReadAllAttempt::CListReadAllAttempt(
+    RMobilePhone::TClientId* aId ) : CBase()
+    {
+    iClient.iSessionHandle = aId->iSessionHandle;
+    iClient.iSubSessionHandle = aId->iSubSessionHandle;
+    iListBuf = NULL;
+    }
+
+void CListReadAllAttempt::ConstructL()
+    {
+    }
+
+CListReadAllAttempt::~CListReadAllAttempt()
+    {
+    delete iListBuf;
+    }
+
+CAcquireEntry* CAcquireEntry::NewL(
+    const TTsyReqHandle aTsyReqHandle )
+    {
+    return new ( ELeave ) CAcquireEntry( aTsyReqHandle );
+    }
+
+CAcquireEntry::CAcquireEntry(
+    const TTsyReqHandle aTsyReqHandle )
+    {
+    iTsyReqHandle = aTsyReqHandle;
+    }
+
+CAcquireEntry::~CAcquireEntry()
+    { 
+    }
+
+// ---------------------------------------------------------------------------
+// CAcquireEntry::Deque
+// 
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CAcquireEntry::Deque()
+    {
+    iLink.Deque();
+    iLink.iPrev = iLink.iNext = NULL;
+    }
+
+CAcquireOwnerList* CAcquireOwnerList::NewL()
+    {
+    CAcquireOwnerList* ac = new ( ELeave ) CAcquireOwnerList();
+    CleanupStack::PushL( ac );
+    ac->ConstructL();
+    CleanupStack::Pop();
+    return ac;
+    }
+
+CAcquireOwnerList::CAcquireOwnerList()
+    {
+    }
+
+void CAcquireOwnerList::ConstructL()
+    {
+    iAcquireList.SetOffset( _FOFF ( CAcquireEntry, iLink ) );
+    }
+
+CAcquireOwnerList::~CAcquireOwnerList()
+    { 
+    }
+
+// ---------------------------------------------------------------------------
+// CAcquireOwnerList::FindByTsyReqHandle
+// loop through entries in the iAcquireList and return pointer to  
+// CAcquireEntry object
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+CAcquireEntry* CAcquireOwnerList::FindByTsyReqHandle(
+    const TTsyReqHandle aTsyReqHandle )
+    {
+    CAcquireEntry* entry;
+    TDblQueIter<CAcquireEntry> iter( iAcquireList );
+    while( entry = iter++, entry != NULL )
+        {
+        if( entry->iTsyReqHandle == aTsyReqHandle )
+            return entry;
+        }
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CAcquireOwnerList::Remove
+// delete the entry
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CAcquireOwnerList::Remove(
+    CAcquireEntry* aEntry )
+    {
+    aEntry->Deque();
+    delete aEntry;
+    }
+
+CHeartbeatRunner* CHeartbeatRunner::NewL( CMmCallTsy* aMmCall, CMmPhoneTsy* aMmPhone ) 
+    {
+    CHeartbeatRunner* runner = new ( ELeave ) CHeartbeatRunner;
+    CleanupStack::PushL( runner );
+    runner->iMmCall = aMmCall;
+    runner->iMmPhone = aMmPhone;    
+    runner->ConstructL();
+    CleanupStack::Pop();
+    return runner;
+    }
+
+CHeartbeatRunner::CHeartbeatRunner()
+    {
+    }
+
+void CHeartbeatRunner::ConstructL()
+    {
+    // neutral priority, 0
+    iHeartbeat = CHeartbeat::NewL( CActive::EPriorityStandard );
+    iActive = EFalse; 
+    iStartTime = 0;
+    iAirTimeDuration = EFalse;
+    iPreviousNumberOfBeats = 0;
+    }
+
+CHeartbeatRunner::~CHeartbeatRunner()
+    {
+    if ( iHeartbeat )
+        {
+        //stop calling Beat...
+        iHeartbeat->Cancel();
+        }
+
+    delete iHeartbeat;
+    }
+
+// ---------------------------------------------------------------------------
+// CHeartbeatRunner::Start
+// Starts timer.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CHeartbeatRunner::Start()
+    {
+    //Check if active 
+    if ( !iActive ) 
+        {
+        //Initialize iStartime
+        iStartTime.UniversalTime();
+        //Timer tick is on the second 
+        iHeartbeat->Start( ETwelveOClock, this );
+        //Set flag to indicate that timer is active
+        iActive = ETrue;
+        //Set flag to indicate that air time duration counter is not started
+        iAirTimeDuration = EFalse;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CHeartbeatRunner::StartAirTimeDuration
+// Starts AirTimeDuration timer.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CHeartbeatRunner::StartAirTimeDuration()
+    {
+    //Check if active 
+    if ( !iActive ) 
+        { 
+        //Initialize iStartime
+        iStartTime.UniversalTime();
+        //Timer tick is on the second 
+        iHeartbeat->Start( ETwelveOClock, this );
+        //Set flag to indicate that timer is active
+        iActive = ETrue;
+        //Set flag to indicate that air time duration counter is started
+        iAirTimeDuration = ETrue;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CHeartbeatRunner::Stop
+// Stops timer
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TBool CHeartbeatRunner::Stop()
+    {
+    TBool ret = iActive;
+
+    //Check if active 
+    if ( iActive ) 
+        { 
+        // Save the number of beats
+        iPreviousNumberOfBeats = NumberOfBeats();
+        //Reset iStartTime
+        iStartTime = 0;
+        //Cancel beat method calling 
+        iHeartbeat->Cancel(); 
+        //Set flag to indicate that timer is not active
+        iActive = EFalse;
+        }
+
+    return ret;
+    }
+
+// ---------------------------------------------------------------------------
+// CHeartbeatRunner::Beat
+// Beat is called once every second. If iMmCall is not null
+// (timer is used for calculating the duration of a call), the method
+// CompleteNotifyCallDurationChange is called (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CHeartbeatRunner::Beat()
+    {
+    // if iMmCall is not null, this timer is used to count the duration of a 
+    // call
+    if ( iMmCall )
+        {
+        //complete notify duration change, 1 sec gone
+        iMmCall->CompleteNotifyCallDurationChange();
+        }
+        
+    if ( iMmPhone )
+        {
+        //complete notify duration change, 10 sec gone
+        if ( NumberOfBeats() % iMmPhone->KLifeTimeUpdateInterval == 0 )
+        	{        	
+        	iMmPhone->CompleteNotifyCallDurationChange();
+        	}
+        }                
+    }
+
+// ---------------------------------------------------------------------------
+// CHeartbeatRunner::NumberOfBeats
+// Returns number of beats from the previous Start of the timer.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CHeartbeatRunner::NumberOfBeats()
+    {
+    if(iActive)
+    	{
+    	TTime currentTime;
+    	currentTime.UniversalTime();
+    	TTimeIntervalSeconds secondsFromStart( 0 );
+    	currentTime.SecondsFrom( iStartTime, secondsFromStart );
+    	return secondsFromStart.Int();
+    	}
+    return iPreviousNumberOfBeats;
+    }
+
+// ---------------------------------------------------------------------------
+// CHeartbeatRunner::Synchronize
+// Implementation of MBeating::Synchronize. Since the number of beats are calculated
+// by using start and actual current times, there is no need for synchronization.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CHeartbeatRunner::Synchronize()
+    {
+    // do nothing 
+    }
+
+// ---------------------------------------------------------------------------
+// CHeartbeatRunner::GetTimerStartTime
+// Returns the starting time of the timer as a TTime pointer
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TTime* CHeartbeatRunner::GetTimerStartTime()
+    {
+    return &iStartTime;
+    }
+
+//  End of File