alwayson_net_plugin/pdpcontextmanager2/inc/caoserver.h
changeset 0 5a93021fdf25
child 3 f7816ffc66ed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/alwayson_net_plugin/pdpcontextmanager2/inc/caoserver.h	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,500 @@
+/*
+* Copyright (c) 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:  Implements the CAlwaysOnlineEComInterface interface
+*
+*/
+
+
+#ifndef C_CAOSERVER_H
+#define C_CAOSERVER_H
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <e32property.h>
+
+#include "alwaysonconfig.hrh"
+
+#include <rmmcustomapi.h>
+
+#include "maostatecontext.h"
+#include "maostatepool.h"
+#include "maoconnectionmanagerobserver.h"
+#include "taostate.h"
+#include "maotimerobserver.h"
+#include "maosettingsobserver.h"
+#include "maoraumanagerobserver.h"
+#include "maogpdsobserver.h"
+#include "caoasyncwrapper.h"
+
+// FORWARD DECLARATIONS
+class CAOConnectionManager;
+class CAOTimer;
+class CAORAUManager;
+class CAOSettings;
+class CAOGpds;
+
+/**
+*  Always-On Server class.
+*
+*  @lib PDPContextManager2.lib
+*  @since S60 v3.1
+*/
+NONSHARABLE_CLASS( CAOServer ):
+    public CBase,
+    public MAOStateContext,
+    public MAOStatePool,
+    public MAOConnectionManagerObserver,
+    public MAOTimerObserver,
+    public MAOSettingsObserver,
+    public MAORAUManagerObserver
+    {
+public:    // Constructors & destructors
+
+    /**
+     * Two-phased constructor.
+     *
+     * @since S60 v3.1
+     */
+    static CAOServer* NewL();
+
+    /**
+     * Destructor
+     *
+     * @since S60 v3.1
+     */
+    virtual ~CAOServer();
+    
+private: // New methods
+
+    /**
+     * Default constructor.
+     *
+     * @since S60 v3.1
+     */
+    CAOServer();
+
+    /**
+     * Default Symbian second-phase constructor
+     *
+     * @since S60 v3.1
+     */
+    void ConstructL();
+
+private: // New methods
+
+    /**
+     * Setup Always-On server
+     *
+     * @since S60 v3.1
+     */
+    void Setup();
+    
+    /**
+     * Reactivation call back
+     *
+     * @since S60 v3.1
+     * @param aSelf the caller
+     */
+    static TInt ReactivationCallBack( TAny* aSelf );
+    
+    /**
+     * Handles reactivation
+     *
+     * @since S60 v3.1
+     */
+    void HandleReactivationL();
+    
+    /**
+     * Does re-activation
+     *
+     * @since S60 v3.1
+     * @param aReason reason of the failure
+     */
+    void DoReactivation( MAOConnectionManager::TFailureReason aReason );
+    
+    /**
+     * PDP property observer
+     *
+     * @since S60 v3.1
+     */
+    void IssuePDPPropertySubscription();
+
+    /**
+     * PDP property observer
+     *
+     * @since S60 v3.1
+     * @param aStatus TRequestStatus for asynchronus call 
+     */
+    void PDPPropertySubscriptionIssueRequest( TRequestStatus& aStatus );
+
+    /**
+     * PDP property observer
+     *
+     * @since S60 v3.1
+     * @param aStatus result status of the returned asynchronus call
+     */
+    void PDPPropertySubscriptionRunL( TInt aStatus );
+
+    /**
+     * PDP property observer
+     *
+     * @since S60 v3.1
+     */
+    void PDPPropertySubscriptionDoCancel();
+    
+    /**
+     * Releases PDP P&S property
+     *
+     * @since S60 v3.1
+     */
+    void ReleasePDPProperty();
+    
+    /**
+     * Creates PDP preoperty and subscribes it
+     *
+     * @since S60 v3.1
+     */
+    void CreatePDPPropertyAndSubscribeL();
+    
+    /**
+     * Setup call back
+     *
+     * @since S60 v3.1
+     * @param aSelf the caller
+     */
+    static TInt SetupCallBack( TAny* aSelf );
+    
+    /**
+     * Handles setup call back
+     *
+     * @since S60 v3.1
+     */
+    void HandleSetup();
+
+
+    /**
+     * Creates the StatePool and fills it with the States.
+     *
+     * @since S60 v3.2
+     */
+    void InitStatePoolL();
+
+
+    /**
+     * Configures Custom API
+     *
+     * @since S60 v3.1
+     */
+    void ConfigureCustomAPIL();
+
+
+private: // From base class MAOStateContext
+
+    /**
+     * From MAOStateContext
+     * Returns connection manager interface.
+     *
+     * @since S60 v3.1
+     */
+    MAOConnectionManager& ConnectionManager() const;
+
+    /**
+     * From MAOStateContext
+     * Returns retry timer interface.
+     *
+     * @since S60 v3.1
+     */
+    MAOTimer& Timer() const;
+    
+    /**
+     * From MAOStateContext
+     * Returns RAU manager interface.
+     *
+     * @since S60 v3.1
+     */
+    MAORAUManager& RAUManager() const;
+    
+    /**
+     * From MAOStateContext
+     * Returns settings interface.
+     *
+     * @since S60 v3.1
+     */
+    MAOSettings& Settings() const;
+    
+    /**
+     * From MAOStateContext
+     * Returns GPDS interface.
+     *
+     * @since S60 v3.1
+     */
+    MAOGpds& Gpds() const;
+    
+private: // From base class MAOStatePool
+
+    /**
+     * From MAOStatePool
+     * Changes to defined state.
+     * New state is returned as a parameter.
+     *
+     * @since S60 v3.1
+     * @param aState: New state
+     */
+    TAOState* ChangeState( TAOState::TAOStateName aState );
+    
+    /**
+     * From MAOStatePool
+     * Returns current state.
+     *
+     * @since S60 v3.1
+     */
+    TAOState* CurrentState() const;
+    
+private: // From base class MAOConnectionManagerObserver
+
+    /**
+     * From MAOConnectionManagerObserver
+     * Succesful PDP context activation is notified
+     * through this method.
+     *
+     * @since S60 v3.1
+     */
+    void HandlePDPContextActivatedL();
+
+    /**
+     * From MAOConnectionManagerObserver
+     * PDP context activation failure is notified through
+     * this method.
+     *
+     * @since S60 v3.1
+     * @param aReason: Activation failure reason
+     */
+    void HandlePDPContextActivationFailedL(
+        MAOConnectionManager::TFailureReason aReason );
+        
+    /**
+     * From MAOConnectionManagerObserver
+     * PDP context disconnection is notified through
+     * this method.
+     *
+     * @since S60 v3.1
+     * @param aReason: Disconnection reason
+     */
+    void HandlePDPContextDisconnectedL(
+        MAOConnectionManager::TFailureReason aReason );
+    
+    /**
+     * From MAOConnectionManagerObserver
+     * PDP context temporary data transfer blocking notification
+     * is recieved through this method.
+     *
+     * @since S60 v3.1
+     */
+    void HandlePDPContextTemporarilyBlockedL();
+    
+    /**
+     * From MAOConnectionManagerObserver
+     * Notifies network registration status changes.
+     *
+     * @since S60 v3.1
+     * @param aNetworkRegistration: NW registration
+     */
+    void HandleNWRegistrationStatusChangedL(
+        CTelephony::TRegistrationStatus aNetworkRegistration );
+        
+    /**
+     * From MAOConnectionManagerObserver
+     * Notifies from a deleted connection.
+     *
+     * @since S60 v3.1
+     * @param aMyConnectionId connection id from connection monitor
+     * @param aForward Tells whether message should be forwarded next layer
+     */
+    void HandleConnectionDeletedL( const TUint aConnectionId,
+                                   const TBool aForward);
+    
+     /**
+     * From MAOConnectionManagerObserver
+     * ?
+     *
+     * @since S60 v3.1
+     */
+    void HandleExternalConnectionCreatedL();
+    
+    
+    /**
+     * From MAOConnectionManagerObserver
+     *
+     * @since S60 v3.2
+     * @param aMyConnectionId connection id from connection monitor
+     * @param aIapId iap id
+     * @param anetId network id
+     * @return void
+     */
+    void HandleInternalConnectionCreatedL( const TUint aConnectionId,
+                                           const TUint aIapId, 
+                                           const TUint aNetId );
+    
+    /**
+     * From MAOConnectionManagerObserver
+     * Notifies error if network registration status
+     * is not received.
+     *
+     * @since S60 v3.1
+     * @param aError: Error code
+     */
+    void HandleError( TInt aError );
+    
+private: // From base class MAOTimerObserver
+
+    /**
+     * From MAOTimerObserver
+     * Handles retry timer expiration.
+     *
+     * @since S60 v3.1
+     */
+    void HandleRetryTimerExpiredL();
+
+    /**
+     * From MAOTimerObserver
+     * Handles connection timer expiration.
+     *
+     * @since S60 v3.1
+     */
+    void HandleConnectionTimerExpiredL();
+
+    /**
+     * Handles unconnect timer expiration.
+     *
+     * @since 3.0
+     */
+    void HandleUnconnectTimerExpiredL();
+    
+private: // From base class MAOSettingsObserver
+
+    /**
+     * From MAOSettingsObserver
+     * Method through setting changes are notified.
+     *
+     * @since S60 v3.1
+     */
+    void HandleSettingsChangedL();
+    
+private: // From base class MAORAUManagerObserver
+
+    /**
+     * From MAORAUManagerObserver
+     * Succesfull RAU is notified through this method.
+     *
+     * @since S60 v3.1
+     * @param aType: RAU type
+     */
+    void HandleSuccesfulRAUL( TRAUType aType );
+    
+    
+private: // Data
+
+    
+    /**
+     * Tel server
+     */
+    RTelServer iTelServer;
+
+    /**
+     * Mobile phone
+     */
+    RMobilePhone iMobilePhone;
+
+    /**
+     * Custom API
+     */
+    RMmCustomAPI iCustomAPI;
+    
+    
+    /** 
+     * Connection manager
+     * Own
+     */ 
+    CAOConnectionManager* iConnectionManager;
+    
+    /** 
+     * Retry timer
+     * Own
+     */ 
+    CAOTimer* iTimer;
+    
+    /** 
+     * RAU event manager
+     * Own
+     */ 
+    CAORAUManager* iRAUManager;
+    
+    /** 
+     * Settings
+     * Own
+     */ 
+    CAOSettings* iSettings;
+    
+    /** 
+     * GPDS interface
+     * Own
+     */ 
+    CAOGpds* iGpds;
+    
+    /** 
+     * States array
+     */ 
+    CArrayPtrFlat<TAOState>* iPointerStatePool;
+    
+    /** 
+     * Async PDP context re-activation timer
+     * Own
+     */ 
+    CPeriodic* iAsyncReactivation;
+    
+    /** 
+     * Current disconnect / failure reason
+     */ 
+    MAOConnectionManager::TFailureReason iFailure;
+    
+    /** 
+     * Current activation failure
+     */ 
+    TBool iActivationFailure;
+    
+    /** 
+     * Current state
+     * Not own
+     */ 
+    TAOState* iCurrentState;
+    
+    /** 
+     * PDPProperty
+     */ 
+    RProperty iPDPProperty;
+    
+    /** 
+     * PDP P&S property observer
+     * Own
+     */ 
+    CAOAsyncWrapper<CAOServer>* iPDPPropertySubscriber;
+    
+    /** 
+     * Timer setup
+     * Own
+     */ 
+    CPeriodic* iAsyncSetup;
+    };
+
+#endif //C_CAOSERVER_H