phoneuis/ConnectUtil/inc/CCoUtlActive.h
changeset 0 5f000ab63145
child 3 8871b09be73b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/ConnectUtil/inc/CCoUtlActive.h	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,385 @@
+/*
+* Copyright (c) 2003-2004,2006 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:  Implementation of connection termination plug-in.
+*
+*/
+
+
+
+#ifndef CCOUTLACTIVE_H
+#define CCOUTLACTIVE_H
+
+//  INCLUDES
+#include    <CCoUtlInterface.h>
+#include    <etel.h>
+#include    <etelmm.h>
+#include    <etelpckt.h>
+#include    <rconnmon.h>
+
+// FORWARD DECLARATION
+class CAknGlobalConfirmationQuery;
+
+// CLASS DECLARATION
+
+/**
+*  CCoUtlInterface implementation.
+*
+*  @since 2.6
+*/
+class CCoUtlActive 
+    : public CActive,
+      public MConnectionMonitorObserver
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Constructor.
+        */
+        CCoUtlActive();
+        
+        /**
+        * Destructor.
+        */
+        virtual ~CCoUtlActive();
+
+    public: // New functions
+
+        /**
+        * Enumerates state of the operation.
+        */
+        enum TState
+            {
+            EIdle,
+            EStarted,
+            ECheckIfAttached,
+            ECheckIfNetworkModeIII,
+            EStopConnectionsAndDetach,
+            EGetConnectionCount,
+            EGoThroughConnections,
+            EGoThroughConnectionsGetBearer,
+            EGoThroughConnectionsGetStatus,
+            ECheckConnectionCount,
+            ECheckDetachRequired, 
+            EStopConnectionsAndCheckDetachRequired, 
+            EConfirmAllConnectionsTermination,
+            EGetBearerThenNameThenConfirmTermination,
+            EGetNameThenConfirmTermination,
+            EDetach
+            };
+
+        /**
+        * Returns current state.
+        * @return current state.
+        */
+        TState CurrentState() const;
+
+        /**
+        * Starts termination.
+        * @param aStatus request to be completed once finished.
+        */
+        void Start( TRequestStatus& aStatus );
+
+    public: // Functions from base classes
+
+        /**
+        * From CActive, handles completion of current operation.
+        */
+        virtual void RunL();
+
+        /**
+        * From CActive, cancels ongoing asynchronous operation.
+        */
+        virtual void DoCancel();
+
+        /**
+        * From CActive, handles errors from CActive.
+        * @param aError error to be handled.
+        * @return error to be passed to scheduler.
+        */
+        virtual TInt RunError( TInt aError );
+        
+        /**
+        * From MConnectionMonitorObserver, receive notifications.
+        */
+        void EventL( const CConnMonEventBase &aConnMonEvent );
+        
+    private:
+
+        /**
+        * Gets attach status.
+        */
+        void GetAttachStatusL();
+
+        /**
+        * Gets network mode.
+        */
+        void GetNetworkModeL();
+
+        /**
+        * Stop connections and detach.
+        */
+        void StopConnectionsAndDetachL();
+
+        /**
+        * Gets number of connections.
+        */
+        void GetConnectionCountL();
+
+        /**
+        * Goes through connections.
+        */
+        void CheckConnectionsL();
+
+        /**
+        * Goes through connections - get bearer.
+        */
+        void GoThroughConnectionsGetBearerL();
+
+        /**
+        * Goes through connections - get status.
+        */
+        void GoThroughConnectionsGetStatusL();
+
+        /**
+        * Gets attach mode - detach if required, 
+        * i.e. attach mode is 'on demand'.
+        */
+        void GetAttachModeAndDetachIfRequiredL();
+        
+        /**
+        * Confirms all connections termination.
+        */
+        void ConfirmAllConnectionsTerminationL();
+
+        /**
+        * Gets bearer of the connection.
+        */
+        void GetBearerThenNameThenConfirmTerminationL();
+
+        /**
+        * Gets name of connection.
+        */
+        void GetNameThenConfirmTerminationL();
+
+        /**
+        * Confirms termination.
+        * @param aAmount amount of connections.
+        */
+        void ConfirmTerminationL( TInt aAmount );
+
+        /**
+        * Confirms termination.
+        * @param aName name of connection.
+        */
+        void ConfirmTerminationL( const TDesC& aName );
+
+        /**
+        * Confirms termination.
+        * @param aText text shown in query.
+        */
+        void DoConfirmTerminationL( const TDesC& aText );
+
+        /**
+        * Stop all connections and detach if required.
+        */
+        void StopAllConnectionsAndDetachIfRequiredL();
+
+        /**
+        * Stops all connections.
+        * @return error code.
+        */
+        TInt DoStopAllConnectionsL();
+
+        /**
+        * Detaches from network.
+        */
+        void DetachL();
+
+        /**
+        * Checks if attached.
+        * @return EFalse if not attached. Otherwise ETrue.
+        */
+        inline TBool IsAttached() const;
+
+        /**
+        * Checks if current network mode is III.
+        * @return ETrue if operating in network mode III.
+        *         Otherwise EFalse.
+        */
+        inline TBool IsNetworkModeIII() const;
+
+        /**
+        * Returns ETrue if there are connections.
+        * @return ETrue if there are connections.
+        *         Otherwise EFalse.
+        */
+        inline TBool IsConnections() const;
+
+        /**
+        * Returns ETrue if bearer is GPRS.
+        * @return ETrue if bearer is GPRS.
+        *         Otherwise EFalse.
+        */
+        inline TBool AcceptConnectionBearer() const;
+
+        /**
+        * Returns ETrue if connection is active.
+        * @return ETrue if connection is active.
+        *         Otherwise EFalse.
+        */
+        inline TBool IsConnectionActive() const;
+
+        /**
+        * Returns ETrue if attach mode is 'on demand'.
+        * @return ETrue if attach mode is 'on demand'.
+        *         Otherwise EFalse.
+        */
+        inline TBool IsAttachModeOnDemand() const;
+
+        /**
+        * Returns ETrue if user confirmed connection termination.
+        * @return ETrue if termination has been confirmed.
+        *         Otherwise EFalse.
+        */
+        inline TBool IsConfirmed() const;
+
+        /**
+        * Returns telephony server session.
+        * @return ETel session.
+        */
+        inline RTelServer& TelServerL();
+
+        /**
+        * Returns mobile phone.
+        * @return phone subsession.
+        */
+        inline RMobilePhone& MobilePhoneL();
+
+        /**
+        * Returns packet service.
+        * @return packet service subsession.
+        */
+        inline RPacketService& PacketServiceL();
+
+        /**
+        * Returns connection monitor.
+        * @return connection monitor session.
+        */
+        inline RConnectionMonitor& ConnectionMonitorL();
+
+        /**
+        * Completes client's request with aErrorCode code.
+        * @param aErrorCode error code.
+        */
+        void CompleteRequest( TInt aErrorCode );
+
+        /**
+        * Go to specified state.
+        * @param aNewState new state.
+        */ 
+        inline void GoToState( TState aNewState );
+
+        /**
+        * Go to specified state and complete - operation
+        * continues with next RunL call.
+        * @param aNewState new state.
+        * @param aError error code, KErrNone by default.
+        */
+        inline void GoToStateAndComplete( 
+            TState aNewState,
+            TInt aError = KErrNone );
+
+    private:    // Data
+        
+        // Current state.
+        TState iState;
+
+        // Packet service status.
+        TInt iServiceStatus;
+
+        // Packet service current class.
+        RPacketService::TMSClass iCurrentClass;
+
+        // Packet service max class.
+        RPacketService::TMSClass iMaxClass;
+
+        // Packet service attach mode.
+        RPacketService::TAttachMode iAttachMode;
+
+        // Amount of connections.
+        TUint iConnectionCount;
+
+        // Telephony server session.
+        /***************************************************** 
+        *   Series 60 Customer / ETel 
+        *   Series 60  ETel API 
+        *****************************************************/
+        RTelServer iServer;
+
+        // Owned mobile phone subsession.
+        /***************************************************** 
+        *   Series 60 Customer / ETel 
+        *   Series 60  ETel API 
+        *****************************************************/
+        RMobilePhone iMobilePhone;
+
+        // Owned packet service subsession.
+        /***************************************************** 
+        *   Series 60 Customer / ETel 
+        *   Series 60  ETel API 
+        *****************************************************/
+        RPacketService iPacketService;
+
+        // Owned connection monitor session.
+        RConnectionMonitor iConnectionMonitor;
+
+        struct TConnectionId
+            {
+            TUint iConnectionId;
+            TUint iSubConnectionId;
+            };
+
+        // Owned array of connection ids.
+        RArray< TConnectionId > iConnections;
+
+        // Current index in connections array.
+        TInt iConnectionsIndex;
+        
+        // Connection bearer .
+        TInt iConnectionBearer;
+
+        // Connection status.
+        TInt iConnectionStatus;
+
+        // Connection name.
+        TName iConnectionName;
+
+        // Owned confirmation query.
+        CAknGlobalConfirmationQuery* iConfirmationQuery;
+
+        // Owned text in confirmation query.
+        HBufC* iConfirmationText;
+
+        // Ref to request status to be completed. NULL if
+        // operation is not ongoing.
+        TRequestStatus* iRequestStatus;
+
+        //WCDMA connection status.
+        TInt iWcdmaConnectionStatus;
+
+    };
+
+#endif      // CCOUTLACTIVE_H
+            
+// End of File