diff -r 000000000000 -r ff3b6d0fd310 networkhandling/networkhandlingengine/NetworkHandlingGsmSrc/CNWGsmMessageHandler.cpp --- /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