adaptationlayer/tsy/nokiatsy_dll/inc/cmmenstoremesshandler.h
changeset 5 8ccc39f9d787
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/inc/cmmenstoremesshandler.h	Thu Jan 14 10:44:58 2010 +0200
@@ -0,0 +1,229 @@
+/*
+* Copyright (c) 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:
+*
+*/
+
+
+// INCLUDES
+#ifndef _CMMENSTOREMESSHANDLER_H_
+#define _CMMENSTOREMESSHANDLER_H_
+
+#include <e32def.h>
+#include <ctsy/serviceapi/cmmgsmphonestorageutility.h>
+#include "mmmmesshandlerbase.h"
+#include "cmmphonetsender.h"
+#include "cmmphonetreceiver.h"
+
+//UICC
+#include "muiccoperationbase.h"
+#include "cmmuiccmesshandler.h"
+
+// CONSTANTS
+    // None
+
+// MACROS
+    // None
+
+// DATA TYPES
+    // None
+
+// EXTERNAL DATA STRUCTURES
+    // None
+
+// FUNCTION PROTOTYPES
+    // None
+
+// FORWARD DECLARATIONS
+class CMmPhoNetSender;
+class CMmPhoNetReceiver;
+class CMmENStoreTsy;
+class CMmENStoreExtInterface;
+class TIsiReceiveC;
+class CMmMessageRouter;
+class CMmUiccMessHandler;
+
+// CLASS DECLARATION
+
+/**
+* CMmENStoreMessHandler is used to create and send mode-independent
+* ISI-messages to PhoNet via PhoNetSender. It also receives 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 CMmENStoreMessHandler
+        : public CBase,
+        public MMmMessHandlerBase,
+        public MUiccOperationBase
+    {
+    public:
+
+        /**
+        * Destructor
+        */
+        ~CMmENStoreMessHandler();
+
+        /**
+        * Creates a new EN store message handler object
+        * @param CMmPhoNetSender*: pointer to phonet sender
+        * @param CMmPhoNetReceiver*: pointer to phonet receiver
+        * @param CMmMessageRouter*: pointer to message router
+        */
+        static CMmENStoreMessHandler* NewL(
+            CMmMessageRouter* aMessageRouter,
+            CMmUiccMessHandler* aUiccMessHandler );
+
+        /**
+        * Receives ISI messages from phonet receiver
+        * @param const TIsiReceiveC: SIM ISI message
+        */
+        void ReceiveMessageL( const TIsiReceiveC& aIsiMessage );
+
+        /**
+        * Handles errors comes from PhoNetReceiver RunError
+        * @param const TIsiReceiveC& aIsiMessage: The received ISI message
+        * @param TInt aError: Error code
+        */
+        void HandleError(
+            const TIsiReceiveC& aIsiMessage,
+            TInt aError );
+
+        /**
+        * From CMessHandlerBase. This method is the single entry point for
+        * requests coming from the Symbian OS layer to this message handler
+        * @param TInt: aIpc IPC number of the request
+        * @param CMmDataPackage*: aDataPackage
+        * @return TInt: KErrNone or error code
+        */
+        TInt ExtFuncL(
+            TInt aIpc,
+            const CMmDataPackage* aDataPackage );
+
+        /**
+        * Handles a received message by calling the specific
+        * message handling method.
+        *
+        * @param Transaction id
+        * @param Status
+        * @param aFileData reference to Data received in message
+        * @return KErrNone or error code
+        */
+        TInt ProcessUiccMsg(
+                TInt aTransactionId,
+                TInt aStatus,
+                TUint8 aDetails,
+                const TDesC8 &aFileData );
+
+    protected:
+        //None
+
+    private:
+
+        /**
+        * Constructor
+        */
+        CMmENStoreMessHandler();
+
+        /**
+        * Initialises object attributes.
+        */
+        void ConstructL();
+
+        /**
+        * Handles EFecc read responses
+        * @param TInt aStatus: status returned by UICC server
+        * @param const TDesC8& aFileData: data from EFecc file
+        * returned by UICC server
+        * @return TInt: success or failure
+        */
+        TInt UiccReadEmergCodesResp(
+                TInt aStatus,
+                const TDesC8& aFileData );
+
+        /**
+        * Provide UICC application file id
+        * @param const TDesC8&: reference to data
+        * @param TDes8&: reference to buffer where digits are stored
+        */
+        void GetEmergencyNumberDigits(
+                const TDesC8& aReadIn,
+                TDes8& aNumberBuf );
+
+        /**
+        * Handles EFecc file info
+        * @param TInt aStatus: status returned by UICC server
+        * @param const TDesC8& aFileData: data from EFecc file
+        * returned by UICC server
+        * @return TInt: success or failure
+        */
+        TInt CMmENStoreMessHandler::UiccENStoreGetInfoResp(
+                TInt aStatus,
+                const TDesC8& aFileData );
+
+        /**
+        * Create EFecc read request
+        * @param TInt: location to be read
+        * @return TInt: succes or failure
+        */
+        TInt UiccReadEmergCodesReq(
+                TInt aIndex,
+                TUiccTrId traId );
+
+        /**
+        * Create EFecc file info request
+        * @param TInt: transaction id
+        * @return TInt: succes or failure
+        */
+        TInt ReadEfEccFileInfo( TUiccTrId aTraId );
+
+    // ATTRIBUTES
+    public:
+
+    protected:
+
+        // Pointer to the Phonet sender
+        CMmPhoNetSender* iPhoNetSender;
+
+    private:
+
+        //Pointer to the Message router
+        CMmMessageRouter* iMessageRouter;
+
+        // Pointer to the UICC Messhandler
+        CMmUiccMessHandler* iMmUiccMessHandler;
+
+        // ECC entry location index
+        TInt iReadECCLocation;
+
+        // Array for emergency number storing
+        CArrayPtrFlat<TENStoreResponse>* iEnNumberArray;
+
+        // IPC value of the last request
+        TInt iCurrentIpc;
+
+        // Count of used entries
+        TInt iUsedEntries;
+
+        // Count of entries left to be read
+        TInt iEntryCount;
+
+        // record number to be read
+        TInt iRecordNbr;
+    };
+
+#endif // _CMMENSTOREMESSHANDLER_H_
+
+// End of File
+