--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/simatktsy_dll/inc/satmessaging.h Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,697 @@
+/*
+* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:
+*
+*/
+
+
+
+#ifndef SATMESSAGING_H
+#define SATMESSAGING_H
+
+// INCLUDES
+#include "cmmmessagerouter.h"
+#include <ctsy/serviceapi/ctsysatmessagingbase.h> // base class ctsysatmessagingbase
+
+#include "tsylogger.h" // tsy logger
+#include <etelsat.h> // etel sat api
+#include <etelmm.h> // etel multimode api
+#include <product_profile_definitions.h> // product profile definitions
+
+// CONSTANTS
+const TInt KZero = 0;
+const TUint8 KPadding = 0;
+
+// MACROS
+ //None
+
+// DATA TYPES
+ //None
+
+// FUNCTION PROTOTYPES
+ //None
+
+// FORWARD DECLARATIONS
+
+// External
+class CMmPhoneTsy;
+class CMmPhoNetSender;
+class CMmPhoNetReceiver;
+class CMmSmsTsy;
+class CMmMessageRouterBase;
+class TIsiReceiveC;
+
+// Internal
+class CSatMessHandler;
+class CSatCC;
+class CSatTimer;
+class CSatEventDownload;
+class CSatDataDownload;
+class CSatIcon;
+class CSatMoSmsCtrl;
+class TTransIdMessage;
+class CSatFlightModeStatus;
+class TTlv;
+
+// Notifications
+class CSatNotifyDisplayText;
+class CSatNotifyGetInkey;
+class CSatNotifyGetInput;
+class CSatNotifyPlayTone;
+class CSatNotifySetUpMenu;
+class CSatNotifySelectItem;
+class CSatNotifySendSm;
+class CSatNotifySendSs;
+class CSatNotifySendUssd;
+class CSatNotifySetUpCall;
+class CSatNotifyRefresh;
+class CSatNotifySimSessionEnd;
+class CSatNotifySetUpIdleModeText;
+class CSatNotifyLaunchBrowser;
+class CSatNotifyCallControlRequest;
+class CSatNotifyPollInterval;
+class CSatNotifySendDtmf;
+class CSatNotifySetUpEventList;
+class CSatNotifyPollingOff;
+class CSatNotifyLocalInfo;
+class CSatNotifyTimerMgmt;
+class CSatNotifyMoreTime;
+class CSatNotifyLanguageNotification;
+class CSatNotifyOpenChannel;
+class CSatNotifyGetChannelStatus;
+class CSatNotifyCloseChannel;
+class CSatNotifyReceiveData;
+class CSatNotifySendData;
+class CSatNotifyMoSmControlRequest;
+
+// CLASS DECLARATION
+/**
+* Sat notifications base class.
+* Sat Messaging class.
+* Each SAT proactive command has its own class, which holds the information
+* relevant to the command in question. All proactive command classes are
+* created when CTsySatMessaging object is created. This way each proactive
+* command is handled by its own notify class. The proactive commands are
+* encapsulated to individual classes in order to simplify the design and
+* updating.
+* This class also handles SAT originated SMS message sending and menu
+* selection in SAT. All not supported functions are completed here.
+*
+* @lib SIMATKTSY.LIB
+* @since Series 60 Series60_2.6
+*/
+class CTsySatMessaging : public CTsySatMessagingBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aMmPhone pointer to mmphone class
+ * @param aSatMessHandler pointer to satmessagehandler class
+ * @param aName Sat application fixed name
+ */
+ IMPORT_C static CTsySatMessaging* NewL(
+ #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32)
+ CMmPhoneTsy* aMmPhone, CMmMessageRouterBase* aRouter, TName aName );
+ #else
+ CMmMessageRouter* aRouter );
+ #endif //NCP_COMMON_S60_VERSION_SUPPORT
+
+ /**
+ * Destructor.
+ */
+ virtual ~CTsySatMessaging();
+
+
+ private: // Constructors
+
+ /**
+ * C++ default constructor.
+ * @since Series 60 Series60_2.6
+ * @param aMmPhone pointer to mmphone class
+ * @param aSatMessHandler pointer to satmessagehandler class
+ * @param aName Sat application fixed name
+ */
+ CTsySatMessaging(
+ #if (NCP_COMMON_S60_VERSION_SUPPORT==S60_VERSION_32)
+ CMmPhoneTsy* aMmPhone, CMmPhoNetSender* aPnSend, CMmPhoNetReceiver* aPnReceive, TName aName );
+ #else
+ CMmPhoNetSender* aPnSend, CMmPhoNetReceiver* aPnReceive, CMmMessageRouter* aRouter );
+ #endif //NCP_COMMON_S60_VERSION_SUPPORT
+
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Copy constructor, usage not allowed
+ * @since Series 60 Series60_2.6
+ * @param Satmesshandler reference
+ */
+ CTsySatMessaging( const CTsySatMessaging& aRhs );
+
+ /**
+ * Assignment operator, usage not allowed
+ * @since Series 60 Series60_2.6
+ * @param Satmesshandler reference
+ * @return SatMessHandler reference
+ */
+ CTsySatMessaging& operator = ( const CTsySatMessaging& aRhs );
+
+
+ public: // Functions from base classes
+
+ /**
+ * Opens a new object identified by a name.
+ * @since Series 60 Series60_2.6
+ * @param aName Name to open
+ * @return TelObject pointer to a telephony object
+ */
+ CTelObject* OpenNewObjectByNameL( const TDesC& aName );
+
+ /**
+ * Opens a new object identified by new name. Can leave.
+ * Not in use.
+ * @since Series 60 Series60_2.6
+ * @param aNewName Name to open
+ * @return TelObject pointer to a telephony object
+ */
+ CTelObject* OpenNewObjectL( TDes& aNewName );
+
+ /**
+ * Command handler for ETel server messages. The IPC identifies
+ * the command to be executed if supported.
+ * @since Series 60 Series60_2.6
+ * @param aTsyReqHandle TsyReqHandle
+ * @param aIpc command identifier
+ * @param aPackage Data pointer
+ * @return status
+ */
+ TInt ExtFunc( const TTsyReqHandle aTsyReqHandle,
+ const TInt aIpc, const TDataPackage& aPackage );
+
+ /**
+ * ReqMode method for checking what modes this component supports
+ * @since Series 60 Series60_2.6
+ * @param aIpc command identifier
+ * @return reqmode
+ */
+ CTelObject::TReqMode ReqModeL( const TInt aIPC );
+
+ /**
+ * Cancels the ongoing service
+ * @since Series 60 Series60_2.6
+ * @param aIpc command identifier
+ * @param aTsyReqHandle TsyReqHandle
+ * @return status
+ */
+ TInt CancelService( const TInt aIpc,
+ const TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Initializer method that is called by ETel Server
+ * @since Series 60 Series60_2.6
+ * @param none
+ * @return none
+ */
+ void Init();
+
+ /**
+ * Register given command, checks if the given command is supported
+ * @since Series 60 Series60_2.6
+ * @param aIpc command identifier
+ * @return TInt status
+ */
+ TInt RegisterNotification( const TInt aIpc );
+
+ /**
+ * DeRegister given command, checks if the given command is supported
+ * @since Series 60 Series60_2.6
+ * @param aIpc command identifier
+ * @return TInt status
+ */
+ TInt DeregisterNotification( const TInt aIpc );
+
+ /**
+ * Returns number of slots to be used for given IPC
+ * @since Series 60 Series60_2.6
+ * @param aIpc command identifier
+ * @return TInt status
+ */
+ TInt NumberOfSlotsL( const TInt aIpc );
+
+
+ public: // New methods
+
+ /**
+ * Handles an incoming proactive command from ISA CellMo SIM server
+ * Called by CSatMessHandler when it receives proactive command ISI msg
+ * originated by ISA CellMo SIM server.
+ * @since NCP 5.0
+ * @param aIsiMessage received proactive command ISI msg
+ * @return none
+ */
+ void PCmdReceivedL( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Notifies client about end of session
+ * @since NCP 5.0
+ * @param aIsiMsg
+ * @return none
+ */
+ void SessionEnd( const TIsiReceiveC& /*aIsiMessage*/ );
+
+ /**
+ * Notifies Etel SAT client about call control event
+ * This method is actually used only when an alpha id is present.
+ * This is a design desicion, though it could be possible to notify ETel
+ * SAT client everytime there is a call control result.
+ * @since Series 60 Series60_2.6
+ * @param aAlphaId alpha identifier
+ * @param TControlResult result
+ * @return none
+ */
+ void NotifyClientAboutCallControlEvent( TDesC& aAlphaId,
+ RSat::TControlResult aResult );
+
+ /**
+ * Notifies Etel SAT client about call control event
+ * @param aCcResult CC result from SIM application mapped to ISA value
+ * @param aEnvelopeResponse response from SIM application
+ * @return none
+ */
+ void NotifyClientAboutCallControlEventL( const TUint8 aCcResult,
+ TPtrC8 aEnvelopeResponse );
+
+ /**
+ * Notifies Etel SAT client about GPRS call control event
+ * This method is actually used only when an alpha id is present.
+ * This is a design desicion, though it could be possible to notify ETel
+ * SAT client everytime there is a call control result.
+ * @param aAlphaId alpha identifier
+ * @param TControlResult result
+ * @return none
+ */
+ void NotifyClientAboutGprsCallControlEvent(
+ const TDesC& aAlphaId,
+ const RSat::TControlResult aResult );
+
+ /**
+ * Notifies client about Mo-Sms control event
+ * This method is actually used only when an alpha id is present.
+ * This is a design desicion, though it could be possible to notify ETel
+ * SAT client everytime there is a MoSm control result.
+ * @since Series 60 Series60_2.6
+ * @param aAlphaId alpha identifier
+ * * !!! RSat::TAlphaIdBuf& would have been better...
+ * @param TControlResult result
+ * @return none
+ */
+ void NotifyClientAboutMoSmControlEvent( TDesC& aAlphaId,
+ RSat::TControlResult aResult );
+
+ /**
+ * Processes ISI messages that are relevant for event download
+ * Called by CSatMessHandler when it receives an ISI msg
+ * @since Series 60 Series60_3.0
+ * @param aIsiMessage Pointer to an ISI msg
+ * @return none
+ */
+ void EventDownloadReceived( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Processes ISI messages that are relevant for call control
+ * Called by CSatMessHandler when it receives ISI msg
+ * @since NCP 3.1
+ * @param aIsiMessage received ISI message
+ * @return none
+ */
+ void CallControlReceivedL( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Processes ISI messages that are relevant for data download
+ * Called by CSatMessHandler when it receives an ISI msg
+ * @since NCP 5.0
+ * @param aIsiMessage received ISI message
+ * @return none
+ */
+ void DataDownloadReceivedL( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * Processes ISI messages that are relevant for Mo-Sms Ctrl
+ * Called by CSatMessHandler when it receives an ISI msg
+ * @since NCP 5.0
+ * @param aIsiMessage received ISI message
+ * @return none
+ */
+ void MoSmsControlReceived( const TIsiReceiveC& aIsiMessage );
+
+ /**
+ * This methods returns ETrue if MoSmControl
+ * is activated. Otherwise, it returns EFalse
+ * @since Series 60 Series60_2.6
+ * @param None
+ * @return TBool, is MoSmControl activated or not
+ */
+ TBool IsMoSmControlBySimActivated();
+
+ /**
+ * Set up requested events that have to be reported to the SIM
+ * @since Series 60 Series60_2.6
+ * @param aEvents bit mask
+ * @return none
+ */
+ void SetUpEventList( TUint32 aEvents );
+
+ /**
+ * Terminal response command handler from ETel SAT client application.
+ * @since Series 60 Series60_2.6
+ * @param aPCmd proactive command Id
+ * @param sRsp response structure
+ * @param aTsyReqHandle TsyReqHandle
+ * @return status
+ */
+ TInt TerminalResponse( RSat::TPCmd* aPCmd, TDes8* aRsp,
+ TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Menu selection command handler from ETel SAT client application.
+ * @since Series 60 Series60_2.6
+ * @param aSelection command structure
+ * @param aTsyReqHandle TsyReqHandle
+ * @return status
+ */
+ TInt MenuSelection( TDes8* aSelection, TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Cell broadcast data download from ETel SAT client application
+ * Not in use. CellBroadcast DDL is handled in CSatDataDownload class.
+ * @since Series 60 Series60_2.6
+ * @param aPackage containing the Pdu of the messsage
+ * @param aTsyReqHandle Telephony service request handle
+ * @return status
+ */
+ TInt NotifyCbDownload( TDes8* aPackage, TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Sms-Pp data download from ETel SAT client application
+ * Not in use. Sms-Pp DDL is handled in CSatDataDownload class.
+ * @since Series 60 Series60_2.6
+ * @param aPackage containing the addresses and the Sms Tpdu
+ * @param aTsyReqHandle Telephony service request handle
+ * @return status
+ */
+ TInt NotifySmsPpDownload( TDes8* aPackage,
+ TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Send SMS No Logging command handler from client application.
+ * @since Series 60 Series60_2.6
+ * @param aMsg Pointer to descriptor containing a command structure.
+ * @param aMsgRef Pointer to descriptor containing a command structure.
+ * @param aTsyReqHandle TsyReqHandle
+ * @return status
+ */
+ TInt SendMessageNoLoggingL( TDes8* aMsg, TUint16* aMsgRef,
+ TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Completes a SAT Originated SMS sending request to Etel SAT client
+ * with the corresponding outcome.
+ * @since Series 60 Series60_2.6
+ * @param status was sending successfull/unsuccessfull
+ * @return status
+ */
+ TInt CompleteSendSmsMessage( TInt aStatus );
+
+ /**
+ * Returns pointer to the SatMessHandler instance
+ * @since Series 60 Series60_2.6
+ * @return SatMessHandler*: SAT message handler pointer
+ */
+ CSatMessHandler* GetSatMessHandler();
+
+ /**
+ * Returns pointer to the CSatFlightModeStatus instance
+ * @return CSatFlightModeStatus* Pointer to CSatFlightModeStatus
+ */
+ CSatFlightModeStatus* GetSatFlightModeStatus();
+
+ /**
+ * Timer Expiration handler
+ * @since Series 60 Series60_2.6
+ * @param TInt aTimerId: timer identification
+ * @param TUint32 aTimerValue: timer value
+ * @return status
+ */
+ TInt TimerExpiration( TInt aTimerId, TUint32 aTimerValue );
+
+ /**
+ * Returns pointer to the SatTimer instance
+ * @since Series 60 Series60_2.6
+ * @return CSatTimer*
+ */
+ CSatTimer* GetSatTimer();
+
+ /**
+ * Returns pointer to the CSatNotifyRefresh instance
+ * @since Series 60 Series60_2.6
+ * @return CSatNotifyRefresh*
+ */
+ CSatNotifyRefresh* GetNotifyRefresh();
+
+ /**
+ * Returns pointer to the CSatDataDownload instance
+ * @since Series 60 Series60_2.6
+ * @return CSatDataDownload*
+ */
+ CSatDataDownload* GetDataDownload();
+
+ /**
+ * Returns pointer to the NotifyLocalInfo instance
+ * @since Series 60 Series60_2.6
+ * @return CSatNotifyLocalInfo*
+ */
+ CSatNotifyLocalInfo* GetNotifyLocalInfo();
+
+ /**
+ * Returns pointer to the NotifyPollInterval instance
+ * @since Series 60 Series60_2.6
+ * @return CSatNotifyPollInterval*
+ */
+ CSatNotifyPollInterval* GetNotifyPollInterval();
+
+ /**
+ * Returns pointer to the NotifyPollingOff instance
+ * @since Series 60 Series60_2.6
+ * @return CSatNotifyPollingOff*
+ */
+ CSatNotifyPollingOff* GetNotifyPollingOff();
+
+ /**
+ * Returns pointer to the CSatMoSmsCtrl instance
+ * @since Series 60 Series60_2.6
+ * @return CSatMoSmsCtrl*
+ */
+ CSatMoSmsCtrl* GetMoSmsCtrl();
+
+ /**
+ * Returns pointer to the CSatEventDownload instance
+ * @since Series 60 Series60_3.0
+ * @return CSatEventDownload*
+ */
+ CSatEventDownload* GetEventDownload();
+
+ /**
+ * Get new transaction id
+ * @since Series 60 Series60_2.6
+ * @return new transaction id
+ */
+ TUint8 GetTransactionId();
+
+ /**
+ * Sat ready indication
+ * This method is used to retrieve a proactive command ISI message
+ * which was received by the Nokia TSY CPhonetReceiver before the
+ * creation of CSatMessaging and CSatMessHandler instances.
+ * @since Series 60 Series60_2.6
+ * @param TUint8: Message to be retrieved.
+ * @return TInt: success/failure if msg was found
+ */
+ TInt SatReady( TUint8 aMsg );
+
+ /**
+ * Clears the array containing call control event data, due to
+ * a refresh PCmd.
+ * @since Series 60 Series60_2.6
+ * @return none
+ */
+ void ClearCCArrays();
+
+ /**
+ * Returns pointer to the SatIcon instance
+ * @since Series 60 Series60_2.6
+ * @return CSatIcon*
+ */
+ CSatIcon* GetSatIcon();
+
+ /**
+ * Cache call connected envelope
+ * @since Series 60 Series60_2.6
+ * @param aEnvelope reference to descriptor containing
+ * envelope data.
+ * @return none
+ */
+ void StoreCallConnectedEvent( const TDesC8& aEnvelope );
+
+ /**
+ * Updates the status of SetUpCall command in SatEventDownload instance.
+ * @since Series 60 Series60_2.6
+ * @param aStatus
+ * @return none
+ */
+ void SetSetUpCallStatus( const TBool aStatus );
+
+ /**
+ * Set CSatCC internal flag according to EF-SimServiceTable.
+ * The flag tells whether Ussd TLV is supported in Call Control by SIM.
+ * @since Series 60 Series60_2.6
+ * @param aStatus
+ * @return none
+ */
+ void SetStatusOfUssdSupport( const TBool aStatus );
+
+ /**
+ * Set CSatCC internal Ton and Npi
+ * @since Series 60 Series60_2.6
+ * @param aTonNpi
+ * @return none
+ */
+ void SetTonNpi( const TUint8 aTonNpi );
+
+ /**
+ * Requests the storing of SMS message from CommonTSY
+ * @since NCP 5.0
+ * @param aSmsEntry SMS entry to be stored
+ * @return ErrorCode returned by CommonTSY
+ */
+ TInt StoreSmsL( RMobileSmsStore::TMobileGsmSmsEntryV1& aSmsEntry );
+
+#if ( NCP_COMMON_S60_VERSION_SUPPORT >= S60_VERSION_50 )
+ /**
+ * Returns pointer to message router instance
+ * @return pointer to message router
+ */
+ CMmMessageRouter* GetMessageRouter();
+#endif
+
+ private: // New methods
+
+ /**
+ * Handles extended ETel SAT client requests, received from ExtFunc
+ * @since Series 60 Series60_2.6
+ * @param aTsyReqHandle TsyReqHandle
+ * @param aIpc command identifier
+ * @param aPackage Data pointer
+ * @return status
+ */
+ TInt DoExtFuncL( const TTsyReqHandle aTsyReqHandle, const TInt aIpc,
+ const TDataPackage& aPackage );
+
+ /**
+ * The (U)SAT client calls this method to inform the TSY that it has
+ * posted all the relevant (U)SAT notifications and is ready to receive
+ * the (U)SAT Commands.
+ * @since PP5.2
+ * @param TTsyReqHandle aTsyReqHandle
+ * @return none
+ */
+ void UsatClientReadyIndication( TTsyReqHandle aTsyReqHandle );
+
+ private: // Data
+
+ // Proactive command class instances
+ // created when this class is created, all classes
+ // need pointers to this class and to satmesshandler
+ // class
+ CSatNotifyDisplayText* iNotifyDisplayText;
+ CSatNotifyGetInkey* iNotifyGetInkey;
+ CSatNotifyGetInput* iNotifyGetInput;
+ CSatNotifyPlayTone* iNotifyPlayTone;
+ CSatNotifySetUpMenu* iNotifySetUpMenu;
+ CSatNotifySelectItem* iNotifySelectItem;
+ CSatNotifySendSm* iNotifySendSm;
+ CSatNotifySendSs* iNotifySendSs;
+ CSatNotifySendUssd* iNotifySendUssd;
+ CSatNotifySetUpCall* iNotifySetUpCall;
+ CSatNotifyRefresh* iNotifyRefresh;
+ CSatNotifySimSessionEnd* iNotifySimSessionEnd;
+ CSatNotifySetUpIdleModeText* iNotifySetUpIdleModeText;
+ CSatNotifyLaunchBrowser* iNotifyLaunchBrowser;
+ CSatNotifyCallControlRequest* iNotifyCallControlRequest;
+ CSatNotifyPollInterval* iNotifyPollInterval;
+ CSatNotifySendDtmf* iNotifySendDtmf;
+ CSatNotifySetUpEventList* iNotifySetUpEventList;
+ CSatNotifyPollingOff* iNotifyPollingOff;
+ CSatNotifyLocalInfo* iNotifyLocalInfo;
+ CSatNotifyTimerMgmt* iNotifyTimerMgmt;
+ CSatNotifyMoreTime* iNotifyMoreTime;
+ CSatNotifyLanguageNotification* iNotifyLanguageNotification;
+ CSatNotifyOpenChannel* iNotifyOpenChannel;
+ CSatNotifyGetChannelStatus* iNotifyGetChannelStatus;
+ CSatNotifyCloseChannel* iNotifyCloseChannel;
+ CSatNotifyReceiveData* iNotifyReceiveData;
+ CSatNotifySendData* iNotifySendData;
+ CSatNotifyMoSmControlRequest* iNotifyMoSmControlRequest;
+
+ // Implemented in by cpp/h files in SimAtkTsy:
+ CSatEventDownload* iEventDownload;
+ CSatTimer* iSatTimer;
+ CSatCC* iSatCC;
+ CSatDataDownload* iSatDataDownload;
+ CSatIcon* iSatIcon;
+ CSatMoSmsCtrl* iSatMoSmsCtrl;
+ TTransIdMessage* iTransIdMsg;
+ CSatFlightModeStatus* iSatFlightModeStatus;
+
+ // Satmesshandler class, responsible for
+ // sending ISI messages to via NokiaTSY CMmPhonetSender and receiving
+ // ISI messages via Nokia TSY CMmPhonetReceiver.
+ CSatMessHandler* iSatMessHandler;
+
+ // Pointer to main PhoneTsy class of CommonTSY component
+ CMmPhoneTsy* iMmPhone;
+
+ // Pointer to ISI message sending class of NokiaTSY component
+ CMmPhoNetSender* iPnSend;
+
+ // Pointer to ISI message receiving class of NokiaTSY component
+ CMmPhoNetReceiver* iPnReceive;
+
+ // Fixed sat application name
+ TName iSatAppName;
+
+ // Request handle for SAT SMS sending to MMSMS of CommonTSY component
+ TTsyReqHandle iSendSmsTsyReqHandle;
+
+ // Message router
+ CMmMessageRouter* iRouter;
+
+ };
+
+#endif // SATMESSAGING_H
+
+// End of File