systemswstubs/examplecommonisc/IscApi/src/IscApi.cpp
changeset 43 e71858845f73
parent 40 b7e5ed8c1342
child 46 e1758cbb96ac
--- a/systemswstubs/examplecommonisc/IscApi/src/IscApi.cpp	Tue Sep 07 08:19:48 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1230 +0,0 @@
-/*
-* Copyright (c) 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:  Implementation of RIscApi class
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <E32svr.H>
-#include <f32file.h>
-#include <iscapi.h>
-#include <IscDefinitions.h>
-#include <iscdefinitions.h>
-#include "IscTrace.h"
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES  
-
-// CONSTANTS
-_LIT( KIscApiPanic,"IscApi Panic" );
-_LIT( KIscDriverName,"IscDriver" );
-_LIT( KIscDriverExtensionName,"IscDriverExtension" );
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-_LIT( KIniFile,"Z:\\resource\\ISC\\isc_config.ini" );
-_LIT( KMultiplexerLdd,"MultiplexerLdd" );
-_LIT( KDataTransmissionLdd,"DataTransmissionLdd" );
-_LIT( KDataTransmissionPdd,"DataTransmissionPdd" );
-_LIT( KPdd,"PDD" );
-_LIT( KLdd,"LDD" );
-_LIT( KHashSign,"#" );
-_LIT( KSemiColon,";" );
-_LIT( KEqualSign,"=" );
-
-_LIT( KIscDriverLdd, "iscdriver.ldd" );
-_LIT( KIscDriverExtensionLdd, "iscdriverextension.ldd" );
-
-const TInt KZeroLength( KErrNone );
-const TInt KStartPosition( KErrNone );
-const TInt KOneParam( 1 );
-const TInt KTwoParams( 2 );
-const TInt KThreeParams( 3 );
-const TInt KFirstParam( 0 );
-const TInt KSecondParam( 1 );
-const TInt KThirdParam( 2 );
-const TInt KMajor( KErrNone );
-const TInt KMinor( KErrNone );
-const TInt KBuild( KErrNone );
-const TInt KAddPosition( 1 );
-const TInt KInfoLength( 1 );
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// RIscApi::RIscApi
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RIscApi::RIscApi()
-    :iNeededLen( NULL, KZeroLength ),
-     iNeededDataLen( NULL, KZeroLength ),
-     iConnectionStatus( NULL, KZeroLength ),
-     iFlowControlStatus( NULL, KZeroLength ),
-     iOpen( EFalse ),   
-     iChannelNumber( KIscFrameReceiverNotFound )
-#ifdef __WINS__
-     ,iInitializing( EFalse )
-#endif
-    {
-    }
-
-
-EXPORT_C RIscApi::~RIscApi()
-    {
-    
-    if( iOpen || iChannelNumber != KIscFrameReceiverNotFound )
-        {
-        Close();
-        }
-    else
-    	{
-    	// Do nothing.	
-    	}
-    	
-    }
-
-
-// -----------------------------------------------------------------------------
-// RIscApi::Initialize
-// Initialize the ISC Interface
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::InitializeModemInterface
-        ( 
-        TRequestStatus& aStatus
-        )
-    {
-    A_TRACE( ( _T( "RIscApi::InitializeModemInterface(0x%x)" ), &aStatus ) );
-
-#ifdef __WINS__
-    iInitializing = ETrue;
-#endif
-
-    CTrapCleanup* cleanup = CTrapCleanup::New();
-    TInt r( KErrNone );
-    TInt r2( KErrNone );
-    HBufC8* multiplexerInit = NULL;
-    TRAP( r, ( multiplexerInit = HBufC8::NewL( KIscIniLineLength ) ) );
-    // buffer to hold the init-string for second-level driver
-    HBufC8* dataTransmissionInit = NULL;
-    TRAP( r2, ( dataTransmissionInit = HBufC8::NewL( KIscIniLineLength ) ) );
-    __ASSERT_ALWAYS( ( KErrNone == r && KErrNone == r2 ),
-    	User::Panic( KIscApiPanic, EIscApiMemoryAllocationFailure ) );
-    // Read ini-file and load needed drivers.
-    TRAP( r, LoadL( *multiplexerInit, *dataTransmissionInit ) );
-    if( KErrAlreadyExists == r )
-        {
-        TRACE_ASSERT_ALWAYS;
-        C_TRACE( ( _T( "RIscApi::InitializeModemInterface DRIVERS ERROR" ) ) );
-        delete multiplexerInit;
-        multiplexerInit = NULL;
-        delete dataTransmissionInit;
-        dataTransmissionInit = NULL;
-        delete cleanup;
-        cleanup = NULL;
-        TRequestStatus* ptrStatus = &aStatus;
-        User::RequestComplete( ptrStatus, r );
-        return;
-        }
-    else
-        {
-        __ASSERT_ALWAYS( ( KErrNone == r ),
-                           User::Panic( KIscApiPanic,EIscApiDriverLoadFail ) );
-        }
-
-    // Open control channel
-    TInt channel( KIscControlChannel );
-    TInt err = DoCreate( KIscDriverName, 
-                            TVersion( KMajor, KMinor, KBuild ), 
-                            channel,
-                            NULL,
-                            NULL,
-                            EOwnerThread );
-    __ASSERT_ALWAYS( KErrNone == err,
-                     User::Panic( KIscApiPanic, EIscApiChannelCreateFail ) );
-    iChannelNumber = static_cast<TUint16>( channel );
-    iOpen = ETrue;
-
-    TPtrC8 multiplexerInitString( multiplexerInit->Des() );
-    TPtrC8 dataTransmissionInitString( dataTransmissionInit->Des() );
-    TAny* params[ KThreeParams ];
-    params[ KFirstParam ] = (TAny*)&aStatus;
-    params[ KSecondParam ] = static_cast<TAny*>( &multiplexerInitString );
-    params[ KThirdParam ] = static_cast<TAny*>( &dataTransmissionInitString );
-    
-    aStatus = KRequestPending;
-    //Initialize Data transmission 
-    DoSvControl( EIscAsyncInitializeModemInterface, params );
-  
-    delete multiplexerInit;
-    multiplexerInit = NULL;
-    delete dataTransmissionInit;
-    dataTransmissionInit = NULL;
-    delete cleanup;
-    cleanup = NULL;
-    
-#ifdef __WINS__
-    iInitializing = EFalse;
-#endif
-    A_TRACE( ( _T( "RIscApi::InitializeModemInterfaceL - return void" ) ) );
-    
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::InitializeCancel
-// Cancel ISC Initialization sequence
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::InitializeCancel()
-    {
-    A_TRACE( ( _T( "RIscApi::InitializeCancel()" ) ) );
-
-	if( iOpen && iChannelNumber == KIscControlChannel )
-		{
-		DoControl( EIscCancelAsyncInitialize );			
-		}
-	else
-		{
-		// Do nothing if not controlchannel who is handling the initialization.	
-		}
-
-    A_TRACE( ( _T( "RIscApi::InitializeCancel - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::LoadL
-// Load required drivers using Isc_config.ini file
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-void RIscApi::LoadL
-        ( 
-        const TDesC8& aMultiplexerInit,     // Multiplexer init. 
-        const TDesC8& aDataTransmissionInit // Datatransmission init.
-        ) const
-    {
-    C_TRACE( ( _T( "RIscApi::LoadL(0x%x, 0x%x)" ), &aMultiplexerInit,
-    											   &aDataTransmissionInit ) );
-
-    TInt err( KErrNone );
-    TInt loadStatus( KErrNone );
-    TInt pos( KErrNone );
-    
-    // Temporary buffers.
-    HBufC* driverNameBuf = HBufC::NewLC( KIscIniLineLength );
-    HBufC* iniFileLineBuf = HBufC::NewLC( KIscIniLineLength );
-    HBufC* initStringBuf = HBufC::NewLC( KIscIniLineLength );
-    // Temporary pointers.
-    TPtr driverName( driverNameBuf->Des() );
-    TPtr initString( initStringBuf->Des() );
-    TPtr iniFileLine( iniFileLineBuf->Des() );
-
-    RFs fsSession;
-    CleanupClosePushL( fsSession );
-    RFile file;
-    CleanupClosePushL( file );
-    TFileText fileText;
-    User::LeaveIfError( fsSession.Connect() );
-    User::LeaveIfError( file.Open( fsSession, KIniFile,
-    							   EFileStreamText | EFileRead ) );
-    fileText.Set( file );
-
-    while( KErrNone == fileText.Read( iniFileLine ) )
-        {
-        if( KErrNone < iniFileLine.Length() )
-            {
-            C_TRACE( ( iniFileLine ) );
-            pos = KErrNotFound;
-            loadStatus = KErrNotFound;
-            if ( iniFileLine.Find( KHashSign ) != KErrNotFound )
-                {
-                pos = KErrNone;
-                loadStatus = KErrNone;
-                }
-            else if ( iniFileLine.Find( KDataTransmissionPdd ) != KErrNotFound )
-                {
-                C_TRACE( ( _T( "RIscApi::LoadL - datatransmissionpdd" ) ) );
-                iniFileLine.Trim();
-                pos = InifileLineParser( iniFileLine, driverName );
-                if( KErrNotFound != pos )
-                    {
-                    loadStatus = User::LoadPhysicalDevice( driverName );
-                    }
-                else
-                	{
-                	// Do nothing.
-                	}
-                }          
-            else if ( iniFileLine.Find( KDataTransmissionLdd ) != KErrNotFound )
-                {
-                C_TRACE( ( iniFileLine ) );
-                pos = InifileLineParser( iniFileLine, driverName );
-                if( KErrNotFound != pos )
-                    {
-                    DriverNameParser( initString, driverName,
-                    				 *&aDataTransmissionInit );
-                    loadStatus = User::LoadLogicalDevice( driverName );
-                    }
-                else
-                	{
-                	// Do nothing.
-                	}
-                }
-            else if ( iniFileLine.Find( KMultiplexerLdd ) != KErrNotFound )
-                {
-                C_TRACE( ( iniFileLine ) );
-                pos = InifileLineParser( iniFileLine, driverName );
-                if( KErrNotFound != pos )
-                    {
-                    DriverNameParser( initString, driverName,
-                    				  *&aMultiplexerInit );
-                    loadStatus = User::LoadLogicalDevice( driverName );
-                    }
-                else
-                	{
-                	// Do nothing.
-                	}
-                }
-            else if ( iniFileLine.Find( KPdd ) != KErrNotFound )
-                {
-                C_TRACE( ( _T( "RIscApi::LoadL - pdd" ) ) );
-                iniFileLine.Trim();
-                pos = InifileLineParser( iniFileLine, driverName );
-                if( KErrNotFound != pos )
-                    {
-                    loadStatus = User::LoadPhysicalDevice( driverName );
-                    }
-                else
-                	{
-                	// Do nothing.
-                	}
-                }
-            else if ( iniFileLine.Find( KLdd ) != KErrNotFound )
-                {
-                RDebug::Print( _L( "RIscApi::LoadL ldd" ) );
-                iniFileLine.Trim();
-                pos = InifileLineParser( iniFileLine, driverName );
-                if( KErrNotFound != pos )
-                    {
-                    loadStatus = User::LoadLogicalDevice( driverName );
-                    }
-                else
-                	{
-                	// Do nothing.
-                	}
-                }
-            __ASSERT_ALWAYS( pos != KErrNotFound,
-            				 User::Panic( KIscApiPanic, EIscApiFalseIniFile ) );
-            __ASSERT_ALWAYS( KErrAlreadyExists != loadStatus,
-            				 User::Leave( loadStatus ) );
-            __ASSERT_ALWAYS( KErrNone == loadStatus,
-            				 User::Panic( KIscApiPanic, EIscApiDriverLoadFail ) );
-            }
-        else
-        	{
-        	C_TRACE( ( _T( "RIscApi::LoadL IniFileLength = KErrNone" ) ) );
-        	}
-        }
-    loadStatus = User::LoadLogicalDevice( KIscDriverLdd );
-    err = User::LoadLogicalDevice( KIscDriverExtensionLdd );
-    C_TRACE( ( _T( "RIscApi::LoadL drivers iscdriver %d, iscdriverext %d" ),
-    			    loadStatus, err ) );
-    __ASSERT_ALWAYS( ( KErrNone == loadStatus|| KErrNone == err ),
-                       User::Panic( KIscApiPanic, EIscApiDriverLoadFail ) );
-    // R-Classes fsSession and file Close-method is called when deleted
-    // from CleanupStack.
-    CleanupStack::PopAndDestroy( KTwoParams );
-    CleanupStack::PopAndDestroy( initStringBuf );
-    CleanupStack::PopAndDestroy( iniFileLineBuf );
-    CleanupStack::PopAndDestroy( driverNameBuf );
-    C_TRACE( ( _T( "RIscApi::LoadL - return void" ) ) );
-    
-    }
-
-// -----------------------------------------------------------------------------
-// IscApi::LoadLHelper
-// Helps parsing the .ini file.
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-TInt RIscApi::InifileLineParser
-        (
-        TDes& aInifileLine,
-        TDes& aDriverName 
-        ) const
-    {
-    C_TRACE( ( _T( "RIscApi::InifileLineParser" ) ) );
-    
-    TInt position( KErrNotFound );
-    position = aInifileLine.Find( KEqualSign );
-    if( KErrNotFound != position )
-        {
-        // Split the string.
-        C_TRACE( ( aInifileLine ) );
-        aDriverName.Zero();
-        aDriverName.Append( aInifileLine.Mid( position + KAddPosition ) );
-        aInifileLine.Delete(  KStartPosition, KIscIniLineLength );
-        C_TRACE( ( aDriverName ) );
-        }
-    else
-    	{
-    	// Do nothing.	
-    	}         
-    C_TRACE( ( _T( "RIscApi::InifileLineParser return %d" ), position ) );
-    return position;
-       
-    }
-
-// -----------------------------------------------------------------------------
-// IscApi::LoadLSecondHelper
-// Helps parsing the .ini file.
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//    
-void RIscApi::DriverNameParser
-        (
-        TDes& aInitString,
-        TDes& aDriverName,
-        const TDesC8& aString 
-        )const    
-    {
-    C_TRACE( ( _T( "RIscApi::DriverNameParser" ) ) );
-
-    TInt position = aDriverName.Find( KSemiColon );
-    if( KErrNotFound != position )
-        {
-        C_TRACE( ( aInitString ) );
-        // Split the string.
-        aInitString.Zero();
-        aInitString.Append( aDriverName.Mid( position + KAddPosition ) );
-        aDriverName.Delete( position, KIscIniLineLength );
-        C_TRACE( ( aDriverName ) );
-        TPtr8 tmpPtr( ( static_cast<HBufC8*>( &const_cast<TDesC8&>( aString ) ) )->Des() );
-        tmpPtr.Append( aInitString );
-        C_TRACE( ( aInitString ) );
-        }
-    else
-    	{
-    	// Do nothing.	
-    	}         
-    C_TRACE( ( _T( "RIscApi::DriverNameParser return " ) ) );
-
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::Open
-// Open ISC channel asyncronously
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::Open(    
-    const TUint16 aChannelNumber,    
-    TRequestStatus& aStatus,
-    TOwnerType aType,
-    const TDesC8* aOpenParams )
-    {
-    A_TRACE( ( _T( "RIscApi::Open(0x%x, 0x%x, 0x%x, 0x%x) this %x" ),
-    			  aChannelNumber, &aStatus, aType, aOpenParams, this ) );
-
-    // In case if async Close() is called but channel is not destructed,
-    // release kernel side memory allocations before actual channel opening.
-    if( iChannelNumber != KIscFrameReceiverNotFound && iOpen == EFalse )
-        {
-        Close();
-        }
-    else
-    	{
-    	// Do nothing.	
-    	}        
-
-#ifdef __WINS__
-    // InitializeModemInterface() must be called to load correct drivers.
-    // In HW this is done e.g. from EStart 
-
-    RMutex iscapiMutex;
-    if ( !iInitializing )
-        {
-        C_TRACE( ( _T( "RIscApi::Open mutex creation" ) ) );
-        TInt createErr( iscapiMutex.CreateGlobal( _L( "ISCAPICONNECT" ) ) );
-        if ( createErr == KErrNoMemory )
-            {
-            C_TRACE( ( _T( "RIscApi::Open mutex creation FAILED" ) ) );
-            TRequestStatus* ptrStatus = &aStatus;
-            User::RequestComplete( ptrStatus, KErrNoMemory );
-            return;
-            }
-        else if ( createErr )
-            {
-            TInt openErr( iscapiMutex.OpenGlobal( _L( "ISCAPICONNECT" ) ) );
-            if ( openErr )
-                {
-                C_TRACE( ( _T( "RIscApi::Open mutex open FAILED" ) ) );
-                TRequestStatus* ptrStatus = &aStatus;
-                User::RequestComplete( ptrStatus, KErrNoMemory );
-                return;
-                }
-			else
-				{
-				// Do nothing.	
-				}    
-            }
-	    else
-	    	{
-	    	// Do nothing.	
-	    	}            
-        iscapiMutex.Wait();
-        }
-        
-    RDevice handle;
-    // If already openend, initialization not needed
-    TInt r = handle.Open( KIscDriverName );
-    if( r == KErrNotFound && !iInitializing )
-        {
-        RIscApi temp;
-        TRequestStatus status;
-        temp.InitializeModemInterface( status );
-        iInitializing = EFalse;
-        
-        User::WaitForRequest( status );
-        r = status.Int();
-
-        temp.Close();
-        }
-    else
-    	{
-    	// Do nothing.	
-    	}        
-    
-    if( !iInitializing )
-        {
-        iscapiMutex.Signal();
-        }
-    else
-    	{
-    	// Do nothing.	
-    	}            
-
-    if( r != KErrNone )
-        {
-        C_TRACE( ( _T( "RIscApi::Open Initialization FAILED" ) ) );
-        TRequestStatus* ptrStatus = &aStatus;
-        User::RequestComplete( ptrStatus, r );
-        return;
-        }
-    else
-    	{
-    	// Do nothing.	
-    	}        
-#endif
-
-    TBuf8<KInfoLength> info;
-    TInt error( KErrInUse );
-    if( !iOpen )
-        {
-        // handle channels 1 .. 31, open channel to IscDriver
-        if ( aChannelNumber >= KIscFirstChannel 
-            && aChannelNumber < KIscMaxChannelsInLdd )
-            {
-            C_TRACE( ( _T( "RIscApi::Open 1st ldd" ) ) );
-            info.Append( ( TUint8 )aChannelNumber );
-            error = DoCreate( KIscDriverName, 
-                                TVersion( KMajor, KMinor, KBuild ), 
-                                ( TInt )aChannelNumber, 
-                                NULL, 
-                                &info, 
-                                aType );
-            
-            }
-        // handle channels 32 .. 63, open channel to IscDriverExtension
-        else if ( aChannelNumber >= KIscMaxChannelsInLdd
-                  && aChannelNumber < KIscNumberOfUnits )
-            {
-            C_TRACE( ( _T( "RIscApi::Open 2nd ldd" ) ) );
-            info.Append( ( TUint8 )aChannelNumber );
-            TInt channelCount( aChannelNumber - KIscMaxChannelsInLdd );
-            error = DoCreate( KIscDriverExtensionName, 
-                                TVersion( KMajor, KMinor, KBuild ), 
-                                channelCount, 
-                                NULL, 
-                                &info, 
-                                aType );
-            }
-        // channel number out of range
-        else // illegal channel number
-            {
-            User::Panic( KIscApiPanic,EIscApiChannelNumberOutOfRange );
-            }
-        }
-
-    if ( error != KErrNone )
-        {
-        C_TRACE( ( _T( "RIscApi::Open - Channel open Failed,\
-         channel 0x%x error %d" ), aChannelNumber, error ) );
-        TRequestStatus* ptrStatus = &aStatus;
-        User::RequestComplete( ptrStatus, error );
-        }
-    else
-        {
-        iChannelNumber = aChannelNumber;
-        C_TRACE( ( _T( "RIscApi::Open iChannelNumber %d " ), iChannelNumber ) );
-        iOpen = ETrue;
-	    TAny* params[ KThreeParams ];   
-	    params[ KFirstParam ] = (TAny*)&aStatus;
-	    params[ KSecondParam ] = (TAny*)aChannelNumber;
-	    params[ KThirdParam ] = (TAny*)aOpenParams;
-
-        aStatus = KRequestPending;
-        error = DoSvControl( EIscAsyncOpen, params );
-        }
-
-    A_TRACE(  (  _T(  "RIscApi::Open - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::OpenCancel
-// Cancel asynchronous channel opening
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::OpenCancel()
-    {
-    A_TRACE( ( _T( "RIscApi::OpenCancel() channel 0x%x" ), iChannelNumber ) );
-
-    PanicIfNotOpen();
-
-    DoSvControl( EIscCancelAsyncOpen );
-    Close();
-    
-    A_TRACE( ( _T( "RIscApi::OpenCancel - return void" )  ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::Close
-// Close ISC Channel
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::Close()
-    {
-    A_TRACE( ( _T( "RIscApi::Close channel 0x%x" ), iChannelNumber ) );
-
-    if( iChannelNumber <= KIscLastChannel && iOpen )
-        {
-        DoSvControl( EIscSyncClose );
-        }
-    else
-    	{
-    	// Do nothing.	
-    	}        
-
-    iChannelNumber = KIscFrameReceiverNotFound;
-    iOpen = EFalse;
-    RHandleBase::Close();
-
-    A_TRACE( ( _T( "RIscApi::Close - return void" )  ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::Close
-// Close ISC Channel
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::Close( TRequestStatus& aStatus )
-    {
-    A_TRACE( ( _T( "RIscApi::Close(0x%x) channel (0x%x)" ), &aStatus,
-    			  iChannelNumber ) );
-    
-    TAny* params[ KOneParam ];
-
-    params[ KFirstParam ] = (TAny*)&aStatus;
-    aStatus = KRequestPending;
-    if ( iChannelNumber <= KIscLastChannel && 
-         iOpen )
-        {
-        DoSvControl( EIscAsyncClose, params );
-        }
-    else												
-        {
-        C_TRACE((_T("RIscApi::Close FAILED")));
-        TRequestStatus* ptrStatus = &aStatus;
-        User::RequestComplete( ptrStatus, KErrNotReady );
-        }
-
-    iOpen = EFalse;
-
-    A_TRACE( ( _T( "RIscApi::Close - return void" )  ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIsaApi::ResetBuffers
-// Resets buffers.
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::ResetBuffers()
-    {
-    A_TRACE( ( _T( "RIscApi::ResetBuffers() 0x%x" ), iChannelNumber ) );
-    
-    PanicIfNotOpen();
-    
-    DoSvControl( EIscSyncResetBuffers );
-    
-    A_TRACE( ( _T( "RIscApi::ResetBuffers - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::Send
-// Send data to Domestic OS ( asynchronous )
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::Send( 
-    TRequestStatus& aStatus, 
-    const TDesC8& aData )
-    {
-    A_TRACE( ( _T( "RIscApi::Send(0x%x, 0x%x) iChannelNumber (0x%x) this %x" ),
-    			   &aStatus, &aData, iChannelNumber, this ) );
-    
-    PanicIfNotOpen();
-    
-    TAny* params[ KTwoParams ];
-
-    params[ KFirstParam ] = (TAny*)&aStatus;
-    params[ KSecondParam ] = (TAny*)&aData;
-
-    aStatus = KRequestPending;
-    DoControl( EIscAsyncSend, params );
-
-    A_TRACE( ( _T( "RIscApi::Send - return void" )  ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::Send
-// Send data to Domestic OS ( synchronous )
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RIscApi::Send( 
-    const TDesC8& aData )
-    {
-    A_TRACE( ( _T( "RIscApi::Send(0x%x) iChannelNumber (0x%x) this %x" ),
-    			   &aData, iChannelNumber, this ) );    
-    
-    
-    PanicIfNotOpen();
-    
-    TInt error( KErrNone );
-         
-    TAny* params[ KOneParam ];
-    params[ KFirstParam ] = (TAny*)&aData;
-    
-    error = DoControl( EIscSyncSend, params );
-    
-    A_TRACE( ( _T( "RIscApi::Send - return %d" ), error ) );
-    return error;
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::SendCancel
-// Cancel asynchronous Send request
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::SendCancel()
-    {
-    A_TRACE(  (  _T(  "RIscApi::SendCancel(), channel 0x%x" ), iChannelNumber ) );
-
-    PanicIfNotOpen();
-
-    DoSvControl( EIscCancelAsyncSend );
-
-    A_TRACE( ( _T( "RIscApi::SendCancel - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::Receive
-// Receive data from Domestic OS
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::Receive( 
-    TRequestStatus& aStatus, 
-    TDes8& aData,
-    TUint16& aNeededBufLen )
-    {
-    A_TRACE( ( _T( "RIscApi::Receive 0x%x, 0x%x, 0x%x iChannelNumber 0x%x this\
-    		    0x%x" ), &aStatus, &aData, aNeededBufLen, iChannelNumber, this ) );
-        
-    PanicIfNotOpen();
-    
-    TAny* params[ KThreeParams ];
-    
-    iNeededLen.Set( ( TUint8* )&aNeededBufLen, sizeof ( TUint16 ), sizeof ( TUint16 ) );
-
-    params[ KFirstParam ] = (TAny*)&aStatus;
-    params[ KSecondParam ] = (TAny*)&aData;
-    params[ KThirdParam ] = (TAny*)&iNeededLen;
-
-    aStatus = KRequestPending;
-    DoControl( EIscAsyncReceive, params );
-
-    A_TRACE( ( _T( "RIscApi::Receive - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::ReceiveCancel
-// Cancel data receiving from Domestic OS
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::ReceiveCancel()
-    {
-    A_TRACE( ( _T( "RIscApi::ReceiveCancel() iChannelNumber (0x%x)" ),
-    			    iChannelNumber ) );
-    
-    PanicIfNotOpen();
-    
-    DoControl( EIscCancelAsyncReceive );
-
-    A_TRACE( ( _T( "RIscApi::ReceiveCancel - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::DataReceiveCancel
-// Cancel data receiving from Domestic OS
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::DataReceiveCancel()
-    {
-    A_TRACE( ( _T( "RIscApi::DataReceiveCancel() channel 0x%x" ),
-    			    iChannelNumber ) );
-
-    PanicIfNotOpen();
-    
-    DoControl( EIscCancelAsyncDataReceive );
-
-    A_TRACE( ( _T( "RIscApi::DataReceiveCancel - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::ConnectionStatus
-// Get the current connection status
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RIscApi::ConnectionStatus() 
-    {
-    A_TRACE( ( _T( "RIscApi::ConnectionStatus() channel 0x%x" ),
-    			    iChannelNumber ) );
-    
-    PanicIfNotOpen();
-    
-    TInt state( EIscConnectionOk );
-
-    state = DoControl( EIscSyncGetConnectionStatus );
-    
-    A_TRACE( ( _T( "RIscApi::ConnectionStatus - return 0x%x" ), state ) );
-
-    return state;
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::NotifyConnectionStatus
-// Listen for connection status changes
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::NotifyConnectionStatus( 
-    TRequestStatus& aStatus,
-    TInt& aConnectionStatus )
-    {
-    A_TRACE( ( _T( "RIscApi::NotifyConnectionStatus(0x%x, 0x%x)\
-    iChannelNumber (0x%x)" ), &aStatus, aConnectionStatus, iChannelNumber ) );
-    
-    PanicIfNotOpen();
-        
-    TAny* params[ KTwoParams ];
-    
-    iConnectionStatus.Set( ( TUint8* )&aConnectionStatus, 
-    						 sizeof ( TInt ), sizeof ( TInt ) );
-
-    params[ KFirstParam ] = (TAny*)&aStatus;
-    params[ KSecondParam ] = (TAny*)&iConnectionStatus;
-    
-    aStatus = KRequestPending;
-    DoControl( EIscAsyncNotifyConnectionStatus, params );
-
-    A_TRACE( ( _T( "RIscApi::NotifyConnectionStatus - return void" ) ) );    
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::NotifyConnectionStatusCancel
-// Stop listening for connection status changes
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::NotifyConnectionStatusCancel()
-    {
-    A_TRACE( ( _T( "RIscApi::NotifyConnectionStatusCancel() channel 0x%x" ),
-    			    iChannelNumber ) );
-
-    PanicIfNotOpen();
-    
-    DoControl( EIscCancelAsyncNotifyConnection );
-
-    A_TRACE( ( _T( "RIscApi::NotifyConnectionStatusCancel - return void" ) ) );
-    }
-
-
-// -----------------------------------------------------------------------------
-// RIscApi::CustomFunction
-// Asynchronous API extension function
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::CustomFunction( 
-    TRequestStatus& aStatus, 
-    const TUint16 aOperation, 
-    TAny* aParameters )
-    {
-    A_TRACE( ( _T( "RIscApi::CustomFunction(0x%x, 0x%x, 0x%x) iChannelNumber\
-     0x%x" ), &aStatus, aOperation, aParameters, iChannelNumber ) );
-    
-    PanicIfNotOpen();
-
-    // Check if custom operation is out of range. 
-    if ( aOperation < EIscAsyncCustomOperation1 
-        || aOperation > EIscAsyncCustomOperation5 )
-        {
-        User::Panic( KIscApiPanic, EIscApiCustomFunctionUndefined );
-        }
-    TAny* params[ KTwoParams ];
-    
-    params[ KFirstParam ] = (TAny*)&aStatus;
-    params[ KSecondParam ] = aParameters;
-
-    aStatus = KRequestPending;
-    DoSvControl( aOperation, params );
-    
-    A_TRACE( ( _T( "RIscApi::CustomFunction - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::CustomFunction
-// Synchronous API extension function
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RIscApi::CustomFunction( 
-    const TUint16 aOperation, 
-    TAny* aParameters )
-    {
-    A_TRACE( ( _T( "RIscApi::CustomFunction(0x%x, 0x%x) iChannelNumber\
-    	 (0x%x) this %x" ), aOperation, aParameters, iChannelNumber, this ) );
-    
-    PanicIfNotOpen();
-
-    // Check if custom operation is out of range. 
-    if ( aOperation < EIscSyncCustomOperation1 
-        || aOperation > EIscSyncCustomOperation5 )
-        {
-        User::Panic( KIscApiPanic, EIscApiCustomFunctionUndefined );
-        }
-
-    TInt error( KErrNone );
-    TAny* params[ KOneParam ];
-    params[ KFirstParam ] = aParameters;
-
-    error = DoSvControl( aOperation, params );
-
-    A_TRACE( ( _T( "RIscApi::CustomFunction - return %d" ), error ) );
-    return error;
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::CustomFunctionCancel
-// Cancel the execution of the asynchronous API extension function
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::CustomFunctionCancel( 
-    const TUint16 aOperation )
-    {
-    A_TRACE( ( _T( "RIscApi::CustomFunctionCancel(0x%x) iChannelNumber (0x%x)" )
-    			  , aOperation, iChannelNumber ) );
-    
-    PanicIfNotOpen();
-
-    // Check if custom operation is out of range
-    if ( aOperation < EIscCancelAsyncCustomOperation1 
-        || aOperation > EIscCancelAsyncCustomOperation5 )
-        {
-        User::Panic( KIscApiPanic, EIscApiCustomFunctionUndefined );
-        }
-
-    DoSvControl( aOperation );
-
-    A_TRACE( ( _T( "RIscApi::CustomFunctionCancel - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::DataSend
-// Send data to Domestic OS ( asynchronous )
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::DataSend( 
-    TRequestStatus& aStatus,
-    const TDesC8& aData )
-    {
-    A_TRACE( ( _T( "RIscApi::DataSend(0x%x, 0x%x) iChannelNumber 0x%x" ),
-    			  &aStatus, &aData, iChannelNumber ) );
-    
-    PanicIfNotOpen();
-    
-    TAny* params[ KTwoParams ];
-    
-    params[ KFirstParam ] = (TAny*)&aStatus;
-    params[ KSecondParam ] = (TAny*)&aData;
-
-    aStatus = KRequestPending;
-    DoControl( EIscAsyncDataSend, params );
-    
-    A_TRACE( ( _T( "RIscApi::DataSend - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::DataSend
-// Send data to Domestic OS ( synchronous )
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RIscApi::DataSend( 
-    const TDesC8& aData )
-    {
-    A_TRACE( ( _T( "RIscApi::DataSend(0x%x) iChannelNumber 0x%x" ),
-    			    &aData, iChannelNumber ) );
-
-    PanicIfNotOpen();
-
-    TInt error(  KErrNone );
-    TAny* params[ KOneParam ];
-    
-    params[ KFirstParam ] = (TAny*)&aData;
-
-    error = DoControl( EIscSyncDataSend, params );
-
-    A_TRACE( ( _T( "RIscApi::DataSend - return %d" ), error ) );
-    return error;
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::DataSendCancel
-// Cancel asynchronous DataSend request
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::DataSendCancel()
-    {
-    A_TRACE( ( _T( "RIscApi::DataSendCancel() iChannelNumber 0x%x" ),
-    			   iChannelNumber ) );
-
-    PanicIfNotOpen();
-
-    DoSvControl( EIscCancelAsyncDataSend );
-
-    A_TRACE( ( _T( "RIscApi::DataSendCancel - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::DataReceive
-// Receive data from Domestic OS
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::DataReceive( 
-    TRequestStatus& aStatus,
-    TDes8& aData,
-    TUint16& aNeededBufLen )
-    {
-    A_TRACE( ( _T( "RIscApi::DataReceive(0x%x, 0x%x, 0x%x) iChannelNumber 0x%x" ),
-    			   &aStatus, &aData, aNeededBufLen, iChannelNumber ) );
-    
-    PanicIfNotOpen();
-    
-    TAny* params[ KThreeParams ];
-    
-    iNeededDataLen.Set( ( TUint8* )&aNeededBufLen, sizeof ( TUint16 ),sizeof ( TUint16 ) );
-
-    params[ KFirstParam ] = (TAny*)&aStatus;
-    params[ KSecondParam ] = (TAny*)&aData;
-    params[ KThirdParam ] = (TAny*)&iNeededDataLen;
-
-    aStatus = KRequestPending;
-    DoControl( EIscAsyncDataReceive, params );
-    
-    A_TRACE( ( _T( "RIscApi::DataReceive - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::FlowControlStatus
-// Get the current flow control status ( in uplink-direction )
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RIscApi::FlowControlStatus()
-    {
-    A_TRACE( ( _T( "RIscApi::FlowControlStatus() channel 0x%x" ),
-    			   iChannelNumber ) );
-    
-    PanicIfNotOpen();
-
-    TInt state( EIscFlowControlOff );
-
-    state = DoControl( EIscSyncGetFlowControlStatus );
-
-    A_TRACE( ( _T( "RIscApi::FlowControlStatus - return %d" ), state ) );
-
-    return state;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RIscApi::NotifyFlowControl
-// Listen for flow control status changes
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::NotifyFlowControl( 
-    TRequestStatus& aStatus,
-    TInt& aFlowControlStatus )
-    {
-    A_TRACE( ( _T( "RIscApi::NotifyFlowControl(0x%x, 0x%x) channel 0x%x" ),
-    			  &aStatus, aFlowControlStatus, iChannelNumber ) );
-    
-    PanicIfNotOpen();
-    
-    TAny* params[ KTwoParams ];
-    
-    iFlowControlStatus.Set( ( TUint8* )&aFlowControlStatus,sizeof ( TInt ),sizeof ( TInt ) );
-
-    params[ KFirstParam ] = (TAny*)&aStatus;
-    params[ KSecondParam ] = (TAny*)&iFlowControlStatus;
-    
-    aStatus = KRequestPending;
-    DoControl( EIscAsyncNotifyFlowControlStatus, params );
-    
-    A_TRACE( ( _T( "RIscApi::NotifyFlowControl - return void" ) ) );
-    }
-
-
-// -----------------------------------------------------------------------------
-// RIscApi::NotifyFlowControlCancel
-// Stop listening for flow control status changes
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RIscApi::NotifyFlowControlCancel()
-    {
-    A_TRACE(  (  _T(  "RIscApi::NotifyFlowControlCancel()" ) ) );
-
-    PanicIfNotOpen();
-    
-    DoControl( EIscCancelAsyncNotifyFlowControl );
-
-    A_TRACE( ( _T( "RIscApi::NotifyFlowControlCancel - return void" ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::MaximumDataSize
-// Get maximun data size ( for sending and receiving )
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RIscApi::MaximumDataSize()
-    {
-    A_TRACE( ( _T( "RIscApi::MaximumDataSize() channel 0x%x" ),
-    				iChannelNumber ) );
-    
-    PanicIfNotOpen();
-
-    TInt r = DoControl( EIscSyncGetMaximunDataSize );
-    A_TRACE( ( _T( "RIscApi::MaximumDataSize - return 0x%x" ), r ) );
-    return r;
-        
-    }
-
-// -----------------------------------------------------------------------------
-// RIscApi::GetChannelInfo
-// Get channel info from multiplexer
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RIscApi::GetChannelInfo( 
-    const TUint16 aChannel, 
-    TDes8& aInfo )
-    {
-    A_TRACE( ( _T( "RIscApi::GetChannelInfo(0x%x, 0x%x)" ),
-    			    aChannel, &aInfo ) );
-    
-    PanicIfNotOpen();
-
-    TAny* params[ KTwoParams ];  
-    params[ KFirstParam ] = (TAny*)aChannel;
-    params[ KSecondParam ] = (TAny*)&aInfo;
-    
-    TInt error = DoControl( EIscSyncGetChannelInfo, params );
-
-    A_TRACE( ( _T( "RIscApi::GetChannelInfo - return %d" ), error ) );
-    return error;
-    }
-
-// -----------------------------------------------------------------------------
-// IscApi::PanicIfNotOpen
-// Panic if channel is not opened yet
-// ( other items were commented in a header ).
-// -----------------------------------------------------------------------------
-//
-void RIscApi::PanicIfNotOpen() const
-    {
-    
-    if( !iOpen ) 
-        {
-        C_TRACE( ( _T( "IscApi::PanicIfNotOpen() channel 0x%x" ),
-        			   iChannelNumber ) );
-        User::Panic( KIscApiPanic, EIscApiChannelNotOpen );
-        }
-    else
-        {
-        // Do nothing.
-        }
-    }
-
-//  End of File