diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/testdriver/testclient/net/src/CTcSerialManager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/testdriver/testclient/net/src/CTcSerialManager.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,165 @@ +/* +* 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 +* +*/ + +#include "CTcSerialManager.h" +#include "TTcSerialFactory.h" + +#include "debuglog.h" + +_LIT(LDD_NAME,"ECOMM"); + +#if defined (__WINS__) +_LIT(PDD_NAME,"ECDRV"); +#else +_LIT(PDD_NAME,"EUART1"); +#endif + +CTcSerialManager* CTcSerialManager::NewL( const TTcSerialFactory& aFactory ) + { + CTcSerialManager* self = new( ELeave ) CTcSerialManager( aFactory ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + +CTcSerialManager::~CTcSerialManager() + { + LOG( _L("CTcSerialManager::~CTcSerialManager()") ); + + Close(); + delete iConn; + iCommServ.Close(); + } + +CTcSerialManager::CTcSerialManager( const TTcSerialFactory& aFactory ) : + iFactory( aFactory ) + { + } + +void CTcSerialManager::ConstructL() + { + LOG( _L("CTcSerialManager::ConstructL()") ); + + LoadDriversAndCommModuleL(); + + iConn = new ( ELeave ) CTcSerialConnection( iCommServ, + iFactory.iPortName, + iFactory.iPortSpeed ); + + iConn->SetObserver( this ); + + LOG( _L("CTcSerialManager::ConstructL() end") ); + } + +void CTcSerialManager::ConnectL( TInetAddr* /*aRemoteAddr*/ ) + { + LOG( _L("CTcSerialManager::ConnectL()") ); + + iConn->ConnectL(); + + LOG( _L("CTcSerialManager::ConnectL() end") ); + } + +void CTcSerialManager::Close() + { + LOG( _L("CTcSerialManager::Close()") ); + + iConn->Close(); + } + +void CTcSerialManager::Send( const TDesC8& aDes ) + { + iConn->Send( aDes ); + } + +void CTcSerialManager::Receive( TDes8& aDes ) + { + iConn->Receive( aDes ); + } + +void CTcSerialManager::ReceiveOneOrMore( TDes8& aDes ) + { + iConn->ReceiveOneOrMore( aDes ); + } + +void CTcSerialManager::SetObserver( MTcBearerObserver* aObserver ) + { + iObserver = aObserver; + } + +void CTcSerialManager::GetLocalAddressL( TDes& /*aDes*/ ) + { + User::Leave( KErrNotSupported ); + } + +void CTcSerialManager::BearerCompletion( + MTcBearerObserver::TOperation aOp, + TInt aStatus ) + { + LOG( _L("CTcSerialManager::BearerCompletion( %d, %d ) start"), aOp, aStatus ); + if( ( aOp == MTcBearerObserver::EConnect ) && !aStatus ) + { + // A client has connected + + } + + if( iObserver ) + { + iObserver->BearerCompletion( aOp, aStatus ); + } + LOG( _L("CTcSerialManager::BearerCompletion() end") ); + } + +void CTcSerialManager::LoadDriversAndCommModuleL() + { + TInt err = User::LoadPhysicalDevice( PDD_NAME ); + if ( err != KErrNone && err != KErrAlreadyExists ) + { + User::Leave( err ); + } + + err = User::LoadLogicalDevice( LDD_NAME ); + if ( err != KErrNone && err != KErrAlreadyExists ) + { + User::Leave( err ); + } + + // Both WINS and EIKON will have started the comms server process. + // (this is only really needed for ARM hardware development racks) + +#if !defined (__WINS__) + err = StartC32 (); + if ( err != KErrNone && err != KErrAlreadyExists ) + { + User::Leave( err ); + } +#endif + + + User::LeaveIfError( iCommServ.Connect() ); + + // Load the CSY module + // Symbian OS will automatically search \System\Libs + // on all drives starting from C: + + User::LeaveIfError( iCommServ.LoadCommModule( iFactory.iCSYName ) ); + } + +// End of file