diff -r 37b610eb7fe3 -r b5894bb67e73 systemswstubs/examplecommonisc/IscDriver/inc/IscChannel.h --- a/systemswstubs/examplecommonisc/IscDriver/inc/IscChannel.h Thu Aug 19 09:36:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,325 +0,0 @@ -/* -* Copyright (c) 2002-2005 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 DISCCHANNEL_H -#define DISCCHANNEL_H - -// INCLUDES -#include -#include // TIscFrameInfo - -// CONSTANTS -const TInt KMajorVersionNumber = 1; -const TInt KMinorVersionNumber = 0; -const TInt KBuildVersionNumber = 1; - -const TUint8 KBehaviormask = 15; //bits 00001111 - -// MACROS - -const TInt KIscEmptyMyBuffersDfcPriority( 4 ); -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class DIscDevice; -class DIscQueue; -class IscChannelContainer; - -/** -* Handles all interraction with the user-side -* -* @lib IscDriver.LIB -* @since 2.8 -*/ -class DIscChannel : public DLogicalChannel - { - - public: // Constructors and destructor - - /** - * C++ default constructor. - * @param pointer to owner device - */ - IMPORT_C DIscChannel( DLogicalDevice* aDevice ); - - /** - * Destructor. - */ - ~DIscChannel(); - - public: // Functions from base classes - - /** - * Secondary initialization of channel. - * @since 2.8 - * @param TInt aUnit Channel number - * @param const TDesC8* anInfo pointer to a descriptor containing extra - * information for the device. - * @param const TVersion& aVer reference containing the version being - * requested by the thread which is opening this channel - * @return virtual TInt KErrNone if succesful. KErrAlreadyExist if channel already open - */ - virtual TInt DoCreate( TInt aUnit, const TDesC8* anInfo, const TVersion& aVer ); - - /** - * Message handling ( kernel server context ). - * @since 2.8 - * @param aMsg Thread message to get parameters from user side - * @return void - */ - virtual void HandleMsg( TMessageBase* aMsg ); - - /** - * Message handling ( user thread context ). - * @since 2.8 - * @param aReqNo request number called from IscApi - * @param a1 pointer array to get parameters from user side - * @param a2 not used in ISC - * @return TInt KErrNone if succesful - */ - TInt Request( TInt aReqNo, TAny* a1, TAny* a2 ); - - public: // New functions - /** - * Function to complete clients pending asynchronous request - * @since 2.8 - * @param TInt aOperation asynchronous operation to complete - * @param TInt aCompleteStatus status of request to be completed - * @return void - */ - void CompleteRequest( TInt aOperation, TInt aCompleteStatus ); - - /** - * Stores the incoming frame to channels receive queue - * @since 2.8 - * @param TDesC8* aData pointer to storable frame - * @return void - */ - void StoreFrame( TDesC8* aData ); - - /** - * Goes through channel's queue and delivers possible frame to client - * @since 2.8 - * @return void - */ - void EmptyBuffers(); - - /** - * Notify user side client that uplink flow control is on/off - * @since 2.8 - * @param const TInt aFlowControlStatus EIscFlowControlOn / EIscFlowControlOff - * @return void - */ - void NotifyFlowControl( const TInt aFlowControlStatus ); - - /** - * Notify user side client that status of connection between Symbian side and the Domestic OS has changed - * @since 2.8 - * @param const TInt aConnectionStatus EIscConnectionOk / EIscConnectionNotOk - * @return void - */ - void NotifyConnectionStatus( const TInt aConnectionStatus ); - - /** - * Check if asynchronous request is active - * @since 2.8 - * @param const TUint16 aReqNumber Number of request - * @return TInt KRequestPending if request active. Otherwise KErrNone - */ - TInt IsPending( const TUint16 aReqNumber ); - - /** - * Copy data from user buffer to kernel side buffer by multiplexer - * @since 2.8 - * @param aUserBuffer pointer to source descriptor - * @param aKernelBuffer pointer to destination descriptor - * @param aOffset Offset of the source buffer - * @return KErrNone if successful - */ - TInt CopyFromUserBuffer( const TDesC8& aUserBuffer, - TDes8& aKernelBuffer, - TInt aOffset ); - - /** - * Writes data/frames to clients buffer - * @since 2.8 - * @param aDest pointer to destination descriptor - * @param aSrc pointer to source descriptor - * @param aOffset Offset on where to start writing to target descriptor - * @return TInt - */ - TInt ThreadWrite( TAny* aDest, const TDesC8* aSrc, TInt aOffset ); - - /** - * Delete send frames / receive queue for channel in question - * @since 2.8 - * @return void - */ - void ResetBuffers(); - - /** - * Returns the channel number. - * @since 3.0 - * @return TUint16, the number of the channel. - */ - inline TUint16 GetChannelNumber(){return iChannelNumber;}; - - /** - * Returns a reference to user side thread of this channel. - * @since 3.0 - * @param None - * @return DThread*, user side thread ownership is not given. - */ - inline DThread* GetDThread() - { - return iThread; - }; - - protected: - - // None - - private: - - /** - * Call from user side comes to this function - * @since 2.8 - * @param TInt aFunction request number - * @param TAny* a1 pointer to array including info about request - * @param TAny* a2 not used - * @return TInt KErrNone if succesful - */ - TInt HandleRequest( TInt aFunction, TAny* a1, TAny* a2 ); - - /** - * Handles channel destruction. - * @since 2.8 - * @param void - * @return void - */ - void ChannelDestruction(); - - /** - * Handles asynchronous client requests - * @since 2.8 - * @param TInt aFunction request number - * @param TAny* a1 pointer to array including info about request - * @return void - */ - void HandleAsyncRequest( TInt aFunction, TAny* a1 ); - - /** - * Handles synchronous client requests - * @since 2.8 - * @param TInt aFunction - * @param TAny* a1 pointer to array including info about request - * @return TInt - */ - TInt HandleSyncRequest( TInt aFunction, TAny* a1 ); - - /** - * Cancels active request - * @since 2.8 - * @param TInt aFunction request number - * @param TAny* a1 not used - * @return TInt - */ - TInt HandleCancelRequest( TInt aFunction, TAny* a1 ); - - /** - * Copies several data frames to clients buffer if needed before compliting receive request - * @since 2.8 - * @param TDes8* aPtr pointer to frame - * @param TIscFrameInfo& aInfo info needed in frame combining - * @return void - */ - void HandleConcatenatedDataFrame( TDes8* aPtr, TIscFrameInfo& aInfo ); - - /** - * Copies several frames to clients buffer if needed before compliting receive request - * @since 2.8 - * @param TDes8* aPtr pointer to frame - * @param TIscFrameInfo& aInfo info needed in frame combining - * @return void - */ - void HandleConcatenatedFrame( TDes8* aPtr, TIscFrameInfo& aInfo ); - - /** - * Initialization complete dfc - * @since 2.8 - * @param TAny* aPtr pointer to channel - * @return static void. - */ - static void InitializeComplete( TAny* aPtr ); - - /** - * Completes the multiplexer initialization - * @since 2.8 - * @return void - */ - void DoMultiplexerInitialize(); - - private: // Data - - TDfc* iInitializeDfc; - TPtr8* iDataTransmissionIniData; - TPtr8* iMultiplexerIniData; - TUint8* iMultiplexerBuffer; - TUint8* iDataTransmissionBuffer; - DIscDevice* iIscDevice; - TPtr8* iIscConnectionStatusPtr; - TPtr8* iIscFlowControlStatusPtr; - //Store of Isc requests - TRequestStatus* iIscRequests[ EIscAsyncLast ]; - // Pointers to client message buffers - TPtr8* iReceiveBufPtr; - TPtr8* iDataReceiveBufPtr; - TPtr8* iNeededBufLen; - TPtr8* iNeededDataBufLen; - TUint16 iChannelNumber; - TBool iChannelOpen; - // Queue for incoming frames - TUint32** iFrameRx; - DIscQueue* iFrameRxQueue; - - // Queue for incoming data frames - TUint32** iDataFrameRx; - DIscQueue* iDataFrameRxQueue; - - TInt iULFlowControlStatus; - TInt iDLFlowControlStatus; - // Stores the last notified uplink flowcontrol status. - TInt iLastNotifiedULFlowstatus; - - TUint16 iIscChannelHighWaterMark; - TUint16 iIscChannelLowWaterMark; - TBool iOverFlow; - TBool iClientPanic; - TInt iDataTransmissionErrorCode; - - DThread* iThread; - - }; - -#endif // DISCCHANNEL_H - -// End of File