diff -r e71858845f73 -r e1758cbb96ac systemswstubs/examplecommonisc/IscMultiplexerBase/src/IscMultiplexerBase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/systemswstubs/examplecommonisc/IscMultiplexerBase/src/IscMultiplexerBase.cpp Mon Oct 04 00:04:35 2010 +0300 @@ -0,0 +1,348 @@ +/* +* 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: Implementation of DIscMultiplexerBase class +* +*/ + + + +// INCLUDE FILES +#include +#include +#include "IscMultiplexerBase.h" +#include "IscTrace.h" + + +// EXTERNAL DATA STRUCTURES + +// EXTERNAL FUNCTION PROTOTYPES + +// CONSTANTS + +// MACROS + +// LOCAL CONSTANTS AND MACROS + +// MODULE DATA STRUCTURES + +// LOCAL FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::DIscMultiplexerBase +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +EXPORT_C DIscMultiplexerBase::DIscMultiplexerBase() + :iDevice( NULL ) + { + C_TRACE( ( _T( "DIscMultiplexerBase::DIscMultiplexerBase()" ) ) ); + C_TRACE( ( _T( "DIscMultiplexerBase::DIscMultiplexerBase - return 0x%x" ) ) ); + } + +// Destructor +EXPORT_C DIscMultiplexerBase::~DIscMultiplexerBase() + { + C_TRACE( ( _T( "DIscMultiplexerBase::~DIscMultiplexerBase()" ) ) ); + C_TRACE( ( _T( "DIscMultiplexerBase::~DIscMultiplexerBase - return 0x%x" ) ) ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::CustomFunction +// API extension function +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +#ifndef API_TRACE_FLAG +EXPORT_C TInt DIscMultiplexerBase::CustomFunction( + const TUint16, + const TUint16 aOperation, + TAny* , + const TAny* aChannelPtr ) +#else +EXPORT_C TInt DIscMultiplexerBase::CustomFunction( + const TUint16 aChannelId, + const TUint16 aOperation, + TAny* aParameters, + const TAny* aChannelPtr ) +#endif + { + A_TRACE( ( _T( "DIscMultiplexerBase::CustomFunction(0x%x, 0x%x, 0x%x, 0x%x)" ), aChannelId, aOperation, aParameters, aChannelPtr ) ); + CompleteRequest( aOperation, KErrNotSupported, aChannelPtr ); + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::GetChannelInfo +// Get information on specified channel +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +#ifndef API_TRACE_FLAG +EXPORT_C TInt DIscMultiplexerBase::GetChannelInfo( + const TUint16, + TDes8& ) +#else +EXPORT_C TInt DIscMultiplexerBase::GetChannelInfo( + const TUint16 aChannelNumber, + TDes8& aInfo ) +#endif + + { + A_TRACE( ( _T( "DIscMultiplexerBase::GetChannelInfo(0x%x, 0x%x)" ), aChannelNumber, &aInfo ) ); + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::CompleteRequest +// Complete specified asynchronous request +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +// This method has been modified to allow channel sharing between application. +// The completion routine uses directly a pointer on a DLogicalChannel instead of a channel index +// +EXPORT_C void DIscMultiplexerBase::CompleteRequest( + TUint16 aReqNumber, + TInt aStatus, + const TAny* aChannelPtr ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::CompleteRequest(0x%x, 0x%x, 0x%x)" ), aReqNumber, aStatus, aChannelPtr ) ); + iDevice->CompleteRequest( aReqNumber, aStatus, aChannelPtr ); + A_TRACE( ( _T( "DIscMultiplexerBase::CompleteRequest - return void" ) ) ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::IsPending +// Check if specified request is pending in ISC Driver +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt DIscMultiplexerBase::IsPending( + const TUint16 aReqNumber, + const TAny* aChannelPtr ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::IsPending(0x%x, 0x%x)" ), aReqNumber, aChannelPtr ) ); + return iDevice->IsPending( aReqNumber, aChannelPtr ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::QueueFrame +// Queue frame for sending +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt DIscMultiplexerBase::QueueFrame( + const TUint16 aChannelId, + const TDesC8* aFrame, + const TAny* aChannelPtr, + TAny* aFrameInfo ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::QueueFrame(0x%x, 0x%x, 0x%x, 0x%x)" ), aChannelId, aFrame, aChannelPtr, aFrameInfo ) ); + TInt error( KErrNone ); + if ( !aFrame ) + { + error = KErrBadDescriptor; + } + else + { + error = iDevice->QueueFrame( aChannelId, aFrame, aChannelPtr, aFrameInfo ); + } + + return error; + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::FlushQueue +// Start sending the frames +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C void DIscMultiplexerBase::FlushQueues() + { + A_TRACE( ( _T( "DIscMultiplexerBase::FlushQueue()" ) ) ); + iDevice->FlushQueues(); + A_TRACE( ( _T( "DIscMultiplexerBase::FlushQueue - return void" ) ) ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::ULFlowControl +// Notify flow control changes to ISC Driver +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C void DIscMultiplexerBase::ULFlowControl( + const TInt aULFlowStatus, + TUint16 aChannelId, + TAny* aChannelPtr ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::ULFlowControl(0x%x, 0x%x)" ), aULFlowStatus, aChannelPtr ) ); + iDevice->ULFlowControl( aULFlowStatus, aChannelId, aChannelPtr ); + A_TRACE( ( _T( "DIscMultiplexerBase::ULFlowControl - return void" ) ) ); + } + + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::ReserveMemoryBlock +// Reserve memory block +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C void DIscMultiplexerBase::ReserveMemoryBlock( + TDes8*& aPtr, + const TUint16 aSize ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::ReserveMemoryBlock(0x%x, 0x%x)" ), aPtr, aSize ) ); + iDevice->ReserveMemoryBlock( aPtr,aSize ); + A_TRACE( ( _T( "DIscMultiplexerBase::ReserveMemoryBlock - return void" ) ) ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::ReleaseMemoryBlock +// Release the reserved memory block +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C void DIscMultiplexerBase::ReleaseMemoryBlock( + TDes8* aPtr ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::ReleaseMemoryBlock(0x%x)" ), aPtr ) ); + iDevice->ReleaseMemoryBlock( aPtr ); + A_TRACE( ( _T( "DIscMultiplexerBase::ReleaseMemoryBlock - return void" ) ) ); + } + + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::CopyFromUserBuffer +// Due to GetThreadPtr this method will be deprecated in the future. +// It is preffered to use GetThreadPtr instead. +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt DIscMultiplexerBase::CopyFromUserBuffer( + const TDesC8& aUserBuffer, + TDes8& aKernelBuffer, + const TAny* aChannelPtr, + const TInt aOffset ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::CopyFromUserBuffer(0x%x, 0x%x, 0x%x, 0x%x)" ), &aUserBuffer, &aKernelBuffer, aChannelPtr, aOffset ) ); + return iDevice->CopyFromUserBuffer( aUserBuffer, aKernelBuffer, aChannelPtr, aOffset ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::CopyToUserBuffer +// Due to GetThreadPtr this method will be deprecated in the future. +// It is preffered to use GetThreadPtr instead. +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt DIscMultiplexerBase::CopyToUserBuffer( + TAny* aUserBuffer, + const TDesC8& aKernelBuffer, + const TAny* aChannelPtr, + const TInt aOffset ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::CopyToUserBuffer(0x%x, 0x%x, 0x%x, 0x%x)" ), aUserBuffer, &aKernelBuffer, aChannelPtr, aOffset ) ); + return iDevice->CopyToUserBuffer( aUserBuffer, aKernelBuffer, aChannelPtr, aOffset ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::GetThreadPtr +// Returns user side thread pointer no owenership is given. +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C DThread* DIscMultiplexerBase::GetThreadPtr( const TAny* aChannelPtr ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::DIscMultiplexerBase::GetThreadPtr(0x%x)" ), aChannelPtr ) ); + TRACE_ASSERT( aChannelPtr ); + return iDevice->GetThreadPtr( aChannelPtr ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::CancelSending +// +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt DIscMultiplexerBase::CancelSending( + const TUint16 aChannelId, + const TAny* aChannelPtr ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::CancelSending(0x%x, 0x%x)" ), aChannelId, aChannelPtr ) ); + return iDevice->CancelSending( aChannelId, aChannelPtr ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::Connect +// Connect ISC Driver to ISC Multiplexer +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C void DIscMultiplexerBase::Connect( + DIscDevice* aDevice ) + { + A_TRACE( ( _T( "DIscMultiplexerBase::Connect(0x%x)" ), aDevice ) ); + ASSERT_RESET_ALWAYS( aDevice, "IscMultiplexerBase",EIscNullIscDriverPointer ); + iDevice = aDevice; + A_TRACE( ( _T( "DIscMultiplexerBase::Connect - return void" ) ) ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::SetInitializationParameters +// Initialization string to multiplexer in case if needed before datatransmission driver has been initialized +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +#ifndef API_TRACE_FLAG +EXPORT_C void DIscMultiplexerBase::SetInitializationParameters( const TDesC8&) +#else +EXPORT_C void DIscMultiplexerBase::SetInitializationParameters( const TDesC8& aParameters ) +#endif + { + A_TRACE( ( _T( "DIscMultiplexerBase::SetInitializationParameters not supported(0x%x)" ), &aParameters ) ); + } + +// ----------------------------------------------------------------------------- +// DIscMultiplexerBase::Install +// Install from DLogicalDevice +// ( other items were commented in a header ). +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt DIscMultiplexerBase::Install() + { + A_TRACE( ( _T( "DIscMultiplexerBase::Install()" ) ) ); + SetName( &KIscMultiplexerName ); + TInt r = Install2ndPhase(); + C_TRACE( ( _T( "DIscMultiplexerBase::Install - return 0x%x" ), r ) ); + return r; + } + +// ================= E32Dll ============== +// E32Dll +// Dll entry point. +// Returns: TInt Invariably return KErrNone. +// +#if defined( __WINSCW__ ) +DECLARE_STANDARD_LDD() + { + return NULL; + } +#endif +// End of File