telephonyserverplugins/common_tsy/commontsy/inc/mmcustomtsy/CMmSIMTsy.h
branchopencode
changeset 24 6638e7f4bd8f
parent 19 1f776524b15c
--- a/telephonyserverplugins/common_tsy/commontsy/inc/mmcustomtsy/CMmSIMTsy.h	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmcustomtsy/CMmSIMTsy.h	Thu May 06 15:10:38 2010 +0100
@@ -1,516 +1,516 @@
-/*
-* Copyright (c) 2006-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:
-*
-*/
-
-
-
-#ifndef CMMSIMTSY_H
-#define CMMSIMTSY_H
-
-//  INCLUDES
-#include "CMmCustomTsy.h"
-#include "cmmtsyreqhandlestore.h"
-#include "CMmSubTsyBase.h"
-
-// CONSTANTS
-const TInt KNoCbIds = -1;
-
-// From Viag HomeZone specification
-const TInt KPhEngMaxViagHomeZones = 4;
-// From Viag HomeZone specification
-const TInt KPhEngMaxCacheId = 21;
-
-// CLASS DECLARATION
-
-/**
-*  CMmSIMTsy contains mode-independent SIM functionality.
-*  Extension request handles and parameters are stored as attributes.
-*/
-NONSHARABLE_CLASS( CMmSIMTsy ) : public CMmSubTsyBase
-    {
-    public:
-
-    // TSIMRequestType enumerates indexes to SIM's request handle
-    // table. Request handles are stored there while waiting for
-    // completion of the request.
-    enum TSIMRequestType
-        {
-        ESIMTsyReqHandleUnknown,
-        ESIMRequestTypeReadParams,
-        ESIMRequestTypeReadCache,
-        ESIMRequestTypeWriteCache,
-        ESIMRequestTypeWriteSettings,
-        ESIMRequestTypeStartSimCbTopicBrowsing,
-        ESIMRequestTypeGetNextSimCbTopic,
-        ESIMRequestTypeDeleteSimCbTopic,
-
-        // Declare constant for those requests that need own request handle 
-        // record in iTsyReqHandleStore above the following
-        ESIMRequestTypeMaxNumOfRequests,
-
-        // Let the next literal be the last
-        ESIMRequestTypeUndefined = 0xff
-        };
-
-    public:  // Constructors and destructor
-
-        /**
-         * C++ default constructor.
-         */
-        CMmSIMTsy();
-
-        /**
-         * Two-phased constructor.
-         */
-        static CMmSIMTsy* NewL( CMmCustomTsy* mmCustomTsy );
-
-        /**
-         * Destructor.
-         */
-        ~CMmSIMTsy();
-
-    public:
-
-        /**
-         * Initialisation method
-         *         
-         *
-         */
-        void Init();
-
-        /**
-         * Tells whether the object supports given IPC.
-         *         
-         *
-         * @param aIpc Request's IPC value
-         * @return ETrue if object supports given IPC
-         */
-        TBool SupportingIPC( const TInt aIpc );
-
-        /**
-         * Handles extended client requests. Uses TRAP to ensure functioning on
-         * memory allocation failure.
-         *         
-         *
-         * @param aTsyReqHandle Request handle
-         * @param aIpc Request's IPC value
-         * @param aPackage Reference to a data package
-         * @return Error value
-         */
-        TInt DoExtFuncL( const TTsyReqHandle aTsyReqHandle, 
-            const TInt aIpc, 
-            const TDataPackage& aPackage );
-
-        /**
-         * Returns request mode for given IPC number.
-         *         
-         *
-         * @param aIpc An interprocess communication command identifier
-         * @return The ReqMode corresponding to given IPC
-         */
-        CTelObject::TReqMode ReqModeL( const TInt aIpc );
-
-        /**
-         * Returns number of slots to be used for given IPC.
-         *         
-         *       
-         * @param aIpc An interprocess communication command identifier
-         * @return The number of slots reserved for a given IPC
-         */
-        TInt NumberOfSlotsL( const TInt aIpc );
-
-        /**
-         * Cancels request of which IPC number and request handle 
-         * are given in parameters.
-         *         
-         *
-         * @param aIpc An interprocess communication command identifier
-         * @param aTsyReqHandle Request handle
-         * @return Error value
-         */
-        TInt CancelService( const TInt aIpc, 
-            const TTsyReqHandle aTsyReqHandle );
-
-        /**
-         * Register given notification.
-         *         
-         *
-         * @param aIpc An interprocess communication command identifier
-         * @return KErrNotSupported
-         */
-        TInt RegisterNotification( const TInt aIpc );
-
-        /**
-         * Deregister given notification.
-         *         
-         *
-         * @param aIpc An interprocess communication command identifier
-         * @return KErrNotSupported
-         */
-        TInt DeregisterNotification( const TInt aIpc );
-
-    public:
-
-        /**
-         * Sends VIAG homezone parameters read request if requested by client.
-         *         
-         *
-         */
-        void CheckViagHomezoneParamsL();
-
-        /**
-         * Completes the ReadViagHomeZoneParamsResp response message.
-         *         
-         *
-         * @param aParams Pointer to VIAG Home Zone parameters structure
-         * @param aElems Pointer to VIAG Home Zone elements structure
-         * @param aError Error value
-         */
-        void CompleteReadViagHomeZoneParamsResp( 
-            RMmCustomAPI::TViagParams* aParams,
-            RMmCustomAPI::TViagElements* aElems,
-            TInt aError );
-
-        /**
-         * Completes the ReadViagHomeZoneCacheResp response message.
-         *         
-         *
-         * @param aViagRecord Pointer to VIAG Home Zone record content
-         * @param aError Error value
-         */
-        void CompleteReadViagHomeZoneCacheRespL(
-            RMmCustomAPI::TViagCacheRecordContent* aViagRecord,
-            TInt aError );
-
-        /**
-         * Completes the WriteViagHomeZoneCacheResp response message.
-         *         
-         *
-         * @param aError Error value
-         */
-        void CompleteWriteViagHomeZoneCacheResp( TInt aError );
-
-        /**
-         * Completes the WriteViagHomeZoneUHZIUESettings response message.
-         *         
-         * @param aError Error value
-         */
-        void CompleteWriteViagHomeZoneUHZIUESettingsResp( TInt aError );
-
-        /**
-         * Complete StartSimCbTopicBrowsing
-         *         
-         * @param aTopics CB Topics from SIM
-         * @param aError Error value
-         */
-        void CompleteStartSimCbTopicBrowsing( 
-            CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* aTopics,
-            TInt aError );
-
-        /**
-         * Completes delete SIM CB topic request
-         *         
-         *
-         * @param aError Error value
-         */
-        void CompleteDeleteSimCbTopic( TInt aError );
-
-
-#ifdef REQHANDLE_TIMER
-        /**
-         * Calls the needed complete method due the timer expiration
-         *         
-         *
-         * @param aReqHandleType
-         * @param aError
-         */
-        void Complete( TInt aReqHandleType, TInt aError );
-#endif //REQHANDLE_TIMER
-
-    private:
-
-        /**
-         * By default EPOC constructor is private.
-         *         
-         *
-         * @param aMmCustomTsy
-         */
-        void ConstructL( CMmCustomTsy* aMmCustomTsy );
-
-        /**
-         * Read ViagHomeZoneParams
-         *         
-         *
-         * @param aViagParameters: Pointer to VIAG HomeZone parameters structure
-         * @param aViagElements Pointer to VIAG Home Zone elements structure
-         * @return Error value
-         */
-        TInt ReadViagHomeZoneParamsL( RMmCustomAPI::TViagParams* aViagParameters,
-            RMmCustomAPI::TViagElement* aViagElements );
-
-        /**
-         * Read ViagHomeZoneCache
-         *         
-         *
-         * @param aViagRecordId
-         * @param aViagRecordContent
-         * @return Error value
-         */
-        TInt ReadViagHomeZoneCacheL(
-            RMmCustomAPI::TViagCacheRecordId* aViagRecordId,
-            RMmCustomAPI::TViagCacheRecordContent* aViagRecordContent );
-
-        /**
-         * Read Dynamic ViagHomeZoneCache
-         *         
-         *
-         * @param aTsyReqHandle
-         * @param aViagRecordId
-         * @param aViagRecordContent
-         * @return Error value
-         */
-        TInt ReadDynamicViagHomeZoneCacheL(
-            const TTsyReqHandle aTsyReqHandle,
-            RMmCustomAPI::TViagCacheRecordId* aViagRecordId,
-            RMmCustomAPI::TViagCacheRecordContent* aViagRecordContent );
-
-        /**
-         * Start dynamic caching
-         *         
-         *
-         */
-        void StartDynamicCachingL();
-
-        /**
-         * Write ViagHomeZoneCache
-         *         
-         *
-         * @param aViagRecordId Pointer to VIAG Home Zone record id structure
-         * @param aViagRecordContent Pointer to VIAG Home Zone record 
-         *        content structure
-         * @return Error value
-         */
-        TInt WriteViagHomeZoneCacheL(
-            RMmCustomAPI::TViagCacheRecordId* aViagRecordId,
-            RMmCustomAPI::TViagCacheRecordContent* aViagRecordContent );
-
-        /**
-         * Cancel the ReadViagHomeZoneParams request
-         *         
-         *
-         * @return KErrNone
-         */
-        TInt ReadViagHomeZoneParamsCancel();
-
-        /**
-         * Cancel the ReadViagHomeZoneCache request
-         *         
-         *
-         * @return KErrNone
-         */
-        TInt ReadViagHomeZoneCacheCancel( 
-            const TTsyReqHandle aTsyReqHandle );
-
-        /**
-         * Cancel the WriteViagHomeZoneCache request
-         *         
-         *
-         * @return KErrNone
-         */
-        TInt WriteViagHomeZoneCacheCancel();
-
-        /**
-         * Writes specified VIAG Home Zone UHZIUE settings to SIM.
-         *         
-         * @param aSettings Pointer to TViagUHZIUESettings
-         * @return Error value
-         */
-        TInt WriteViagHomeZoneUHZIUESettingsL( 
-            RMmCustomAPI::TViagUHZIUESettings* aSettings );
-
-        /**
-         * Cancels the VIAG Home Zone UHZIUE settings write request.
-         *         
-         * @param ?arg1 ?description
-         * @return Error value
-         */
-        TInt WriteViagHomeZoneUHZIUESettingsCancel();
-
-        /**
-         * Start Sim Cb Topics Browsing
-         *         
-         *
-         * @param aTsyReqHandle Request handle
-         * @return Error value
-         */
-        TInt StartSimCbTopicBrowsingL( const TTsyReqHandle aTsyReqHandle );
-
-        /**
-         * Get Next Sim Cb Topic
-         *         
-         *
-         * @param aTsyReqHandle Request handle
-         * @param aSimCbTopic Pointer to TSimCbTopic structure
-         * @return Error value
-         */
-        TInt GetNextSimCbTopic( TTsyReqHandle aTsyReqHandle, 
-            RMmCustomAPI::TSimCbTopic* aSimCbTopic );
-
-        /**
-         * Delete Sim Cb Topic
-         *         
-         *
-         * @param aTsyReqHandle Request handle
-         * @param aSimCbTopicNumber ID number of the sim topic
-         * @return Error value
-         */
-        TInt DeleteSimCbTopicL( const TTsyReqHandle aTsyReqHandle, 
-            TUint* aSimCbTopicNumber );
-
-        /**
-         * Reset and destroy sim cb topics
-         *         
-         *
-         */
-        void ResetAndDestroySimCbTopics();
-
-
-#ifdef REQHANDLE_TIMER
-        /**
-         * Chooses the type of response, automatic or common
-         *         
-         *
-         * @param aReqHandleType
-         * @param aTsyReqHandle
-         */
-        void SetTypeOfResponse( const TInt aReqHandleType,
-                                const TTsyReqHandle aTsyReqHandle );
-#endif // REQHANDLE_TIMER
-
-    private:
-
-        /**
-         * Pointer to CMmCustomTsy class
-         * Not Own.         
-         */
-        CMmCustomTsy* iMmCustomTsy;
-        
-        /**
-         *Pointer to request handle store
-         * Own.         
-         */
-        CMmTsyReqHandleStore* iTsyReqHandleStore;
-        
-        /**
-         * SIM Custom API request handle table
-         * Own.         
-         */
-        TTsyReqHandle iSIMReqHandles[ESIMRequestTypeMaxNumOfRequests];
-
-        /**
-         * Saves temporarily last TSY request type
-         * Own.         
-         */
-        TSIMRequestType iReqHandleType;
-
-        /**
-         * Pointer to VIAG Home Zone parameters structure
-         * Not Own.         
-         */
-        RMmCustomAPI::TViagParams* iViagParams;
-        
-        /**
-         * Pointer to VIAG Home Zone elements structure
-         * Not Own.         
-         */ 
-        RMmCustomAPI::TViagElement* iViagElems;
-
-        /**
-         * VIAG home zone record content
-         * Not Own.         
-         */
-        RMmCustomAPI::TViagCacheRecordContent* iViagReadCacheRecord;
-
-        /**
-         * Is VIAG home zone params requested before SIM is ready
-         */
-        TBool iViagParamsReadRequested;
-        
-        /**
-         * used for handling SIM CB Topic browsing:
-         * a cached table of all entries         
-         * Own.         
-         */
-        CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* iSimCbTopics;
-
-        /**
-         * The index of the next topic to retrieve with the GetNext-method         
-         */                
-        TInt iGetNextSimCbTopicIndex;
-
-        /**
-         * The index of the topic to be deleted
-         */        
-        TInt iSimCbTopicIndexToBeDeleted;
-
-        /**
-         * The Dynamic cache for VIAG home zone records
-         * Own.         
-         */        
-        CArrayFixFlat<RMmCustomAPI::TViagCacheRecordContent>* iViagDynamicCache;
-
-        /**
-         * Pointer to current cache
-         * Not Own.         
-         */        
-        RMmCustomAPI::TViagCacheRecordId* iCurrentlyRetrievedCache;
-        
-        /**
-         * Is ViagHomeZone cache ready
-         */
-        TBool iViagHomeZoneCacheReady;
-
-        /**
-         * last ViagHomeZone cache error
-         */
-        TInt iLastViagHomeZoneCacheError;
-        
-        /** 
-         * Used for queuing ReadViagHomeZoneCache requests 
-         */
-        struct TReadViagHomeZoneCacheRequest
-			   {
-			   /** ETel request handle */
-			   TTsyReqHandle iReqHandle; 
-			   /** pointer to client-side	data */
-			   RMmCustomAPI::TViagCacheRecordId* iViagRecordId;
-               RMmCustomAPI::TViagCacheRecordContent* iViagRecordContent;
-			   };
-        
-        /**
-		 * Array for buffering ReadViagHomeZoneCache requests
-		 */		     
-		    RPointerArray< TReadViagHomeZoneCacheRequest > 
-            iReadViagHomeZoneCacheRequests;
-        
-        
-        
-        
-    };
-
-#endif      // CMMSIMTSY_H
-
-//  End of File
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+
+
+#ifndef CMMSIMTSY_H
+#define CMMSIMTSY_H
+
+//  INCLUDES
+#include "CMmCustomTsy.h"
+#include "cmmtsyreqhandlestore.h"
+#include "CMmSubTsyBase.h"
+
+// CONSTANTS
+const TInt KNoCbIds = -1;
+
+// From Viag HomeZone specification
+const TInt KPhEngMaxViagHomeZones = 4;
+// From Viag HomeZone specification
+const TInt KPhEngMaxCacheId = 21;
+
+// CLASS DECLARATION
+
+/**
+*  CMmSIMTsy contains mode-independent SIM functionality.
+*  Extension request handles and parameters are stored as attributes.
+*/
+NONSHARABLE_CLASS( CMmSIMTsy ) : public CMmSubTsyBase
+    {
+    public:
+
+    // TSIMRequestType enumerates indexes to SIM's request handle
+    // table. Request handles are stored there while waiting for
+    // completion of the request.
+    enum TSIMRequestType
+        {
+        ESIMTsyReqHandleUnknown,
+        ESIMRequestTypeReadParams,
+        ESIMRequestTypeReadCache,
+        ESIMRequestTypeWriteCache,
+        ESIMRequestTypeWriteSettings,
+        ESIMRequestTypeStartSimCbTopicBrowsing,
+        ESIMRequestTypeGetNextSimCbTopic,
+        ESIMRequestTypeDeleteSimCbTopic,
+
+        // Declare constant for those requests that need own request handle 
+        // record in iTsyReqHandleStore above the following
+        ESIMRequestTypeMaxNumOfRequests,
+
+        // Let the next literal be the last
+        ESIMRequestTypeUndefined = 0xff
+        };
+
+    public:  // Constructors and destructor
+
+        /**
+         * C++ default constructor.
+         */
+        CMmSIMTsy();
+
+        /**
+         * Two-phased constructor.
+         */
+        static CMmSIMTsy* NewL( CMmCustomTsy* mmCustomTsy );
+
+        /**
+         * Destructor.
+         */
+        ~CMmSIMTsy();
+
+    public:
+
+        /**
+         * Initialisation method
+         *         
+         *
+         */
+        void Init();
+
+        /**
+         * Tells whether the object supports given IPC.
+         *         
+         *
+         * @param aIpc Request's IPC value
+         * @return ETrue if object supports given IPC
+         */
+        TBool SupportingIPC( const TInt aIpc );
+
+        /**
+         * Handles extended client requests. Uses TRAP to ensure functioning on
+         * memory allocation failure.
+         *         
+         *
+         * @param aTsyReqHandle Request handle
+         * @param aIpc Request's IPC value
+         * @param aPackage Reference to a data package
+         * @return Error value
+         */
+        TInt DoExtFuncL( const TTsyReqHandle aTsyReqHandle, 
+            const TInt aIpc, 
+            const TDataPackage& aPackage );
+
+        /**
+         * Returns request mode for given IPC number.
+         *         
+         *
+         * @param aIpc An interprocess communication command identifier
+         * @return The ReqMode corresponding to given IPC
+         */
+        CTelObject::TReqMode ReqModeL( const TInt aIpc );
+
+        /**
+         * Returns number of slots to be used for given IPC.
+         *         
+         *       
+         * @param aIpc An interprocess communication command identifier
+         * @return The number of slots reserved for a given IPC
+         */
+        TInt NumberOfSlotsL( const TInt aIpc );
+
+        /**
+         * Cancels request of which IPC number and request handle 
+         * are given in parameters.
+         *         
+         *
+         * @param aIpc An interprocess communication command identifier
+         * @param aTsyReqHandle Request handle
+         * @return Error value
+         */
+        TInt CancelService( const TInt aIpc, 
+            const TTsyReqHandle aTsyReqHandle );
+
+        /**
+         * Register given notification.
+         *         
+         *
+         * @param aIpc An interprocess communication command identifier
+         * @return KErrNotSupported
+         */
+        TInt RegisterNotification( const TInt aIpc );
+
+        /**
+         * Deregister given notification.
+         *         
+         *
+         * @param aIpc An interprocess communication command identifier
+         * @return KErrNotSupported
+         */
+        TInt DeregisterNotification( const TInt aIpc );
+
+    public:
+
+        /**
+         * Sends VIAG homezone parameters read request if requested by client.
+         *         
+         *
+         */
+        void CheckViagHomezoneParamsL();
+
+        /**
+         * Completes the ReadViagHomeZoneParamsResp response message.
+         *         
+         *
+         * @param aParams Pointer to VIAG Home Zone parameters structure
+         * @param aElems Pointer to VIAG Home Zone elements structure
+         * @param aError Error value
+         */
+        void CompleteReadViagHomeZoneParamsResp( 
+            RMmCustomAPI::TViagParams* aParams,
+            RMmCustomAPI::TViagElements* aElems,
+            TInt aError );
+
+        /**
+         * Completes the ReadViagHomeZoneCacheResp response message.
+         *         
+         *
+         * @param aViagRecord Pointer to VIAG Home Zone record content
+         * @param aError Error value
+         */
+        void CompleteReadViagHomeZoneCacheRespL(
+            RMmCustomAPI::TViagCacheRecordContent* aViagRecord,
+            TInt aError );
+
+        /**
+         * Completes the WriteViagHomeZoneCacheResp response message.
+         *         
+         *
+         * @param aError Error value
+         */
+        void CompleteWriteViagHomeZoneCacheResp( TInt aError );
+
+        /**
+         * Completes the WriteViagHomeZoneUHZIUESettings response message.
+         *         
+         * @param aError Error value
+         */
+        void CompleteWriteViagHomeZoneUHZIUESettingsResp( TInt aError );
+
+        /**
+         * Complete StartSimCbTopicBrowsing
+         *         
+         * @param aTopics CB Topics from SIM
+         * @param aError Error value
+         */
+        void CompleteStartSimCbTopicBrowsing( 
+            CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* aTopics,
+            TInt aError );
+
+        /**
+         * Completes delete SIM CB topic request
+         *         
+         *
+         * @param aError Error value
+         */
+        void CompleteDeleteSimCbTopic( TInt aError );
+
+
+#ifdef REQHANDLE_TIMER
+        /**
+         * Calls the needed complete method due the timer expiration
+         *         
+         *
+         * @param aReqHandleType
+         * @param aError
+         */
+        void Complete( TInt aReqHandleType, TInt aError );
+#endif //REQHANDLE_TIMER
+
+    private:
+
+        /**
+         * By default EPOC constructor is private.
+         *         
+         *
+         * @param aMmCustomTsy
+         */
+        void ConstructL( CMmCustomTsy* aMmCustomTsy );
+
+        /**
+         * Read ViagHomeZoneParams
+         *         
+         *
+         * @param aViagParameters: Pointer to VIAG HomeZone parameters structure
+         * @param aViagElements Pointer to VIAG Home Zone elements structure
+         * @return Error value
+         */
+        TInt ReadViagHomeZoneParamsL( RMmCustomAPI::TViagParams* aViagParameters,
+            RMmCustomAPI::TViagElement* aViagElements );
+
+        /**
+         * Read ViagHomeZoneCache
+         *         
+         *
+         * @param aViagRecordId
+         * @param aViagRecordContent
+         * @return Error value
+         */
+        TInt ReadViagHomeZoneCacheL(
+            RMmCustomAPI::TViagCacheRecordId* aViagRecordId,
+            RMmCustomAPI::TViagCacheRecordContent* aViagRecordContent );
+
+        /**
+         * Read Dynamic ViagHomeZoneCache
+         *         
+         *
+         * @param aTsyReqHandle
+         * @param aViagRecordId
+         * @param aViagRecordContent
+         * @return Error value
+         */
+        TInt ReadDynamicViagHomeZoneCacheL(
+            const TTsyReqHandle aTsyReqHandle,
+            RMmCustomAPI::TViagCacheRecordId* aViagRecordId,
+            RMmCustomAPI::TViagCacheRecordContent* aViagRecordContent );
+
+        /**
+         * Start dynamic caching
+         *         
+         *
+         */
+        void StartDynamicCachingL();
+
+        /**
+         * Write ViagHomeZoneCache
+         *         
+         *
+         * @param aViagRecordId Pointer to VIAG Home Zone record id structure
+         * @param aViagRecordContent Pointer to VIAG Home Zone record 
+         *        content structure
+         * @return Error value
+         */
+        TInt WriteViagHomeZoneCacheL(
+            RMmCustomAPI::TViagCacheRecordId* aViagRecordId,
+            RMmCustomAPI::TViagCacheRecordContent* aViagRecordContent );
+
+        /**
+         * Cancel the ReadViagHomeZoneParams request
+         *         
+         *
+         * @return KErrNone
+         */
+        TInt ReadViagHomeZoneParamsCancel();
+
+        /**
+         * Cancel the ReadViagHomeZoneCache request
+         *         
+         *
+         * @return KErrNone
+         */
+        TInt ReadViagHomeZoneCacheCancel( 
+            const TTsyReqHandle aTsyReqHandle );
+
+        /**
+         * Cancel the WriteViagHomeZoneCache request
+         *         
+         *
+         * @return KErrNone
+         */
+        TInt WriteViagHomeZoneCacheCancel();
+
+        /**
+         * Writes specified VIAG Home Zone UHZIUE settings to SIM.
+         *         
+         * @param aSettings Pointer to TViagUHZIUESettings
+         * @return Error value
+         */
+        TInt WriteViagHomeZoneUHZIUESettingsL( 
+            RMmCustomAPI::TViagUHZIUESettings* aSettings );
+
+        /**
+         * Cancels the VIAG Home Zone UHZIUE settings write request.
+         *         
+         * @param ?arg1 ?description
+         * @return Error value
+         */
+        TInt WriteViagHomeZoneUHZIUESettingsCancel();
+
+        /**
+         * Start Sim Cb Topics Browsing
+         *         
+         *
+         * @param aTsyReqHandle Request handle
+         * @return Error value
+         */
+        TInt StartSimCbTopicBrowsingL( const TTsyReqHandle aTsyReqHandle );
+
+        /**
+         * Get Next Sim Cb Topic
+         *         
+         *
+         * @param aTsyReqHandle Request handle
+         * @param aSimCbTopic Pointer to TSimCbTopic structure
+         * @return Error value
+         */
+        TInt GetNextSimCbTopic( TTsyReqHandle aTsyReqHandle, 
+            RMmCustomAPI::TSimCbTopic* aSimCbTopic );
+
+        /**
+         * Delete Sim Cb Topic
+         *         
+         *
+         * @param aTsyReqHandle Request handle
+         * @param aSimCbTopicNumber ID number of the sim topic
+         * @return Error value
+         */
+        TInt DeleteSimCbTopicL( const TTsyReqHandle aTsyReqHandle, 
+            TUint* aSimCbTopicNumber );
+
+        /**
+         * Reset and destroy sim cb topics
+         *         
+         *
+         */
+        void ResetAndDestroySimCbTopics();
+
+
+#ifdef REQHANDLE_TIMER
+        /**
+         * Chooses the type of response, automatic or common
+         *         
+         *
+         * @param aReqHandleType
+         * @param aTsyReqHandle
+         */
+        void SetTypeOfResponse( const TInt aReqHandleType,
+                                const TTsyReqHandle aTsyReqHandle );
+#endif // REQHANDLE_TIMER
+
+    private:
+
+        /**
+         * Pointer to CMmCustomTsy class
+         * Not Own.         
+         */
+        CMmCustomTsy* iMmCustomTsy;
+        
+        /**
+         *Pointer to request handle store
+         * Own.         
+         */
+        CMmTsyReqHandleStore* iTsyReqHandleStore;
+        
+        /**
+         * SIM Custom API request handle table
+         * Own.         
+         */
+        TTsyReqHandle iSIMReqHandles[ESIMRequestTypeMaxNumOfRequests];
+
+        /**
+         * Saves temporarily last TSY request type
+         * Own.         
+         */
+        TSIMRequestType iReqHandleType;
+
+        /**
+         * Pointer to VIAG Home Zone parameters structure
+         * Not Own.         
+         */
+        RMmCustomAPI::TViagParams* iViagParams;
+        
+        /**
+         * Pointer to VIAG Home Zone elements structure
+         * Not Own.         
+         */ 
+        RMmCustomAPI::TViagElement* iViagElems;
+
+        /**
+         * VIAG home zone record content
+         * Not Own.         
+         */
+        RMmCustomAPI::TViagCacheRecordContent* iViagReadCacheRecord;
+
+        /**
+         * Is VIAG home zone params requested before SIM is ready
+         */
+        TBool iViagParamsReadRequested;
+        
+        /**
+         * used for handling SIM CB Topic browsing:
+         * a cached table of all entries         
+         * Own.         
+         */
+        CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* iSimCbTopics;
+
+        /**
+         * The index of the next topic to retrieve with the GetNext-method         
+         */                
+        TInt iGetNextSimCbTopicIndex;
+
+        /**
+         * The index of the topic to be deleted
+         */        
+        TInt iSimCbTopicIndexToBeDeleted;
+
+        /**
+         * The Dynamic cache for VIAG home zone records
+         * Own.         
+         */        
+        CArrayFixFlat<RMmCustomAPI::TViagCacheRecordContent>* iViagDynamicCache;
+
+        /**
+         * Pointer to current cache
+         * Not Own.         
+         */        
+        RMmCustomAPI::TViagCacheRecordId* iCurrentlyRetrievedCache;
+        
+        /**
+         * Is ViagHomeZone cache ready
+         */
+        TBool iViagHomeZoneCacheReady;
+
+        /**
+         * last ViagHomeZone cache error
+         */
+        TInt iLastViagHomeZoneCacheError;
+        
+        /** 
+         * Used for queuing ReadViagHomeZoneCache requests 
+         */
+        struct TReadViagHomeZoneCacheRequest
+			   {
+			   /** ETel request handle */
+			   TTsyReqHandle iReqHandle; 
+			   /** pointer to client-side	data */
+			   RMmCustomAPI::TViagCacheRecordId* iViagRecordId;
+               RMmCustomAPI::TViagCacheRecordContent* iViagRecordContent;
+			   };
+        
+        /**
+		 * Array for buffering ReadViagHomeZoneCache requests
+		 */		     
+		    RPointerArray< TReadViagHomeZoneCacheRequest > 
+            iReadViagHomeZoneCacheRequests;
+        
+        
+        
+        
+    };
+
+#endif      // CMMSIMTSY_H
+
+//  End of File