diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/simtsy/inc/CSimNetworkStatus.h --- /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 +#include +#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(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* iRegStatusInfo; // < List of network registration changes. + TInt iRegStatIndex; // < Current index from the iRegStatInfo array + TInt iCurrentRegStatus; // < Current Registration Status. + CArrayFixFlat* iNetworkInfo; // < List of network information. + CArrayFixFlat* iNetworkInfoV8; // < List of network information for V8 class. + CArrayFixFlat* 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* 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* 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* 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* iRoamStatGetClients; + CArrayFixFlat* iRoamStatNotifyClients; + }; + +#endif