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