--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/inc/CSimSat.h Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +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__
+