connectionmonitoring/connmon/connectionmonitor/inc/ConnMonDef.h
changeset 0 5a93021fdf25
child 23 fc7b30ed2058
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectionmonitoring/connmon/connectionmonitor/inc/ConnMonDef.h	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,253 @@
+/*
+* Copyright (c) 2002-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:  Definitions common to server and client API.
+*
+*/
+
+#ifndef CONNMONDEF_H
+#define CONNMONDEF_H
+
+#include <e32base.h>
+#include <rconnmon.h>
+
+// Constants
+
+// Maximum connection identifier
+const TUint KMaxConnectionId = 1000000;
+
+// Number of message slots in the client-server interface
+// 1 common slot for all synchronous methods + 1 for each asyncronous method
+// = 1 common + 6 async client api methods + 1 for events
+const TInt KNumMessageSlots = 8;
+
+// Number of slots in CEventQueue
+const TInt KEventQueueSize = 25;
+
+// Number of pointers allocated for client-server inter-thread reads/writes
+const TInt KNumPtrs = 12;
+
+// Server will shutdown after a 2 second period after the last client
+// has disconnected. Note. Don't make this smaller. CTimerAO relies on this.
+const TUint KConnMonShutdownInterval = 2000000;
+
+// Update ConnMon documentation (attributes KDownlinkDataThreshold and
+// KUplinkDataThreshold) if changing these values (4096, 20480, 51200, 102400).
+const TUint KMinimumDataThreshold      = 4096;
+const TUint KMinimumGPRSDataThreshold  = 20480;
+const TUint KMinimumWCDMADataThreshold = 51200;
+const TUint KMinimumWLANDataThreshold  = 102400;
+
+// Update ConnMon documentation (attribute KActivityTimeThreshold) if changing
+// this value (KMinimumActivityThreshold = 5)
+const TUint KMinimumActivityThreshold = 5;
+
+// CSD/HSCSD in is not valid untill call is open
+const TInt KBearerQueryCount   = 5;
+const TInt KBearerQueryTimeout = 100000;
+
+const TUid KConnMonServerUid = { 0x101F6CF0 };
+const TUid KConnMonDllUid    = { 0x101F6CEE };
+const TUid KGenericDllUid    = { 0x1000008c };
+
+_LIT( KConnectionMonitorServerName, "!ConnectionMonitorServer" );
+
+_LIT( KConnectionMonitorServerExe, "ConnMonExe" );
+_LIT( KDoubleColon, "::" );
+
+_LIT( KPanicCaughtAnError, "ConnMon: cought an error." );
+_LIT( KPanicBadParameter, "ConnMon: bad parameter." );
+
+// Data types
+enum TConnMonPanic
+    {
+    // Server
+    ECannotStartServer              = 100,
+    EBadRequest                     = 101,
+    EBadDescriptor                  = 102,
+    EErrorFromNonClientObject       = 103,
+    EReceiveAlreadyActive           = 104,
+    EIapArrayError                  = 105,
+    EConnMonBadHandle               = 106,
+
+    // Used by Client API
+    EConnMonPanicClientNotConnected = 150
+    };
+
+enum TConnMonThreshold
+     {
+     EDownlinkThreshold = 0,
+     EUplinkThreshold,
+     EActivityTimeThreshold,
+     EBearerAvailabilityThreshold,
+     ESignalStrengthThreshold
+     };
+
+enum TConnMonConnFlags
+    {
+    EConnTypeGPRS   = 0x01,
+    EConnTypeWCDMA  = 0x02,
+    EConnTypeCSD    = 0x04
+    };
+
+enum TConnMonNotifierPriority
+    {
+    EConnMonPriorityNormal = 0,
+    EConnMonPriorityMedium = 5,
+    EConnMonPriorityHigh   = 10
+    };
+
+/**
+ * TEventInfo
+ */
+class TEventInfo
+    {
+public:
+    inline void Reset()
+        {
+        iEventType = 0;
+        iConnectionId = 0;
+        iSubConnectionId = 0;
+        iData = 0;
+        iData2 = 0;
+        iData3 = 0;
+        }
+
+public: // Data
+    TInt iEventType;
+    TUint iConnectionId;
+    TUint iSubConnectionId;
+    TUint iData;
+    TUint iData2;
+    TUint iData3;
+    };
+
+// An additional buffer for events that contain a lot of data.
+// E.g. EConnMonIapAvailabilityChange -event uses this buffer.
+typedef TBuf8<256> TConnMonExtraBuf;
+
+/**
+ * TExtra
+ */
+class TExtra
+    {
+public:
+    inline void Reset()
+        {
+        iPtr = NULL;
+        iSize = 0;
+        }
+public: // Data
+    const TUint8* iPtr;
+    TUint iSize;
+    };
+
+/**
+ * TEvent
+ */
+class TEvent
+    {
+public:
+    TEventInfo iInfo;
+    TTime iTime;
+    TExtra iExtra;
+    };
+
+/**
+ * TFullIap
+ */
+class TFullIap
+    {
+public:
+    TUint iIapId;
+    TUint iNetId;
+    TUint iBearerId;
+    };
+
+class TFullIapInfo
+    {
+public:
+    inline void Reset()
+        {
+        iCount = 0;
+        for ( TUint i = 0; i < KConnMonMaxIAPCount; i++ )
+            {
+            iIap[i].iIapId = 0;
+            iIap[i].iNetId = 0;
+            iIap[i].iBearerId = 0;
+            }
+        }
+
+public:
+    TUint iCount;
+    TFullIap iIap[KConnMonMaxIAPCount];
+    };
+
+class TBearerInfo
+    {
+public:
+    TBearerInfo()
+        {
+        iBearer = 0;
+        iInternal = ETrue;
+        };
+    TBearerInfo( TInt aBearer, TBool aInternal )
+        {
+        iBearer = aBearer,
+        iInternal = aInternal;
+        }
+    inline void Reset()
+        {
+        iBearer = 0;
+        iInternal = ETrue;
+        }
+    TInt iBearer;
+    TBool iInternal;
+    };
+
+// Prefix 'ConnMon' used to avoid any future problems or name overlapping with
+// other similar implementations.
+template <class T>
+class ConnMonCleanupResetAndDestroy
+    {
+public:
+    inline static void PushL( T& aRef );
+
+private:
+    static void ResetAndDestroy( TAny *aPtr );
+    };
+
+template <class T>
+inline void ConnMonCleanupResetAndDestroyPushL( T& aRef );
+
+template <class T>
+inline void ConnMonCleanupResetAndDestroy<T>::PushL( T& aRef )
+    {
+    CleanupStack::PushL( TCleanupItem( &ResetAndDestroy, &aRef ) );
+    }
+
+template <class T>
+void ConnMonCleanupResetAndDestroy<T>::ResetAndDestroy( TAny *aPtr )
+    {
+    (STATIC_CAST(T*,aPtr))->ResetAndDestroy();
+    }
+
+template <class T>
+inline void ConnMonCleanupResetAndDestroyPushL( T& aRef )
+    {
+    ConnMonCleanupResetAndDestroy<T>::PushL( aRef );
+    }
+
+#endif // CONNMONDEF_H
+
+// End-of-file