connectionmonitoring/connmon/dataconnectionlogger/inc/dcl.h
changeset 0 5a93021fdf25
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionmonitoring/connmon/dataconnectionlogger/inc/dcl.h	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,273 @@
+/*
+* Copyright (c) 2003-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:  Data Connection Logger.
+*
+*/
+
+#ifndef DCLENGINE_H
+#define DCLENGINE_H
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <logwraplimits.h>
+#endif
+#include <e32std.h>
+#include <es_sock.h>
+#include <e32base.h>
+#include <commdb.h>
+#include <commsdat.h>
+#include <wlancontainer.h>
+#include <rconnmon.h>
+#include <mmtsy_names.h>
+#include <etel.h>
+#include <etelmm.h>
+#include <etelpckt.h>
+#include <pcktcs.h>
+
+#ifdef __WLAN
+#include <wlanloguid.h>
+#endif // __WLAN
+
+#include "dclevent.h"
+#include "dclTimer.h"
+#include "saeobserver.h"
+
+// CONSTANTS
+// UID of DataConnectionLogger
+const TLogId    KGenconnLogWaitingForLogId      = KLogNullId -1;
+const TInt      KBytesInfoNotAvailable          = -1;
+const TUint     KGPRSDataThreshold              = 20480;
+const TUint     KWCDMADataThreshold             = 51200;
+const TUint     KWLANDataThreshold              = 102400;
+const TUint     KSubConnectionId                = 0;
+const TInt      KMaxAPName                      = KCommsDbSvrMaxFieldLength;
+const TInt      KPhoneRetryCount                = 7; // Must be at least 1
+const TInt      KPhoneRetryTimeout              = 100000;
+const TInt      KConnectionStatusIdNotAvailable = -1;
+// The granularity with which iLogEventQueue and iConnections will
+// allocate memory chunks. If set to 20 there will be space for 20
+// instances of CEvent before new memory will be allocated.
+const TInt      KEventStateMaxCount             = 20;
+const TInt      KDatabufferSize                 = 64;
+
+// Timer mode constants
+const TInt      KTimerInterval                  = 10;
+
+_LIT( KDCLName, "DataConnectionLogger" );
+
+#ifndef __WLAN
+#define KLOGWLANDATAEVENTTYPE 0x1000595f
+const TUid KLogWlanDataEventTypeUid = {KLOGWLANDATAEVENTTYPE};
+#endif // __WLAN
+
+//  DATA TYPES
+enum TDCLPanic
+    {
+    ECannotCreateCleanup            = 600,
+    ECannotCreateActiveScheduler,
+    ECannotCreateCEngine,
+    ECannotRequestNotification
+    };
+
+// FORWARD DECLARATIONS
+class CDclTimerAO;
+
+// CLASS DECLARATION
+
+/**
+*  CEngine
+*  Gets information from connection monitor server using RCcnnectionMonitor
+*  object. Implements MConnectionMonitorObserver interface.
+*
+*/
+class CEngine : public CActive,
+                private MConnectionMonitorObserver
+    {
+    public:
+        // Constructors
+        static CEngine* NewL( );
+        static CEngine* NewLC( );
+        // Destructor
+        virtual ~CEngine();
+
+    public: // New methods
+        /**
+        * Adds log events.
+        */
+        void LogDataAddEventL(
+                TLogId        aConnectionId,
+                TInt          aRConnectionStatusId,
+                const TDesC&  aRemote,
+                TInt          aLogDir,
+                const TDesC&  aTelNum,
+                const TUid&   aDataEventType );
+
+        /**
+        * Changes the remote party string for existing log events.
+        */
+        void LogDataChangeEventL(
+                TLogId        aConnectionId,
+                const TDesC&  aRemote );
+
+        /**
+        * Updates log events.
+        */
+        TInt LogDataUpdateEventL(
+                TLogId        aConnectionId,
+                TInt          aRConnectionStatusId,
+                const TUid&   aDataEventType,
+                const TInt64& aBytesSent,
+                const TInt64& aBytesReceived );
+
+        /**
+        * Starts notifications.
+        */
+        void NotifyL() ;
+
+        /**
+        * Updates log event parameters.
+        */
+        TInt UpdateLogEventParamL(
+                TLogId        aConnectionId,
+                CLogEvent&    aLogEvent,
+                TInt          aRConnectionStatusId,
+                const TUid&   aDataEventType,
+                const TInt64& aBytesSent,
+                const TInt64& aBytesReceived );
+
+        /**
+        * Updates cumulative counters of SharedData
+        */
+        void UpdateSharedDataL(
+                TLogId        aConnectionId,
+                const TInt64& aBytesSent,
+                const TInt64& aBytesReceived );
+
+        /**
+        * Gets the Attach Mode setting from CommDb and
+        * sets ETel to use that value.
+        */
+        void SetAttachModeL() const;
+
+        /**
+        * Gets the default Access Point Name from CommDb and
+        * sets ETel to use that APN.
+        */
+        void SetAPNL() const;
+
+        // Following methods are from CActive.
+        /**
+        * Handles a cancel request to the service provider.
+        * This function is defined as pure virtual in CActive and any
+        * class derived from CActive must define and implement it.
+        */
+        void DoCancel();
+
+        /**
+        * Handles the completion of an asynchronous request.
+        * This function is defined as pure virtual in CActive and any
+        * class derived from CActive must define and implement it.
+        */
+        void RunL();
+
+        /**
+        * Writes to log databases in timer mode.
+        */
+        TInt LogDataInTimerModeL( const TUint aConnectionId );
+
+        /**
+        * Switches logging to the threshold mode.
+        */
+        void SwitchToThresholdMode( const TUint aConnectionId, const TUint aThreshold = 0 );
+
+    private : // From MConnectionMonitorObserver
+        void EventL( const CConnMonEventBase& aConnMonEvent ) ;
+
+    private: // New methods
+        CEngine();
+        void ConstructL();
+        void AddEventTypeL();
+
+        /**
+        * Copies aName to aResult as such. Both descriptors are 16-bit.
+        */
+        void ReplaceAPN( TDes& aResult, const TDesC& aName ) const ;
+
+        /**
+        * Converts aName to UTF-8 and copies it to aResult which is 8-bit descriptor.
+        */
+        void ReplaceAPN( TDes8& aResult, const TDesC& aName ) const;
+
+        /**
+        * Switches logging to the timer mode.
+        */
+        void SwitchToTimerMode( const TUint aConnectionId );
+
+        /**
+        * Gets duration of a connection.
+        */
+        TBool GetDuration( const TUint aConnectionId, TInt& aDuration );
+
+        /**
+        * Gets the default threshold for a connection.
+        */
+        TInt GetDefaultThreshold( const TUint aConnectionId, TUint& aThreshold );
+
+        /**
+        * Reads ini file settings.
+        */
+        void ReadIniFile();
+
+    private: // Data
+        RConnectionMonitor          iConnectionMonitor;
+        CLogWrapper*                iLogWrap;
+        CArrayPtrFlat<CEvent>*      iLogEventQueue;
+        CArrayPtrFlat<CEvent>*      iConnections;
+        CLogEvent*                  iCurrentLogEvent;
+        RFs                         iFsEventLog;
+        RPacketContext              iContext;
+
+        // Handle to the telephony server
+        RTelServer                  iTelServer;
+
+        // Handle to the packet service
+        RPacketService              iPacketService;
+
+        // RMobilePhone handle
+        RMobilePhone                iMobilePhone;
+
+        // 1 = mmtsy is loaded, 0 = mmtsy is not loaded
+        TUint8                      iTSYLoaded;
+
+        // 1 = packet services are loaded, 0 = not loaded
+        TUint8                      iPacketServLoaded;
+
+        // to add wlan event type
+        CLogEventType*              iLogEventType;
+        CLogClient*                 iLogClient;
+
+        // A pointer to the active object that logs connections that are in timer mode.
+        CDclTimerAO*                iDclTimerAO;
+
+        TInt                        iTimerInterval;
+        TUint                       iGPRSThreshold;
+        TUint                       iWCDMAThreshold;
+        TUint                       iWLANThreshold;
+
+        // a pointer to SaeObserver that updates P&S variables
+        CSaeObserver*               iSaeObserver;
+    };
+
+#endif // DCLENGINE_H
+
+// End of File