--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmcustomtsy/CMmWimTsy.h Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,470 @@
+/*
+* 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 CMMWIMTSY_H
+#define CMMWIMTSY_H
+
+// INCLUDES
+#include "CMmCustomTsy.h"
+#include "CMmSubTsyBase.h"
+#include "cmmtsyreqhandlestore.h"
+
+// CLASS DECLARATION
+
+/**
+ * CMmWimTsy contains mode-independent WIM functionality.
+ * Extension request handles and parameters are stored as attributes.
+ */
+NONSHARABLE_CLASS( CMmWimTsy ) : public CMmSubTsyBase
+ {
+ public:
+
+ // TWIMRequestType enumerates indexes to WIM's request handle
+ // table. Request handles are stored there while waiting for
+ // completion of the request.
+ enum TWIMRequestType
+ {
+ EWIMTsyReqHandleUnknown,
+ EWIMRequestTypeSendAPDUReq,
+ EWIMRequestTypeGetATR,
+ EWIMRequestTypeSimWarmReset,
+ EWIMRequestTypeGetSimCardReaderStatus,
+ EWIMRequestTypeNotifySimCardStatus,
+ EWIMRequestTypeSendAPDUReqV2,
+ EWIMRequestTypePowerSimOn,
+ EWIMRequestTypePowerSimOff,
+ // Declare constant for those requests that need
+ // own request handle record in iTsyReqHandleStore above the
+ // following
+ EWIMRequestTypeMaxNumOfRequests,
+
+ // Let the next literal be the last
+ EWIMRequestTypeUndefined = 0xff
+ };
+
+ public:
+
+ /**
+ * Two-phased constructor.
+ *
+ *
+ * @param mmCustoTsy A pointer to a MM Custom Tsy
+ * @return A pointer to a MM WIM TSY object
+ */
+ static CMmWimTsy* NewL( CMmCustomTsy* mmCustomTsy );
+
+ /**
+ * Destructor
+ */
+ ~CMmWimTsy();
+
+ /**
+ * Initialisation method
+ *
+ *
+ */
+ void Init();
+
+ /**
+ * Tells whether the object supports given IPC.
+ *
+ *
+ * @param anIpc Request's IPC value
+ * @return TBool ETrue if object support given IPC
+ */
+ TBool SupportingIPC( const TInt anIpc );
+
+ /**
+ * Handles extended client requests. Uses TRAP to ensure functioning
+ * on memory allocation failure.
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @param anIpc Request's IPC value
+ * @param aPackage Reference to a data package
+ * @return Error value
+ */
+ TInt DoExtFuncL( const TTsyReqHandle aTsyReqHandle,
+ const TInt anIpc,
+ const TDataPackage& aPackage );
+
+ /**
+ * Returns request mode for given IPC number.
+ *
+ *
+ * @param anIpc An interprocess communication command identifier
+ * @return The ReqMode corresponding to given IPC
+ */
+ CTelObject::TReqMode ReqModeL( const TInt anIpc );
+
+ /**
+ * Returns number of slots to be used for given IPC.
+ *
+ *
+ * @param anIpc An interprocess communication command identifier
+ * @return The number of slots reserved for a given IPC
+ */
+ TInt NumberOfSlotsL( const TInt anIpc );
+
+ /**
+ * Cancels request of which IPC number and request handle are given in
+ * parameters.
+ *
+ *
+ * @param anIpc An interprocess communication command identifier
+ * @param aTsyReqHandle Request handle
+ * @return Error value
+ */
+ TInt CancelService( const TInt anIpc,
+ const TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Register given notification.
+ *
+ *
+ * @param anIpc an interprocess communication command identifier
+ * @return KErrNotSupported
+ */
+ TInt RegisterNotification( const TInt anIpc );
+
+ /**
+ * Deregister given notification.
+ *
+ *
+ * @param anIpc An interprocess communication command identifier
+ * @return KErrNotSupported
+ */
+ TInt DeregisterNotification( const TInt anIpc );
+
+ /**
+ * Complete APDU response message from adaptation
+ *
+ *
+ * @param aDataPackage Packaged response data
+ * @param aError Error code
+ */
+ void CompleteSendAPDUReq( CMmDataPackage * aDataPackage, TInt aError );
+
+ /**
+ * Complete GetATR response message
+ *
+ *
+ * @param aData Response data
+ * @param aError Error code
+ */
+ void CompleteGetATR( TPtrC8& aData, TInt aError );
+
+ /**
+ * Complete SimWarmReset response message
+ *
+ *
+ * @param aError Error code
+ */
+ void CompleteSimWarmReset( TInt aError );
+
+ /**
+ * Complete GetSimCardReaderStatus response message
+ *
+ *
+ * @param aData Response data
+ * @param aError Error code
+ */
+ void CompleteGetSimCardReaderStatus( TPtrC8& aData, TInt aError );
+
+ /**
+ * Complete NotifySimCardStatus notification
+ *
+ *
+ * @param aCardStatus Response data
+ */
+ void CompleteNotifySimCardStatus(
+ RMmCustomAPI::TSIMCardStatus aCardStatus );
+
+ /**
+ * Complete SendAPDUReqV2 response message
+ *
+ *
+ * @param aData Response data
+ * @param aError Error code
+ */
+ void CompleteSendAPDUReqV2( TPtrC8& aData, TInt aError );
+
+ /**
+ * Complete PowerSimOn response message
+ *
+ *
+ * @param aError Error code
+ */
+ void CompletePowerSimOn( TInt aError );
+
+ /**
+ * Complete PowerSimOff response message
+ *
+ *
+ * @param aError Error code
+ */
+ void CompletePowerSimOff( 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:
+
+ /**
+ * Send APDU request message to adaptation
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @param aInfo Pointer to the detail's of the request
+ * @param aData Request's data buffer pointer
+ * @return KErrNone
+ */
+ TInt SendAPDUReqL( const TTsyReqHandle aTsyReqHandle,
+ TDes8 * aInfo,
+ TDes8 * aData );
+
+ /**
+ * Cancel SendAPDUReq request
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @return error code
+ */
+ TInt SendAPDUReqCancel( TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ *
+ *
+ * @param aMmCustomTsy a pointer to MM Custom Tsy object
+ * @return error code
+ */
+ void ConstructL( CMmCustomTsy * aMmCustomTsy );
+
+ /**
+ * C++ default constructor
+ */
+ CMmWimTsy();
+
+#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
+
+ /**
+ * Send GetATR request message
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @param aATR Pointer to the detail's of the request
+ * @return Error value
+ */
+ TInt GetATRL( const TTsyReqHandle aTsyReqHandle, TDes8 * aATR );
+
+ /**
+ * Cancel GetATR request
+ *
+ *
+ * @return TInt KErrNone
+ */
+ TInt GetATRCancel();
+
+ /**
+ * Send SimWarmReset request message
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @return Error value
+ */
+ TInt SimWarmResetL( const TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Cancel SimWarmReset request
+ *
+ *
+ * @return KErrNone
+ */
+ TInt SimWarmResetCancel();
+
+ /**
+ * Send GetSimCardReaderStatus request message
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @param aSimCardReaderStatus Pointer to the detail's of the request
+ * @return Error value
+ */
+ TInt GetSimCardReaderStatusL( const TTsyReqHandle aTsyReqHandle,
+ RMmCustomAPI::TSimCardReaderStatus * aSimCardReaderStatus );
+
+ /**
+ * Cancel GetSimCardReaderStatus request
+ *
+ *
+ * @return KErrNone
+ */
+ TInt GetSimCardReaderStatusCancel();
+
+ /**
+ * Send NotifySimCardStatus request message
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @param aCardStatus Pointer to the detail's of the request
+ * @return Error value
+ */
+ TInt NotifySimCardStatus( const TTsyReqHandle aTsyReqHandle,
+ RMmCustomAPI::TSIMCardStatus * aCardStatus );
+
+ /**
+ * Cancel NotifySimCardStatus request
+ *
+ *
+ * @param ?arg1 ?description
+ * @return KErrNone
+ */
+ TInt NotifySimCardStatusCancel();
+
+ /**
+ * Send APDUReqV2 request message
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @param aApduParameters Pointer to class on user side
+ * @return Error value
+ */
+ TInt SendAPDUReqV2L( TTsyReqHandle aTsyReqHandle,
+ RMmCustomAPI::TApduParameters * aApduParameters );
+
+ /**
+ * Cancel SendAPDUReqV2 request
+ *
+ * @sins S60 v.2.6
+ * return KErrNone
+ */
+ TInt SendAPDUReqV2Cancel();
+
+ /**
+ * Send PowerSimOn request message
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @return Error value
+ */
+ TInt PowerSimOnL( const TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Cancel PowerSimOn request
+ *
+ *
+ * return KErrNone
+ */
+ TInt PowerSimOnCancel();
+
+ /**
+ * Send PowerSimOff request message
+ *
+ *
+ * @param aTsyReqHandle Request handle
+ * @return Error value
+ */
+ TInt PowerSimOffL( const TTsyReqHandle aTsyReqHandle );
+
+ /**
+ * Cancel PowerSimOff request
+ *
+ *
+ * @return KErrNone
+ */
+ TInt PowerSimOffCancel();
+
+ private:
+
+
+ /**
+ * Pointer to CMmCustomTsy object
+ * Not Own.
+ */
+ CMmCustomTsy* iMmCustomTsy;
+
+ /**
+ * Pointer to request handle store
+ * Own.
+ */
+ CMmTsyReqHandleStore* iTsyReqHandleStore;
+
+ /**
+ * WIM Custom API request handle table
+ * Own.
+ */
+ TTsyReqHandle iWIMReqHandles[EWIMRequestTypeMaxNumOfRequests];
+
+ /**
+ * Return pointers to client side
+ * Own.
+ */
+ TDes8* iRetApduInfo;
+
+ /**
+ * Return pointers to client side
+ * Own.
+ */
+ TDes8* iRetApduData;
+
+ /**
+ * Return pointers to client side
+ * Own.
+ */
+ TDes8* iAnswerToReset;
+
+ /**
+ * Pointer to the buffer to hold ApduParameters
+ * Own.
+ */
+ RMmCustomAPI::TApduParameters* iApduParameters;
+
+ /**
+ * Pointer to the buffer to hold SIM card reader status
+ * Own.
+ */
+ RMmCustomAPI::TSimCardReaderStatus* iSimCardReaderStatus;
+
+ /**
+ * Pointer to the buffer to hold SIM card status
+ * Own.
+ */
+ RMmCustomAPI::TSIMCardStatus* iNotifiedSimCardStatus;
+ };
+
+#endif // CMMWIMTSY_H