adaptationlayer/tsy/nokiatsy_dll/inc/cmmsupplservmesshandler.h
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/inc/cmmsupplservmesshandler.h	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,833 @@
+/*
+* Copyright (c) 2007-2008 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: 
+*
+*/
+
+
+
+
+//  INCLUDES
+#ifndef CMMSUPPLSERVMESSHANDLER_H
+#define CMMSUPPLSERVMESSHANDLER_H
+
+#include <e32base.h> // Symbian base types
+#include <etelmm.h>  // ETel base types
+#include <ctsy/rmmcustomapi.h>
+
+#include "cmmphonetreceiver.h"
+#include "mmmmesshandlerbase.h"
+#include "muiccoperationbase.h"
+
+// CONSTANTS
+    //none
+
+// MACROS
+    //none
+
+// DATA TYPES
+    //none
+
+// FUNCTION PROTOTYPES
+    //none
+
+// FORWARD DECLARATIONS
+class CMmDataPackage;
+class CMmMessageRouter;
+class CMobilePhoneCFList;
+class CMobilePhoneCBList;
+class CMobilePhoneCWList;
+class CMmPhoNetSender;
+class TIsiReceiveC;
+class CMmUiccMessHandler;
+
+// CLASS DECLARATION
+
+// DESCRIPTION
+
+/**
+* Simple data container to be passed via function parameters
+*/
+class TPreprocessedSsServiceCompleteResponse
+    {
+    public:
+        TPreprocessedSsServiceCompleteResponse(
+            const TIsiReceiveC& aIsiMessage ) :
+            iIsiMessage( aIsiMessage )
+            {}
+    public:
+        const TIsiReceiveC& iIsiMessage;
+        TUint8 iTraId;
+        TUint8 iNumSubBlocks;
+        TUint8 iOperation;
+        TUint8 iBasicService;
+        TUint16 iSsCode;
+    };
+
+// DESCRIPTION
+
+/**
+* Used for creating and sending SS ISI messages to
+* PhoNet via PhoNetSender. It also receives SS
+* ISI messages from PhoNetReceiver.
+*
+*  @lib (unknown)
+*  @since 2.6
+*/
+class CMmSupplServMessHandler
+    : public CBase, public MMmMessHandlerBase, public MMmMessageReceiver,
+    public MUiccOperationBase
+    {
+    public: // types
+        // none
+
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @param aPhoNetSender Pointer to the Phonet sender
+        * @param aPhoNetReceiver Pointer to the phonet receiver
+        * @param aMessageRouter Pointer to the message router
+        * @return created message handler object
+        */
+        static CMmSupplServMessHandler* NewL(
+            CMmPhoNetSender* aPhoNetSender,
+            CMmPhoNetReceiver* aPhoNetReceiver,
+            CMmMessageRouter* aMessageRouter,
+            CMmUiccMessHandler* aUiccMessHandler );
+
+        /**
+        * Destructor.
+        */
+        ~CMmSupplServMessHandler();
+
+    public: // Methods from base classes
+
+        /**
+        * From MMmMessHandlerBase. This method is the single entry point for
+        * requests coming from the Symbian OS layer to this message handler
+        * @param aIpc IPC number of the request
+        * @return TInt KErrNone or error code
+        */
+        TInt ExtFuncL( TInt aIpc, const CMmDataPackage* aDataPackage );
+
+        /**
+         * Handle UICC response messages
+         * @param aTraId Transaction ID
+         * @param aFileData File data
+         * @return KErrNone or error code
+         */
+         TInt ProcessUiccMsg(
+             TInt aTraId,
+             TInt aStatus,
+             const TDesC8& aFileData );
+
+    public: // New functions
+
+        /**
+        * Handles a received message by calling the specific
+        * message handling method.
+        * @param aIsiMessage, reference to the received message.
+        */
+        void ReceiveMessageL( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Handles errors comes from PhoNetReceiver RunError
+        * @param CIsiMsg* aIsiMsg: The received ISI message
+        * @param TInt aError: Error code
+        */
+        void HandleError( const TIsiReceiveC&, TInt aError );
+
+        /**
+        * Maps Symbian OS number type to ISI values
+        * @param aMmTypeOfNumber Symbian OS type of number
+        * @param aMmNumberingPlan Symbian OS numbering plan
+        * @return aIsiTypeOfNumber ISI type of number
+        */
+        static void MapTypeOfNumberMmToIsi(
+            RMobilePhone::TMobileTON aMmTypeOfNumber,
+            RMobilePhone::TMobileNPI aMmNumberingPlan,
+            TUint8& aIsiTypeOfNumber );
+
+        /**
+        * Updates internal variable that keeps track of which ALS line is used
+        * @param RMobilePhone::TMobilePhoneALSLine& aAlsLine : ALS line
+        * @param return void: None
+        */
+        void SetVoiceCallForwardLine(
+            RMobilePhone::TMobilePhoneALSLine& aAlsLine );
+
+    private: // New functions
+
+        /**
+        * Completes NotifySendNetworkServiceRequest in error case
+        * @param const TIsiReceiveC &aIsiMessage  Reference to the received
+        *  message.
+        */
+        void SsStatusInd( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Completes NotifySendNetworkServiceRequest in succesful case
+        * @param const TIsiReceiveC &aIsiMessage  Reference to the received
+        *  message.
+        */
+        void SsCompleteInd( const TIsiReceiveC &aIsiMessage );
+
+    private: // types
+
+        // The SS operations are grouped into
+        // the following types. Used as ISA transaction IDs.
+        enum TSSOperationType
+            {
+            ESSOperationTypeUnknown = 0,
+            ESSOperationTypeGetCallForwardingStatus,
+            ESSOperationTypeSetCallForwardingStatus,
+            ESSOperationTypeGetCallBarringStatus,
+            ESSOperationTypeSetCallBarringStatus,
+            ESSOperationTypeGetCallWaitingStatus,
+            ESSOperationTypeSetCallWaitingStatus,
+            ESSOperationTypeSetSSPassword,
+            ESSOperationTypeGetIdentityServiceStatus,
+            ESSOperationTypeSendNetworkServiceRequest,
+            ESSOperationTypeSendNetworkServiceRequestNoFdnCheck
+            };
+
+    private: // Constructors
+
+        /**
+        * C++ default constructor.
+        */
+        CMmSupplServMessHandler();
+
+        /**
+        * 2nd phase constructor
+        */
+        void ConstructL();
+
+    private: // New methods
+
+        /**
+        * Construct a SS_SERVICE_NO_SIMATK_REQ ISI message and adds
+        * SS_GSM_SIMATK_INFO subblock to message
+        * @param TUint8 aTrId: transaction id
+        * @param TUint8 aOperation: operation type
+        * @param TUint16 aServiceCode: SS code
+        * @param TUint8 aBasicServiceCode: basic service code
+        * @param TDesC& ssInfoA: service info A
+        * @return TInt: KErrNone or error code
+        */
+        TInt CreateServiceReqWithCheckInfo(
+            const TUint8 aTrId,
+            const TUint8 aOperation,
+            const TUint16 aServiceCode,
+            const TUint8 aBasicServiceCode );
+
+        /**
+        * Calls appropiate function for creating SS_SERVICE_NO_SIMATK_REQ,
+        * based on SS code
+        * @param  TUint8 aTrId: transaction id
+        * @param  TInt aOperation: operation type
+        * @param  TInt aServiceCode: SS code
+        * @param  TDesC& ssInfoA: SS info A
+        * @param  TDesC& ssInfoB: SS info B
+        * @param  TDesC& ssInfoC: SS info C
+        * @return TInt: KErrNone or error code
+        */
+        TInt SsServiceReqSatOriginated(
+            const TUint8 aTrId,
+            const TUint8 aOperation,
+            const TUint16 aServiceCode,
+            const TDesC& ssInfoA,
+            const TDesC& ssInfoB,
+            const TDesC& ssInfoC );
+
+        /**
+        * Construct a SS_REQUEST ISI message for Call Forwarding request.
+        * @param TUint8 aTransactionId: transaction identifier
+        * @param TUint8 aOperation: operation
+        * @param TUint16 aMmiSsCode: SS code
+        * @param TUint8 aTypeOfNumber: type of number
+        * @param TInt aNoReplyTime: reply timer
+        * @param TDesC16 const * aForwToNumber: number for setting call forwarding
+        * @param TUint8 aBasicServiceCode: SS basic service code
+        * @return TInt : KErrNone or error code
+        */
+        TInt SsCallForwServiceReq(
+            TUint8 aTransactionId,
+            TUint8 aOperation,
+            TUint16 aMmiSsCode,
+            TUint8 aTypeOfNumber,
+            TInt aNoReplyTime,
+            TDesC16 const* aForwToNumber,
+            TUint8 aBasicServiceCode );
+
+        /**
+        * Breaks a SS_SERVICE_COMPLETED_RESP ISI-message and gets GSM specific
+        * sub blocks.
+        * @param CIsiMsg* aIsiMsg: isi message
+        * @return void : None
+        */
+        void SsServiceCompletedRespL( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks a SS_SERVICE_FAILED_RESP ISI-message and gets data from
+        * GSM specific sub blocks.
+        * @param CIsiMsg* aIsiMsg: isi message
+        * @return void : None
+        */
+        void SsServiceFailedResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks a SS_SERVICE_NOT_SUPPORTED_RESP ISI-message and gets data from
+        * GSM specific sub blocks.
+        * @param CIsiMsg* aIsiMsg: isi message
+        * @return void : None
+        */
+        void SsServiceNotSupportedResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Breaks a SS_GSM_FORWARDING sub block.
+        * @param CSsSubBlock* aSubBlock: Ss sub block
+        * @param TUint16 aSsCode: SS condition
+        * @return void : None
+        */
+        void HandleSsGsmForwardingSubBlockL(
+            const TIsiReceiveC &aIsiMessage,
+            TUint aSbStartOffset,
+            TUint16 aSsCode );
+
+        /**
+        * Breaks a SS_BSC_INFO sub block which is coming with a
+        * Call Barring status response
+        * @param const TIsiReceiveC &aIsiMessage
+        * @param TUint aSbStartOffset
+        * @param TUint16 aSsCode: service code (barring condition)
+        * @return void : None
+        */
+        void HandleBarringSsGsmBscInfoSubBlockL(
+            const TIsiReceiveC &aIsiMessage,
+            TUint aSbStartOffset,
+            TUint16 aSsCode );
+
+        /**
+        * Breaks a SS_BSC_INFO sub block which is coming with a
+        * Call Waiting status response
+        * @param const TIsiReceiveC &aIsiMessage
+        * @param TUint aSbStartOffset: sub block offset
+        * @return void : None
+        */
+        void HandleWaitingSsGsmBscInfoSubBlockL(
+            const TIsiReceiveC &aIsiMessage,
+            TUint aSbStartOffset );
+
+        /**
+        * Description: construct a SS_SERVICE_REQ ISI message with
+        * SS_GSM_PASSWORD sub block for Call Barring request.
+        * @param TUint8 aTransactionId: transaction identifier
+        * @param TUint8 aOperation: operation
+        * @param TDesC16 const * aOldPassword: Old password
+        * @param TDesC16 const & aNewPassword: New password
+        * @param TDesC16 const & aVerifyPassword: New password for verification
+        * @param TUint8 aBasicServiceCode: Mmi basic service code
+        * @return TInt : KErrNone or error code
+        */
+        TInt SsGsmBarringReq(
+            TUint8 aTransactionId,
+            TUint8 aOperation,
+            TUint16 aMmiSsCode,
+            TDesC16 const * aOldPassword,
+            TDesC16 const & aNewPassword,
+            TDesC16 const & aVerifyPassword,
+            TUint8 aBasicServiceCode );
+
+        /**
+        * Construct a SS_SERVICE_REQ ISI-message for Call Waiting
+        * request.
+        * @param TUint8 aTransactionId: transaction identifier
+        * @param TUint8 aOperation: operation
+        * @param TUint16 aMmiSsCode: Mmi Ss code
+        * @param TUint8 aBasicServiceCode: Mmi basic service code
+        * @return TInt : KErrNone or error code
+        */
+        TInt SsGsmWaitingReq(
+            TUint8 aTransactionId,
+            TUint8 aOperation,
+            TUint16 aMmiSsCode,
+            TUint8 aBasicServiceCode );
+
+        /**
+        * Construct a  SS_SERVICE_REQ ISI-message for Caller Identify
+        * (CLIP and CLIR), Connected Line Identify (COLP and COLR)
+        * and Caller Name Presentation (CNAP).
+        * @param TUint8 aTransactionId: transaction identifier
+        * @param TUint16 aMmiSsCode: Mmi Ss code
+        * @return TInt : KErrNone or error code
+        */
+        TInt SsIdentityServiceReq( TUint8 aTransactionId, TUint16 aMmiSsCode );
+
+        /**
+        * Completes a failed request to SOS layer.
+        * @param TUint8 aTransactionId: the response's transaction ID
+        * @param  TInt aError: Symbian error code
+        */
+        void CompleteFailedSSRequest( TUint8 aTransactionId, TInt aError );
+
+        /**
+        * Creates a SS GSM USSD request
+        * @param TUint8 aTransactionId: transaction identifier
+        * @param TDesC8* aString: Service string
+        * @return TInt : KErrNone or error code
+        */
+        TInt SsGsmUssdSendReq( TUint8 aTransactionId, TDesC8* aString );
+
+        /**
+        * Breaks a SS_GSM_USSD_SEND_RESP ISI-message.
+        * @param CIsiMsg* aIsiMsg: isi message
+        * @return void : None
+        */
+        void SsGsmUssdSendResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+         * Read call forwarding flags REL4
+         * @return KErrNone or error code
+         */
+        TInt UiccReadCallFwdFlagsRel4Req();
+
+        /**
+         * Read call forwarding flags CPHS
+         * @return KErrNone or error code
+         */
+        TInt UiccReadCallFwdFlagsCphsReq();
+
+         /**
+         * Read call forwarding flags response
+         * @param aStatus Status
+         * @param aTraId Transaction ID
+         * @param aFileData File data
+         * @return None
+         */
+        void UiccHandleCallFwdFlagsResp(
+            TInt aStatus,
+            TInt aTrId, 
+            const TDesC8& aFileData );
+
+        /**
+         * Write call forwarding flags REL4
+         * @return KErrNone or error code
+         */
+        TInt UiccWriteCallFwdFlagsRel4Req();
+
+        /**
+         * Write call forwarding flags CPHS
+         * @return KErrNone or error code
+         */
+        TInt UiccWriteCallFwdFlagsCPHSReq();
+
+        /**
+         * Read voice message flags REL4
+         * @return KErrNone or error code
+         */
+        TInt UiccReadVoiceMsgFlagsRel4Req();
+
+        /**
+         * Read voice message flags CPHS
+         * @return KErrNone or error code
+         */
+        TInt UiccReadVoiceMsgFlagsCphsReq();
+
+        /**
+         * Read voice message flags response
+         * @param aTraId Transaction ID
+         * @param aFileData Descriptor for file data
+         * @return None
+         */
+        void UiccReadVoiceMsgFlagsResp(
+            TInt aTrId,
+            const TDesC8& aFileData );
+
+        /**
+         * Write voice message flags REL4
+         * @param msgWaiting Voice message flags
+         * @return KErrNone or error code
+         */
+        TInt UiccWriteVoiceMsgFlagsRel4Req(
+            const RMobilePhone::TMobilePhoneMessageWaitingV1& msgWaiting );
+
+        /**
+         * Write voice message flags CPHS
+         * @param msgWaiting Voice message flags
+         * @return KErrNone or error code
+         */
+        TInt UiccWriteVoiceMsgFlagsCPHSReq(
+            const RMobilePhone::TMobilePhoneMessageWaitingV1& msgWaiting );
+
+        /**
+        * Breaks received SS_SERVICE_COMPLETED_IND ISI message
+        * @param CIsiMsg* aIsiMsg: isi message
+        * return void : None
+        */
+        void SsServiceCompletedInd ( const TIsiReceiveC &aIsiMessage );
+
+        // static utility methods
+
+        /**
+        * Map mobile service to isi basic service codes
+        * @param RMobilePhone::TMobileService aMobileService: multimode api
+        * mobile service
+        * @param TUint8 *aIsiBasicServiceCode: isi basic service code
+        * @return TInt: error value
+        */
+        TInt MapMobileServiceToBasicServiceCodeIsi(
+            RMobilePhone::TMobileService aMobileService,
+            TUint8* aIsiBasicServiceCode );
+
+        /**
+        * Map multimode api call forwarding conditon to isi call forwarding conditon
+        * @param RMobilePhone::TMobilePhoneCFCondition aMmCFCondition: multimode
+        * api call forw. condition
+        * @param TUint16* aCFConditon: isi call forw. condition
+        * @return TInt: error value
+        */
+        static TInt MapCFConditionMmToIsi(
+            RMobilePhone::TMobilePhoneCFCondition aMmCFCondition,
+            TUint16* aCFCondition );
+
+        /**
+        * Map type of number from isi type to multimode api type
+        * @param TUint8 aIsiTypeOfNumber: isi number type
+        * @param RMobilePhone::TMobileTON* aMmTypeOfNumber: number type
+        * @param RMobilePhone::TMobileNPI* aMmNumberingPlan: numbering plan
+        * @return TInt: error value
+        */
+        static TInt MapTypeOfNumberIsiToMm(
+            TUint8 aIsiTypeOfNumber,
+            RMobilePhone::TMobileTON* aMmTypeOfNumber,
+            RMobilePhone::TMobileNPI* aMmNumberingPlan );
+
+        /**
+        * Map call forwarding isi status to multimode api status
+        * @param TUint8 aIsiSsStatus: SS Status
+        * @param RMobilePhone::TMobilePhoneCFStatus* aMmCFStatus: call forw. status
+        * @return None
+        */
+        static void MapCFStatusIsiToMm(
+            TUint8 aIsiSsStatus,
+            RMobilePhone::TMobilePhoneCFStatus* aMmCFStatus );
+
+        /**
+        * Map call waiting isi status to multimode api status
+        * @param TUint8 aIsiSsStatus: SS Status
+        * @param RMobilePhone::TMobilePhoneCWStatus* aMmCWStatus: call waiting status
+        * @return None
+        */
+        static void MapCWStatusIsiToMm(
+            TUint8 aIsiSsStatus,
+            RMobilePhone::TMobilePhoneCWStatus* aMmCWStatus );
+
+        /**
+        * Map isi basic service code to multimode api basic service code
+        * @param TUint8 aIsiBasicServiceCode: isi basic service code
+        * @param RMobilePhone::TMobileService* aMmBasicServiceCode: multimode api
+        * basic service code
+        * @return TInt: error value
+        */
+        TInt MapBasicServiceCodeIsiToMm(
+            TUint8 aIsiBasicServiceCode,
+            RMobilePhone::TMobileService* aMmBasicServiceCode );
+
+        /**
+        * Map isi call forwarding conditon to multimode api call forwarding conditon
+        * @param TUint16 aCFConditon: isi call forw. condition
+        * @param RMobilePhone::TMobilePhoneCFCondition* aMmCFCondition: multimode
+        * api call forw. condition
+        * @return None
+        */
+        static void MapCFConditionIsiToMm(
+            TUint16 aCFConditon,
+            RMobilePhone::TMobilePhoneCFCondition* aMmCFCondition );
+
+        /**
+        * Map isi call forwarding timeout to multimode api call forwarding timeout
+        * @param TUint8 aISITimeout: isi timeout
+        * @param TInt* aMmTimeout: multimode api timeout
+        * @return None
+        */
+        static void MapTimeoutIsiToMm( TUint8 aISITimeout, TInt* aMmTimeout);
+
+        /**
+        * Map multimode api operation to isi operation
+        * @param RMobilePhone::TMobilePhoneServiceAction aMmOperation: multimode
+        * api service action
+        * @param TUint8* aIsiOperation: isi operation
+        * @return TInt: error value
+        */
+        static TInt MapOperationMmToIsi(
+            RMobilePhone::TMobilePhoneServiceAction aMmOperation,
+            TUint8* aIsiOperation );
+
+        /**
+        * Map isi call barring conditon to multimode api call barring conditon
+        * @param TUint16 aCBConditon: isi call barring condition
+        * @param RMobilePhone::TMobilePhoneCBCondition* aMmCBCondition: multimode
+        * api call barring condition
+        * @return None
+        */
+        static void MapCBConditionIsiToMm(
+            TUint16 aCBConditon,
+            RMobilePhone::TMobilePhoneCBCondition* aMmCBCondition );
+
+        /**
+        * Map multimode api call barring conditon to isi call barring conditon
+        * @param RMobilePhone::TMobilePhoneCBCondition aMmCBCondition: multimode
+        * api call barring condition
+        * @param TUint16* aCBConditon: isi call barring condition
+        * @return TInt: error value
+        */
+        static TInt MapCBConditionMmToIsi(
+            RMobilePhone::TMobilePhoneCBCondition aMmCBCondition,
+            TUint16* aCBConditon );
+
+        /**
+        * Map isi status to multimode api call barring status
+        * @param TUint8 aIsiSsStatus: isi status
+        * @param RMobilePhone::TMobilePhoneCBStatus* aMmCFStatus: multimode api
+        * status
+        * @return None
+        */
+        static void MapCBStatusIsiToMm(
+            TUint8 aIsiSsStatus,
+            RMobilePhone::TMobilePhoneCBStatus* aMmCFStatus );
+
+        /**
+        * Map multimode api identity service to isi identity service
+        * @param RMobilePhone::TMobilePhoneIdService aService: multimode api
+        * identity service
+        * @param TUint16* aIdentityService: isi identity service
+        * @return TInt: error value
+        */
+        static TInt MapIdentityServiceMmToIsi(
+            RMobilePhone::TMobilePhoneIdService aService,
+            TUint16* aIdentityService );
+
+        /**
+        * Map identity service isi status to multimode status.
+        * @param SSsGsmGenericServiceInfo* aIsiIdentityServiceStatus:
+        * isi identity service status
+        * @param TUint8 aIsiClirOption: isi clir option
+        * @param RMobilePhone::TMobilePhoneIdServiceStatus*
+        * aMmIdentityServiceStatus: multimode api identity service status
+        * @return TInt: error value
+        */
+        static void MapIdentityServiceStatusIsiToMm(
+            TUint8 aIsiIdentityServiceStatus,
+            TUint8 aIsiClirOption,
+            RMobilePhone::TMobilePhoneIdServiceStatus* aMmIdentityServiceStatus );
+
+        /**
+        * Pack text string bytes
+        * @param TDes8 &dest: packed message
+        * @param TDes8 &src: unpacked message
+        * @param TUint byte_count: the number of bytes in source
+        * @return TUint16: lenght of the coded message
+        */
+        static TUint16 GsmLibSmsPackMessage(
+            TDes8 &dest,
+            TDes8 &src,
+            TUint byte_count );
+
+        /**
+        * Checks if original SS request is changed or initiated by Call Control
+        * @param aResponse: preprocessed data to simplify response processing
+        * @return TBool: ETrue if response handled,
+        * EFalse if response not handled
+        */
+        TBool ProcessIfSsRequestChanged(
+                const TPreprocessedSsServiceCompleteResponse& aResponse);
+
+        /**
+        * Checks if IPC requested allows simple completion
+        * @param aResponse: preprocessed data to simplify response processing
+        * @return TBool: ETrue if response handled,
+        * EFalse if response not handled
+        */
+        TBool ProcessIfSimpleCompletionPossible(
+                const TPreprocessedSsServiceCompleteResponse& aResponse);
+
+        /**
+        * Processes SS_GSM_PASSWORD_REGISTRATION response
+        * @param aResponse: preprocessed data to simplify response processing
+        * @return TBool: ETrue if response handled,
+        * EFalse if response not handled
+        */
+        TBool ProcessSsGsmPasswordRegistration(
+                const TPreprocessedSsServiceCompleteResponse& aResponse);
+
+        /**
+        * Checks if this is related to call forwarding
+        * @param aResponse: preprocessed data to simplify response processing
+        * @return TBool: ETrue if response handled,
+        * EFalse if response not handled
+        */
+        TBool ProcessIfCallForwardingL(
+                const TPreprocessedSsServiceCompleteResponse& aResponse);
+
+        /**
+        * Checks if this is related to call barring
+        * @param aResponse: preprocessed data to simplify response processing
+        * @return TBool: ETrue if response handled,
+        * EFalse if response not handled
+        */
+        TBool ProcessIfCallBarringL(
+               const TPreprocessedSsServiceCompleteResponse& aResponse);
+
+        /**
+        * Checks if this is related to call waiting
+        * @param aResponse: preprocessed data to simplify response processing
+        * @return TBool: ETrue if response handled,
+        * EFalse if response not handled
+        */
+        TBool ProcessIfCallWaitingL(
+                const TPreprocessedSsServiceCompleteResponse& aResponse);
+
+        /**
+        * Checks if this is related to identity services
+        * @param aResponse: preprocessed data to simplify response processing
+        * @return TBool: ETrue if response handled,
+        * EFalse if response not handled
+        */
+        TBool ProcessIfIdentityServices(
+                const TPreprocessedSsServiceCompleteResponse& aResponse);
+
+    private:    // Data
+
+        //Pointer to the PhonetSender
+        CMmPhoNetSender* iPhoNetSender;
+
+        //Pointer to the Message router
+        CMmMessageRouter* iMessageRouter;
+
+        // List of RMobilePhone::TMobilePhoneCFInfoEntryV1 entries, containing the
+        // results of a GetCallForwardingStatus request
+        CMobilePhoneCFList* iCFResults;
+
+        // List of RMobilePhone::TMobilePhoneCBInfoEntryV1 entries, containing the
+        // results of a GetCallBarringStatus request
+        CMobilePhoneCBList* iCBResults;
+
+        // List of RMobilePhone::TMobilePhoneCWInfoEntryV1 entries, containing the
+        // results of a GetCallWaitingStatus request
+        CMobilePhoneCWList* iCWResults;
+
+        // The following two flags are needed for service group mappings which
+        // are not 1:1 between ETel and ISI. Using these flags is safe:
+        //  - All SS operations strictly are a request/response pair
+        //  - There cannot be any overlapping SS operations (ensured by
+        //    CommonTSY, see CMmSupplServTsy::iSsTransactionOngoing).
+
+        // ETel MM API values RMobilePhone::EVoiceService and
+        // RMobilePhone::ETelephony both map to the network-side service
+        // "Telephony". If this flag is ETrue, the previous request came with
+        // EVoiceService (see MapMobileServiceToBasicServiceCodeIsi).
+        // Accordingly, the response must be mapped to EVoiceService again
+        // (see MapBasicServiceCodeIsiToMm).
+        TBool iVoiceServiceMappedToTelephony;
+
+        // ETel MM API values RMobilePhone::ECircuitDataService and
+        // RMobilePhone::EAllBearer both map to the network-side service
+        // "All Bearer". If this flag is ETrue, the previous request came with
+        // ECircuitDataService (see MapMobileServiceToBasicServiceCodeIsi).
+        // Accordingly, the response must be mapped to ECircuitDataService again
+        // (see MapBasicServiceCodeIsiToMm).
+        TBool iCircuitServiceMappedToAllBearer;
+
+        // Call Forwarding Condition
+        RMobilePhone::TMobilePhoneCFCondition iMmCFCondition;
+
+        // Mobile Service
+        RMobilePhone::TMobileService iMobileService;
+
+        // Mobile address
+        RMobilePhone::TMobileAddress iCFAddress;
+
+        // Stores voice indicator status read from the USIM
+        TUint8 iVoiceStatus;
+
+        // Stores data indicator status read from the USIM
+        TUint8 iDataStatus;
+
+        // Stores fax indicator status read from the USIM
+        TUint8 iFaxStatus;
+
+        // Stores Call Forwarding Number read from the USIM
+        TBuf<RMobilePhone::KMaxMobileTelNumberSize> iCFTelNumberFromSim;
+
+        // Is EMmTsyGetCallForwardingNumberIPC ongoing
+        TBool iGetCallForwardingNumber;
+
+        // Is ECustomGetIccCallForwardingStatusIPC ongoing
+        TBool iGetIccCallForwardingStatus;
+
+        // Is ECustomGetIccCallForwardingStatusIPC ongoing
+        TBool iNotifyIccCallForwardingStatus;
+
+        // Stores Message waiting indicators read from the USIM
+        RMobilePhone::TMobilePhoneMessageWaitingV1 iVMIndicators;
+
+        // Stores Call Forwarding indicators read from the USIM
+        RMmCustomAPI::TCFIndicators iTCFIndicators;
+
+        // Stores voice line1 flag read from the USIM
+        TUint8 iVoiceLine1;
+
+        // Stores voice line2 flag read from the USIM
+        TUint8 iVoiceLine2;
+
+        // Stores fax flag read from the USIM
+        TUint8 iFax;
+
+        // Stores data flag read from the USIM
+        TUint8 iData;
+
+        // Current ALS line used
+        RMobilePhone::TMobilePhoneALSLine iAlsLine;
+
+        //Stores IPC number
+        TInt iIpc;
+
+        //Stores SS code
+        TUint16 iSsCode;
+
+        // Indicates if SS_GSM_SIMATK_INFO must be inserted
+        TBool iCheckInfoSubblock;
+
+        // Indicates if FDN check should be done
+        TBool iFdnCheck;
+
+        //Stores voice message flag type
+        enum
+        {
+            EMsgFlagTypeRel4 = 0,
+            EMsgFlagTypeCphs
+        } iMsgFlagType;
+
+        TBool iResourceControlSuppress;
+
+        // Pointer to UICC message handler
+        CMmUiccMessHandler* iMmUiccMessHandler;
+
+    };
+
+#endif // CMMSUPPLSERVMESSHANDLER_H
+
+// End of File