adaptationlayer/tsy/nokiatsy_dll/inc/cmmphonemesshandler.h
changeset 0 63b37f68c1ce
child 5 8ccc39f9d787
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/inc/cmmphonemesshandler.h	Fri Nov 06 17:28:23 2009 +0000
@@ -0,0 +1,343 @@
+/*
+* 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: 
+*
+*/
+
+
+
+#ifndef CMMPHONEMESSHANDLER_H
+#define CMMPHONEMESSHANDLER_H
+
+// INCLUDES
+#include <badesca.h>
+#include <ctsy/serviceapi/cmmutility.h>
+#include <e32base.h>
+#include <etelmm.h>
+#include <ctsy/serviceapi/mmgsmwcdmautils.h>
+
+#include "mmmmesshandlerbase.h"
+#include "cmmphonetreceiver.h"
+#include "nokiatsy_internal_variation.h"
+#include "muiccoperationbase.h"
+
+// CONSTANTS
+    //None
+
+// MACROS
+    //None
+
+// DATA TYPES
+    //None
+
+//  EXTERNAL DATA STRUCTURES
+enum TTransIdStates
+    {
+    EPhoneDeleteEntryTransId = 100,
+    EPhoneGetAPNnameTransId = 101,
+    EPhoneGetEnumerateAPNEntriesTransId = 102,
+    EPhoneReadDataFromSimTransId = 103,
+    EPhoneWriteDataTransId = 104,
+    EPhoneGetACLStatusTransId = 105,
+    EPhoneSetACLStatusTransId = 106
+    };
+
+// FUNCTION PROTOTYPES
+    //None
+
+// FORWARD DECLARATIONS
+class CMmPhoNetSender;
+class CMmMessageRouter;
+class TIsiReceiveC;
+class CMmSupplServMessHandler;
+class CMmUiccMessHandler;
+
+// CLASS DECLARATION
+
+/**
+* CMmPhoneMessHandler is used to create and send mode-independent phone
+* ISI messages to PhoNet via PhoNetSender. It also receives phone ISI
+* messages from PhoNet via PhoNetReceiver. If the message is mode-independent,
+* it will be handled here. Otherwise, the message will be sent to message
+* handler of active mode.
+*/
+class CMmPhoneMessHandler:
+        public CBase,
+        public MMmMessHandlerBase,
+        public MMmMessageReceiver,
+        public MUiccOperationBase
+    {
+    public:
+
+        /**
+        * Creates a new GSM specific PhoneMessageHandler instance.
+        * @param CMmPhoNetSender* aPhoNetSender: Pointer to phonet sender.
+        * @param CMmPhoNetReceiver* aPhoNetReceiver: Pointer to phonet receiver.
+        * @param CMmMessageRouter* aMessageRouter: Pointer to message router.
+        * @param CMmSupplServMessHandler* aSupplServMessHandler: Pointer to
+                 supplementary services.
+        * @return CMmPhoneMessHandler*: Pointer to message handler.
+        */
+        static CMmPhoneMessHandler* NewL(
+                CMmPhoNetSender* aPhoNetSender,
+                CMmPhoNetReceiver* aPhoNetReceiver,
+                CMmMessageRouter* aMessageRouter,
+                CMmSupplServMessHandler* aSupplServMessHandler,
+                CMmUiccMessHandler* aUiccMessHandler);
+
+        /**
+        * Destructor.
+        */
+        ~CMmPhoneMessHandler();
+
+        /**
+        * From MMmMessHandlerBase. This method is the single entry point for
+        * requests coming from the Symbian OS layer to this message handler
+        * @param TInt aIpc: number of the request
+        * @param CMmDataPackage* aDataPackage: pointer to data package
+        * @return TInt KErrNone or error code
+        */
+        TInt ExtFuncL( TInt aIpc, const CMmDataPackage* aDataPackage );
+
+        /**
+        * ISI message received by PhonetReceiver, interpret if GSM specific
+        * @param const TIsiReceiveC& aIsiMessage: reference to received ISI message
+        */
+        void ReceiveMessageL( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handle UICC response messages
+        * @param aTraId Transaction ID
+        * @param aFileData Descriptor for file data
+        * @return KErrNone or error code
+        */
+        TInt ProcessUiccMsg(
+            TInt aTraId,
+            TInt aStatus,
+            const TDesC8& aFileData );
+
+    protected:
+
+        /**
+        * Default constructor.
+        */
+        CMmPhoneMessHandler();
+
+        /**
+        * Info serial number read response.
+        * @param CIsiMsg* aIsiMsg: Received ISI message
+        * @return void
+        */
+        void InfoSerialNumberReadResp( const TIsiReceiveC &aIsiMessage );
+
+        /**
+        * Dynamic flags read request
+        * @return KErrNone or error code
+        */
+        TInt UiccReadDynamicFlagsReq();
+
+        /**
+        * Dynamic flags read response
+        * @param aStatus Status
+        * @param aFileData File data
+        * @return None
+        */
+        void UiccReadDynamicFlagsResp(
+            TInt aStatus,
+            const TDesC8& aFileData );
+
+        /**
+        * Dynamic flags write request
+        * @param aInfo Dynamic flags data
+        * @return KErrNone or error code
+        */
+        TInt UiccWriteDynamicFlagsReq( TUint8 aInfo );
+
+        /**
+        * Dynamic flags write response
+        * @param aStatus Status
+        * @return None
+        */
+        void UiccWriteDynamicFlagsResp( TInt aStatus );
+
+
+        /**
+        * CSP file request
+        * @return KErrNone or error code
+        */
+        TInt UiccCspFileReq();
+
+        /**
+        * CSP file response
+        * @param aStatus Status
+        * @param aFileData File data
+        * @return None
+        */
+        void UiccCspFileResp( TInt aStatus, const TDesC8& aFileData );
+
+        /**
+        * Class attributes are created in ConstructL
+        * @param CMmMessageRouter* aMessageRouter: pointer to message
+        *  router object
+        * @return void : None
+        */
+        void ConstructL( CMmMessageRouter* aMessageRouter );
+
+    private:
+
+        /**
+        * For nokiatsy internal refresh handling
+        */
+        enum
+            {
+            KRefreshSms = 0x01,
+            KRefreshCallForwardingFlags = 0x02,
+            KRefreshOplRules = 0x04,
+            KRefreshPnnRecord = 0x08,
+            KRefreshOnsName = 0x10
+            };
+
+        /**
+        * Read IMSI from UICC
+        * @return Error code
+        */
+        TInt UiccImsiReq();
+
+        /**
+        * Response to IMSI read request.
+        * @param aStatus Status of response message
+        * @param aFileData Data from SIM file
+        * @return void
+        */
+        void UiccImsiResp( TInt aStatus, const TDesC8& aFileData );
+
+        /**
+        * Request to read Service Provider Name from UICC.
+        * @return Symbian error code
+        */
+        TInt UiccReadServiceProviderName();
+
+        /**
+        * Response for request to read Service provider name from UICC.
+        * @param aStatus Status of response message
+        * @param aFileData Data from SIM file
+        * @return void
+        */
+        void UiccReadServiceProviderNameResp(
+            TInt aStatus,
+            const TDesC8& aFileData );
+
+        /**
+        * Subscribes responses and indications from PhoNet.
+        * @return TInt : success/failure value
+        */
+        TInt SubscribeEventsFromPhoNet();
+
+        /**
+        * Creates InfoSerialNumberReadReq ISI message and sends it to Phonet.
+        * @param TUint8 aTransactionId: unique TransactionId number
+        * @param TUint8 aTarget: request data
+        * @return TInt : success/failure value
+        */
+        TInt InfoSerialNumberReadReq(
+            TUint8 aTransactionId,
+            TUint8 aTarget );
+
+        /**
+         * Process service type checking for service provider name query
+         * @param aFileData File data read from UICC
+         * @return Error code
+         */
+        TInt UiccProcessServiceTypeCheck( const TDesC8& aFileData );
+
+        /**
+         * Process service provider name info
+         * @param aStatus UICC server status
+         * @param aFileData File data read from UICC
+         */
+        void UiccProcessSpnNameInfo(
+            TInt aStatus,
+            const TDesC8& aFileData );
+
+    //ATTRIBUTES
+    public:
+        //none
+
+    protected:
+
+        //Pointer to the PhonetSender
+        CMmPhoNetSender* iPhoNetSender;
+
+        //Pointer to the Message Router
+        CMmMessageRouter* iMessageRouter;
+
+        //Pointer to the Supplementary Service
+        CMmSupplServMessHandler* iSupplServMessHandler;
+
+        // Pointer to UICC message handler
+        CMmUiccMessHandler* iMmUiccMessHandler;
+
+        // This flag indicates if re-reading of cached data
+        // is going on in commontsy.
+        TBool iCommonTSYRefreshPending;
+
+    private:
+
+        // Location index for SimPnReadReq
+        TUint16 iLocIndex;
+
+        // SIM Service Table, used to temporarily save data for completion
+        RMobilePhone::TMobilePhoneServiceTableV1 iSSTFile;
+
+        // USIM Service Table, used to temporarily save data for completion
+        RMobilePhone::TMobilePhoneServiceTableV1 iUSTFile;
+
+        //value of the second display condition byte
+        TUint8 iSecondDisplayCondition;
+
+        // Service table
+        SSSTFileData* iSSTFileData;
+
+        // Phone Store Info
+        SStoreInfo* iStoreInfo;
+
+        //Service provider name
+        RMobilePhone::TMobilePhoneServiceProviderNameV2 iServiceProviderName;
+
+        //Keeps track state of ACL enquiry
+        TBool iACLIsProgress;
+
+        // Keeps track of APN list
+        CDesC8ArrayFlat* iAPNList;
+
+        //Keeps track of APN data.
+        RMobilePhone::TAPNEntryV3 iAPNDataBuffer;
+
+        // Keeps track of ACL index to read or delete
+        TUint iAPNReadOrDeleteIndex;
+
+        //Current ALS line used
+        RMobilePhone::TMobilePhoneALSLine iAlsLine;
+
+        // Keeps track on nokiatsy internal refresh
+        TUint8 iInternalRefreshFiles;
+
+        // Keeps track if any errors happened during re-reading of cached files
+        TBool iRefreshError;
+    };
+
+#endif // CMMPHONEMESSHANDLER_H
+
+//  End of file
+