telephonyserverplugins/simtsy/inc/CSimSat.h
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
--- a/telephonyserverplugins/simtsy/inc/CSimSat.h	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/simtsy/inc/CSimSat.h	Thu May 06 15:10:38 2010 +0100
@@ -1,362 +1,362 @@
-// 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:
-// This file contains the definitions of the Simulator TSY Sat functionality.  
-// 
-//
-
-/**
- @file
- @internalAll
-*/
-
-#ifndef __CSIMSAT_H__
-#define __CSIMSAT_H__
-
-#include <et_phone.h>
-#include <testconfigfileparser.h>
-#include "csimtimer.h"
-#include "utils.h"
-#include <etelsat.h>
-
-#define SIMTSY_MMMESSAGE_ADD_INFO_1		_L("KNoSpecificMeProblem")
-#define SIMTSY_MMMESSAGE_ADD_INFO_2		_L("KScreenBusy")
-#define SIMTSY_SET_FRMS_ADD_INFO_1		_L("KRequestSizeNotSupported")
-#define SIMTSY_PRV_LCLINFO_ADD_INFO_1		_L("KNoService")
-#define SIMTSY_SEND_USSD_ADD_INFO		_L("KMeBusyOnUssd")
-#define SIMTSY_SEND_USSD_ADD_INFO_1		_L("KMeBusyOnSs")
-#define SIMTSY_SETUPCALL_ADD_INFO_1		_L("KMeBusyOnCall")
-#define SIMTSY_LNCH_BRWSR_ADD_INFO1		_L("KNoSpecificBrowserError")
-#define SIMTSY_LNCH_BRWSR_ADD_INFO2		_L("KBrowserUnavailable")		
-#define SIMTSY_LNCH_BRWSR_ADD_INFO3		_L("KBearerUnvailable")
-#define SIMTSY_LNCH_BRWSR_ADD_INFO4		_L("KMeUnableToReadProvisioningData")
-#define SIMTSY_SET_FRMS_ADD_INFO_2		_L("KNumberOfFramesExceeded")
-#define SIMTSY_MMS_TRF_FILE_PATH		_L("TransferFilePath")
-#define SIMTSY_MMS_MSG_BUF			_L("MMMessageBuf")
-#define SIMTSY_MMS_MSG_ID			_L("MMMessageIdentifier")
-#define SIMTSY_MMS_INFORMATION			_L("ABCDE")
-#define SIMTSY_MMS_LAST_ENV			0x2A
-#define SIMTSY_UICC_SUCC_RSP			0x9000
-#define SIMTSY_UICC_RETRY_RSP			0x9300
-#define SIMTSY_UICC_FLR_RSP			0x6F00
-#define SIMTSY_UICC_FLR_RSP_1			0x6200
-#define SIMTSY_UICC_FLR_RSP_2			0x6300
-
-#define SIMTSY_PLAYTONE_TESTCASES_NUMBER		0x04
-#define SIMTSY_SETUPCALL_TESTCASES_NUMBER		0x05
-
-class CSimPhone;
-class CSimSat : public CSubSessionExtBase, public MTimerCallBack
-	{
-public:
-	static CSimSat* NewL(CSimPhone* aPhone);
-	CSimSat(CSimPhone* aPhone);
-	void ConstructL();
-	TInt ConfigL(unsigned int);
-	~CSimSat();
-
-	virtual TInt ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,const TDataPackage& aPackage);
-	virtual TReqMode ReqModeL(const TInt aIpc);
-	virtual CTelObject* OpenNewObjectByNameL(const TDesC& aName);
-	virtual CTelObject* OpenNewObjectL(TDes& aNewName);
-	virtual TInt CancelService(const TInt aIpc, const TTsyReqHandle aTsyReqHandle);
-	virtual void Init();
-	virtual TInt RegisterNotification(const TInt aIpc);
-	virtual TInt DeregisterNotification(const TInt aIpc);
-	virtual TInt NumberOfSlotsL(const TInt aIpc);
-
-	const CTestConfigSection* CfgFile();
-
-private:
-	//< The Sat API methods implemented by the TSY
-	//< These will be called from the ExtFunc method above
-	TInt NotifyRefreshPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
-	TInt NotifyRefreshPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyRefreshRequired(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyRefreshRequired(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
-	TInt NotifyRefreshRequiredCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt RefreshAllowed(const TTsyReqHandle aTsyReqHandle, TDes8* aRefreshAllowedRsp);
-	TInt RefreshAllowedCancel(const TTsyReqHandle aTsyReqHandle);
-	
-	
-	TInt NotifyRetrieveMultimediaMsgPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifyRetrieveMultimediaMsgPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifySubmitMultimediaMsgPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifySubmitMultimediaMsgPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyDisplayMultimediaMsgPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifyDisplayMultimediaMsgPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifySetFramesPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifySetFramesPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyGetFramesStatusPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifyGetFramesStatusPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyLocalInfoPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifyLocalInfoPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyOpenChannelPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifyOpenChannelPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyPlayTonePCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifyPlayTonePCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifySetupCallPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifySetupCallPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyRefreshV6PCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
-	TInt NotifyRefreshV6PCmdCancel(const TTsyReqHandle aTsyReqHandle);
-
-	TInt MmsNotificationDownload(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
-	TInt MmsNotificationDownloadCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt MmsTransferStatus(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
-	TInt MmsTransferStatusCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt UssdDataDownload(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
-	TInt UssdDataDownloadCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt EventDownload(const TTsyReqHandle aTsyReqHandle, RSat::TEventList* aPCmd, TDes8* aRsp);
-	TInt EventDownloadCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifySendUssdPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
-	TInt NotifySendUssdPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyGetInkeyPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
-	TInt NotifyGetInkeyPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifySendSsPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
-	TInt NotifySendSsPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt NotifyLaunchBrowserPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
-	TInt NotifyLaunchBrowserPCmdCancel(const TTsyReqHandle aTsyReqHandle);
-		
-	TInt GetMeSideSatProfile(const TTsyReqHandle aTsyReqHandle, TDes8* aMeSimSatProfile);
-	TInt GetMeSideSatProfileCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt ClientSatProfileIndication(const TTsyReqHandle aTsyReqHandle, TDes8* aClientSatProfile);
-
-	TInt TerminalRsp(const TTsyReqHandle aTsyReqHandle, RSat::TPCmd* aPCmd, TDes8* aRsp);
-	TInt TerminalRspCancel(const TTsyReqHandle aTsyReqHandle);
-	TInt RetrieveMultimediaRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt SubmitMultimediaRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt DisplayMultimediaRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt SetFramesRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt GetFramesStatusRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt ProvideLocalInfoRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt OpenChannelRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt PlayToneRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt SetupCallRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt RefreshRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt SendUssdRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt GetInkeyRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-	TInt LaunchBrowserRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
-
-	/* Functions for conversion of Text to Hex */
-	TInt ConvertTextToFileList(const TPtrC8& aText, RSat::TRefreshFileList& aFileList) const;
-	TInt ConvertTextToTBuf242(const TPtrC8& aText, TBuf<242>& aFileList) const;
-	TInt ConvertTextToTBuf243(const TPtrC8& aText, TBuf<243>& aFileList) const;
-	TInt ConvertTextToTBuf254(const TPtrC8& aText, TBuf<254>& aFileList) const;
-	TInt ConvertTextToTBuf255(const TPtrC8& aText, TBuf<255>& aFileList) const;
-	TInt ConvertTextToTBuf4(const TPtrC8& aText, TBuf8<4>& aFileList) const;
-	TInt ConvertTextToTBuf16(const TPtrC8& aText, TBuf8<16>& aFileList) const;
-	
-	TInt randTime(); // Function to generate random Time to simulate asynchronous request handling.
-	virtual void TimerCallBack(TInt aId);	//< Timer Callback for the timeout events
-
-private: // Data
-	CSimPhone* iPhone;		//< Pointer to the phone object (The parent of this class)
-	CSimTimer* iTimer;	//< Pointer to the Timer object for callback
-	
-	struct TSatInfo
-		{
-		TInt iDuration;		// < Duration spent in this refresh state
-		TInt iType;		//< Type of refresh command
-		TPtrC8 iFileList;	//< Optional list of files that need to be refreshed.
-		};
-
-	struct TMMRetrieve
-		{
-		TInt iDestn;		// Destination for the command
-		TInt iAlphaStatus;	// AlphaID status
-		TPtrC8 iAlphaIDBuf;	// AlphaID Buffer
-		TInt iIconID;		// IconID identifier
-		TInt iIconIDBuf;	// IconID qualifier
-		TPtrC8	iMMMsgRef;	// MMMessage Reference
-		TPtrC8  iRcptnFile;	// Reception File
-		TPtrC8  iContentId;	// Content Identifier
-		TPtrC8  iMsgId;		// Message Identifier
-		TInt iTextAttStatus;	// Status for the TextAttribute
-		TPtrC8  iTextAttBuf;	// Buffer for the TextAttribute
-		};
-		
-	struct TMMSubmit
-		{
-		TInt iDestn;		// Destination for the command
-		TInt iAlphaStatus;	// AlphaID status
-		TPtrC8 iAlphaIDBuf;	// AlphaID Buffer
-		TInt iIconID;		// IconID identifier
-		TInt iIconIDBuf;	// IconID qualifier
-		TPtrC8 iSbmsnFile;	// Submission File
-		TPtrC8  iMsgId;		// Message Identifier
-		TInt iTextAttStatus;	// Status for the TextAttribute
-		TPtrC8  iTextAttBuf;	// Buffer for the TextAttribute
-		};
-
-	struct TMMDisplay
-		{
-		TInt iDestn;		// Destination for the command
-		TPtrC8 iSbmsnFile;	// Submission File
-		TPtrC8  iMsgId;		// Message Identifier
-		TInt iImmRsp;		// Immediate response
-		TInt iDispPri;		// Display Priority
-		TInt iClrScr;		// ClearScreen Trigger
-		};
-	
-	struct TSetFrms
-		{
-		TInt iDestn;		// Destination for the command
-		TUint8	iFrmId;		// Frame identifier
-		TInt iFrmLayout;	// Frame layout
-		TPtrC8 iFrmLayoutBuf;// Frame layout buffer
-		TUint8 iDefFrmId;	// Default Frame identifier
-		TInt iFrmSeparator;	// Frame Separator.
-		};
-	
-	struct TGetFrmsSts
-		{
-		TInt iDestn;		// Destination for the command
-		TInt8 iFrmId;		// Frame identifier
-		TPtrC8 iFrmList;	// Frame List
-		};
-	
-  	struct TMmsNotificationDownload
-		{
-		TUint iSrc;			// Source of the command
-		TUint iDestn;		// Destination of the command
-		RSat::TMMSNotification iMMSNotfn;	// MMS Notification information
-		TUint8 iLastEnv;	// last envelope sent to transmit notification into the card.
-		TUint iUICCRsp;		// Response from UICC for the action of the command.
-		};
-	
-	struct TSendUSSD
-		{
-		TInt iTextAttStatus;	// Status for the TextAttribute
-		TPtrC8  iTextAttBuf;	// Buffer for the TextAttribute
-		};
-	
-	struct TUssdData
-		{
-		TUint iSrc;			// Source of the command
-		TUint iDestn;		// Destination of the command
-		TUint8 iDcs;		// Data Coding Scheme
-		TBuf<RSat::KStringMaxSize> iUssdStr;	// USSD String
-		TUint iUICCRsp;		// Response from UICC for the action of the command.
-		};
-	
-	struct TLocalInfo
-		{
-		TUint iDeviceId;	// Destination of the command
-		TUint iLocalInfoType;// LocalInformation type
-		TUint iUTRANQlfr;	// UTRAN Qualifier.
-		};
-	
-	struct TOpenChannel
-		{
-		TUint iBearerType; 	// Bearer Type of the channel.
-		TUint iFrameId;		// Frame identifier of the channel.
-		};
-	
-	struct TMiscPCmd
-		{
-		TUint iFrameId;		// Frame identifier for the Proactive command
-		};
-	
-	struct TEventDnld
-		{
-		TInt iVar;			// iNetworkSearchMode/browsingStatus/iFrameId
-		TPtrC8 iFrameList;	// Frame list
-		};
-	
-	struct TLnchBrwsr
-		{
-		TUint iFrameId;		// Frame identifier for the Proactive command
-		TUint iTerRsp;		// Terminal response
-		};
-	
-	CArrayFixFlat<TSatInfo>* iSatInfo;	// < Array containing all the sat changes for this test.
-	CArrayFixFlat<TSatInfo>* iRefresh;	// < Array containing the information about REFRESH V2 command 
-	CArrayFixFlat<TSatInfo>* iElemFiles;// < Array containing the information about REFRESH command with EF change information
-
-	CArrayFixFlat<TMMRetrieve>* iMMRetrieve;	// < Array containing the MMRetrieve Command info.
-	CArrayFixFlat<TMMSubmit>* iMMSubmit; // < Array containing the MMSubmit Command info.
-	CArrayFixFlat<TMMDisplay>* iMMDisplay;	// < Array containing the MMDisplay Command info.
-	CArrayFixFlat<TSetFrms>* iSetFrms;	// < Array containing the SetFrms Command info.
-	CArrayFixFlat<TGetFrmsSts>* iGetFrmsSts;	// < Array containing the GetFrmsSts Command info.
-	CArrayFixFlat<TMmsNotificationDownload>* iMmsDownloadData;	// < Array containing the MMNotification Command notification info.
-	CArrayFixFlat<TUssdData>* iUssdData; // < Array containing the USSD Data Download Command info.
-	CArrayFixFlat<TLocalInfo>* iLocalInfo;	// < Array containing the PROVIDE LOCAL INFORMATION Command
-	CArrayFixFlat<TOpenChannel>* iOpenChn;	// < Array containing the OPEN CHANNEL Command info.
-	CArrayFixFlat<TMiscPCmd> *iMiscCmd;	// < Array containing the common information of some proactive commands. 
-										// < like PLAYTONE,etc.
-	CArrayFixFlat<TLnchBrwsr>* iLnchBrwsr; // <Array containing the information of LAUNCH BROWSER command.
-	CArrayFixFlat<TEventDnld> *iEventList; //< Array containing the information about the EVENT DOWNLOAD command.
-	CArrayFixFlat<TSendUSSD> *iSendUssd; //< Array containing the information about the SEND USSD command
-	CArrayFixFlat<TSendUSSD> *iSendSS;	//< Array containing the information about the SEND SS command
-	
-	
-	TInt iRetIndex;			// Current index from the iMMRetrieve array
-	TInt iRetTIndex;		// Previous index from the iMMRetrieve array for TerminalRsp
-	TInt iSubIndex;			// Current index from the iMMSubmit array
-	TInt iSubTIndex;		// Previous index from the iMMSubmit array for TerminalRsp
-	TInt iDispIndex;		// Current index from the iMMDisplay array
-	TInt iDispTIndex;		// Previous index from the iMMDispaly array for TerminalRsp
-	TInt iSetFrmsIndex;		// Current index from the iSetFrms array
-	TInt iGetFrmsStsIndex;	// Current index from the iGetFrmsSts array
-	TInt iMmsDownloadDataIndex;		// Current index from the iMMDnld array 
-	TInt iLocalInfoIndex;	// Current index from the iLocalInfo array
-	TInt iOpenChnIndex;		// Current index from the iOpenChn array
-	TInt iMiscCmdIndex;		// Current index from the iMiscCmd array
-	TInt iEventDnldIndex;	// Current index from the iEventList array
-	TInt iSendUssdIndex;	// Current index from the iSendUssd array
-	TInt iSendSsIndex;		// Current index from the iSendSs array
-	TInt iRefreshIndex;		// Current index from the iRefresh array
-	TInt iElemFilesIndex;	// Current index from the iElemFiles array
-	TInt iLnchBrwsrIndex;	// Current index from the iLaunchBrowser array
-	
-	TBool iPendingTerRsp;	// Boolean that contains the information whether a TerminalRsp is pending/not.
-	TBool iSendRspMmsNotificationDownload;// Boolean that contains the information whether to send MMSNtfndnld response/not.
-	TBool iSendRspEventDnld; // Boolean that contains the information whether to send EventDnld response/not.
-	TBool iConfigDone;	// Boolean that carries the information whether the configuration is done / not.
-	TInt iSatIndex;			// < Current index from the iSatInfo array
-	TNotifyData	iNotifyRefresh;	//< Holds the notification data (a flag, TsyReqHandle and any raw data) 
-	TNotifyData	iRefreshRequired; //< Holds the notification data (a flag, TsyReqHandle, data is unused) 
-	TNotifyData	iRefreshAllowed; //< Holds the notification data (a flag, TsyReqHandle, data is unused) 
-	TNotifyData iNotifyRetrieveMM; //Holds the notification data for RETRIEVE MULTIMEDIA MESSAGE COMMAND
-	TNotifyData iNotifySubmitMM; //Holds the notification data for SUBMIT MULTIMEDIA MESSAGE COMMAND
-	TNotifyData	iNotifyDisplayMM; //Holds the notification data for DISPLAY MULTIMEDIA MESSAGE COMMAND
-	TNotifyData iNotifySetFrms; //Holds the notification data for SET FRAMES PROACTIVE COMMAND
-	TNotifyData iNotifyGetFrmsSts; // Holds the notification data for GET FRAMES STATUS PROACTIVE COMMAND
-	TNotifyData iNotifyLocalInfo;	// Holds the notification data for PROVIDE LOCAL INFORMATION command
-	TNotifyData iNotifyOpenChn;		// Holds the notification data for OPEN CHANNEL command
-	TNotifyData iNotifyMiscCmd;		// Holds the notification data for some proactive commands like PLAYTONE,etc.
-	TNotifyData iNotifySendUssd;	// Holds the notification data for SEND USSD data command
-	TNotifyData iNotifySendSs;		// Holds the notification data for SEND SS data command
-	TNotifyData iNotifyLnchBrwsr;	// Holds the notification data for LAUNCH BROWSER command.
-			
-	RSat::TRefreshType iType; //< Holds type of refresh command from config file
-	RSat::TRefreshFileList iFileList; //< Holds file list from config file
-	TInt iConvertTextToFileReturnCode; //< Holds most recent return code for text to file conversion
-	TBool iRefreshRequiredPending; //< Holds a flag to indicate that first phase of refresh required cycle has completed
-	TBool iPlayTone;	//< Holds a flag to indicate whether PLAYTONE testcases are handled or not.
-	TBool iSetupCall;	//< Holds a flag to indicate whether SETUPCALL testcases are handled or not.
-	TBool iGetInkey;	//< Holds a flag to indicate whether GET INKEY testcases are handled or not.
-	TBool iRefreshEf;	//< Holds a flag to indicate whether EFs are updated to be notified by REFRESH command
-	TBool iRefreshV2;	//< Holds a flag to indicate the version of the REFRESH command
-
-	TTsyReqHandle iGetMeSideProfileHandle; // handle to hold the GetMeSideProfile API's handle.
-	TTsyReqHandle iClientSideProfileHandle; // handle to hold the ClientSatSideProfile API's handle.
-	TTsyReqHandle iMMSTransferStatusHandle;	// handle to hold the MMSTransferStatus API's handle.
-	TTsyReqHandle iMmsDownloadDataHandle;	// handle to hold the MMS Notification Download's handle.
-	TTsyReqHandle iEventDnldHandle;	// handle to hold the EVENT DOWNLOAD command's handle. 
-	TTsyReqHandle iUSSDDataDownloadHandle;	// handle to hold the USSD DATA DONWLOAD API's handle. 
-		
-	};
-
-#endif  //__CSimSat_H__
-
+// 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:
+// This file contains the definitions of the Simulator TSY Sat functionality.  
+// 
+//
+
+/**
+ @file
+ @internalAll
+*/
+
+#ifndef __CSIMSAT_H__
+#define __CSIMSAT_H__
+
+#include <et_phone.h>
+#include <testconfigfileparser.h>
+#include "csimtimer.h"
+#include "utils.h"
+#include <etelsat.h>
+
+#define SIMTSY_MMMESSAGE_ADD_INFO_1		_L("KNoSpecificMeProblem")
+#define SIMTSY_MMMESSAGE_ADD_INFO_2		_L("KScreenBusy")
+#define SIMTSY_SET_FRMS_ADD_INFO_1		_L("KRequestSizeNotSupported")
+#define SIMTSY_PRV_LCLINFO_ADD_INFO_1		_L("KNoService")
+#define SIMTSY_SEND_USSD_ADD_INFO		_L("KMeBusyOnUssd")
+#define SIMTSY_SEND_USSD_ADD_INFO_1		_L("KMeBusyOnSs")
+#define SIMTSY_SETUPCALL_ADD_INFO_1		_L("KMeBusyOnCall")
+#define SIMTSY_LNCH_BRWSR_ADD_INFO1		_L("KNoSpecificBrowserError")
+#define SIMTSY_LNCH_BRWSR_ADD_INFO2		_L("KBrowserUnavailable")		
+#define SIMTSY_LNCH_BRWSR_ADD_INFO3		_L("KBearerUnvailable")
+#define SIMTSY_LNCH_BRWSR_ADD_INFO4		_L("KMeUnableToReadProvisioningData")
+#define SIMTSY_SET_FRMS_ADD_INFO_2		_L("KNumberOfFramesExceeded")
+#define SIMTSY_MMS_TRF_FILE_PATH		_L("TransferFilePath")
+#define SIMTSY_MMS_MSG_BUF			_L("MMMessageBuf")
+#define SIMTSY_MMS_MSG_ID			_L("MMMessageIdentifier")
+#define SIMTSY_MMS_INFORMATION			_L("ABCDE")
+#define SIMTSY_MMS_LAST_ENV			0x2A
+#define SIMTSY_UICC_SUCC_RSP			0x9000
+#define SIMTSY_UICC_RETRY_RSP			0x9300
+#define SIMTSY_UICC_FLR_RSP			0x6F00
+#define SIMTSY_UICC_FLR_RSP_1			0x6200
+#define SIMTSY_UICC_FLR_RSP_2			0x6300
+
+#define SIMTSY_PLAYTONE_TESTCASES_NUMBER		0x04
+#define SIMTSY_SETUPCALL_TESTCASES_NUMBER		0x05
+
+class CSimPhone;
+class CSimSat : public CSubSessionExtBase, public MTimerCallBack
+	{
+public:
+	static CSimSat* NewL(CSimPhone* aPhone);
+	CSimSat(CSimPhone* aPhone);
+	void ConstructL();
+	TInt ConfigL(unsigned int);
+	~CSimSat();
+
+	virtual TInt ExtFunc(const TTsyReqHandle aTsyReqHandle,const TInt aIpc,const TDataPackage& aPackage);
+	virtual TReqMode ReqModeL(const TInt aIpc);
+	virtual CTelObject* OpenNewObjectByNameL(const TDesC& aName);
+	virtual CTelObject* OpenNewObjectL(TDes& aNewName);
+	virtual TInt CancelService(const TInt aIpc, const TTsyReqHandle aTsyReqHandle);
+	virtual void Init();
+	virtual TInt RegisterNotification(const TInt aIpc);
+	virtual TInt DeregisterNotification(const TInt aIpc);
+	virtual TInt NumberOfSlotsL(const TInt aIpc);
+
+	const CTestConfigSection* CfgFile();
+
+private:
+	//< The Sat API methods implemented by the TSY
+	//< These will be called from the ExtFunc method above
+	TInt NotifyRefreshPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
+	TInt NotifyRefreshPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyRefreshRequired(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyRefreshRequired(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
+	TInt NotifyRefreshRequiredCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt RefreshAllowed(const TTsyReqHandle aTsyReqHandle, TDes8* aRefreshAllowedRsp);
+	TInt RefreshAllowedCancel(const TTsyReqHandle aTsyReqHandle);
+	
+	
+	TInt NotifyRetrieveMultimediaMsgPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifyRetrieveMultimediaMsgPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifySubmitMultimediaMsgPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifySubmitMultimediaMsgPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyDisplayMultimediaMsgPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifyDisplayMultimediaMsgPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifySetFramesPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifySetFramesPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyGetFramesStatusPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifyGetFramesStatusPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyLocalInfoPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifyLocalInfoPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyOpenChannelPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifyOpenChannelPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyPlayTonePCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifyPlayTonePCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifySetupCallPCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifySetupCallPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyRefreshV6PCmd(const TTsyReqHandle aTsyReqHandle,TDes8* aPCmd);
+	TInt NotifyRefreshV6PCmdCancel(const TTsyReqHandle aTsyReqHandle);
+
+	TInt MmsNotificationDownload(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
+	TInt MmsNotificationDownloadCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt MmsTransferStatus(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
+	TInt MmsTransferStatusCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt UssdDataDownload(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
+	TInt UssdDataDownloadCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt EventDownload(const TTsyReqHandle aTsyReqHandle, RSat::TEventList* aPCmd, TDes8* aRsp);
+	TInt EventDownloadCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifySendUssdPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
+	TInt NotifySendUssdPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyGetInkeyPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
+	TInt NotifyGetInkeyPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifySendSsPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
+	TInt NotifySendSsPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt NotifyLaunchBrowserPCmd(const TTsyReqHandle aTsyReqHandle, TDes8* aPCmd);
+	TInt NotifyLaunchBrowserPCmdCancel(const TTsyReqHandle aTsyReqHandle);
+		
+	TInt GetMeSideSatProfile(const TTsyReqHandle aTsyReqHandle, TDes8* aMeSimSatProfile);
+	TInt GetMeSideSatProfileCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt ClientSatProfileIndication(const TTsyReqHandle aTsyReqHandle, TDes8* aClientSatProfile);
+
+	TInt TerminalRsp(const TTsyReqHandle aTsyReqHandle, RSat::TPCmd* aPCmd, TDes8* aRsp);
+	TInt TerminalRspCancel(const TTsyReqHandle aTsyReqHandle);
+	TInt RetrieveMultimediaRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt SubmitMultimediaRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt DisplayMultimediaRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt SetFramesRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt GetFramesStatusRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt ProvideLocalInfoRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt OpenChannelRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt PlayToneRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt SetupCallRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt RefreshRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt SendUssdRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt GetInkeyRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+	TInt LaunchBrowserRsp(const TTsyReqHandle aTsyReqHandle, TDes8* aRsp);
+
+	/* Functions for conversion of Text to Hex */
+	TInt ConvertTextToFileList(const TPtrC8& aText, RSat::TRefreshFileList& aFileList) const;
+	TInt ConvertTextToTBuf242(const TPtrC8& aText, TBuf<242>& aFileList) const;
+	TInt ConvertTextToTBuf243(const TPtrC8& aText, TBuf<243>& aFileList) const;
+	TInt ConvertTextToTBuf254(const TPtrC8& aText, TBuf<254>& aFileList) const;
+	TInt ConvertTextToTBuf255(const TPtrC8& aText, TBuf<255>& aFileList) const;
+	TInt ConvertTextToTBuf4(const TPtrC8& aText, TBuf8<4>& aFileList) const;
+	TInt ConvertTextToTBuf16(const TPtrC8& aText, TBuf8<16>& aFileList) const;
+	
+	TInt randTime(); // Function to generate random Time to simulate asynchronous request handling.
+	virtual void TimerCallBack(TInt aId);	//< Timer Callback for the timeout events
+
+private: // Data
+	CSimPhone* iPhone;		//< Pointer to the phone object (The parent of this class)
+	CSimTimer* iTimer;	//< Pointer to the Timer object for callback
+	
+	struct TSatInfo
+		{
+		TInt iDuration;		// < Duration spent in this refresh state
+		TInt iType;		//< Type of refresh command
+		TPtrC8 iFileList;	//< Optional list of files that need to be refreshed.
+		};
+
+	struct TMMRetrieve
+		{
+		TInt iDestn;		// Destination for the command
+		TInt iAlphaStatus;	// AlphaID status
+		TPtrC8 iAlphaIDBuf;	// AlphaID Buffer
+		TInt iIconID;		// IconID identifier
+		TInt iIconIDBuf;	// IconID qualifier
+		TPtrC8	iMMMsgRef;	// MMMessage Reference
+		TPtrC8  iRcptnFile;	// Reception File
+		TPtrC8  iContentId;	// Content Identifier
+		TPtrC8  iMsgId;		// Message Identifier
+		TInt iTextAttStatus;	// Status for the TextAttribute
+		TPtrC8  iTextAttBuf;	// Buffer for the TextAttribute
+		};
+		
+	struct TMMSubmit
+		{
+		TInt iDestn;		// Destination for the command
+		TInt iAlphaStatus;	// AlphaID status
+		TPtrC8 iAlphaIDBuf;	// AlphaID Buffer
+		TInt iIconID;		// IconID identifier
+		TInt iIconIDBuf;	// IconID qualifier
+		TPtrC8 iSbmsnFile;	// Submission File
+		TPtrC8  iMsgId;		// Message Identifier
+		TInt iTextAttStatus;	// Status for the TextAttribute
+		TPtrC8  iTextAttBuf;	// Buffer for the TextAttribute
+		};
+
+	struct TMMDisplay
+		{
+		TInt iDestn;		// Destination for the command
+		TPtrC8 iSbmsnFile;	// Submission File
+		TPtrC8  iMsgId;		// Message Identifier
+		TInt iImmRsp;		// Immediate response
+		TInt iDispPri;		// Display Priority
+		TInt iClrScr;		// ClearScreen Trigger
+		};
+	
+	struct TSetFrms
+		{
+		TInt iDestn;		// Destination for the command
+		TUint8	iFrmId;		// Frame identifier
+		TInt iFrmLayout;	// Frame layout
+		TPtrC8 iFrmLayoutBuf;// Frame layout buffer
+		TUint8 iDefFrmId;	// Default Frame identifier
+		TInt iFrmSeparator;	// Frame Separator.
+		};
+	
+	struct TGetFrmsSts
+		{
+		TInt iDestn;		// Destination for the command
+		TInt8 iFrmId;		// Frame identifier
+		TPtrC8 iFrmList;	// Frame List
+		};
+	
+  	struct TMmsNotificationDownload
+		{
+		TUint iSrc;			// Source of the command
+		TUint iDestn;		// Destination of the command
+		RSat::TMMSNotification iMMSNotfn;	// MMS Notification information
+		TUint8 iLastEnv;	// last envelope sent to transmit notification into the card.
+		TUint iUICCRsp;		// Response from UICC for the action of the command.
+		};
+	
+	struct TSendUSSD
+		{
+		TInt iTextAttStatus;	// Status for the TextAttribute
+		TPtrC8  iTextAttBuf;	// Buffer for the TextAttribute
+		};
+	
+	struct TUssdData
+		{
+		TUint iSrc;			// Source of the command
+		TUint iDestn;		// Destination of the command
+		TUint8 iDcs;		// Data Coding Scheme
+		TBuf<RSat::KStringMaxSize> iUssdStr;	// USSD String
+		TUint iUICCRsp;		// Response from UICC for the action of the command.
+		};
+	
+	struct TLocalInfo
+		{
+		TUint iDeviceId;	// Destination of the command
+		TUint iLocalInfoType;// LocalInformation type
+		TUint iUTRANQlfr;	// UTRAN Qualifier.
+		};
+	
+	struct TOpenChannel
+		{
+		TUint iBearerType; 	// Bearer Type of the channel.
+		TUint iFrameId;		// Frame identifier of the channel.
+		};
+	
+	struct TMiscPCmd
+		{
+		TUint iFrameId;		// Frame identifier for the Proactive command
+		};
+	
+	struct TEventDnld
+		{
+		TInt iVar;			// iNetworkSearchMode/browsingStatus/iFrameId
+		TPtrC8 iFrameList;	// Frame list
+		};
+	
+	struct TLnchBrwsr
+		{
+		TUint iFrameId;		// Frame identifier for the Proactive command
+		TUint iTerRsp;		// Terminal response
+		};
+	
+	CArrayFixFlat<TSatInfo>* iSatInfo;	// < Array containing all the sat changes for this test.
+	CArrayFixFlat<TSatInfo>* iRefresh;	// < Array containing the information about REFRESH V2 command 
+	CArrayFixFlat<TSatInfo>* iElemFiles;// < Array containing the information about REFRESH command with EF change information
+
+	CArrayFixFlat<TMMRetrieve>* iMMRetrieve;	// < Array containing the MMRetrieve Command info.
+	CArrayFixFlat<TMMSubmit>* iMMSubmit; // < Array containing the MMSubmit Command info.
+	CArrayFixFlat<TMMDisplay>* iMMDisplay;	// < Array containing the MMDisplay Command info.
+	CArrayFixFlat<TSetFrms>* iSetFrms;	// < Array containing the SetFrms Command info.
+	CArrayFixFlat<TGetFrmsSts>* iGetFrmsSts;	// < Array containing the GetFrmsSts Command info.
+	CArrayFixFlat<TMmsNotificationDownload>* iMmsDownloadData;	// < Array containing the MMNotification Command notification info.
+	CArrayFixFlat<TUssdData>* iUssdData; // < Array containing the USSD Data Download Command info.
+	CArrayFixFlat<TLocalInfo>* iLocalInfo;	// < Array containing the PROVIDE LOCAL INFORMATION Command
+	CArrayFixFlat<TOpenChannel>* iOpenChn;	// < Array containing the OPEN CHANNEL Command info.
+	CArrayFixFlat<TMiscPCmd> *iMiscCmd;	// < Array containing the common information of some proactive commands. 
+										// < like PLAYTONE,etc.
+	CArrayFixFlat<TLnchBrwsr>* iLnchBrwsr; // <Array containing the information of LAUNCH BROWSER command.
+	CArrayFixFlat<TEventDnld> *iEventList; //< Array containing the information about the EVENT DOWNLOAD command.
+	CArrayFixFlat<TSendUSSD> *iSendUssd; //< Array containing the information about the SEND USSD command
+	CArrayFixFlat<TSendUSSD> *iSendSS;	//< Array containing the information about the SEND SS command
+	
+	
+	TInt iRetIndex;			// Current index from the iMMRetrieve array
+	TInt iRetTIndex;		// Previous index from the iMMRetrieve array for TerminalRsp
+	TInt iSubIndex;			// Current index from the iMMSubmit array
+	TInt iSubTIndex;		// Previous index from the iMMSubmit array for TerminalRsp
+	TInt iDispIndex;		// Current index from the iMMDisplay array
+	TInt iDispTIndex;		// Previous index from the iMMDispaly array for TerminalRsp
+	TInt iSetFrmsIndex;		// Current index from the iSetFrms array
+	TInt iGetFrmsStsIndex;	// Current index from the iGetFrmsSts array
+	TInt iMmsDownloadDataIndex;		// Current index from the iMMDnld array 
+	TInt iLocalInfoIndex;	// Current index from the iLocalInfo array
+	TInt iOpenChnIndex;		// Current index from the iOpenChn array
+	TInt iMiscCmdIndex;		// Current index from the iMiscCmd array
+	TInt iEventDnldIndex;	// Current index from the iEventList array
+	TInt iSendUssdIndex;	// Current index from the iSendUssd array
+	TInt iSendSsIndex;		// Current index from the iSendSs array
+	TInt iRefreshIndex;		// Current index from the iRefresh array
+	TInt iElemFilesIndex;	// Current index from the iElemFiles array
+	TInt iLnchBrwsrIndex;	// Current index from the iLaunchBrowser array
+	
+	TBool iPendingTerRsp;	// Boolean that contains the information whether a TerminalRsp is pending/not.
+	TBool iSendRspMmsNotificationDownload;// Boolean that contains the information whether to send MMSNtfndnld response/not.
+	TBool iSendRspEventDnld; // Boolean that contains the information whether to send EventDnld response/not.
+	TBool iConfigDone;	// Boolean that carries the information whether the configuration is done / not.
+	TInt iSatIndex;			// < Current index from the iSatInfo array
+	TNotifyData	iNotifyRefresh;	//< Holds the notification data (a flag, TsyReqHandle and any raw data) 
+	TNotifyData	iRefreshRequired; //< Holds the notification data (a flag, TsyReqHandle, data is unused) 
+	TNotifyData	iRefreshAllowed; //< Holds the notification data (a flag, TsyReqHandle, data is unused) 
+	TNotifyData iNotifyRetrieveMM; //Holds the notification data for RETRIEVE MULTIMEDIA MESSAGE COMMAND
+	TNotifyData iNotifySubmitMM; //Holds the notification data for SUBMIT MULTIMEDIA MESSAGE COMMAND
+	TNotifyData	iNotifyDisplayMM; //Holds the notification data for DISPLAY MULTIMEDIA MESSAGE COMMAND
+	TNotifyData iNotifySetFrms; //Holds the notification data for SET FRAMES PROACTIVE COMMAND
+	TNotifyData iNotifyGetFrmsSts; // Holds the notification data for GET FRAMES STATUS PROACTIVE COMMAND
+	TNotifyData iNotifyLocalInfo;	// Holds the notification data for PROVIDE LOCAL INFORMATION command
+	TNotifyData iNotifyOpenChn;		// Holds the notification data for OPEN CHANNEL command
+	TNotifyData iNotifyMiscCmd;		// Holds the notification data for some proactive commands like PLAYTONE,etc.
+	TNotifyData iNotifySendUssd;	// Holds the notification data for SEND USSD data command
+	TNotifyData iNotifySendSs;		// Holds the notification data for SEND SS data command
+	TNotifyData iNotifyLnchBrwsr;	// Holds the notification data for LAUNCH BROWSER command.
+			
+	RSat::TRefreshType iType; //< Holds type of refresh command from config file
+	RSat::TRefreshFileList iFileList; //< Holds file list from config file
+	TInt iConvertTextToFileReturnCode; //< Holds most recent return code for text to file conversion
+	TBool iRefreshRequiredPending; //< Holds a flag to indicate that first phase of refresh required cycle has completed
+	TBool iPlayTone;	//< Holds a flag to indicate whether PLAYTONE testcases are handled or not.
+	TBool iSetupCall;	//< Holds a flag to indicate whether SETUPCALL testcases are handled or not.
+	TBool iGetInkey;	//< Holds a flag to indicate whether GET INKEY testcases are handled or not.
+	TBool iRefreshEf;	//< Holds a flag to indicate whether EFs are updated to be notified by REFRESH command
+	TBool iRefreshV2;	//< Holds a flag to indicate the version of the REFRESH command
+
+	TTsyReqHandle iGetMeSideProfileHandle; // handle to hold the GetMeSideProfile API's handle.
+	TTsyReqHandle iClientSideProfileHandle; // handle to hold the ClientSatSideProfile API's handle.
+	TTsyReqHandle iMMSTransferStatusHandle;	// handle to hold the MMSTransferStatus API's handle.
+	TTsyReqHandle iMmsDownloadDataHandle;	// handle to hold the MMS Notification Download's handle.
+	TTsyReqHandle iEventDnldHandle;	// handle to hold the EVENT DOWNLOAD command's handle. 
+	TTsyReqHandle iUSSDDataDownloadHandle;	// handle to hold the USSD DATA DONWLOAD API's handle. 
+		
+	};
+
+#endif  //__CSimSat_H__
+