networkhandling/networkhandlingengine/NetworkHandlingGsmSrc/CNWGsmMessageHandler.cpp
changeset 0 ff3b6d0fd310
child 19 7d48bed6ce0c
equal deleted inserted replaced
-1:000000000000 0:ff3b6d0fd310
       
     1 /*
       
     2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  This module contains the implementation of CNWGsmMessageHandler
       
    15 *                class member functions.
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 
       
    21 // INCLUDE FILES
       
    22 #include "NWHandlingEngine.h"
       
    23 #include "CNWGsmMessageHandler.h"
       
    24 #include "CNWNetworkFailureMonitor.h"
       
    25 #include "NWLogger.h"
       
    26 
       
    27 
       
    28 // CONSTANTS
       
    29 // Number of monitors in Network Handling module and the running
       
    30 // storage slot number in iMonitorContainer pointer array
       
    31 
       
    32 #ifdef RD_PHONE_NG
       
    33 const TInt KNWNetworkFailureMonitor = 4;
       
    34 #else // RD_PHONE_NG
       
    35 const TInt KNWNetworkFailureMonitor = 3;
       
    36 #endif // RD_PHONE_NG
       
    37 
       
    38 
       
    39 // ============================ MEMBER FUNCTIONS ==============================
       
    40 
       
    41 // ----------------------------------------------------------------------------
       
    42 // CNWGsmMessageHandler::CNWGsmMessageHandler
       
    43 // C++ default constructor can NOT contain any code, that
       
    44 // might leave.
       
    45 // ----------------------------------------------------------------------------
       
    46 //
       
    47 CNWGsmMessageHandler::CNWGsmMessageHandler( 
       
    48             CNWGsmSessionImplementation& aNetworkData, 
       
    49             MNWMessageObserver& aMessageObserver,
       
    50             TNWInfo& aNWInfo )
       
    51             : CNWMessageHandler( aNetworkData,
       
    52                                  aMessageObserver,
       
    53                                  aNWInfo )
       
    54     {
       
    55     NWLOGSTRING( KNWOBJECT, "NW: CNWNetworkViagBaseEngine::CNWGsmMessageHand\
       
    56         ler() Begin " );
       
    57 
       
    58     iNetworkInfo.iViagIndicatorType = ENWViagIndicatorTypeNone;
       
    59     iNetworkInfo.iMCNIndicatorType = ENWMCNIndicatorTypeNone;
       
    60     
       
    61     NWLOGSTRING( KNWOBJECT, "NW: CNWNetworkViagBaseEngine::CNWGsmMessageHand\
       
    62         ler() End " );
       
    63     }
       
    64 
       
    65 // ----------------------------------------------------------------------------
       
    66 // CNWGsmMessageHandler::ConstructL
       
    67 // Symbian 2nd phase constructor can leave.
       
    68 // ----------------------------------------------------------------------------
       
    69 //
       
    70 void CNWGsmMessageHandler::ConstructL()
       
    71     {
       
    72     NWLOGSTRING( KNWOBJECT, 
       
    73         "NW: CNWNetworkViagBaseEngine::ConstructL() Begin " );
       
    74     
       
    75     //Initializes base class member variables
       
    76     BaseConstructL();
       
    77 
       
    78     iCellReselectionHandler = CNWGsmNetworkCellReselectionHandler::NewL( 
       
    79             *this,
       
    80             iPhone,
       
    81             iNetworkInfo,
       
    82             iCustomAPI,
       
    83             iInterNetworkInfo );
       
    84 
       
    85     // Create CNWNetworkFailureMonitor object and insert it to monitor container.
       
    86     User::LeaveIfError( iMonitorContainer.Insert( 
       
    87         ( new ( ELeave ) CNWNetworkFailureMonitor( *this, iPhone, iNetworkInfo, iCustomAPI ) ), 
       
    88         KNWNetworkFailureMonitor ) );
       
    89 
       
    90     NWLOGSTRING( KNWOBJECT, 
       
    91         "NW: CNWNetworkViagBaseEngine::ConstructL() End " );
       
    92     }
       
    93 
       
    94 // ----------------------------------------------------------------------------
       
    95 // CNWGsmMessageHandler::NewL
       
    96 // Two-phased constructor.
       
    97 // ----------------------------------------------------------------------------
       
    98 //
       
    99 CNWGsmMessageHandler* CNWGsmMessageHandler::NewL(
       
   100             CNWGsmSessionImplementation& aNetworkData,
       
   101             MNWMessageObserver& aMessageObserver,
       
   102             TNWInfo& aNWInfo )
       
   103     {
       
   104     NWLOGSTRING( KNWOBJECT, 
       
   105         "NW: CNWNetworkViagBaseEngine::NewL() Begin " );
       
   106 
       
   107     CNWGsmMessageHandler* self = new( ELeave ) CNWGsmMessageHandler(
       
   108             aNetworkData,
       
   109             aMessageObserver,
       
   110             aNWInfo );
       
   111     
       
   112     CleanupStack::PushL( self );
       
   113     self->ConstructL();
       
   114     CleanupStack::Pop( self );
       
   115 
       
   116     NWLOGSTRING( KNWOBJECT, 
       
   117         "NW: CNWNetworkViagBaseEngine::NewL() End " );
       
   118 
       
   119     return self;
       
   120     }
       
   121 
       
   122     
       
   123 // Destructor
       
   124 CNWGsmMessageHandler::~CNWGsmMessageHandler()
       
   125     {
       
   126     NWLOGSTRING( KNWOBJECT, 
       
   127         "NW: CNWNetworkViagBaseEngine::~CNWGsmMessageHandler() Begin " );
       
   128 
       
   129     delete iCellReselectionHandler;
       
   130     
       
   131     NWLOGSTRING( KNWOBJECT, 
       
   132         "NW: CNWNetworkViagBaseEngine::~CNWGsmMessageHandler() End " );
       
   133     }
       
   134 
       
   135 
       
   136 // ----------------------------------------------------------------------------
       
   137 // CNWGsmMessageHandler::SendMessage
       
   138 // Reroutes messages to the Client object
       
   139 // The function controls the starting of the monitors other than registration 
       
   140 // status monitor. Other monitors are starter when registration status message 
       
   141 // is received and phone has not been registered.
       
   142 // (other items were commented in a header).
       
   143 // ----------------------------------------------------------------------------
       
   144 //
       
   145 void CNWGsmMessageHandler::SendMessage(
       
   146     MNWMessageObserver::TNWMessages aMessage ) // send message
       
   147     {
       
   148     NWLOGSTRING( KNWMESOUT, 
       
   149         "NW: CNWGsmMessageHandler::SendMessage() Begin" );
       
   150     if ( !iIsRegistered && ( aMessage == 
       
   151         MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange ) )
       
   152         {
       
   153         // Start other monitors only after we are successfully 
       
   154         // registered to network.
       
   155         iMonitorContainer[ KNWNetworkFailureMonitor ]->Initialise();
       
   156         }
       
   157 
       
   158     if ( aMessage == MNWMessageObserver::ENWMessageNetworkInfoChange )
       
   159         {
       
   160         NWLOGSTRING( KNWMESOUT,
       
   161             "NW: CNWGsmMessageHandler::SendMessage: Handle CellReselection" );
       
   162         iCellReselectionHandler->HandleCellReselection();
       
   163 
       
   164         CNWMessageHandler::SendMessage( 
       
   165             MNWMessageObserver::ENWMessageNetworkCellReselection );
       
   166         }
       
   167 
       
   168     CNWMessageHandler::SendMessage( aMessage );
       
   169     
       
   170     NWLOGSTRING( KNWMESOUT, 
       
   171         "NW: CNWGsmMessageHandler::SendMessage() End" );
       
   172     }
       
   173 
       
   174 
       
   175 // ----------------------------------------------------------------------------
       
   176 // CNWGsmMessageHandler::HandleSubscriberIdChange
       
   177 // Method is called, if subscriber ID ( IMSI code ) is changed.
       
   178 // ----------------------------------------------------------------------------
       
   179 //
       
   180 void CNWGsmMessageHandler::HandleSubscriberIdChange()
       
   181     {
       
   182     NWLOGSTRING( KNWMESOUT, 
       
   183         "NW: CNWGsmMessageHandler::HandleSubscriberIdChange() Begin" );
       
   184 
       
   185     iCellReselectionHandler->HandleCellReselection();
       
   186     
       
   187     NWLOGSTRING( KNWMESOUT, 
       
   188         "NW: CNWGsmMessageHandler::HandleSubscriberIdChange() End" );
       
   189     }
       
   190 
       
   191 // ----------------------------------------------------------------------------
       
   192 // CNWGsmMessageHandler::HandleUpdateReadingStatus
       
   193 // Updates Operator name's read status
       
   194 // ----------------------------------------------------------------------------
       
   195 //
       
   196 void CNWGsmMessageHandler::HandleUpdateReadingStatus( 
       
   197         const TNWRead& aElementFile, TBool aReadStatus )
       
   198     {
       
   199     NWLOGSTRING( KNWMESOUT, 
       
   200         "NW: CNWGsmMessageHandler::HandleUpdateReadingStatus() Begin" );
       
   201     
       
   202     iCellReselectionHandler->UpdateReadingStatus( aElementFile, aReadStatus );
       
   203     
       
   204     NWLOGSTRING( KNWMESOUT, 
       
   205         "NW: CNWGsmMessageHandler::HandleUpdateReadingStatus() End" );
       
   206     }
       
   207 
       
   208 //  End of File