--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/satsa/apdu/src.s60/cstsconnection.h Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,321 @@
+/*
+* Copyright (c) 2008 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 CSTSCONNECTION_H
+#define CSTSCONNECTION_H
+
+// INCLUDES
+#include "functionserver.h"
+#include <e32base.h>
+#include "stsapduconstants.h" // for TSTSNetworkType
+#include "cstsuri.h" // for turitype
+#include "mstscloseobserver.h"
+
+using namespace java::util;
+
+namespace java
+{
+namespace satsa
+{
+
+// FORWARD DECLARATIONS
+class CSTSChannelManager;
+class CSTSSlotManager;
+class CSTSPinManager;
+class CSTSApduExchanger;
+class CSTSAccessControl;
+class CSTSCardOperationsFacade;
+class CSTSCardAppManager;
+class MSTSRespHandler;
+class CSTSCmdApdu;
+class CSTSMidletInfo;
+class CSTSBTSapListener;
+class CSTSCardStateListener;
+
+// CLASS DECLARATION
+/**
+ * SATSA-APDUs native side implementation's interface to JNI side.
+ * Handels communication with smart card.
+ *
+ * @since 3.0
+ */
+NONSHARABLE_CLASS(CSTSConnection) : public CBase, public MSTSCloseObserver, public FunctionServer
+{
+
+private: // Type definition
+ enum TAidParserState
+ {
+ EFirstDigit,
+ ESecondDigit,
+ EDot,
+ EERROR
+ };
+
+public:
+ enum TConnectionState
+ {
+ EOpened,
+ EClosed,
+ ECardRemoved,
+ EBTSapInUse
+ };
+
+public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aRespHandler When asynchronous exchange is ready, response will
+ * be delivered to response handler. Ownership transferred.
+ * @param aMidletInfo Information about midlet
+ */
+ static CSTSConnection* NewL(JNIEnv& aJni,
+ jobject aPeer,MSTSRespHandler* aRespHandler,
+ CSTSMidletInfo* aMidletInfo);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSTSConnection();
+
+public: // New functions
+
+ /**
+ * Opens a connection to smart card application. URI must be set before
+ * this method is called.
+ * @since 3.0
+ */
+ void OpenL();
+
+ /**
+ * To wrap the CallMethodL()
+ */
+ static void WrapOpenL(CSTSConnection* connection);
+
+ /**
+ * Closes a connection to smart card. Cancels all pending apdu sending.
+ * @since 3.0
+ */
+ void CloseL();
+
+ /**
+ * To wrap the CallMethodL()
+ */
+ static void WrapCloseL(CSTSConnection* connection);
+
+ /**
+ * Pops up a UI that requests the user for an old or existing PIN value
+ * and the new PIN value to change the value of the PIN.
+ * @since 3.0
+ * @param aPinID The type of PIN which is supposed to prompt the user
+ * to change.
+ * @param aResponseAPDU On return contains status word received from
+ * the smart card in byte array. Null if the user cancels the request.
+ */
+ void ChangePinL(TInt aPinID);
+
+ /**
+ * To wrap the CallMethodL()
+ */
+ static void WrapChangePinL(CSTSConnection* connection, TInt aPinID);
+
+ /**
+ * Pops up a UI that requests the user to enter the value for the PIN
+ * that is to be disabled.
+ * @since 3.0
+ * @param aPinID The type of PIN which is required to prompt the user
+ * to enter.
+ */
+ void DisablePinL(TInt aPinID);
+ /**
+ * To wrap the CallMethodL()
+ */
+ static void WrapDisablePinL(CSTSConnection* connection, TInt aPinID);
+
+ /**
+ * Pops up a UI that requests the user to enter the value for the PIN
+ * that is to be enabled.
+ * @since 3.0
+ * @param aPinID The type of PIN which is required to prompt the user
+ * to enter.
+ */
+ void EnablePinL(TInt aPinID);
+ /**
+ * To wrap the CallMethodL()
+ */
+ static void WrapEnablePinL(CSTSConnection* connection, TInt aPinID);
+
+ /**
+ * Asks from the user PIN value for PIN verification purposes and sends
+ * it to the card.
+ * @since 3.0
+ * @param aPinID The type of PIN which is supposed to prompt the user
+ * to enter.
+ */
+ void EnterPinL(TInt aPinID);
+ /**
+ * To wrap the CallMethodL()
+ */
+ static void WrapEnterPinL(CSTSConnection* connection, TInt aPinID);
+
+ /**
+ * Pops up a UI that requests the user to enter the value for the
+ * unblocking PIN and the new value for the blocked PIN.
+ * @since 3.0
+ * @param aBlockedPinID The ID of PIN that is to be unblocked.
+ * @param aUnblockingPinID The ID of unblocking PIN.
+ */
+ void UnblockPinL(TInt aBlockedPinID, TInt aUnblockingPinID);
+ /**
+ * To wrap the CallMethodL()
+ */
+ static void WrapUnblockPinL(CSTSConnection* connection, TInt aBlockedPinID, TInt aUnblockingPinID);
+ /**
+ * Exchanges an APDU command with a smart card application.
+ * @since 3.0
+ * @param aCommandAPDU A byte encoded command for the smart card
+ * application
+ */
+ void ExchangeAPDUL(TPtrC8 aCommandAPDU);
+ /**
+ * To wrap the CallMethodL()
+ */
+ static void WrapExchangeAPDUL(CSTSConnection* connection, TPtrC8 aCommandDes);
+
+ /**
+ * Returns the Answer To Reset (ATR) message sent by the smart card
+ * in response to the reset operation.
+ * @since 3.0
+ * @param aATR On return contains the ATR message if the card
+ * is inserted, or null if the card has been removed or the connection
+ * has been closed.
+ */
+ std::wstring GetATRL();
+ /**
+ * To wrap the CallMethodL()
+ */
+ static std::wstring WrapGetATRL(CSTSConnection* connection);
+
+ /**
+ * Gets information of smart card slots.
+ * @since 3.0
+ * @param aResponseAPDU Return a information of smart cards slots in
+ * string format.
+ */
+
+ std::wstring GetSlotsL();
+ /**
+ * To wrap the CallMethodL()
+ */
+ static std::wstring WrapGetSlotsL(CSTSConnection* connection);
+
+ /**
+ * Sets URI. Ownership transferred.
+ * @since 3.0
+ * @param aURI URI object.
+ */
+ void SetURI(TInt /*CSTSURI& */aURI);
+ /**
+ * To wrap the CallMethodL()
+ */
+ static void WrapSetURI(CSTSConnection* connection, CSTSURI* aURI);
+
+public: // Functions from base classes
+
+ void NotifyClose(TInt aReason);
+
+private:
+
+ // From FunctionServer
+ virtual void vmAttached();
+ virtual void doServerSideInit();
+ void AddToScheduler();
+
+ /**
+ * C++ default constructor.
+ */
+ CSTSConnection(MSTSRespHandler* aRespHandler,
+ CSTSMidletInfo* aMidletInfo);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Closes a connection to smart card. Cancels all pending apdu sending.
+ * For destructor use.
+ * @since 3.0
+ */
+ void Close();
+
+ /**
+ * Checks iState member variable and leaves if connetion is
+ * closed or card is removed. Checks also iTarget member variable
+ * and leaves if SAT connection is used and it is not allowed.
+ */
+ void CheckStateL(TBool aSATNotAllowed = EFalse);
+
+ /**
+ * Opens channel and selects card application. If selection fails
+ * closes the channel and leaves with proper leave code.
+ */
+ void DoSelectApplicationL();
+
+private: // Data
+
+ CSTSChannelManager* iChannelManager;//owned
+ CSTSSlotManager* iSlotManager;//owned
+ CSTSPinManager* iPinManager; //owned
+ CSTSApduExchanger* iApduExchanger; //owned
+ CSTSAccessControl* iAccessControl; //owned
+ CSTSCardOperationsFacade* iCOFacade; //owned
+ CSTSCardAppManager* iCardAppManager; //owned
+
+ TInt iChannel;
+ //Uri, owned
+ CSTSURI* iURI;
+
+ //SAT or AID connection
+ CSTSURI::TURIType iURITarget;
+ //is connection opened succesfully or not
+ TConnectionState iState;
+ //whether the phone is running in GSM or UMTS
+ TSTSNetworkType iNetwork;
+
+ //command apdu, owned
+ CSTSCmdApdu* iCmdApdu;
+ MSTSRespHandler* iRespHandler; //owned
+
+ CSTSMidletInfo* iMidletInfo; //owned
+
+ HBufC8* iATR; //owned
+
+ //Bluetooth remote Sim Access Profile Listener
+ CSTSBTSapListener* iBTSapListener; //owned
+
+ //For listening is card available or not
+ CSTSCardStateListener* iCardStateListener; //owned
+ //JNIEnv* mJni;
+ //jobject mPeer;
+
+};
+
+} // namespace satsa
+} // namespace java
+#endif // CSTSCONNECTION_H
+// End of File