diff -r 37b610eb7fe3 -r b5894bb67e73 systemswstubs/examplecommonisc/IscDriver/inc/IscDevice.h --- a/systemswstubs/examplecommonisc/IscDriver/inc/IscDevice.h Thu Aug 19 09:36:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,333 +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 ISCDEVICE_H -#define ISCDEVICE_H - -// INCLUDES -#include - -// CONSTANTS - -// MACROS - -// DATA TYPES - -// FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS -class DIscDataTransmissionBase; -class DIscMultiplexerBase; -class DIscChannel; -class DIscMainRcvBuffer; -class DIscQueue; -class DIscSendQueue; -class TIscSendFrameInfo; - -// CLASS DECLARATION - -/** -* Isc driver ldd factory object -* -* @lib IscDriver.LIB -* @since 2.8 -*/ -class DIscDevice : public DLogicalDevice - { - public: // Constructors and destructor - /** - * C++ default constructor. - */ - IMPORT_C DIscDevice(); - - /** - * Destructor. - */ - IMPORT_C virtual ~DIscDevice(); - - - public: // Functions from base classes - - /** - * From DLogicalDevice. - * Create a logical channel - * @since 2.8 - * @param DLogicalChannelBase*& aChannel logical channel to be set - * @return TInt KErrNone if succesful, otherwise KErrNoMemory - */ - virtual TInt Create( DLogicalChannelBase*& aChannel ); - - /** - * Complete the installation of driver - * @since 2.8 - * @return TInt KErrNone if successful - */ - virtual TInt Install(); - - /** - * From DLogicalDevice. - * Get capabilities of this logical device - * @since 2.8 - * @param TDes8& aDes a reference which contains return - * information describing the capabilities of this device. - * @return void - */ - IMPORT_C virtual void GetCaps( TDes8& aDes ) const; - - public: // New functions - - /** - * Complete the initialization of driver - * @since 2.8 - * @return void - */ - void Initialize(); - - /** - * Get message block from buffers allocated in IscDataTransmissionBase.dll - * @since 2.8 - * @param TDes8*& aPtr pointer where message block is set - * @param TUint16 aSize size of needed memory block - * @return void - */ - IMPORT_C void ReserveMemoryBlock( TDes8*& aPtr, TUint16 aSize ); - - /** - * Release memory block allocated with ReserveMemoryBlock - * @since 2.8 - * @param TDes8* aData - * @return void - */ - IMPORT_C void ReleaseMemoryBlock( TDes8* aData ); - - /** - * Connection status change function. Can be called from any context. - * @since 2.8 - * @param const TInt aStatus status of driver - * @return void - */ - EXPORT_C void NotifyConnectionStatus( const TInt aStatus ); - - /** - * Frames coming from Domestic OS - * @since 2.8 - * @param TDesC8* aData pointer to data - * @return void - */ - IMPORT_C void Receive( TDesC8* aData ) const; - - /** - * Queue frames that will be sent to Domestic OS - * @since 2.8 - * @param aChannelId number of sender channel - * @param const TDesC8* aFrame pointer to send frame - * @param aChannelPtr DIscChannel pointer - * @param aMultiplexerDfc dfc to run by data transmission driver after frame has delivered - * @param aMultiplexerErrorCode status how frame transmission succeeded - * @return TInt KErrNone if frame added to send queue succesfully - */ - IMPORT_C TInt QueueFrame( const TUint16 aChannelId, - const TDesC8* aFrame, - const TAny* aChannelPtr, - TAny* aFrameInfo ); - - /** - * Cancels sending of frames to Domestic OS of certain channel and deletes queued frames - * @since 2.8 - * @param aChannelId channel number to which canceling is done - * @param aChannelPtr DIscChannel pointer - * @return TInt KErrNone when canceling is done - */ - IMPORT_C TInt CancelSending( const TUint16 aChannelId, - const TAny* aChannelPtr ); - - /** - * Adds Dfc to empty queues. Can be called from any context. - * @since 2.8 - * @return void - */ - IMPORT_C void FlushQueues(); - - /** - * Function to complete user side asynchronous request. Uses DIscChannel pointer - * @since 2.8 - * @param aOperation operation to complete - * @param aCompleteStatus status of operation - * @param aChannelPtr pointer to a DIscChannel - * @return void - */ - IMPORT_C void CompleteRequest( TUint16 aOperation, - TInt aCompleteStatus, - const TAny* aChannelPtr ); - - /** - * Function to notify client about uplink flow control status - * @since 2.8 - * @param aULFlowStatus EIscFlowControlOn / EIscFlowControlOff - * @param aChannelId Channel to be affected by the flow control - * @param aChannelPtr pointer to DIscChannel - * @return void - */ - IMPORT_C void ULFlowControl( const TInt aULFlowStatus, - const TUint16 aChannelId, - const TAny* aChannelPtr ); - - /** - * Function to check if asycnhronous request is active - * @since 2.8 - * @param const TUint16 aReqNumber request number - * @param const TUint16 aChannelId channel number - * @return TInt KRequestPending if request active, otherwise KErrNone - */ - IMPORT_C TInt IsPending( const TUint16 aReqNumber, - const TAny* aChannelPtr ); - - /** - * 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 ); - - /** - * 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 ); - - /** - * Returns a user side thread of a given channel. - * @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 ); - - /** - * Notify multiplexer about down link flow control - * @since 2.8 - * @param const TInt aDLFlowStatus EIscFlowControlOn / EIscFlowControlOff - * @param const TUint16 aChannel channel number - * @return void - */ - void DLFlowControlNotify( const TInt aDLFlowStatus, - const TUint16 aChannel, - const TAny* aChannelPtr ); - - /** - * Function to tell current status of connection to Domestic OS - * @since 2.8 - * @return TInt EIscConnectionOk / EIscConnectionNotOk - */ - TInt ConnectionStatus(); - - protected: - - /** - * Function to disable interrupts - * @since 2.8 - * @return TInt KErrNone if succesful - */ - static TInt DisableIrqs(); - - /** - * Function to restore interrupts - * @since 2.8 - * @param TInt aLevel level where interrupts should be restored - * @return void - */ - static void RestoreIrqs( TInt aLevel ); - - - private: - - /** - * Function to connect to DataTransmission and Multiplexer ldds - * @since 2.8 - * @return TInt KErrNone if succesful - */ - TInt InitializeLdd2LddInterface(); - - /** - * Dfc to empty control channel and other send queues - * @since 2.8 - * @param TAny* aPtr pointer to DIscDevice - * @return static void - */ - static void Flush( TAny* aPtr ); - - /** - * Notifies connection changes. - * @since 2.8 - * @param TAny* aPtr - * @return static void - */ - static void NotifyConnection( TAny* aPtr ); - - - public: // Data - - static DIscMultiplexerBase* iIscMultiplexerInterface; - static DIscDataTransmissionBase* iIscDataTransmissionInterface; - - - private: // Data - - TUint32** iSend; - TUint32** iTempSend; - TUint32** iControlSend; - - TIscSendFrameInfo** iSendFrameParameters; - TIscSendFrameInfo** iTempFrameParameters; - TIscSendFrameInfo** iControlFrameParameters; - - static DIscSendQueue* iSendQueue; - static DIscSendQueue* iTempQueue; - static DIscSendQueue* iControlSendQueue; - - static TDfc* iSendDfc; - static TDfc* iNotifyDfc; - - DIscMainRcvBuffer* iIscMainRcvBuffer; - - static TInt iConnectionStatus; - - }; - -#endif // ISCDEVICE_H - -// End of File