systemswstubs/examplecommonisc/IscDataTransmissionBase/src/IscDataTransmissionBase.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/systemswstubs/examplecommonisc/IscDataTransmissionBase/src/IscDataTransmissionBase.cpp Thu Jan 14 07:14:53 2010 +0200
@@ -0,0 +1,216 @@
+/*
+* 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 DIscDataTransmissionBase class
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <IscDevice.h>
+#include "IscTrace.h"
+#include "IscDataTransmissionBase.h"
+#include "IscBufferAllocator.h"
+
+#ifdef __WINS__
+#include <windows.h>
+#endif
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+#ifdef __WINS__
+CRITICAL_SECTION g_IscDTBCriticalSection;
+#endif
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// DIscDataTransmissionBase::DIscDataTransmissionBase
+// C++ default constructor
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C DIscDataTransmissionBase::DIscDataTransmissionBase()
+ :iDevice( NULL ),
+ iIscBufferAllocator( NULL )
+ {
+ A_TRACE( ( _T( "DIscDataTransmissionBase::DIscDataTransmissionBase()" ) ) );
+#ifdef __WINS__
+ InitializeCriticalSection( &g_IscDTBCriticalSection );
+#endif
+ }
+
+
+// Destructor
+EXPORT_C DIscDataTransmissionBase::~DIscDataTransmissionBase()
+ {
+ A_TRACE( ( _T( "DIscDataTransmissionBase::~DIscDataTransmissionBase()" ) ) );
+ if ( iIscBufferAllocator )
+ {
+ delete iIscBufferAllocator;
+ iIscBufferAllocator=NULL;
+ }
+#ifdef __WINS__
+ DeleteCriticalSection( &g_IscDTBCriticalSection );
+#endif
+ A_TRACE( ( _T( "DIscDataTransmissionBase::~DIscDataTransmissionBase - return void" ) ) );
+ }
+
+
+// -----------------------------------------------------------------------------
+// DIscDataTransmissionBase::AllocBuffers
+// buffer allocations according to the ISC Multiplexer
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void DIscDataTransmissionBase::AllocBuffers( TIscBufferEntry* aBufferConfig )
+ {
+ A_TRACE( ( _T( "DIscDataTransmissionBase::AllocBuffers(0x%x)" ), aBufferConfig ) );
+ // Allocate buffers
+ if ( !iIscBufferAllocator )
+ {
+ iIscBufferAllocator = new DIscBufferAllocator( aBufferConfig );
+ ASSERT_RESET_ALWAYS( iIscBufferAllocator, "ISCDataTransmissionBase",EIscMemoryAllocationFailure );
+ iIscBufferAllocator->AllocBuffers();
+ }
+ A_TRACE( ( _T( "DIscDataTransmissionBase::AllocBuffers - return void" ) ) );
+ }
+// -----------------------------------------------------------------------------
+// DIscDataTransmissionBase::ReceiveFrame
+// Transfer incoming frame to ISC Driver
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void DIscDataTransmissionBase::ReceiveFrame(
+ TDesC8& aFrame )
+ {
+
+ if ( iDevice )
+ {
+ iDevice->Receive( &aFrame );
+ }
+ else
+ {
+ TRACE_ASSERT_ALWAYS;
+ }
+
+ }
+
+// -----------------------------------------------------------------------------
+// DIscDataTransmissionBase::NotifyConnectionStatus
+// Notifies any connection status changes to ISC Driver
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void DIscDataTransmissionBase::NotifyConnectionStatus(
+ TInt aStatus )
+ {
+ A_TRACE( ( _T( "DIscDataTransmissionBase::NotifyConnectionStatus(0x%x)" ), aStatus ) );
+
+ if ( iDevice )
+ {
+ iDevice->NotifyConnectionStatus( aStatus );
+ }
+
+ A_TRACE( ( _T( "DIscDataTransmissionBase::NotifyConnectionStatus - return void" ) ) );
+ }
+
+
+// -----------------------------------------------------------------------------
+// DIscDataTransmissionBase::ReserveMemoryBlock
+// Reserve memory block
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void DIscDataTransmissionBase::ReserveMemoryBlock(
+ TDes8*& aPtr,
+ TUint16 aSize )
+ {
+ E_TRACE( ( _T( "IDTB:Res(0x%x)" ), aSize ) );
+
+ iIscBufferAllocator->ReserveMemoryBlock( aPtr, aSize );
+ }
+
+
+// -----------------------------------------------------------------------------
+// DIscDataTransmissionBase::ReleaseMemoryBlock
+// Release the reserved memory block
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void DIscDataTransmissionBase::ReleaseMemoryBlock(
+ TDes8* aPtr )
+ {
+
+ E_TRACE( ( _T( "IDTB:Rel (0x%x)" ), aPtr ) );
+ iIscBufferAllocator->ReleaseMemoryBlock( aPtr );
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// DIscDataTransmissionBase::Connect
+// Connects ISC Driver to ISC Data Transmission Driver
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void DIscDataTransmissionBase::Connect(
+ DIscDevice* aDevice )
+ {
+ A_TRACE( ( _T( "DIscDataTransmissionBase::Connect(0x%x)" ), aDevice ) );
+ ASSERT_RESET_ALWAYS( aDevice, "ISCDataTransmissionBase", EIscNullIscDriverPointer );
+ iDevice = aDevice;
+ A_TRACE( ( _T( "DIscDataTransmissionBase::Connect - return void" ) ) );
+ }
+
+
+// -----------------------------------------------------------------------------
+// DIscDataTransmissionBase::Install
+// Implementation of pure-virtual Install from DLogicalDevice
+// ( other items were commented in a header ).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt DIscDataTransmissionBase::Install()
+ {
+ A_TRACE( ( _T( "DIscDataTransmissionBase::Install()" ) ) );
+ SetName( &KIscDataTransmissionDriverName );
+
+ // call second phase install ( located in the driver realizing this API )
+ TInt r = Install2ndPhase();
+
+ A_TRACE( ( _T( "DIscDataTransmissionBase::Install - return 0x%x" ), r ) );
+ return r;
+ }
+
+#if defined( __WINSCW__ )
+DECLARE_STANDARD_LDD()
+ {
+ return NULL;
+ }
+#endif
+
+// End of File