--- a/systemswstubs/examplecommonisc/IscMultiplexerBase/inc/IscMultiplexerBase.h Tue Jul 06 14:03:31 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