wim/inc/ScardComm.h
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/inc/ScardComm.h	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 2003 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:  Core class for all Smart Card aware applications to use when 
+*                communicating with the card.
+*
+*/
+
+
+
+#ifndef CSCARDCOMM_H
+#define CSCARDCOMM_H
+
+//  INCLUDES
+#include "ScardConnectionRequirement.h"
+
+
+// FORWARD DECLARATIONS
+class RScard;
+
+// CLASS DECLARATION
+
+/**
+*  Core class for card communication.
+*  This is the core class for all SC aware applications to use when 
+*  communicating with the card. All objects of this class are 
+*  connected to a reader, and the reader's name must be supplied as a 
+*  parameter when constructing objects of this class
+*
+*  @lib Scard.lib
+*  @since Series60 2.1
+*/
+class CScardComm : public CBase
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        * @param aScard The connection to server. 
+        *        The RScard object must not have any other CScardComm objects
+        *        attached to it.
+        * @param aRequirement Parameters to the connection
+        * @param aReaderName This is set to contain the name of the 
+        *        reader that was contacted when a connection is established
+        * @param aStatus This status is signaled when connection has been made
+        * @param aTimeOut The timeout in microseconds
+        * @return Pointer to CScardComm object
+        */
+        IMPORT_C static CScardComm* NewL(
+            RScard* aScard, 
+            TScardConnectionRequirement& aRequirement,
+            TScardReaderName& aReaderName,
+            TRequestStatus& aStatus, 
+            const TInt32 aTimeOut = 0 );
+        
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~CScardComm();
+
+    public: // New functions
+        
+        /**
+        * Returns the RScard object contained within this object.
+        * @return Pointer to RScard object
+        */
+        IMPORT_C RScard* Scard() const;
+
+        /**
+        * This function fetches the answer-to-reset bytes of the SC 
+        * currently in the card reader. If an error occurs during the 
+        * operation, the  length of the atr bytes is set to zero. Currently
+        * leaves with KErrNotSupported
+        * @param aATR ATR-bytes
+        * @return void
+        */
+        IMPORT_C void GetATRL( TScardATR& aATR ) const;
+
+        /**
+        * Get proprietary parameters from the reader handler.
+        * @param aTag parameter wanted (see scardbase.h)
+        * @param aValue value of desired parameter
+        * @param aTimeOut timeout in microseconds
+        * @return void
+        */
+        IMPORT_C void GetCapabilitiesL( const TInt32 aTag,
+                                        TDes8& aValue, 
+                                        const TInt32 aTimeOut = 0 ) const;
+
+        /**
+        * This function is the basic transmission function. It takes a
+        * 8-bit command data of unspecified length and transmits it to 
+        * the reader handler. The reader handler will pass it on to the 
+        * card, and place the response in the supplied response buffer 
+        * (also of undefined length). The buffer must be sufficiently 
+        * big to accomodate the response, otherwise the calling thread 
+        * will be panicked.
+        * @param aCommand This descriptor holds the command sent to the 
+        *        card. The length of the descriptor must match the data length
+        *        of the command.
+        * @param aResponse The response from the SC is copied here.
+        * @param aStatus Signaled when the operation is finished.
+        * @param aTimeOut Timeout in microseconds.
+        * @param aChannel The logical channel this command will be executed in.
+        * @return void
+        */
+        IMPORT_C void TransmitToCard( const TDesC8& aCommand, 
+                                      TDes8& aResponse,
+                                      TRequestStatus& aStatus,
+                                      const TInt32 aTimeOut = 0, 
+                                      const TInt8 aChannel = 0) const;
+
+        /**
+        * This function will cancel any transmissions and other 
+        * operations this object has currently pending within the 
+        * server. If the object has an active transaction reservation, 
+        * this will also be cancelled. All operations sent before this 
+        * command will terminate with error code KScErrCancelled.
+        * @return void
+        */
+        IMPORT_C void CancelTransmit() const;
+
+        /**
+        * Channel management function.
+        * @param aCommand Channel operation.
+        * @param aArgument
+        * @param aResponseBuffer Buffer for response.
+        * @param aStatus Signaled when the operation is finished.
+        * @param aTimeOut Timeout in microseconds.
+        * @return void
+        */
+        IMPORT_C void ManageChannel( const TScChannelManagement aCommand, 
+                                     const TInt8 aArgument,
+                                     TDes8& aResponseBuffer,
+                                     TRequestStatus& aStatus,
+                                     const TInt32 aTimeOut ) const;
+
+    private:
+
+        /**
+        * C++ default constructor.
+        * @param aScard Pointer to RScard object
+        */
+        CScardComm( RScard* aScard );
+
+
+        /**
+        * By default Symbian OS constructor is private.
+        */
+        void ConstructL( TScardConnectionRequirement& aRequirement,
+                         TScardReaderName& aReaderName, 
+                         TRequestStatus& aStatus, 
+                         const TInt32 aTimeOut );
+
+        /**
+        * Disconnect from reader
+        * @return void
+        */
+        void DisconnectFromReader() const;
+    
+    private:    // Data
+        // Pointer to Scard object. Not owned. 
+        RScard* iScard;
+    };
+
+#endif      // CSCARDCOMM_H   
+            
+// End of File