usbengines/usbwatcher/src/usbwatcher.cpp
changeset 35 9d8b04ca6939
child 63 ef2686f7597e
--- /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 <c32comm.h>
+#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