diff -r 7858bc6ead78 -r 9d8b04ca6939 usbengines/usbwatcher/src/usbwatcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbengines/usbwatcher/src/usbwatcher.cpp Fri Jun 04 10:27:39 2010 +0100 @@ -0,0 +1,107 @@ +/* +* Copyright (c) 2002-2009 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: Entry point for UsbWatcher +* +*/ + + +#include +#include "cusbwatcher.h" +#include "cusbwatcherscheduler.h" +#include "cusbwatcherserver.h" +#include "usbwatchershared.h" + +// LITERALS +_LIT( KUsbWatcherName, "UsbWatcher" ); + +// LOCAL FUNCTION PROTOTYPES +static void StartUsbWatcherL(); + +// ============================= LOCAL FUNCTIONS ============================== + +// ---------------------------------------------------------------------------- +// Entry-point for the USB Watcher. +// ---------------------------------------------------------------------------- +// +TInt E32Main() + { + LOG_FUNC + + // rename the thread so it is easy to find the panic application + TInt ret = User::RenameThread( KUsbWatcherName ); + if( KErrNone != ret ) // Not fatal + { + LOG1( "ERROR: User::RenameThread = %d", ret ); + } + + __UHEAP_MARK; + // create clean-up stack + CTrapCleanup* cleanup = CTrapCleanup::New(); + + TRAP( ret, StartUsbWatcherL() ); + if ( KErrAlreadyExists == ret ) + { + LOG( "UsbWatcher is already running." ); + } + else if ( KErrNone != ret ) + { + LOG1( "ERROR: StartUsbWatcherL = %d", ret ); + } + + delete cleanup; // destroy clean-up stack + __UHEAP_MARKEND; + + LOG1( "E32Main = %d", ret ); + return ret; + } + +// ---------------------------------------------------------------------------- +// Constructs and installs the active scheduler, constructs USB Watcher's +// objects. +// ---------------------------------------------------------------------------- +// +static void StartUsbWatcherL() + { + LOG_FUNC + LOG( "Starting USB Watcher..." ); + + LOG( "Create CUsbWatcherScheduler..." ); + // Construct and install the active scheduler + CUsbWatcherScheduler *myScheduler = CUsbWatcherScheduler::NewL(); + + // Push onto the cleanup stack + CleanupStack::PushL( myScheduler ); + + LOG( "Install ActiveScheduler..." ); + // Install as the active scheduler + CActiveScheduler::Install( myScheduler ); + + CUsbWatcherServer* usbwatcher; + + LOG( "Create CUsbWatcherServer..." ); + usbwatcher = CUsbWatcherServer::NewLC(); + RProcess::Rendezvous(KErrNone); + + LOG( "Set server..." ); + myScheduler->SetServer( *usbwatcher ); + + + LOG( "Start Active scheduler..." ); + CActiveScheduler::Start(); + + LOG( "Cleanup CUsbWatcherServer and CUsbWatcherScheduler ..." ); + CleanupStack::PopAndDestroy( 2, myScheduler ); //usbwatcher, myScheduler + } + +// End of file