systemswstubs/examplecommonisc/IscDataTransmissionBase/inc/IscDataTransmissionBase.h
changeset 0 0ce1b5ce9557
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/systemswstubs/examplecommonisc/IscDataTransmissionBase/inc/IscDataTransmissionBase.h	Thu Jan 14 07:14:53 2010 +0200
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2007 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:  A reference implementation for ISC data transmission base.
+*
+*/
+
+
+
+#ifndef ISCDATATRANSMISSIONBASE_H
+#define ISCDATATRANSMISSIONBASE_H
+
+//  INCLUDES
+#include <iscmultiplexerbase.h>
+#include <kernel.h>
+
+// CONSTANTS
+_LIT(KIscDataTransmissionDriverName,"IscDataTransmissionDriver");
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class DIscDevice;
+class DIscBufferAllocator;
+
+// CLASS DECLARATION
+
+/**
+*  DIscDataTransmissionBase defines the ISC Data Transmission Plug-In API
+*
+*  @lib IscDataTransmissionBase.LIB
+*  @since 2.8
+*/
+class DIscDataTransmissionBase : public DLogicalDevice
+    {
+
+    public:
+        /**
+        * C++ default constructor.
+        */
+        IMPORT_C DIscDataTransmissionBase();
+       
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~DIscDataTransmissionBase();
+    
+    public:  // Functions from base class
+        
+        /**
+        * Implementation of pure-virtual Install from DLogicalDevice. This 
+        * function calls Install2ndPhase.
+		* @since 2.8
+        * @return TInt KErrNone
+        */
+        IMPORT_C TInt Install();
+
+        /**
+        * This method makes the buffer allocations according to the 
+        * configuration specified by the ISC Multiplexer
+		* @since 2.8
+        * @param TIscBufferEntry* aBufferConfig pointer to buffer configuration table
+        * @return void 
+        */
+        IMPORT_C virtual void AllocBuffers( TIscBufferEntry* aBufferConfig );
+
+    public: // New functions
+     
+        /**
+        * Second phase initialization, called during ISC Multiplexer loading. 
+        * ISC Data Transmission Driver must do all initialization here that
+        * are normally done in Install()
+		* @since ?Series60_version
+        * @return TInt KErrNone if successful
+        */
+        virtual TInt Install2ndPhase() = 0;
+
+        /**
+        * ISC Data Transmission driver initialization
+		* @since 2.8
+        * @param aParameters Initialization parameters passed from 
+        * ISC initialization file
+        * @param aDfc Dfc that must be runned after the initialization 
+        * has been done
+        * @return void 
+        */
+        virtual void InitializeDataTransmission( TDesC8& aParameters, 
+                                                 TDfc* aDfc,
+                                                 TInt& aErrorCode /* KErrNone */) = 0;
+         
+        /**
+        * In asynchronous data transmission checkin if transmission is not yet finished
+		* Access to this method is necessary since transmission can be asynchronous.
+		* @since 2.8
+        * @return TBool EFalse / ETrue
+        */
+        virtual TBool IsWritePending() { return EFalse; };
+
+        /**
+        * Send frame to Domestic OS
+		* @since 2.8
+        * @param aFrame Frame to be sent
+        * @param aDfc Dfc function that must be runned after the frame is sent. 
+        * Or the dfc can be runned immediately if the driver internally buffers
+        * the outgoing frames
+        * @param aMultiplexerDfc Dfc function in multiplexer to handle send complition
+        * @param aMultiplexerErrorCode error code for frame sending to modem
+        * @return void 
+        */
+        virtual void SendFrame( TDes8& aFrame, TDfc* aDfc, TAny* aFrameInfo ) = 0;
+        
+        /**
+        * Get the connection status
+		* @since 2.8
+        * @return TInt EIscConnectionOk / EIscConnectionNotOk
+        */
+        virtual TInt ConnectionStatus() = 0;
+
+        /**
+        * Connects ISC Driver to ISC Data Transmission Driver
+		* @since 2.8
+        * @param aDevice Pointer to DIscDevice class in ISC Driver
+        * @return void 
+        */
+        IMPORT_C virtual void Connect(DIscDevice* aDevice);
+
+        /**
+        * Reserve memory block 
+		* @since 2.8
+        * @param aPtr Pointer to reserved memory block, NULL if not successful
+        * @param aSize Required minimun size of the block
+        * @return void 
+        */
+        IMPORT_C virtual void ReserveMemoryBlock( TDes8*& aPtr, TUint16 aSize);
+
+        /**
+        * Release the reserved memory block
+		* @since 2.8
+        * @param aPtr Pointer to memory block to be released
+        * @return void 
+        */
+        IMPORT_C virtual void ReleaseMemoryBlock( TDes8* aPtr );
+
+    protected:  // New functions
+
+        /**
+        * Transfer incoming frame to ISC Driver
+		* @since 2.8
+        * @param aFrame Frame that was received
+        * @return void 
+        */
+        IMPORT_C void ReceiveFrame(TDesC8& aFrame);
+        
+        /**
+        * Notifies any connection status changes to ISC Driver
+		* @since 2.8
+        * @param aStatus EIscConnectionOk / EIscConnectionNotOk
+        * @return void 
+        */
+        IMPORT_C void NotifyConnectionStatus( TInt aStatus );
+
+    private:    // Data
+        
+        // pointer to DIscDevice class from ISC Driver
+        DIscDevice* iDevice; // No ownership
+        
+        // pointer to pre-allocated buffers
+        DIscBufferAllocator* iIscBufferAllocator; // Ownership
+
+    };
+
+#endif      // ISCDATATRANSMISSIONBASE_H   
+            
+// End of File