networkhandling/networkhandlingengine/NetworkHandlingGsmInc/CNWNetworkViagBaseEngine.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkhandling/networkhandlingengine/NetworkHandlingGsmInc/CNWNetworkViagBaseEngine.h Tue Feb 02 01:11:09 2010 +0200
@@ -0,0 +1,370 @@
+/*
+* 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: Monitors network connection failure.
+*
+*/
+
+
+
+#ifndef CNWNETWORKVIAGBASEENGINE_H
+#define CNWNETWORKVIAGBASEENGINE_H
+
+// INCLUDES
+#include "NWHandlingEngine.h"
+#include "CNWMessageHandler.h"
+
+#include "CNWNetworkMonitorBase.h"
+#include "CNWGsmMessageHandler.h"
+#include "MNWNetworkTimer.h"
+#include <etelmm.h>
+#include <e32property.h>
+#include <charconv.h>
+#include <f32file.h>
+
+
+// FORWARD DECLARATIONS
+class CNWGsmMessageHandler;
+class CNWNetworkViagSimReader;
+class CNWNetworkViagRefresh;
+class CNWGsmNetworkCellReselectionHandler;
+class CNWNetworkViagCbEngine;
+class CNWNetworkViagLcEngine;
+class CNWNetworkSystemEventMonitor;
+class CNWGsmMessageHandler;
+class CNWNetworkViagTimer;
+
+// CLASS DECLARATION
+
+
+//CONSTANTS
+
+// Refresh file list
+typedef TBuf16<242> TViagRefreshFiles;
+
+
+//Minimal Imsi checking length
+const TInt KNWViagMinImsiLength = 5;
+const TInt KNWViagMcc = 262;
+const TInt KNWViagMnc = 7;
+const TInt KNWZoneTagLength = 12;
+
+//Viag IMSI start from 26207
+_LIT( KNWViagImsiIdentity, "26207" );
+//Viag IMSI for 3g
+_LIT( KNWViagImsi3gIdentity, "26208" );
+
+
+// HZ Elementary files
+enum TNWNetworkElementFile
+ {
+ EFileSubscribedOne = 0x6F81,
+ EFileSubscribedTwo = 0x6F82,
+ EFileSubscribedThree = 0x6F83,
+ EFileSubscribedFour = 0x6F84,
+ EFileHZ = 0x6F60,
+ EFileTags = 0x6F80,
+ EFileSettings = 0x6F87,
+ EFileProgrammableList = 0x6FC6, // EFopl
+ EFileProgrammableOpereator = 0x6FC5, // EFpnn
+ EFileNetworkProvider = 0x6F14,
+ EFileNetworkProvidersecond = 0x6F18,
+ EFileServiceProvider = 0x6F46, // EFspn
+ EFileUnknown = 0x2000
+ };
+
+
+// Homezone alogorithms
+enum TNWViagAlgo
+ {
+ EWNAlgoNone,
+ EWNAlgoLc,
+ EWNAlgoCb
+ };
+
+// Homezone initilaization states
+enum TNWInit
+ {
+ EInitNotReady,
+ EInitOngoing,
+ EInitReady
+ };
+
+struct TNWZoneTags
+ {
+ TBuf<KNWZoneTagLength> iZoneTag;
+ };
+// Zone Tags Array.
+typedef CArrayFixFlat< TNWZoneTags > CZoneTagsArray;
+
+/**
+* Monitors network connection failure.
+*
+* @lib Networkhandling.lib
+* @since Series 60_2.8
+*/
+class CNWNetworkViagBaseEngine : CBase
+ , protected MNWNetworkTimer
+ {
+ public: // Constructors and destructor
+
+
+
+ /**
+ * Two-phased constructor.
+ */
+ static CNWNetworkViagBaseEngine* NewL(
+ CNWGsmNetworkCellReselectionHandler& aOwner,
+ CNWGsmMessageHandler& aMessageHandler,
+ RMmCustomAPI& aCustomAPI,
+ TNWInfo& aNetworkInfo,
+ TNWInterInfo& aInterNetworkInfo
+ );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CNWNetworkViagBaseEngine();
+
+ /**
+ * Is called by CNWNetworkCurrentNetworkMonitor in case of cell re-selection.
+ *
+ * @param
+ * @return None.
+ */
+ void CellReselection();
+
+ /**
+ * Is called when the HZ file of caches are refreshed .
+ *
+ * @param
+ * @return None.
+ */
+ void SatRefreshCompleteNotification();
+
+
+ /**
+ * Reroutes a message to the Client object.
+ *
+ * @param aMessage Messge to the client.
+ * @return None.
+ */
+ void SendMessage( MNWMessageObserver::TNWMessages aMessage );
+
+ /**
+ * updates a cache
+ *
+ * @param aElementFile Element file in the sim.
+ * @param aResponse Response information from sim.
+ * @return None.
+ */
+ TBool UpdateCache(
+ TNWNetworkElementFile aElementFile,
+ const TDesC8& aResponse );
+
+ /**
+ * Sets Lc to supported or not supported.
+ * @param aLcSupported Is Lc algorithm supported.
+ * @return None.
+ */
+ void SetLcSupported( TBool aLcSupported );
+
+ /**
+ * Writes Viag-values to networkinfo, shared data and system agent.
+ *
+ * @param aIndicatorType Indicate which zone is
+ * @param aViagText Text to display in UI.
+ * @return None.
+ */
+ void WriteViagValues( const TNWViagIndicatorType aIndicatorType, //Indicates which zone it is
+ const TInt& aZoneId ); // Viag text
+
+ /**
+ * Handle system events
+ * @param aValue .
+ * @param aState
+ * @return None.
+ */
+ void HandleSystemEventL( const TInt aValue, const TInt aState );
+
+
+ /**
+ * Set ZoneTags to Zonetags array
+ * @param zoneTags Tags to be added to an array.
+ * @return None.
+ */
+ void SetZoneTag( TInt aZoneId, const TDesC& zoneStruct );
+
+ /**
+ * Creates iViagrefresh class. Gets called when CBS server is ready.
+ * @param None.
+ * @return None.
+ */
+ void StartupReadyL();
+
+ /**
+ * Notifies SAT server that all SIM files are read.
+ * @param None.
+ * @return None.
+ */
+ void CompleteRefresh();
+
+ /**
+ * Updates EF reading status.
+ * @param aElementFile file to update
+ * @param aReadStatus True or False. True indicates file has been read.
+ * @return None.
+ */
+ void UpdateEFReadingState( const TNWRead& aElementFile, TBool aReadStatus );
+
+ /**
+ * Starts the timer for waiting cell reselection notification
+ * @param None.
+ * @return None.
+ */
+ void StartTimer();
+
+ /**
+ * Stops the timer.
+ * @param None.
+ * @return None.
+ */
+ void StopTimer();
+
+ /**
+ * Decodes 7-bit message representation.
+ * @since - 3.1
+ * @param aTag text tag to be decoded.
+ * @return None
+ */
+ void DefaultAlphabetDecode( const TDesC8& aTag, TDes& aZoneText );
+ protected: // From MNWNetworkTimer
+ /**
+ * Calls Cellreselction after timeout.
+ * @param None.
+ * @return None.
+ */
+ void HandleTimeOut();
+
+ private:
+
+
+ /**
+ * C++ default constructor.
+ */
+ CNWNetworkViagBaseEngine( CNWGsmNetworkCellReselectionHandler& aOwner,
+ CNWGsmMessageHandler& aMessageHandler,
+ RMmCustomAPI& aCustomAPI,
+ TNWInfo& aNetworkInfo,
+ TNWInterInfo& aInterNetworkInfo
+ );
+
+
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Initialize Viag-values.
+ *
+ * @return None.
+ */
+ void ViagInitialize();
+
+ /**
+ * Checks if it's Viag SIM card we have in ME
+ * @since -
+ * @param -
+ * @return ETrue or EFalse
+ */
+ TBool IsViagImsi( ) const;
+
+ /**
+ * Initializes CharacterSetConverter and
+ * connects to file server
+ * @since 3.1
+ * @param -
+ * @return None
+ */
+ void InitializeCharSetConverterL();
+
+
+ private: // Data
+ // Reference to owner of the component
+ CNWGsmNetworkCellReselectionHandler& iOwner;
+ // Message Handler
+ CNWGsmMessageHandler& iMessageHandler;
+ // Reference to CustomAPI
+ RMmCustomAPI& iCustomAPI;
+ // Reference to the network info structure.
+ TNWInfo& iNWNetworkInfo;
+ // Reference to the internal network info structure.
+ TNWInterInfo& iInterNetworkInfo;
+ // LC support boolean
+ TBool iLcSupported;
+ // Cell Broadcast activation boolean.
+ TBool iCbActivation;
+ // Is sim initialized
+ TBool iSimOk;
+ // General activation
+ TBool iActivation;
+ // Ininitializion ready
+ TNWInit iInitReady;
+ // Viag sim reader connection
+ CNWNetworkViagSimReader* iViagSimReader;
+ // Viag Refresh connection
+ CNWNetworkViagRefresh* iViagRefresh;
+
+ // Viag CB engine connection
+ CNWNetworkViagCbEngine* iViagCbEngine;
+ // Viag LC engine connection
+ CNWNetworkViagLcEngine* iViagLcEngine;
+ // Array of Element files.
+ RArray<TNWNetworkElementFile> iElementFiles;
+
+ // Active viag algorithm.
+ TNWViagAlgo iViagActiveAlgo;
+ // Sim status monitor
+ CNWNetworkSystemEventMonitor* iSimStateMonitor;
+ // Call State Monitor
+ CNWNetworkSystemEventMonitor* iCallStateMonitor;
+ // Active call
+ TBool iActiveCall;
+
+ CZoneTagsArray* iZoneTags;
+ // Reading onGoing
+ TBool iReadingOnGoing;
+ // Indicates when Service Provider Name has been read after refresh. ETrue when ready.
+ TBool iSPNEFRead;
+ // Indicates when NetworkProvider Name is read.
+ TBool iNPNEFRead;
+ // Indicates when Programmable opearator name is read.
+ TBool iProgEFRead;
+ // Indicates when when Home Zone Elementary Files has been read.
+ TBool iViagEFRead;
+ // Timer
+ CNWNetworkViagTimer * iTimer;
+ // GPRS state monitor
+ CNWNetworkSystemEventMonitor* iGPRSStateMonitor;
+ // Character set converter
+ CCnvCharacterSetConverter* iCharacterSetConverter;
+ // file server session
+ RFs iFs;
+ };
+
+#endif // CNWNetworkViagBaseEngine_H
+
+// End of File
+