telephonyserverplugins/simtsy/inc/CSimNetworkStatus.h
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/inc/CSimNetworkStatus.h	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,200 @@
+// Copyright (c) 2001-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:
+// Contains definitions for classes that implement network orientated functionality.
+// 
+//
+
+/**
+ @file
+ @internalAll
+*/
+
+#ifndef CSIMNETWORKSTATUS_H__
+#define CSIMNETWORKSTATUS_H__
+
+#include <etelmm.h>
+#include <et_phone.h>
+#include "csimtimer.h"
+#include "CSimPubSubChange.h"
+
+class CSimPhone;
+class CTestConfigSection;
+
+/**
+ * Implements the RMobilePhone based functions that constitute the network orientated
+ * functionality provided by the SIM TSY.
+ */
+class CSimNetworkStatus : public CBase, MTimerCallBack, MPubSubChangeCallback
+	{
+public:
+	static CSimNetworkStatus* NewL(CSimPhone* aPhone);
+	CSimNetworkStatus(CSimPhone* aPhone);
+	~CSimNetworkStatus();
+	TInt GetNetworkCaps(TTsyReqHandle aReqHandle,TDes8* aPckg1);
+	TInt GetHomeNetwork(TTsyReqHandle aReqHandle,TDes8* aPckg1);
+	TInt GetCurrentNetwork(TTsyReqHandle aReqHandle,TDes8* aPckg1, TDes8* aPckg2);
+	TInt GetCurrentNetworkNoLocation(TTsyReqHandle aReqHandle,TDes8* aPckg1);
+	TInt GetNetworkRegistrationStatus(TTsyReqHandle aReqHandle,TDes8* aPckg);
+	TInt NotifyNetworkRegistrationStatusChange(TTsyReqHandle aReqHandle,TDes8* aPckg);
+	void NotifyNetworkRegistrationStatusChangeCancel();
+	TInt NotifyCurrentNetworkChange(TTsyReqHandle aReqHandle,TDes8* aPckg1,TDes8* aPckg2);
+	void NotifyCurrentNetworkChangeCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyCurrentNetworkNoLocationChange(TTsyReqHandle aReqHandle,TDes8* aPckg1);
+	void NotifyCurrentNetworkNoLocationChangeCancel(const TTsyReqHandle aTsyReqHandle);	
+	
+	TInt GetNITZInfo(TTsyReqHandle aReqHandle,TDes8* aPckg1);
+	TInt NotifyNITZInfoChange(TTsyReqHandle aReqHandle,TDes8* aPckg);
+	void NotifyNITZInfoChangeCancel();
+	TInt GetCurrentServiceProvider(TTsyReqHandle aReqHandle,TDes8* aPckg);
+	TInt GetCurrentNetworkName(TTsyReqHandle aReqHandle,TDes8* aNetworkName, TDes8* aLocInfo);
+
+	TInt GetCellInfo(TTsyReqHandle aReqHandle,TDes8* aPckg);
+	TInt NotifyCellInfoChange(TTsyReqHandle aReqHandle,TDes8* aPckg);
+	void NotifyCellInfoChangeCancel(TTsyReqHandle aTsyReqHandle);
+	
+	const CTestConfigSection* CfgFile();
+	RMobilePhone::TMobilePhoneNetworkStatus NetWorkStatus();
+	inline RMobilePhone::TMobilePhoneRegistrationStatus RegistrationStatus() { return static_cast<RMobilePhone::TMobilePhoneRegistrationStatus>(iCurrentRegStatus);};
+
+private:
+	void ConstructL();
+	void TimerCallBack(TInt aId);
+	void TimerCallBackRegStat();
+	void PubSubCallback(TInt aRegStat);
+	void TimerCallBackNitz();
+	void TimerCallBackCellInfo();
+	void TimerCallBackRadioModeL();
+	void PopulateNetworkInfoV1(TInt aIndex,RMobilePhone::TMobilePhoneNetworkInfoV1& aNetInfo);
+	void PopulateEtel3rdPartyNetworkInfoV1(TInt aIndex,RMobilePhone::TEtel3rdPartyMobileNetworkInfoV1& aNetInfo);
+	void PopulateNitzNetworkNames(RMobilePhone::TMobilePhoneNITZ& aNitz);
+
+private:
+	CSimPhone* iPhone;			// < Pointer to the parent phone class.
+	CSimTimer* iRegStatTimer;	// < Pointer to the owned Registration Status timer class.
+	CSimPubSubChange* iRegStatChange;	// < Object for checking registration status change variable
+	CSimPubSubChange* iPSRegStatChange;	// < Object for checking registration status change variable using new P&S uids
+	CSimTimer* iNitzTimer;		// < Pointer to the owned NITZ timer class.
+	CSimTimer* iRadioModeTimer;	// < Pointer to the owned RadioMode timer class.
+	CSimTimer* iCellInfoTimer;  // < Pointer to the owned cell info timer class.
+	
+	struct TRegStatus
+		{
+		TInt iDuration;												// < Duration of Registration Status
+		RMobilePhone::TMobilePhoneRegistrationStatus iRegStatus;	// < Registration Status that will be maintained through period iDuration
+		TInt iNetworkInfoIndex;										// < Network index (into iNetworkInfo) that will be maintained through period iDuration (optional)
+		};
+
+	CArrayFixFlat<TRegStatus>* iRegStatusInfo;						// < List of network registration changes.
+	TInt iRegStatIndex;					// < Current index from the iRegStatInfo array
+	TInt iCurrentRegStatus;				// < Current Registration Status.
+	CArrayFixFlat<RMobilePhone::TMobilePhoneNetworkInfoV2>*  iNetworkInfo;	// < List of network information.
+	CArrayFixFlat<RMobilePhone::TMobilePhoneNetworkInfoV8>*  iNetworkInfoV8;	// < List of network information for V8 class.
+	CArrayFixFlat<RMobilePhone::TMobilePhoneLocationAreaV1>* iLocationArea;	// < List of location area.
+	TInt iCurrentNetworkIndex;			// < Current index from the iNetworkInfo array
+	struct TNitzInfoAndDuration
+		{
+		TInt iDuration;							// < Duration when this NITZ information is valid.
+		RMobilePhone::TMobilePhoneNITZ iNitz;	// < NITZ information valid for above period.
+		};
+	CArrayFixFlat<TNitzInfoAndDuration>* iNitzInfo;	// < List of NITZ information.
+	TInt iNitzIndex;								// < Current index from the iNitzInfo array
+	RMobilePhone::TMobilePhoneNITZ iCurrentNitzInfo;
+
+	TBool iRegStatChangeNotificationPending;			// < Registration Status notification request outstanding
+	TTsyReqHandle iRegStatChangeNotificationReqHandle;	// < Registration Status notification outstanding request handle
+	RMobilePhone::TMobilePhoneRegistrationStatus* iRegStatChangeNotificationRegStatus;	// < Registration Status notification pointer
+
+	TBool iCurrNetChangeV1NotificationPending;			// < Current network notification request outstanding for V1 paramater class
+	TTsyReqHandle iCurrNetChangeV1NotificationReqHandle;	// < Current network notification outstanding request handle  for V1 paramater class
+	RMobilePhone::TMobilePhoneNetworkInfoV1* iCurrNetChangeV1NotificationNetInfo;	// < Current network notification data pointer  for V1 paramater class
+
+	TBool iCurrNetChangeV2NotificationPending;			// < Current network notification request outstanding for V2 paramater class
+	TTsyReqHandle iCurrNetChangeV2NotificationReqHandle;	// < Current network notification outstanding request handle  for V2 paramater class
+	RMobilePhone::TMobilePhoneNetworkInfoV2* iCurrNetChangeV2NotificationNetInfo;	// < Current network notification data pointer  for V2 paramater class
+	
+	TBool iCurrNetChangeV5NotificationPending;			// < Current network notification request outstanding for V5 paramater class
+	TTsyReqHandle iCurrNetChangeV5NotificationReqHandle;	// < Current network notification outstanding request handle  for V5 paramater class
+	RMobilePhone::TMobilePhoneNetworkInfoV5* iCurrNetChangeV5NotificationNetInfo;	// < Current network notification data pointer  for V5 paramater class
+	
+	TBool iCurrNetChangeV8NotificationPending;			// < Current network notification request outstanding for V8 paramater class
+	TTsyReqHandle iCurrNetChangeV8NotificationReqHandle;	// < Current network notification outstanding request handle  for V8 paramater class
+	RMobilePhone::TMobilePhoneNetworkInfoV8* iCurrNetChangeV8NotificationNetInfo;	// < Current network notification data pointer  for V8 paramater class
+	
+	TBool iCurrNetChangeNoLocV1NotificationPending;			// < Current network notification request outstanding for V1 paramater class
+	TTsyReqHandle iCurrNetChangeNoLocV1NotificationReqHandle;	// < Current network notification outstanding request handle  for V1 paramater class
+	RMobilePhone::TMobilePhoneNetworkInfoV1* iCurrNetChangeNoLocV1NotificationNetInfo;	// < Current network notification data pointer  for V1 paramater class
+
+	TBool iCurrNetChangeNoLocV2NotificationPending;			// < Current network notification request outstanding for V2 paramater class
+	TTsyReqHandle iCurrNetChangeNoLocV2NotificationReqHandle;	// < Current network notification outstanding request handle  for V2 paramater class
+	RMobilePhone::TMobilePhoneNetworkInfoV2* iCurrNetChangeNoLocV2NotificationNetInfo;	// < Current network notification data pointer  for V2 paramater class
+	
+	TBool iCurrNetChangeNoLocV5NotificationPending;			// < Current network notification request outstanding for V5 paramater class
+	TTsyReqHandle iCurrNetChangeNoLocV5NotificationReqHandle;	// < Current network notification outstanding request handle  for V5 paramater class
+	RMobilePhone::TMobilePhoneNetworkInfoV5* iCurrNetChangeNoLocV5NotificationNetInfo;	// < Current network notification data pointer  for V5 paramater class
+	
+	TBool iCurrNetChangeNoLocV8NotificationPending;			// < Current network notification request outstanding for V8 paramater class
+	TTsyReqHandle iCurrNetChangeNoLocV8NotificationReqHandle;	// < Current network notification outstanding request handle  for V8 paramater class
+	RMobilePhone::TMobilePhoneNetworkInfoV8* iCurrNetChangeNoLocV8NotificationNetInfo;	// < Current network notification data pointer  for V8 paramater class
+	
+	TBool iCurrNetChangeEtelIsvNotificationPending;			// < Current network notification request outstanding for V2 paramater class
+	TTsyReqHandle iCurrNetChangeEtelIsvNotificationReqHandle;	// < Current network notification outstanding request handle  for V2 paramater class
+	RMobilePhone::TEtel3rdPartyMobileNetworkInfoV1* iCurrNetChangeEtelIsvNotificationNetInfo;	// < Current network notification data pointer  for V2 paramater class
+	
+	TBool iCurrentNetworkChangeLocationAreaNotificationPending;			// < Current network notification request outstanding for location area class
+	RMobilePhone::TMobilePhoneLocationAreaV1* iCurrentNetworkChangeLocationArea; // < Current network notification data pointer  for location area class
+	
+	TBool iNitzChangeNotificationPending;			// < NITZ notification request outstanding
+	TTsyReqHandle iNitzChangeNotificationReqHandle;	// < NITZ notification outstanding request handle
+	RMobilePhone::TMobilePhoneNITZ* iNitzChangeNotificationInfo;	// < NITZ notification data pointer
+	RMobilePhone::TMobilePhoneServiceProviderNameV2 iServiceProvider;	// < Service provider details
+	struct TRadioMode
+		{
+		TInt iDuration;	// < Duration of Registration Status
+		TBool iRadioOn;	// < Radio (RF) On or Off 
+		};
+	TRadioMode iRadioMode;
+	CArrayFixFlat<TRadioMode>* iRadioModeInfo;
+	TInt iRadioModeIndex;								// < Current index from the radioMode array
+
+	struct TCellInfoAndDuration
+		{
+		TInt iDuration;							    // < Duration when this cell information is valid.
+		RMobilePhone::TMobilePhoneCellInfoV9 iInfo;	// < cell information valid for above period.
+		};
+	CArrayFixFlat<TCellInfoAndDuration>* iCellInfo;	// < List of Cell information.
+	TInt iCellInfoIndex;	    					// < Current index from the iNitzInfo array
+	RMobilePhone::TMobilePhoneCellInfoV9 iCurrentCellInfo;
+	TBool iCellInfoChangeNotificationPending;			// < Cell info notification request outstanding
+	TTsyReqHandle iCellInfoChangeNotificationReqHandle;	// < Cell info notification outstanding request handle
+	RMobilePhone::TMobilePhoneCellInfoV9* iCellInfoChangeNotificationInfo;	// < cell Info notification data pointer
+
+private:
+	void SetNetworkMode();
+
+	CSimTimer* iRoamStatTimer;	// < Pointer to the owned Roaming Status timer class.
+	void FindRoamStatSettings();
+
+	class TRoamStatClient
+		{
+		public:
+			TTsyReqHandle iReqHandle;
+			TUint8* iRoamingStatus;
+		};
+
+	TInt iRoamStatGetTimeout;
+	CArrayFixFlat<TRoamStatClient>* iRoamStatGetClients;
+	CArrayFixFlat<TRoamStatClient>* iRoamStatNotifyClients;
+	};
+
+#endif