systemswstubs/examplecommonisc/IscMultiplexerBase/inc/IscMultiplexerBase.h
changeset 43 e71858845f73
parent 40 b7e5ed8c1342
child 46 e1758cbb96ac
--- a/systemswstubs/examplecommonisc/IscMultiplexerBase/inc/IscMultiplexerBase.h	Tue Sep 07 08:19:48 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,446 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-#ifndef ISCMULTIPLEXERBASE_H
-#define ISCMULTIPLEXERBASE_H
-
-//  INCLUDES
-#include <kernel.h>
-#include <IscDefinitions.h>
-
-// CONSTANTS
-_LIT( KIscMultiplexerName,"IscMultiplexer" );
-
-const TUint16 KIscBufferAmount = 10;
-// MACROS
-
-// DATA TYPES
-
-typedef struct
-{
-   TIscFrameType frameType;
-   TIscFrameConcatenation concatenation;
-   TUint16 totalLength;
-   TUint16 writeStartIndex;
-   TUint16 writeLength;
-} TIscFrameInfo;
-
-typedef struct
-{
-   TUint16 size;
-   TUint16 count;
-} TIscBufferEntry;
-
-typedef struct
-{
-   TUint16 mainRcvQueueSize;
-   TUint16 channelRcvQueueSize;
-   TUint16 channelDataRcvQueueSize;
-   TUint16 channelSendQueueSize;
-   TIscBufferEntry bufferConfig[KIscBufferAmount];
-} TIscConfiguration;
-
-// FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-class DIscDevice;
-
-// CLASS DECLARATION
-
-/**
-*  DIscMultiplexerBase defines the ISC Multiplexer Plug-In API.
-*  This class defines the base class for Multiplexer( s ) used in 
-*  conjunction with ISC Driver
-*
-*  @lib IscMultiplexerBase.LIB
-*  @since 2.8
-*/
-class DIscMultiplexerBase : public DLogicalDevice
-    {
-    public:  // Constructors and destructor
-
-        /**
-        * C++ default constructor.
-        */        
-        IMPORT_C DIscMultiplexerBase();
-        
-        /**
-        * Destructor
-        */
-        IMPORT_C virtual ~DIscMultiplexerBase();
-
-    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();
-
-    public: // New functions
-        /**
-        * Second phase initialization, called during ISC Multiplexer loading
-        * ISC Multiplexer must do all initialization here that are normally 
-        * done in Install()
-        * @since 2.8
-        * @return TInt KErrNone if successful
-        */
-        virtual TInt Install2ndPhase() = 0;
-        
-        /**
-        * Multiplexers "pre" intialization before Data transmission driver 
-        * initialization has been done ( e.g. if buffer configurations are given from isc_config.ini )
-        * @since 2.8
-        * @param aParameters Additional parameters passed to multiplexer
-        * @return void 
-        */
-        IMPORT_C virtual void SetInitializationParameters( const TDesC8& aParameters );
-
-        /**
-        * Multiplexer intialization
-        * @since 2.8
-        * @param aOperation The asynchronous request to complete after
-        * multiplexer intialization is complete
-        * @param aParameters Additional parameters passed to multiplexer
-        * @param aChannelPtr DIscChannel pointer
-        * @return void 
-        */
-        virtual void InitializeMultiplexer( const TUint16 aOperation, 
-                                            const TDesC8& aParameters,
-                                            const TAny* aChannelPtr ) = 0;
-
-        /**
-        * Open data link connection with the modem
-        * @since 2.8
-        * @param aDLCI The channel id to open
-        * @param aOpenParams Additional open parameters given by the ISC user,
-        * NULL if omitted
-        * @param aChannelPtr DIscChannel pointer
-        * @return void 
-        */
-        virtual void OpenDLC( const TUint16 aDLCI, 
-                              const TDesC8* aOpenParams,
-                              const TAny* aChannelPtr ) = 0;
-
-        /**
-        * Close data link connection
-        * @since 2.8
-        * @param aDLCI The channel id to close
-        * @param aChannelPtr DIscChannel pointer
-        * @return void 
-        */
-        virtual void CloseDLC( const TUint16 aDLCI,
-                               const TAny* aChannelPtr ) = 0;
-
-        /**
-        * Send data to Domestic OS
-        * @since 2.8
-        * @param aOperation Used to distinguish whether it is a synchronous 
-        * or asynchronous Send request ( EIscSyncSend / EIscAsyncSend )
-        * @param aSenderChannel Sender channel id
-        * @param aData Data to be sent
-        * @param aChannelPtr DIscChannel pointer
-        * @return KErrNone if successful 
-        */
-        virtual TInt Send( const TUint16 aOperation,
-                           const TUint16 aSenderChannel, 
-                           const TDesC8& aData,
-                           const TAny* aChannelPtr ) = 0;
-        /**
-        * Send data to Domestic OS
-        * @since 2.8
-        * @param aOperation Used to distinguish whether it is a synchronous 
-        * or asynchronous Send request ( EIscSyncDataSend / EIscAsyncDataSend )
-        * @param aSenderChannel Sender channel id
-        * @param aData Data to be sent
-        * @param aChannelPtr DIscChannel pointer
-        * @return KErrNone if successful 
-        */
-        virtual TInt DataSend( const TUint16 aOperation,
-                               const TUint16 aSenderChannel,
-                               const TDesC8& aData,
-                               const TAny* aChannelPtr ) = 0;
-
-        
-        /**
-        * Retrieve information on the incoming frame
-        * @since 2.8
-        * @param aFrame Frame which info to retrieve
-        * @param aFrameInfo Structure that the multiplexer must fill
-        * @return void 
-        */
-        virtual void GetFrameInfo( const TDesC8& aFrame, 
-                                   TIscFrameInfo& aFrameInfo ) const = 0;
-
-        /**
-        * Retrieve the channel this frame belongs to
-        * @since 2.8
-        * @param aFrame Frame to check
-        * @param aRcvChannelId Receiver channel id has to written into this
-        * variable. Value should be between 0 and 63. KIscFrameReceiverNotFound
-        * should be returned if multiplexer could not determine correct receiver 
-        * or multiplexer just wants to delete the frame. For multiplexer's purposes 
-        * channel ids higher than 63 are also possible
-        * @param aRcvChannelPtr Receiver channel pointer. If routing to control channel
-        * NULL should be returned an 0 to aRcvChannelId
-        * @return void 
-        */
-        virtual void GetRcvChannelId( const TDesC8& aFrame, 
-                                      TUint16& aRcvChannelId,
-                                      TAny*& aRcvChannelPtr ) = 0;
-
-        /**
-        * Set flow control to specified state
-        * @since 2.8
-        * @param aFlowStatus EIscFlowControlOn / EIscFlowControlOff
-        * @param aChannelId Channel who requested to DL flow control change
-        * @param aChannelPtr DIscChannel pointer for corresponding channel
-        * @return void 
-        */
-        virtual void DLFlowControl( const TInt aFlowStatus,
-                                    const TUint16 aChannelId,
-                                    const TAny* aChannelPtr ) = 0;
-
-        /**
-        * Handle frames going to control channel ( channel zero )
-        * @since 2.8
-        * @param aFrame Control frame to be handled
-        * @return void 
-        */
-        virtual void HandleControlFrame( const TDesC8& aFrame ) = 0;
-        
-        /**
-        * Notify multiplexer that some asynchronous operation has been
-        * cancelled
-        * @since 2.8
-        * @param aChannelId Channel id which has cancelled the operation
-        * @param aOperation The operation that has been cancelled
-        * @param aChannelPtr Channel pointer which has cancelled the operation
-        * @return void 
-        */
-        virtual void CancelNotify( const TUint16 aChannelId,
-                                   const TUint16 aOperation,
-                                   const TAny* aChannelPtr ) = 0;
-
-        /**
-        * API extension function
-        * @since 2.8
-        * @param aChannelId Channel id that is executing the operation
-        * @param aOperation Which custom operation to execute
-        * @param aParameters Additional parameters, NULL if omitted
-        * @param aChannelPtr Pointer to DIscChannel
-        * @return TInt KErrNone if successful. KErrNotSupported if the
-        * operation that was requested is not supported by the multiplexer
-        */
-        IMPORT_C virtual TInt CustomFunction( const TUint16 aChannelId,
-                                              const TUint16 aOperation, 
-                                              TAny* aParameters,
-                                              const TAny* aChannelPtr );
-
-        /**
-        * Get information on specified channel
-        * @since 2.8
-        * @param aChannelNumber The channel, which information is required
-        * @param aInfo Buffer in client address space where to write the data
-        * @return TInt KErrNone if successful. KErrNotSupported if not supported 
-        * by the multiplexer
-        */
-        IMPORT_C virtual TInt GetChannelInfo( const TUint16 aChannelNumber,
-                                              TDes8& aInfo );
-
-        /**
-        * Get maximun data size ( for sending and receiving )
-        * @since 2.8
-        * @param aChannelId Channel which needed maximum data size is queried
-        * @return TInt Maximun data size in bytes 
-        */
-        virtual TInt MaximumDataSize( const TUint16 aChannelId ) = 0; 
-
-        /**
-        * Inform multiplexer on connection status changes
-        * @since 2.8
-        * @param aConnectionStatus EIscConnectionOk / EIscConnectionNotOk
-        * @return void 
-        */
-        virtual void NotifyConnectionStatus( const TInt aConnectionStatus ) = 0;
-
-        /**
-        * Connect ISC Driver to ISC Multiplexer
-        * @since 2.8
-        * @param aDevice Pointer to DIscDevice class of ISC Driver
-        * @return void 
-        */
-        IMPORT_C virtual void Connect( DIscDevice* aDevice );
-
-        /**
-        * Get buffer configurations from ISC Multiplexer
-        * @since 2.8
-        * @param aConfig Configuration data structure that the multiplexer must fill
-        * @return  void 
-        */
-        virtual void GetConfiguration( TIscConfiguration& aConfig ) = 0;
-
-
-    protected:  // New functions
-        
-        /**
-        * Complete specified asynchronous request
-        * @since 2.8
-        * @param aReqNumber Request to complete ( possible values in 
-        * IscDefinitions.h )
-        * @param aStatus Error code, KErrNone if the operation in question
-        * was successful
-        * @param aChannelPtr The channel, which request to complete
-        * @return void 
-        */
-        IMPORT_C void CompleteRequest( TUint16 aReqNumber, 
-                                       TInt aStatus, 
-                                       const TAny* aChannelPtr );
-     
-        /**
-        * Check if specified request is pending in ISC Driver
-        * @since 2.8
-        * @param aReqNumber Request to check if pending
-        * @param aChannelId The channel, which to check for the request
-        * @return TInt KRequestPending if the request is pending. KErrNone if 
-        * request is not pending
-        */
-        IMPORT_C TInt IsPending( const TUint16 aReqNumber, 
-                                 const TAny* aChannelId );
-
-        /**
-        * Queue frame for sending
-        * @since 2.8
-        * @param aChannelId On which channels queue to add the frame. Value
-        * must be between 0 and 63. 0( zero ) refers to the control channel.
-        * @param aFrame Frame to send
-        * @param aMultiplexerDfc Dfc to run when frame transmission to modem has been done
-        * @param aMultiplexerErrorCode error if data transmsission was succesful or not
-        * @return TInt KErrNone if successful. KErrNotFound if the channel 
-        * in question was not open 
-        */        
-        IMPORT_C TInt QueueFrame( const TUint16 aChannelId,
-                                  const TDesC8* aFrame,
-                                  const TAny* aChannelPtr,
-                                  TAny* aFrameInfo = NULL );
-
-        /**
-        * Start sending the frames
-        * @since 2.8
-        * @return void 
-        */
-        IMPORT_C void FlushQueues();
-
-        /**
-        * Notify flow control changes to ISC Driver
-        * @since 2.8
-        * @param aULFlowStatus Uplink flow control status, 
-        * EIscFlowControlOff/EIscFlowControlOn
-        * @param aChannelId Channel to be affected by the flow control
-        * @param aChannel Channel to be affected by the flow control, NULL if wanted to have 
-        * effect on all channels within this id. By default it affects all channels
-        * @return void 
-        */
-        IMPORT_C void ULFlowControl( const TInt aULFlowStatus,
-                                     const TUint16 aChannelId,
-                                     TAny* aChannelPtr = NULL );
-
-        /**
-        * 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 void ReserveMemoryBlock( TDes8*& aPtr, 
-                                          const TUint16 aSize );
-
-        /**
-        * Release memory block allocated with ReserveMemoryBlock
-        * @since 2.8
-        * @param aPtr Pointer to memory block to be released
-        * @return void 
-        */
-        IMPORT_C void ReleaseMemoryBlock( TDes8* aPtr );
-
-        
-        /**
-        * Copy data from user buffer to kernel side buffer by multiplexer.
-        * This method will be deprecated in the future.
-        * It is preffered to use GetThreadPtr instead.          
-        * @since 2.8
-        * @param aUserBuffer pointer to source descriptor
-        * @param aKernelBuffer pointer to destination descriptor
-        * @param aChannelPtr DIscChannel pointer
-        * @param aOffset Offset of the source buffer
-        * @return KErrNone if successful
-        */
-        IMPORT_C TInt CopyFromUserBuffer( const TDesC8& aUserBuffer,
-                                          TDes8& aKernelBuffer,
-                                          const TAny* aChannelPtr,
-                                          const TInt aOffset = 0 );
-
-        /**
-        * Copy data to user side buffer from kernel side by multiplexer.
-        * This method will be deprecated in the future.
-        * It is preffered to use GetThreadPtr instead.        
-        * @since 2.8
-        * @param aUserBuffer pointer to destination descriptor
-        * @param aKernelBuffer pointer to source descriptor
-        * @param aChannelPtr DIscChannel pointer
-        * @param aOffset Offset of the destination buffer
-        * @return KErrNone if succesful
-        */
-        IMPORT_C TInt CopyToUserBuffer( TAny* aUserBuffer, 
-                                        const TDesC8& aKernelBuffer, 
-                                        const TAny* aChannelPtr,
-                                        const TInt aOffset = 0 );
-
-
-        /**
-        * Description_here
-        * @since 2.8
-        * @param aChannelId Channel whose queued send frames should be deleted
-        * @param aChannelPtr Corresponding DIscChannel pointer
-        * @return TInt KErrNone if succesful
-        */
-        IMPORT_C TInt CancelSending( const TUint16 aChannelId, const TAny* aChannelPtr );
-
-
-        /**
-        * Returns a user side thread of a given channel. Returns NULL if channelptr
-        * is not valid or if the channel is not found.
-        * @since 3.0
-        * @param const TAny* aChannelPtr, channel pointer (DIscChannel).
-        * @return DThread&, user side clients thread. Ownership is not given.
-        */
-        IMPORT_C DThread* GetThreadPtr( const TAny* aChannelPtr );
-    
-    
-    protected:  // Data
-        
-        // pointer to DIscDevice class from ISC Driver
-        DIscDevice* iDevice; // No ownership
-
-    };
-
-#endif      // ISCMULTIPLEXERBASE_H   
-            
-// End of File