networkhandling/networkhandlingengine/NetworkHandlingGsmSrc/CNWGsmMessageHandler.cpp
changeset 0 ff3b6d0fd310
child 27 7eb70891911c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkhandling/networkhandlingengine/NetworkHandlingGsmSrc/CNWGsmMessageHandler.cpp	Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,208 @@
+/*
+* 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:  This module contains the implementation of CNWGsmMessageHandler
+*                class member functions.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "NWHandlingEngine.h"
+#include "CNWGsmMessageHandler.h"
+#include "CNWNetworkFailureMonitor.h"
+#include "NWLogger.h"
+
+
+// CONSTANTS
+// Number of monitors in Network Handling module and the running
+// storage slot number in iMonitorContainer pointer array
+
+#ifdef RD_PHONE_NG
+const TInt KNWNetworkFailureMonitor = 4;
+#else // RD_PHONE_NG
+const TInt KNWNetworkFailureMonitor = 3;
+#endif // RD_PHONE_NG
+
+
+// ============================ MEMBER FUNCTIONS ==============================
+
+// ----------------------------------------------------------------------------
+// CNWGsmMessageHandler::CNWGsmMessageHandler
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// ----------------------------------------------------------------------------
+//
+CNWGsmMessageHandler::CNWGsmMessageHandler( 
+            CNWGsmSessionImplementation& aNetworkData, 
+            MNWMessageObserver& aMessageObserver,
+            TNWInfo& aNWInfo )
+            : CNWMessageHandler( aNetworkData,
+                                 aMessageObserver,
+                                 aNWInfo )
+    {
+    NWLOGSTRING( KNWOBJECT, "NW: CNWNetworkViagBaseEngine::CNWGsmMessageHand\
+        ler() Begin " );
+
+    iNetworkInfo.iViagIndicatorType = ENWViagIndicatorTypeNone;
+    iNetworkInfo.iMCNIndicatorType = ENWMCNIndicatorTypeNone;
+    
+    NWLOGSTRING( KNWOBJECT, "NW: CNWNetworkViagBaseEngine::CNWGsmMessageHand\
+        ler() End " );
+    }
+
+// ----------------------------------------------------------------------------
+// CNWGsmMessageHandler::ConstructL
+// Symbian 2nd phase constructor can leave.
+// ----------------------------------------------------------------------------
+//
+void CNWGsmMessageHandler::ConstructL()
+    {
+    NWLOGSTRING( KNWOBJECT, 
+        "NW: CNWNetworkViagBaseEngine::ConstructL() Begin " );
+    
+    //Initializes base class member variables
+    BaseConstructL();
+
+    iCellReselectionHandler = CNWGsmNetworkCellReselectionHandler::NewL( 
+            *this,
+            iPhone,
+            iNetworkInfo,
+            iCustomAPI,
+            iInterNetworkInfo );
+
+    // Create CNWNetworkFailureMonitor object and insert it to monitor container.
+    User::LeaveIfError( iMonitorContainer.Insert( 
+        ( new ( ELeave ) CNWNetworkFailureMonitor( *this, iPhone, iNetworkInfo, iCustomAPI ) ), 
+        KNWNetworkFailureMonitor ) );
+
+    NWLOGSTRING( KNWOBJECT, 
+        "NW: CNWNetworkViagBaseEngine::ConstructL() End " );
+    }
+
+// ----------------------------------------------------------------------------
+// CNWGsmMessageHandler::NewL
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CNWGsmMessageHandler* CNWGsmMessageHandler::NewL(
+            CNWGsmSessionImplementation& aNetworkData,
+            MNWMessageObserver& aMessageObserver,
+            TNWInfo& aNWInfo )
+    {
+    NWLOGSTRING( KNWOBJECT, 
+        "NW: CNWNetworkViagBaseEngine::NewL() Begin " );
+
+    CNWGsmMessageHandler* self = new( ELeave ) CNWGsmMessageHandler(
+            aNetworkData,
+            aMessageObserver,
+            aNWInfo );
+    
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    NWLOGSTRING( KNWOBJECT, 
+        "NW: CNWNetworkViagBaseEngine::NewL() End " );
+
+    return self;
+    }
+
+    
+// Destructor
+CNWGsmMessageHandler::~CNWGsmMessageHandler()
+    {
+    NWLOGSTRING( KNWOBJECT, 
+        "NW: CNWNetworkViagBaseEngine::~CNWGsmMessageHandler() Begin " );
+
+    delete iCellReselectionHandler;
+    
+    NWLOGSTRING( KNWOBJECT, 
+        "NW: CNWNetworkViagBaseEngine::~CNWGsmMessageHandler() End " );
+    }
+
+
+// ----------------------------------------------------------------------------
+// CNWGsmMessageHandler::SendMessage
+// Reroutes messages to the Client object
+// The function controls the starting of the monitors other than registration 
+// status monitor. Other monitors are starter when registration status message 
+// is received and phone has not been registered.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CNWGsmMessageHandler::SendMessage(
+    MNWMessageObserver::TNWMessages aMessage ) // send message
+    {
+    NWLOGSTRING( KNWMESOUT, 
+        "NW: CNWGsmMessageHandler::SendMessage() Begin" );
+    if ( !iIsRegistered && ( aMessage == 
+        MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange ) )
+        {
+        // Start other monitors only after we are successfully 
+        // registered to network.
+        iMonitorContainer[ KNWNetworkFailureMonitor ]->Initialise();
+        }
+
+    if ( aMessage == MNWMessageObserver::ENWMessageNetworkInfoChange )
+        {
+        NWLOGSTRING( KNWMESOUT,
+            "NW: CNWGsmMessageHandler::SendMessage: Handle CellReselection" );
+        iCellReselectionHandler->HandleCellReselection();
+
+        CNWMessageHandler::SendMessage( 
+            MNWMessageObserver::ENWMessageNetworkCellReselection );
+        }
+
+    CNWMessageHandler::SendMessage( aMessage );
+    
+    NWLOGSTRING( KNWMESOUT, 
+        "NW: CNWGsmMessageHandler::SendMessage() End" );
+    }
+
+
+// ----------------------------------------------------------------------------
+// CNWGsmMessageHandler::HandleSubscriberIdChange
+// Method is called, if subscriber ID ( IMSI code ) is changed.
+// ----------------------------------------------------------------------------
+//
+void CNWGsmMessageHandler::HandleSubscriberIdChange()
+    {
+    NWLOGSTRING( KNWMESOUT, 
+        "NW: CNWGsmMessageHandler::HandleSubscriberIdChange() Begin" );
+
+    iCellReselectionHandler->HandleCellReselection();
+    
+    NWLOGSTRING( KNWMESOUT, 
+        "NW: CNWGsmMessageHandler::HandleSubscriberIdChange() End" );
+    }
+
+// ----------------------------------------------------------------------------
+// CNWGsmMessageHandler::HandleUpdateReadingStatus
+// Updates Operator name's read status
+// ----------------------------------------------------------------------------
+//
+void CNWGsmMessageHandler::HandleUpdateReadingStatus( 
+        const TNWRead& aElementFile, TBool aReadStatus )
+    {
+    NWLOGSTRING( KNWMESOUT, 
+        "NW: CNWGsmMessageHandler::HandleUpdateReadingStatus() Begin" );
+    
+    iCellReselectionHandler->UpdateReadingStatus( aElementFile, aReadStatus );
+    
+    NWLOGSTRING( KNWMESOUT, 
+        "NW: CNWGsmMessageHandler::HandleUpdateReadingStatus() End" );
+    }
+
+//  End of File